{"_id":"@usefy/usefy","_rev":"35-75364f599eb107dbaf08cc6f0567faf3","name":"@usefy/usefy","dist-tags":{"latest":"0.0.35"},"versions":{"0.0.2":{"name":"@usefy/usefy","version":"0.0.2","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.2","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"a9ef0394e77cfac86f7a7d88ac713a545bb13868","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.2.tgz","fileCount":7,"integrity":"sha512-bC7TJ7QSFTa5m2JLwB9to18OiOrQQGHWTOM1svF8ypvm6VDQI3gATlfC1i0q3pUrLSyl5rYxczGG0vPzmgvbWw==","signatures":[{"sig":"MEYCIQCBORU5xB9aVLMV7K5nqgwBWtf/2P1rn0+m+hZHkFGrpwIhANtDDFq2t53f/0NgHCrWfIyTDoMohWBsP/hvWt0A2/Qs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8678},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"C:\\Users\\PARKGE~1\\AppData\\Local\\Temp\\190b5a570eb3d0b4cfad3a23aea0d7fa\\usefy-usefy-0.0.2.tgz","_integrity":"sha512-bC7TJ7QSFTa5m2JLwB9to18OiOrQQGHWTOM1svF8ypvm6VDQI3gATlfC1i0q3pUrLSyl5rYxczGG0vPzmgvbWw==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.9.4","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"@usefy/use-toggle":"0.0.2","@usefy/use-counter":"0.0.2","@usefy/use-debounce":"0.0.2","@usefy/use-throttle":"0.0.2","@usefy/use-local-storage":"0.0.2","@usefy/use-session-storage":"0.0.2","@usefy/use-debounce-callback":"0.0.2","@usefy/use-throttle-callback":"0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.2_1766981908120_0.967972020088536","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@usefy/usefy","version":"0.0.3","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.3","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"0ca3ff610d2fd6b904dd48f8395a1e1385bd47e0","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.3.tgz","fileCount":7,"integrity":"sha512-NhFwUYbokSdN6Mh+TQIn+CEsq+JgOdk12m4r8HhhXApjBLCP4y2WdHki6c378QVoU5XqzBULTPWHyRA3zd7cgA==","signatures":[{"sig":"MEQCID/RUlv5ZaA+eETn/PU7QzKMihgK3N/qnWl6WhtvcCYbAiAmPJOa+Ic6FXe5k5E2+B3Y4KhUBpkfy/BaC20FmrHplg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8678},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"C:\\Users\\PARKGE~1\\AppData\\Local\\Temp\\2a1314f98599f56d9381eab31eb935c0\\usefy-usefy-0.0.3.tgz","_integrity":"sha512-NhFwUYbokSdN6Mh+TQIn+CEsq+JgOdk12m4r8HhhXApjBLCP4y2WdHki6c378QVoU5XqzBULTPWHyRA3zd7cgA==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.9.4","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"@usefy/use-toggle":"0.0.3","@usefy/use-counter":"0.0.3","@usefy/use-debounce":"0.0.3","@usefy/use-throttle":"0.0.3","@usefy/use-local-storage":"0.0.3","@usefy/use-session-storage":"0.0.3","@usefy/use-debounce-callback":"0.0.3","@usefy/use-throttle-callback":"0.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.3_1766983063497_0.1302726210044114","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@usefy/usefy","version":"0.0.4","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.4","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"e821c6f79c1637e70a7b99ac898eaada0a0b722c","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.4.tgz","fileCount":7,"integrity":"sha512-GivSKRiXoEzEX/apM7fYTohYWLIyXChUPN9IhokPzg6hh2gvRpiykfrNiSF0U4g6p2xNp65WsE8t+n+Nii4JVA==","signatures":[{"sig":"MEYCIQCV+VDv/aDxLLKTZZFvlZgtsiJa2oEJtT1MC5OJvBsOTgIhAOltWV50meFSZnArgzz6GEVjVNcZ+lRPBBlxW8nsOsoz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8860},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"C:\\Users\\PARKGE~1\\AppData\\Local\\Temp\\dce71c8bef6ddd26e66a82783c495408\\usefy-usefy-0.0.4.tgz","_integrity":"sha512-GivSKRiXoEzEX/apM7fYTohYWLIyXChUPN9IhokPzg6hh2gvRpiykfrNiSF0U4g6p2xNp65WsE8t+n+Nii4JVA==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.9.4","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"@usefy/use-toggle":"0.0.4","@usefy/use-counter":"0.0.4","@usefy/use-debounce":"0.0.4","@usefy/use-throttle":"0.0.4","@usefy/use-local-storage":"0.0.4","@usefy/use-session-storage":"0.0.4","@usefy/use-debounce-callback":"0.0.4","@usefy/use-throttle-callback":"0.0.4"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.4_1766983934829_0.10458643331085771","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@usefy/usefy","version":"0.0.5","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.5","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"9d2484d359c8ba1b452dfadb87d8331c3bdc150c","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.5.tgz","fileCount":7,"integrity":"sha512-ohs3iEAokjm0OVvqKGJtivVjieLBaYDjOmkMVC7upDMsInYq1OiOBI1GeBN3TqfxthYaDPgjuIOLI/BguFLTRQ==","signatures":[{"sig":"MEQCIHOIxG5wwZLHXlI6f7arJfJgfkPynsEv52yXEkNgfxuYAiB+VWjFOVE+zUbcu61qwjk+WY0o9fF0mU7BuLYp0KEq7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8678},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"C:\\Users\\PARKGE~1\\AppData\\Local\\Temp\\7130607dd4f97bd44726e0598a0b9592\\usefy-usefy-0.0.5.tgz","_integrity":"sha512-ohs3iEAokjm0OVvqKGJtivVjieLBaYDjOmkMVC7upDMsInYq1OiOBI1GeBN3TqfxthYaDPgjuIOLI/BguFLTRQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.9.4","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"@usefy/use-toggle":"0.0.5","@usefy/use-counter":"0.0.5","@usefy/use-debounce":"0.0.5","@usefy/use-throttle":"0.0.5","@usefy/use-local-storage":"0.0.5","@usefy/use-session-storage":"0.0.5","@usefy/use-debounce-callback":"0.0.5","@usefy/use-throttle-callback":"0.0.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.5_1766987298106_0.1811154306667626","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@usefy/usefy","version":"0.0.6","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.6","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"d80696a6006d1530191815d8e79af0be0999bbf5","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.6.tgz","fileCount":7,"integrity":"sha512-c9Dmkagj8LTcFPvQCbaThuOK7PbNFkL11QHupqjklXflrVWArW4d1z2TwVeIrlk/F9Igk4FIqriu5TuW4wqY4w==","signatures":[{"sig":"MEUCIQDR/2fhkh4WZv/kJR7Mvu3+a8r8bgqmIxShDBrLxUrlJQIgKHw8fc8aZ7GX1SznABMErJvexcvGcjLQG2EDqCBdf88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8678},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"C:\\Users\\PARKGE~1\\AppData\\Local\\Temp\\dc9986325246bc994717a28f3379e6d9\\usefy-usefy-0.0.6.tgz","_integrity":"sha512-c9Dmkagj8LTcFPvQCbaThuOK7PbNFkL11QHupqjklXflrVWArW4d1z2TwVeIrlk/F9Igk4FIqriu5TuW4wqY4w==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.9.4","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"@usefy/use-toggle":"0.0.6","@usefy/use-counter":"0.0.6","@usefy/use-debounce":"0.0.6","@usefy/use-throttle":"0.0.6","@usefy/use-local-storage":"0.0.6","@usefy/use-session-storage":"0.0.6","@usefy/use-debounce-callback":"0.0.6","@usefy/use-throttle-callback":"0.0.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.6_1766988263584_0.4114530007419377","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@usefy/usefy","version":"0.0.7","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.7","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"ce1ca621307efd317bbf8717953deec28a92772c","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.7.tgz","fileCount":7,"integrity":"sha512-/NiqwYbLQ8CyhRsqB+TNE+5ogykr4pbz4PKc2B0uVF62LzNRJPD2C0+1BiFwySKZN8pwvNTPKKNNAdwWLMBlzQ==","signatures":[{"sig":"MEYCIQCXDEiUIbjZv4XZpYx2pfF+gvl+RqjbHFaVm0YrUtTFkwIhAIgk2548k151M1G+QXNukyz9ZjMYW3E7qGtfRM2CVWEd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9688},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"C:\\Users\\PARKGE~1\\AppData\\Local\\Temp\\12defbf98c1ff8de97f37b609effd302\\usefy-usefy-0.0.7.tgz","_integrity":"sha512-/NiqwYbLQ8CyhRsqB+TNE+5ogykr4pbz4PKc2B0uVF62LzNRJPD2C0+1BiFwySKZN8pwvNTPKKNNAdwWLMBlzQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.9.4","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"@usefy/use-toggle":"0.0.7","@usefy/use-counter":"0.0.7","@usefy/use-debounce":"0.0.7","@usefy/use-throttle":"0.0.7","@usefy/use-local-storage":"0.0.7","@usefy/use-session-storage":"0.0.7","@usefy/use-copy-to-clipboard":"0.0.7","@usefy/use-debounce-callback":"0.0.7","@usefy/use-throttle-callback":"0.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.7_1767003861504_0.8008955527299739","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@usefy/usefy","version":"0.0.8","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.8","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"fafe943f83aacb0c3f9c41ebd2e1532fc6dc421c","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.8.tgz","fileCount":7,"integrity":"sha512-SlEyBF93SIjxgtpOHbwNfhMADdlEz4psRMetMKWOodEdonVVOk13v7qFOxXoU1fOy58irkl2UWkIFt9PuMiDwA==","signatures":[{"sig":"MEYCIQDx4FigR9Ms2sjZQp36KgzD3Q84RcYC5+X4ht2rpfZIYgIhAI+pX/n6lP+jpkhNrnX8KKM3xk6fWTtIyygCj43bWFjj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10350},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/93336537c83ea8947c43a2bfe8d08f26/usefy-usefy-0.0.8.tgz","_integrity":"sha512-SlEyBF93SIjxgtpOHbwNfhMADdlEz4psRMetMKWOodEdonVVOk13v7qFOxXoU1fOy58irkl2UWkIFt9PuMiDwA==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.8","@usefy/use-counter":"0.0.8","@usefy/use-debounce":"0.0.8","@usefy/use-throttle":"0.0.8","@usefy/use-local-storage":"0.0.8","@usefy/use-click-any-where":"0.0.8","@usefy/use-session-storage":"0.0.8","@usefy/use-copy-to-clipboard":"0.0.8","@usefy/use-debounce-callback":"0.0.8","@usefy/use-throttle-callback":"0.0.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.8_1767006764944_0.7235523195893101","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@usefy/usefy","version":"0.0.10","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.10","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"ff2e00d687c469cb5958e6c0079fb8a5157775c4","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.10.tgz","fileCount":7,"integrity":"sha512-ca4Wl3EFU4lDJ8OaH/kKc+ivTiJU/wtriWNSMsjSRd2mtaLUKkv5WvY/z+ezlwpjO5uUARa/hjLoPTS42FO3jA==","signatures":[{"sig":"MEQCIDrgct0Q3dh6j5j9HQScIajKX8TjMSbvJ5UNvmdL6sLPAiB04zqFT0VM/LwXjLP8drw5zkqVnTlawxU5Hg9Efd2dCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10361},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/a763abac28f6897e2095327cbc0b6d84/usefy-usefy-0.0.10.tgz","_integrity":"sha512-ca4Wl3EFU4lDJ8OaH/kKc+ivTiJU/wtriWNSMsjSRd2mtaLUKkv5WvY/z+ezlwpjO5uUARa/hjLoPTS42FO3jA==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.10","@usefy/use-counter":"0.0.10","@usefy/use-debounce":"0.0.10","@usefy/use-throttle":"0.0.10","@usefy/use-local-storage":"0.0.10","@usefy/use-click-any-where":"0.0.10","@usefy/use-session-storage":"0.0.10","@usefy/use-copy-to-clipboard":"0.0.10","@usefy/use-debounce-callback":"0.0.10","@usefy/use-throttle-callback":"0.0.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.10_1767083773285_0.25860121086894794","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@usefy/usefy","version":"0.0.11","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.11","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"fc82cf572010c6c016fe1812091c29c93cd4d830","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.11.tgz","fileCount":7,"integrity":"sha512-fQT6nLJYxlGz9JHq5SkMMEibXpP1/Gg/7UJhNpxhC/E/NBcyGwzZSVrcjrR9pjTBn4On3zS7O9MtOxtWNlvYjg==","signatures":[{"sig":"MEUCIQCY3+eChwLoOwayNslFgY7yRX8AAFA0yQlL7ZG4uCp2vgIgKuu13yIedLx17Upi0MEMruaytNsogCRfM+XAhku0j6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10361},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.11.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/4bb60c0160ca7f66ff0cb5fa82b05b8b/usefy-usefy-0.0.11.tgz","_integrity":"sha512-fQT6nLJYxlGz9JHq5SkMMEibXpP1/Gg/7UJhNpxhC/E/NBcyGwzZSVrcjrR9pjTBn4On3zS7O9MtOxtWNlvYjg==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.11","@usefy/use-counter":"0.0.11","@usefy/use-debounce":"0.0.11","@usefy/use-throttle":"0.0.11","@usefy/use-local-storage":"0.0.11","@usefy/use-click-any-where":"0.0.11","@usefy/use-session-storage":"0.0.11","@usefy/use-copy-to-clipboard":"0.0.11","@usefy/use-debounce-callback":"0.0.11","@usefy/use-throttle-callback":"0.0.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.11_1767084064952_0.016014280585474383","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@usefy/usefy","version":"0.0.12","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.12","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"56255954bdd441682fcadf3e61e9435b2941023c","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.12.tgz","fileCount":7,"integrity":"sha512-zBVaqNlG2+jFf6JO+rZXKp3zYoWBn645aKztvQSFe9mpTK2OFEfb6NJ+DDkB6Om6SSZLraGTHXkyojlK80g66g==","signatures":[{"sig":"MEUCIBnlJrUK3b98aizQfzUOXIBS9K84GhQe9CUkYh8jD8VwAiEAm28w4OQUNMl+NvoR1InCTiNj1rjJelF05xYoMkU9tyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10361},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.12.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/c824bf7968c3c9f2460f00fa3493a611/usefy-usefy-0.0.12.tgz","_integrity":"sha512-zBVaqNlG2+jFf6JO+rZXKp3zYoWBn645aKztvQSFe9mpTK2OFEfb6NJ+DDkB6Om6SSZLraGTHXkyojlK80g66g==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.12","@usefy/use-counter":"0.0.12","@usefy/use-debounce":"0.0.12","@usefy/use-throttle":"0.0.12","@usefy/use-local-storage":"0.0.12","@usefy/use-click-any-where":"0.0.12","@usefy/use-session-storage":"0.0.12","@usefy/use-copy-to-clipboard":"0.0.12","@usefy/use-debounce-callback":"0.0.12","@usefy/use-throttle-callback":"0.0.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.12_1767097269790_0.20502982866175334","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@usefy/usefy","version":"0.0.13","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.13","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"086a52d9d3c2e4558c3ea514c4864888b0beac31","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.13.tgz","fileCount":8,"integrity":"sha512-rxmKcpCiZVIXrC5ddG7aFhNmbOtQOUzKflj/xioJFGTZUiz2G9aRlrtF2AP1DOaGtLqBRhfhhI92ynGoNKmg1w==","signatures":[{"sig":"MEQCIBBDJ7EDjGQMeT3ExDeqOch963ytmqcJNtQ1ogrO7QhAAiBXP7PuQBkpUwiiqCpVPiRIn9SG9Lmlvuw74RF0a7ouEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26276},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.13.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/3c41cefec1ac2b26f3734f96271fe721/usefy-usefy-0.0.13.tgz","_integrity":"sha512-rxmKcpCiZVIXrC5ddG7aFhNmbOtQOUzKflj/xioJFGTZUiz2G9aRlrtF2AP1DOaGtLqBRhfhhI92ynGoNKmg1w==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.13","@usefy/use-counter":"0.0.13","@usefy/use-debounce":"0.0.13","@usefy/use-throttle":"0.0.13","@usefy/use-local-storage":"0.0.13","@usefy/use-click-any-where":"0.0.13","@usefy/use-session-storage":"0.0.13","@usefy/use-copy-to-clipboard":"0.0.13","@usefy/use-debounce-callback":"0.0.13","@usefy/use-throttle-callback":"0.0.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.13_1767098194355_0.633536614608678","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@usefy/usefy","version":"0.0.14","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.14","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"65fe148dfdf4c35c5c8bb17eae8755fda9ff2ab9","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.14.tgz","fileCount":8,"integrity":"sha512-Gv8ETAK4TP95A+6sDJburyRb5erOvkb1YDvwskPD4mi7VYO1v2hj/kYH81/VOL25SPRinMYQtvdh5X2BJrg9+A==","signatures":[{"sig":"MEUCIArcWekza2nMuB8ZsyetLjyx2LdHKw8RiKPOGyIhMAzSAiEAm3xQDSQ8s8K2p37DX/GVfvTslGsWB6+EkI9pTT+tXbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25071},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.14.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/b63bc5cbaa0967dd3cc6e8828d26fab6/usefy-usefy-0.0.14.tgz","_integrity":"sha512-Gv8ETAK4TP95A+6sDJburyRb5erOvkb1YDvwskPD4mi7VYO1v2hj/kYH81/VOL25SPRinMYQtvdh5X2BJrg9+A==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.14","@usefy/use-counter":"0.0.14","@usefy/use-debounce":"0.0.14","@usefy/use-throttle":"0.0.14","@usefy/use-local-storage":"0.0.14","@usefy/use-click-any-where":"0.0.14","@usefy/use-session-storage":"0.0.14","@usefy/use-copy-to-clipboard":"0.0.14","@usefy/use-debounce-callback":"0.0.14","@usefy/use-throttle-callback":"0.0.14"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.14_1767098751015_0.05837018907978142","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@usefy/usefy","version":"0.0.15","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.15","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"44ad0cdacb9195ba84515c8ab0debc7c91ed77d9","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.15.tgz","fileCount":8,"integrity":"sha512-A+ZjoDyiQlIiXk/IHrOscKSyUW8VyaC0SuhVf0s+TeGbpSy0ao9+U0+Sncj1DixSJQ3b6v1qD/keTYyzJl1k/w==","signatures":[{"sig":"MEQCIHtGs4dzHBvyCT57LHVf8nhxw4n8WlZczdC+XLCPcluXAiBOsDt2mxpZm8enXDhcfa1A+YgYFUvLJaGrJR8N1qJwLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27354},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.15.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/5196b323b34ec29492730d192f80c233/usefy-usefy-0.0.15.tgz","_integrity":"sha512-A+ZjoDyiQlIiXk/IHrOscKSyUW8VyaC0SuhVf0s+TeGbpSy0ao9+U0+Sncj1DixSJQ3b6v1qD/keTYyzJl1k/w==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.15","@usefy/use-counter":"0.0.15","@usefy/use-debounce":"0.0.15","@usefy/use-throttle":"0.0.15","@usefy/use-local-storage":"0.0.15","@usefy/use-click-any-where":"0.0.15","@usefy/use-session-storage":"0.0.15","@usefy/use-on-click-outside":"0.0.15","@usefy/use-copy-to-clipboard":"0.0.15","@usefy/use-debounce-callback":"0.0.15","@usefy/use-throttle-callback":"0.0.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.15_1767103616671_0.5263010818960834","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@usefy/usefy","version":"0.0.16","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.16","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"d97d32e8d656837beff64005e310ab405f4d1126","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.16.tgz","fileCount":8,"integrity":"sha512-jDk5eN/PFy2BaWvjhcNSZBBf6hb3qnVoEyyHUFtA9umD5gEKCqeC8rZ+F5E3remLC8HAU6g5UH74ts7nfYBtiw==","signatures":[{"sig":"MEUCIHwaVjB64Ux8dKXTM+xfeoWys/lb1p1F0T5PVXGHnG6YAiEAm2E4Px3JyJ76SgCX/WnCC3cAMvsr71Wj8nxRpYIq1bo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28192},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.16.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/58b617f384d247221b1e10101020c9f8/usefy-usefy-0.0.16.tgz","_integrity":"sha512-jDk5eN/PFy2BaWvjhcNSZBBf6hb3qnVoEyyHUFtA9umD5gEKCqeC8rZ+F5E3remLC8HAU6g5UH74ts7nfYBtiw==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.16","@usefy/use-counter":"0.0.16","@usefy/use-debounce":"0.0.16","@usefy/use-throttle":"0.0.16","@usefy/use-local-storage":"0.0.16","@usefy/use-event-listener":"0.0.16","@usefy/use-click-any-where":"0.0.16","@usefy/use-session-storage":"0.0.16","@usefy/use-on-click-outside":"0.0.16","@usefy/use-copy-to-clipboard":"0.0.16","@usefy/use-debounce-callback":"0.0.16","@usefy/use-throttle-callback":"0.0.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.16_1767150192060_0.6828405540377067","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@usefy/usefy","version":"0.0.17","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.17","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"632b2217baff48518f63c750ce503e53b38d251c","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.17.tgz","fileCount":8,"integrity":"sha512-wTJcxRV31IEQB10DVC8nY1nrDFRqKpusW4BXcDI/0nDk9CpwiLdWR9RGwxCU7Oy+d4XecU8EEx0ag+Mek0kzYg==","signatures":[{"sig":"MEUCIGYby6Racfpzs5lfvqyeu8zHRkAVLMqmVu6emIgM7WIDAiEAmA4Lz0lGlIkLBpdZdmAaOId0n44QDkvQj0FMXjGoMIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28192},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.17.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/89ad280c7a9a56c379c5959ed0a2e125/usefy-usefy-0.0.17.tgz","_integrity":"sha512-wTJcxRV31IEQB10DVC8nY1nrDFRqKpusW4BXcDI/0nDk9CpwiLdWR9RGwxCU7Oy+d4XecU8EEx0ag+Mek0kzYg==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.17","@usefy/use-counter":"0.0.17","@usefy/use-debounce":"0.0.17","@usefy/use-throttle":"0.0.17","@usefy/use-local-storage":"0.0.17","@usefy/use-event-listener":"0.0.17","@usefy/use-click-any-where":"0.0.17","@usefy/use-session-storage":"0.0.17","@usefy/use-on-click-outside":"0.0.17","@usefy/use-copy-to-clipboard":"0.0.17","@usefy/use-debounce-callback":"0.0.17","@usefy/use-throttle-callback":"0.0.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.17_1767150548860_0.09706073760827594","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@usefy/usefy","version":"0.0.18","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.18","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"e19dacd48cfdcb1c52125f0fe80dd615396fb192","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.18.tgz","fileCount":8,"integrity":"sha512-NP91yrgDvcJaN172PLun9+4RgZ5bTkonuUuYmRGFgTVWLB/ajfChv8kJMHg2Yr44rO2BL2FYVgJgW+ciKljNSA==","signatures":[{"sig":"MEYCIQC8daReyXmzM+h/8soeKMCUsAlA3KqRu49e3oZvNdiAbQIhALvvLpghSLtL+PqAEGvwrUIxHumW8sTk+pLBefF+MlTY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29585},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.18.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/93754a281f73159537c3e151732d0143/usefy-usefy-0.0.18.tgz","_integrity":"sha512-NP91yrgDvcJaN172PLun9+4RgZ5bTkonuUuYmRGFgTVWLB/ajfChv8kJMHg2Yr44rO2BL2FYVgJgW+ciKljNSA==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-toggle":"0.0.18","@usefy/use-counter":"0.0.18","@usefy/use-debounce":"0.0.18","@usefy/use-throttle":"0.0.18","@usefy/use-local-storage":"0.0.18","@usefy/use-event-listener":"0.0.18","@usefy/use-click-any-where":"0.0.18","@usefy/use-session-storage":"0.0.18","@usefy/use-on-click-outside":"0.0.18","@usefy/use-copy-to-clipboard":"0.0.18","@usefy/use-debounce-callback":"0.0.18","@usefy/use-throttle-callback":"0.0.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.18_1767151898300_0.77898656782348","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@usefy/usefy","version":"0.0.19","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.19","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"48e7a54053381bbab07a30129aab91094cdee3b6","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.19.tgz","fileCount":8,"integrity":"sha512-prySo3629NPGDIpmuYrU3Gdwu+T5xS2z0HQU/a/CnFkMiUGxfOwa0fr7QuLby0FcTkP39Y5CQxiYax1IGszy5A==","signatures":[{"sig":"MEQCIFpNQhEV3x2njfIGx83Ro9CNbJDmWe/TaVlImWAysAISAiBrFHZ19WemPAzNQWyiTNqjobn4gWrW35b+9ia2VabwTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31460},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.19.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/79b6d6e400b75735585abf7b0b32eb15/usefy-usefy-0.0.19.tgz","_integrity":"sha512-prySo3629NPGDIpmuYrU3Gdwu+T5xS2z0HQU/a/CnFkMiUGxfOwa0fr7QuLby0FcTkP39Y5CQxiYax1IGszy5A==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-timer":"0.0.19","@usefy/use-toggle":"0.0.19","@usefy/use-counter":"0.0.19","@usefy/use-debounce":"0.0.19","@usefy/use-throttle":"0.0.19","@usefy/use-local-storage":"0.0.19","@usefy/use-event-listener":"0.0.19","@usefy/use-click-any-where":"0.0.19","@usefy/use-session-storage":"0.0.19","@usefy/use-on-click-outside":"0.0.19","@usefy/use-copy-to-clipboard":"0.0.19","@usefy/use-debounce-callback":"0.0.19","@usefy/use-throttle-callback":"0.0.19"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.19_1767267344730_0.7183257725827066","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@usefy/usefy","version":"0.0.20","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.20","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"dc86573e517775f1030a28b984ac3bc51a6ff371","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.20.tgz","fileCount":8,"integrity":"sha512-7s/qKDGaeMnZbexPKjgsAO3MPsTWvOSPJhIfqUS0V/nKjI4fHPC7bSbmbbF34n3JqXzFBlR26rATf2O5suQ2sQ==","signatures":[{"sig":"MEUCIQCyfGxobDBTwl2LHwu3HMPemz/RHmkt/7m2qVAuoR3UVgIgGxzXqCOS6QnXCa/elRyoW6eMUAFbLlANqgHu/d9opOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32036},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.20.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/6f0464c3578d72cdd3e6478686b43b02/usefy-usefy-0.0.20.tgz","_integrity":"sha512-7s/qKDGaeMnZbexPKjgsAO3MPsTWvOSPJhIfqUS0V/nKjI4fHPC7bSbmbbF34n3JqXzFBlR26rATf2O5suQ2sQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-timer":"0.0.20","@usefy/use-toggle":"0.0.20","@usefy/use-counter":"0.0.20","@usefy/use-unmount":"0.0.20","@usefy/use-debounce":"0.0.20","@usefy/use-throttle":"0.0.20","@usefy/use-local-storage":"0.0.20","@usefy/use-event-listener":"0.0.20","@usefy/use-click-any-where":"0.0.20","@usefy/use-session-storage":"0.0.20","@usefy/use-on-click-outside":"0.0.20","@usefy/use-copy-to-clipboard":"0.0.20","@usefy/use-debounce-callback":"0.0.20","@usefy/use-throttle-callback":"0.0.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.20_1767497131817_0.2234732058841804","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@usefy/usefy","version":"0.0.21","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.21","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"8f3ae1526699a35eca351638e112d46ffda2a31e","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.21.tgz","fileCount":8,"integrity":"sha512-uQT8DNfO3i0FEhFxLlu6RveJM/g32VALMveHeA+JK2gx/Q51F9ODoI9f7NrMrHzEdQvk/NJ4nLU1YZ17GHSmMg==","signatures":[{"sig":"MEUCIQDiaflH7KMk8As7kE8kicsA2pDrBqXD01mMCFi3fm0JhQIgOAz2noRQqpkm4RxgRd84giP36DxH2Ci7cFkOBS3UZrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36259},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.21.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/d09759a1d627c195195fbc19ef818613/usefy-usefy-0.0.21.tgz","_integrity":"sha512-uQT8DNfO3i0FEhFxLlu6RveJM/g32VALMveHeA+JK2gx/Q51F9ODoI9f7NrMrHzEdQvk/NJ4nLU1YZ17GHSmMg==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-timer":"0.0.21","@usefy/use-toggle":"0.0.21","@usefy/use-counter":"0.0.21","@usefy/use-unmount":"0.0.21","@usefy/use-debounce":"0.0.21","@usefy/use-throttle":"0.0.21","@usefy/use-local-storage":"0.0.21","@usefy/use-event-listener":"0.0.21","@usefy/use-click-any-where":"0.0.21","@usefy/use-session-storage":"0.0.21","@usefy/use-on-click-outside":"0.0.21","@usefy/use-copy-to-clipboard":"0.0.21","@usefy/use-debounce-callback":"0.0.21","@usefy/use-throttle-callback":"0.0.21"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.21_1767506874383_0.3655039389023027","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@usefy/usefy","version":"0.0.22","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.22","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"dcdc6b6561299c4337e43bc0e399f1f5dbba82af","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.22.tgz","fileCount":8,"integrity":"sha512-rcHRHgZ8rHPYBWdsh41yeGrTkbkD2s/w/zV0Iu81ksSo/YHdqa7hBrAynoX1C1vkQOA2hOk3L733c3TOqtX1vw==","signatures":[{"sig":"MEQCIDPBfV4XXPpDjdKcBlr2ZPrwMTqR6ATWCkVF7FMDUbV9AiAOsPOnKXJ24O4AVx1SNG1OK1VJ3+Qwlr2xkyUnVZTWSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36259},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.22.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/6bc62448a77ae0c327944d71d373cef1/usefy-usefy-0.0.22.tgz","_integrity":"sha512-rcHRHgZ8rHPYBWdsh41yeGrTkbkD2s/w/zV0Iu81ksSo/YHdqa7hBrAynoX1C1vkQOA2hOk3L733c3TOqtX1vw==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-timer":"0.0.22","@usefy/use-toggle":"0.0.22","@usefy/use-counter":"0.0.22","@usefy/use-unmount":"0.0.22","@usefy/use-debounce":"0.0.22","@usefy/use-throttle":"0.0.22","@usefy/use-local-storage":"0.0.22","@usefy/use-event-listener":"0.0.22","@usefy/use-click-any-where":"0.0.22","@usefy/use-session-storage":"0.0.22","@usefy/use-on-click-outside":"0.0.22","@usefy/use-copy-to-clipboard":"0.0.22","@usefy/use-debounce-callback":"0.0.22","@usefy/use-throttle-callback":"0.0.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.22_1767511645267_0.22883118498413246","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@usefy/usefy","version":"0.0.23","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.23","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"f576b5d8ec90aa50162071dbe7f9ffb73a02fa04","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.23.tgz","fileCount":8,"integrity":"sha512-79KQtlR7DMnLQesD5TiDiqHAOjrOSnZIGW4hMBeAAgbu9Df3ZaJTevD553sqGdqgRYV446vETB4kyvvq71NpNw==","signatures":[{"sig":"MEUCIQCEAy9/bt6rqF3verW3SmxLYwZj0OK9Yj0wRf/XwcISHwIgTpeg+egqzdtxIzoj2mKMzKGbb3+XoS7i1X4pV4ebjmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36259},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.23.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/d9efc46e45f474b6335cfaba72eb0751/usefy-usefy-0.0.23.tgz","_integrity":"sha512-79KQtlR7DMnLQesD5TiDiqHAOjrOSnZIGW4hMBeAAgbu9Df3ZaJTevD553sqGdqgRYV446vETB4kyvvq71NpNw==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-timer":"0.0.23","@usefy/use-toggle":"0.0.23","@usefy/use-counter":"0.0.23","@usefy/use-unmount":"0.0.23","@usefy/use-debounce":"0.0.23","@usefy/use-throttle":"0.0.23","@usefy/use-local-storage":"0.0.23","@usefy/use-event-listener":"0.0.23","@usefy/use-click-any-where":"0.0.23","@usefy/use-session-storage":"0.0.23","@usefy/use-on-click-outside":"0.0.23","@usefy/use-copy-to-clipboard":"0.0.23","@usefy/use-debounce-callback":"0.0.23","@usefy/use-throttle-callback":"0.0.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.23_1767519305474_0.9303200433484498","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@usefy/usefy","version":"0.0.24","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.24","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"54d01bd8eaa730937362fd5e81c1f0bfa1eda175","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.24.tgz","fileCount":8,"integrity":"sha512-A3pL17N6lhuPh6jFZSwLwcR/IAFqi7Ni5eNrmbY2RKKonmoq5jqnrPXKgL6R922cBmorx2FAtXe3brJ4d4m7tg==","signatures":[{"sig":"MEUCIBZa6FgLeF5pAHzdluR3uBrdjR4Lagmu0DyVX9XnbjcpAiEArNUABNPKi3A8HIbUWNTXErRkw+S1PNpVZqy8rv7THjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36866},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.24.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/99be1c5533b58b99cad24af4af12450c/usefy-usefy-0.0.24.tgz","_integrity":"sha512-A3pL17N6lhuPh6jFZSwLwcR/IAFqi7Ni5eNrmbY2RKKonmoq5jqnrPXKgL6R922cBmorx2FAtXe3brJ4d4m7tg==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.24","@usefy/use-timer":"0.0.24","@usefy/use-toggle":"0.0.24","@usefy/use-counter":"0.0.24","@usefy/use-unmount":"0.0.24","@usefy/use-debounce":"0.0.24","@usefy/use-throttle":"0.0.24","@usefy/use-local-storage":"0.0.24","@usefy/use-event-listener":"0.0.24","@usefy/use-click-any-where":"0.0.24","@usefy/use-session-storage":"0.0.24","@usefy/use-on-click-outside":"0.0.24","@usefy/use-copy-to-clipboard":"0.0.24","@usefy/use-debounce-callback":"0.0.24","@usefy/use-throttle-callback":"0.0.24"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.24_1767521850088_0.13599070897588184","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@usefy/usefy","version":"0.0.25","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.25","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/geon0529/usefy#readme","bugs":{"url":"https://github.com/geon0529/usefy/issues"},"dist":{"shasum":"a0a64dd386a77df35b145d0a8f3ba9fdd557a2aa","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.25.tgz","fileCount":8,"integrity":"sha512-N0IlngvpTLgNSfuefWcWEwiaPLaUt05FJJKlMqVaR8suyqwgXD4vCQc8zQoojTqmIVZEIBmNWgzeEWbu53BKUQ==","signatures":[{"sig":"MEYCIQCjbHG0F6el04eyR9me4O8VTTbLlqhT89UsvSnAejOuEgIhAOiJXQ4XTsWNAC1kODNSDwzzrmrtULJ2LdEA74PaxUes","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38366},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.25.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/9f425e4bc23f6862f97870ee5416550b/usefy-usefy-0.0.25.tgz","_integrity":"sha512-N0IlngvpTLgNSfuefWcWEwiaPLaUt05FJJKlMqVaR8suyqwgXD4vCQc8zQoojTqmIVZEIBmNWgzeEWbu53BKUQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/geon0529/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.25","@usefy/use-timer":"0.0.25","@usefy/use-toggle":"0.0.25","@usefy/use-counter":"0.0.25","@usefy/use-unmount":"0.0.25","@usefy/use-debounce":"0.0.25","@usefy/use-throttle":"0.0.25","@usefy/use-local-storage":"0.0.25","@usefy/use-event-listener":"0.0.25","@usefy/use-click-any-where":"0.0.25","@usefy/use-session-storage":"0.0.25","@usefy/use-on-click-outside":"0.0.25","@usefy/use-copy-to-clipboard":"0.0.25","@usefy/use-debounce-callback":"0.0.25","@usefy/use-throttle-callback":"0.0.25"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.25_1767522252028_0.5516313008148934","host":"s3://npm-registry-packages-npm-production"}},"0.0.26":{"name":"@usefy/usefy","version":"0.0.26","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.26","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"ba2fb12b8ea69ba597e4ebf1a19be83aa802686a","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.26.tgz","fileCount":8,"integrity":"sha512-Lch+Itu8cA5iiUhu4YQsbP5AcdRocj4H8Y7sCVfMnuWOBXeTUdcEx5mLGWjsdFF0bkTEQWUgq4Gw3G5+Y/+xBQ==","signatures":[{"sig":"MEUCIQDLGV9v+9HWdBEXsg6AQb7vhGs/VWt+Sj6dZX2u51wSsgIgWA5WT6PD5MUjT+MteG7AQtk2g10KI0rans+p3GzWmwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38388},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.26.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/e42731c2a98a82a276e46b5ee370efae/usefy-usefy-0.0.26.tgz","_integrity":"sha512-Lch+Itu8cA5iiUhu4YQsbP5AcdRocj4H8Y7sCVfMnuWOBXeTUdcEx5mLGWjsdFF0bkTEQWUgq4Gw3G5+Y/+xBQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.26","@usefy/use-timer":"0.0.26","@usefy/use-toggle":"0.0.26","@usefy/use-counter":"0.0.26","@usefy/use-unmount":"0.0.26","@usefy/use-debounce":"0.0.26","@usefy/use-throttle":"0.0.26","@usefy/use-local-storage":"0.0.26","@usefy/use-event-listener":"0.0.26","@usefy/use-click-any-where":"0.0.26","@usefy/use-session-storage":"0.0.26","@usefy/use-on-click-outside":"0.0.26","@usefy/use-copy-to-clipboard":"0.0.26","@usefy/use-debounce-callback":"0.0.26","@usefy/use-throttle-callback":"0.0.26"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.26_1767523188523_0.38933609510980416","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@usefy/usefy","version":"0.0.27","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.27","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"b921f35f87be67293597055941196f4efc4a4e0d","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.27.tgz","fileCount":8,"integrity":"sha512-O1TSkxtHM4R3bmuKgPyUQZlAV8ipe91DV2ktbR7BlLP8zTkg3C5cHmbA9eS2KcvmZzrIyRTO4u4EzmenNGe8BQ==","signatures":[{"sig":"MEYCIQDIACsoOHBdvFFHm+Hjr4Y/MYvFEayhkEh5cSL2ursxkAIhANoPdPEeFnkjY64GRDUeh5JazOrJd6vOCIxFXLkogvsL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38379},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.27.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/fea6b410f5756e045cd7791d88ee25bc/usefy-usefy-0.0.27.tgz","_integrity":"sha512-O1TSkxtHM4R3bmuKgPyUQZlAV8ipe91DV2ktbR7BlLP8zTkg3C5cHmbA9eS2KcvmZzrIyRTO4u4EzmenNGe8BQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.27","@usefy/use-timer":"0.0.27","@usefy/use-toggle":"0.0.27","@usefy/use-counter":"0.0.27","@usefy/use-unmount":"0.0.27","@usefy/use-debounce":"0.0.27","@usefy/use-throttle":"0.0.27","@usefy/use-local-storage":"0.0.27","@usefy/use-event-listener":"0.0.27","@usefy/use-click-any-where":"0.0.27","@usefy/use-session-storage":"0.0.27","@usefy/use-on-click-outside":"0.0.27","@usefy/use-copy-to-clipboard":"0.0.27","@usefy/use-debounce-callback":"0.0.27","@usefy/use-throttle-callback":"0.0.27"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.27_1767577418658_0.43596158485944225","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@usefy/usefy","version":"0.0.28","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.28","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"09cbcedcf51b151f4095da10d1b458f73aa4f381","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.28.tgz","fileCount":8,"integrity":"sha512-jmt9s0XvC8YP7C69snzJmDpTzv1owcDSdPrL3+Lq0OIJSRAonjKzX8H+DMLcd0wwjoa/WX0tIcok1RI6tzcdBQ==","signatures":[{"sig":"MEUCIQDv1+2sL8ptsAkJMvSbi8/N7+4l+69oSbI+MpLlsxkH2wIgcdJJ+kThogQOYao/TFd5j239zLIGAMqswLaE1Rr7HhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41933},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.28.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/01bae652842193afd91202a2d64f64ce/usefy-usefy-0.0.28.tgz","_integrity":"sha512-jmt9s0XvC8YP7C69snzJmDpTzv1owcDSdPrL3+Lq0OIJSRAonjKzX8H+DMLcd0wwjoa/WX0tIcok1RI6tzcdBQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.28","@usefy/use-timer":"0.0.28","@usefy/use-toggle":"0.0.28","@usefy/use-counter":"0.0.28","@usefy/use-unmount":"0.0.28","@usefy/use-debounce":"0.0.28","@usefy/use-throttle":"0.0.28","@usefy/use-geolocation":"0.0.28","@usefy/use-local-storage":"0.0.28","@usefy/use-event-listener":"0.0.28","@usefy/use-click-any-where":"0.0.28","@usefy/use-session-storage":"0.0.28","@usefy/use-on-click-outside":"0.0.28","@usefy/use-copy-to-clipboard":"0.0.28","@usefy/use-debounce-callback":"0.0.28","@usefy/use-throttle-callback":"0.0.28"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.28_1767592316444_0.5934999960579712","host":"s3://npm-registry-packages-npm-production"}},"0.0.29":{"name":"@usefy/usefy","version":"0.0.29","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.29","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"ba9dfb598a15755c0e80eb10d31d699b8d063767","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.29.tgz","fileCount":8,"integrity":"sha512-dYJ40c/YS4VJMf7waySB30KArEL4WcKxjkBpfWK0pf2YivasnHaF6eAMS73LBJ1cqv42Tr5a3D4haRXVpdmi6w==","signatures":[{"sig":"MEQCIEavkieH82X+Og6i9TC7kCZWzv0KLhnG40PJJSc0Tk4AAiAKVZr+XXlmUfMe449mkYS5Ad6Sn99vEmW7WmosJ8z/KA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44045},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.29.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/3c4d4362e45afefebaa34ea355b3be09/usefy-usefy-0.0.29.tgz","_integrity":"sha512-dYJ40c/YS4VJMf7waySB30KArEL4WcKxjkBpfWK0pf2YivasnHaF6eAMS73LBJ1cqv42Tr5a3D4haRXVpdmi6w==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.29","@usefy/use-timer":"0.0.29","@usefy/use-toggle":"0.0.29","@usefy/use-counter":"0.0.29","@usefy/use-unmount":"0.0.29","@usefy/use-debounce":"0.0.29","@usefy/use-throttle":"0.0.29","@usefy/use-geolocation":"0.0.29","@usefy/use-local-storage":"0.0.29","@usefy/use-event-listener":"0.0.29","@usefy/use-click-any-where":"0.0.29","@usefy/use-session-storage":"0.0.29","@usefy/use-on-click-outside":"0.0.29","@usefy/use-copy-to-clipboard":"0.0.29","@usefy/use-debounce-callback":"0.0.29","@usefy/use-throttle-callback":"0.0.29","@usefy/use-intersection-observer":"0.0.29"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.29_1767608066999_0.8693613341224744","host":"s3://npm-registry-packages-npm-production"}},"0.0.30":{"name":"@usefy/usefy","version":"0.0.30","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.30","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"7dbf1ab4a2c981f8b68e93f0cd0bbde9cbb4de15","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.30.tgz","fileCount":8,"integrity":"sha512-pxL+sT6ExXB9kJBLKe1pQsnn+R3Gvp+hNvaby9c1p4ckLi2vVA9ZnXkPNt/HhotcsDZrIMvagi1RxiXk4FmXTQ==","signatures":[{"sig":"MEYCIQCqIevyXUZHABFQ3w93QT8DRLGiVgHPYI+FxV9a6YaLngIhAIYXpZ9BiY0GXshONVF9LqwrpkHeSfNDl9yUAi7ItyUn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47059},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.30.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/2bef0acef0cee0d47b6920b6b9d82cc2/usefy-usefy-0.0.30.tgz","_integrity":"sha512-pxL+sT6ExXB9kJBLKe1pQsnn+R3Gvp+hNvaby9c1p4ckLi2vVA9ZnXkPNt/HhotcsDZrIMvagi1RxiXk4FmXTQ==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.30","@usefy/use-timer":"0.0.30","@usefy/use-toggle":"0.0.30","@usefy/use-counter":"0.0.30","@usefy/use-unmount":"0.0.30","@usefy/use-debounce":"0.0.30","@usefy/use-throttle":"0.0.30","@usefy/use-geolocation":"0.0.30","@usefy/use-local-storage":"0.0.30","@usefy/use-event-listener":"0.0.30","@usefy/use-click-any-where":"0.0.30","@usefy/use-session-storage":"0.0.30","@usefy/use-on-click-outside":"0.0.30","@usefy/use-copy-to-clipboard":"0.0.30","@usefy/use-debounce-callback":"0.0.30","@usefy/use-throttle-callback":"0.0.30","@usefy/use-intersection-observer":"0.0.30"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.30_1767608709402_0.4517471065530507","host":"s3://npm-registry-packages-npm-production"}},"0.0.31":{"name":"@usefy/usefy","version":"0.0.31","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.31","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"102a1766f91099cb542929e89b5ace8d2a100fe4","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.31.tgz","fileCount":8,"integrity":"sha512-AFZvW0PdUQhXk0MW+JfL/PuK8NvhORVGrmbkQTTB+Hj1efv8Fgvk5J2TCwAl4VSOOChguUghWDXFiAslo2K6/w==","signatures":[{"sig":"MEUCIH/bqilGKsZZYdIhaOBmv823pP7KZw+TX1az4KgTPTeiAiEAokYG3hHs/h/kns7h0w4X/epxuuNH1XYdBz6U8Neo2FU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49973},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.31.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/b42f46633403ae0e3159feebf5694621/usefy-usefy-0.0.31.tgz","_integrity":"sha512-AFZvW0PdUQhXk0MW+JfL/PuK8NvhORVGrmbkQTTB+Hj1efv8Fgvk5J2TCwAl4VSOOChguUghWDXFiAslo2K6/w==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.31","@usefy/use-timer":"0.0.31","@usefy/use-signal":"0.0.31","@usefy/use-toggle":"0.0.31","@usefy/use-counter":"0.0.31","@usefy/use-unmount":"0.0.31","@usefy/use-debounce":"0.0.31","@usefy/use-throttle":"0.0.31","@usefy/use-geolocation":"0.0.31","@usefy/use-local-storage":"0.0.31","@usefy/use-event-listener":"0.0.31","@usefy/use-click-any-where":"0.0.31","@usefy/use-session-storage":"0.0.31","@usefy/use-on-click-outside":"0.0.31","@usefy/use-copy-to-clipboard":"0.0.31","@usefy/use-debounce-callback":"0.0.31","@usefy/use-throttle-callback":"0.0.31","@usefy/use-intersection-observer":"0.0.31"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.31_1767625532807_0.07131640689532648","host":"s3://npm-registry-packages-npm-production"}},"0.0.32":{"name":"@usefy/usefy","version":"0.0.32","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.32","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"360342849f6616904a6673dbe052fb5ef994cf97","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.32.tgz","fileCount":8,"integrity":"sha512-yXITM/F5sY/wWbNfjOZHb/f/JaAnabbA5FvyTiROodfKU/TNt/kMHzIIiMh/WMMe9HEtBzvka5gex+K7slKH5Q==","signatures":[{"sig":"MEQCICz5yys59YGCeW3QXesJ8sOj/DpYDgEZMswi+TmnwT9sAiBBrA/N/MlstMzIxePa2D/Dwjb7x4k0qrXcX3eQIppCEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53089},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.32.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/cf344e69fd6d93fce62ce7f13c16b759/usefy-usefy-0.0.32.tgz","_integrity":"sha512-yXITM/F5sY/wWbNfjOZHb/f/JaAnabbA5FvyTiROodfKU/TNt/kMHzIIiMh/WMMe9HEtBzvka5gex+K7slKH5Q==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.32","@usefy/use-timer":"0.0.32","@usefy/use-signal":"0.0.32","@usefy/use-toggle":"0.0.32","@usefy/use-counter":"0.0.32","@usefy/use-unmount":"0.0.32","@usefy/use-debounce":"0.0.32","@usefy/use-throttle":"0.0.32","@usefy/use-geolocation":"0.0.32","@usefy/use-local-storage":"0.0.32","@usefy/use-event-listener":"0.0.32","@usefy/use-memory-monitor":"0.0.32","@usefy/use-click-any-where":"0.0.32","@usefy/use-session-storage":"0.0.32","@usefy/use-on-click-outside":"0.0.32","@usefy/use-copy-to-clipboard":"0.0.32","@usefy/use-debounce-callback":"0.0.32","@usefy/use-throttle-callback":"0.0.32","@usefy/use-intersection-observer":"0.0.32"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.32_1767879894351_0.4075162657153226","host":"s3://npm-registry-packages-npm-production"}},"0.0.33":{"name":"@usefy/usefy","version":"0.0.33","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.33","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"539e64699d845a33c4a92d350b43f75bc8ca8fc4","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.33.tgz","fileCount":8,"integrity":"sha512-Ulf2FvzdBEyPXAChMvCpepSFYESKg6wXnHubmRdjoRCirq7BnQtBVZGoMlIvrV6b27DEU5d5ye3b8e3yY7Eqqw==","signatures":[{"sig":"MEUCIQCmgF8SjDBGuxUDuUyW8izFauoKyRoP72x/iaW+xTdZVAIgFsRt4/h5IkahkclgxwJOlxKM7wdmmDCaWipP9v0Ytz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53722},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.33.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/d45c57980aedecf239510ec702ecc9d3/usefy-usefy-0.0.33.tgz","_integrity":"sha512-Ulf2FvzdBEyPXAChMvCpepSFYESKg6wXnHubmRdjoRCirq7BnQtBVZGoMlIvrV6b27DEU5d5ye3b8e3yY7Eqqw==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.33","@usefy/use-timer":"0.0.33","@usefy/use-signal":"0.0.33","@usefy/use-toggle":"0.0.33","@usefy/use-counter":"0.0.33","@usefy/use-unmount":"0.0.33","@usefy/use-debounce":"0.0.33","@usefy/use-throttle":"0.0.33","@usefy/use-geolocation":"0.0.33","@usefy/use-local-storage":"0.0.33","@usefy/use-event-listener":"0.0.33","@usefy/use-memory-monitor":"0.0.33","@usefy/use-click-any-where":"0.0.33","@usefy/use-session-storage":"0.0.33","@usefy/use-on-click-outside":"0.0.33","@usefy/use-copy-to-clipboard":"0.0.33","@usefy/use-debounce-callback":"0.0.33","@usefy/use-throttle-callback":"0.0.33","@usefy/use-intersection-observer":"0.0.33"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.33_1767881762851_0.3999668896470372","host":"s3://npm-registry-packages-npm-production"}},"0.0.34":{"name":"@usefy/usefy","version":"0.0.34","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.34","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"bc2acecc72dfb0afe410addc67034e7de77f2f83","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.34.tgz","fileCount":8,"integrity":"sha512-EP73LjAcMD4rgdI/mfxZrgw/U/W5MuLXd2T2XCzrtjPM7ejdeuGOg+RzJSL7g13sm4A09JmnCt3E0oLiFBm59A==","signatures":[{"sig":"MEYCIQDdL/OPCPrZ2Svn4gyiysPTBjFR2cD3gWyyn/jysJjGAwIhAJFUpUgw1Ni0Uw2Llf23HQb5Cbt/FDch4OCfRzZCPehb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53722},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.34.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/c6856017066baac64454f38275432bab/usefy-usefy-0.0.34.tgz","_integrity":"sha512-EP73LjAcMD4rgdI/mfxZrgw/U/W5MuLXd2T2XCzrtjPM7ejdeuGOg+RzJSL7g13sm4A09JmnCt3E0oLiFBm59A==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.34","@usefy/use-timer":"0.0.34","@usefy/use-signal":"0.0.34","@usefy/use-toggle":"0.0.34","@usefy/use-counter":"0.0.34","@usefy/use-unmount":"0.0.34","@usefy/use-debounce":"0.0.34","@usefy/use-throttle":"0.0.34","@usefy/use-geolocation":"0.0.34","@usefy/use-local-storage":"0.0.34","@usefy/use-event-listener":"0.0.34","@usefy/use-memory-monitor":"0.0.34","@usefy/use-click-any-where":"0.0.34","@usefy/use-session-storage":"0.0.34","@usefy/use-on-click-outside":"0.0.34","@usefy/use-copy-to-clipboard":"0.0.34","@usefy/use-debounce-callback":"0.0.34","@usefy/use-throttle-callback":"0.0.34","@usefy/use-intersection-observer":"0.0.34"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.34_1767885012318_0.6489760218076648","host":"s3://npm-registry-packages-npm-production"}},"0.0.35":{"name":"@usefy/usefy","version":"0.0.35","keywords":["react","hooks","custom-hooks","usefy"],"license":"MIT","_id":"@usefy/usefy@0.0.35","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"homepage":"https://github.com/mirunamu00/usefy#readme","bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"dist":{"shasum":"3e19313e5da25f0ebe677a3f083e5a9db5119cca","tarball":"https://registry.npmjs.org/@usefy/usefy/-/usefy-0.0.35.tgz","fileCount":8,"integrity":"sha512-eVw9Z3dZ6ZRNn2ICNFs1qe34mcjSQpvLJrsFRRsW4HfEbfwdjSumX/EH1mXCBdMaT8KGorHZHnwNxfQBmY3ifA==","signatures":[{"sig":"MEUCIHe9x+UhiwfCwkrtgyJNYZJfmfE7evuEZ6vuEgrX/yKEAiEAtzeYdp8bYVmdGGjU3hVc8gIK+Wb2YnQsOPUPJRNkLrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53722},"main":"./dist/index.js","_from":"file:usefy-usefy-0.0.35.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","build":"tsup","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mirunamu","email":"geon0529@gmail.com"},"_resolved":"/tmp/b8d332f3fe79989d0cec29c4b91c439f/usefy-usefy-0.0.35.tgz","_integrity":"sha512-eVw9Z3dZ6ZRNn2ICNFs1qe34mcjSQpvLJrsFRRsW4HfEbfwdjSumX/EH1mXCBdMaT8KGorHZHnwNxfQBmY3ifA==","deprecated":"This package has been renamed to '@usefy/hooks'. Please use 'npm install @usefy/hooks' instead.","repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"_npmVersion":"10.8.2","description":"A collection of useful React hooks","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@usefy/use-init":"0.0.35","@usefy/use-timer":"0.0.35","@usefy/use-signal":"0.0.35","@usefy/use-toggle":"0.0.35","@usefy/use-counter":"0.0.35","@usefy/use-unmount":"0.0.35","@usefy/use-debounce":"0.0.35","@usefy/use-throttle":"0.0.35","@usefy/use-geolocation":"0.0.35","@usefy/use-local-storage":"0.0.35","@usefy/use-event-listener":"0.0.35","@usefy/use-memory-monitor":"0.0.35","@usefy/use-click-any-where":"0.0.35","@usefy/use-session-storage":"0.0.35","@usefy/use-on-click-outside":"0.0.35","@usefy/use-copy-to-clipboard":"0.0.35","@usefy/use-debounce-callback":"0.0.35","@usefy/use-throttle-callback":"0.0.35","@usefy/use-intersection-observer":"0.0.35"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","rimraf":"^6.0.1","typescript":"^5.0.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/usefy_0.0.35_1767885193430_0.029747228149631377","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-12-29T04:18:28.061Z","modified":"2026-01-09T00:59:09.476Z","0.0.2":"2025-12-29T04:18:28.259Z","0.0.3":"2025-12-29T04:37:43.644Z","0.0.4":"2025-12-29T04:52:15.010Z","0.0.5":"2025-12-29T05:48:18.236Z","0.0.6":"2025-12-29T06:04:23.750Z","0.0.7":"2025-12-29T10:24:21.656Z","0.0.8":"2025-12-29T11:12:45.077Z","0.0.10":"2025-12-30T08:36:13.425Z","0.0.11":"2025-12-30T08:41:05.096Z","0.0.12":"2025-12-30T12:21:09.919Z","0.0.13":"2025-12-30T12:36:34.523Z","0.0.14":"2025-12-30T12:45:51.170Z","0.0.15":"2025-12-30T14:06:56.837Z","0.0.16":"2025-12-31T03:03:12.201Z","0.0.17":"2025-12-31T03:09:08.990Z","0.0.18":"2025-12-31T03:31:38.440Z","0.0.19":"2026-01-01T11:35:44.865Z","0.0.20":"2026-01-04T03:25:31.990Z","0.0.21":"2026-01-04T06:07:54.531Z","0.0.22":"2026-01-04T07:27:25.406Z","0.0.23":"2026-01-04T09:35:05.623Z","0.0.24":"2026-01-04T10:17:30.225Z","0.0.25":"2026-01-04T10:24:12.170Z","0.0.26":"2026-01-04T10:39:48.660Z","0.0.27":"2026-01-05T01:43:38.822Z","0.0.28":"2026-01-05T05:51:56.607Z","0.0.29":"2026-01-05T10:14:27.130Z","0.0.30":"2026-01-05T10:25:09.519Z","0.0.31":"2026-01-05T15:05:32.942Z","0.0.32":"2026-01-08T13:44:54.512Z","0.0.33":"2026-01-08T14:16:03.007Z","0.0.34":"2026-01-08T15:10:12.439Z","0.0.35":"2026-01-08T15:13:13.618Z"},"bugs":{"url":"https://github.com/mirunamu00/usefy/issues"},"license":"MIT","homepage":"https://github.com/mirunamu00/usefy#readme","keywords":["react","hooks","custom-hooks","usefy"],"repository":{"url":"git+https://github.com/mirunamu00/usefy.git","type":"git","directory":"packages/usefy"},"description":"A collection of useful React hooks","maintainers":[{"name":"mirunamu","email":"geon0529@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/mirunamu00/usefy/master/assets/logo.png\" alt=\"usefy logo\" width=\"180\" />\n</p>\n\n<h1 align=\"center\">usefy</h1>\n\n<p align=\"center\">\n  <strong>🪝 A collection of production-ready React hooks for modern applications</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@usefy/usefy\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://img.shields.io/npm/v/@usefy/usefy.svg?style=flat-square&color=007acc\" alt=\"npm version\" />\n  </a>\n  <a href=\"https://www.npmjs.com/package/@usefy/usefy\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://img.shields.io/npm/dm/@usefy/usefy.svg?style=flat-square&color=007acc\" alt=\"npm downloads\" />\n  </a>\n  <a href=\"https://bundlephobia.com/package/@usefy/usefy\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://img.shields.io/bundlephobia/minzip/@usefy/usefy?style=flat-square&color=007acc\" alt=\"bundle size\" />\n  </a>\n  <a href=\"https://github.com/mirunamu00/usefy/blob/master/LICENSE\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://img.shields.io/npm/l/@usefy/usefy.svg?style=flat-square&color=007acc\" alt=\"license\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#installation\">Installation</a> •\n  <a href=\"#packages\">Packages</a> •\n  <a href=\"#quick-start\">Quick Start</a> •\n  <a href=\"#features\">Features</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://mirunamu00.github.io/usefy/\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <strong>📚 View Storybook Demo</strong>\n  </a>\n</p>\n\n---\n\n> ⚠️ **Pre-release Notice**: This project is currently in version `0.x.x` (alpha/beta stage). APIs may change between minor versions. While fully functional and tested, please use with caution in production environments.\n>\n> 🚧 **Actively Developing**: New hooks are being added regularly. Stay tuned for more utilities!\n\n---\n\n## Overview\n\n**usefy** is a collection of production-ready custom hooks designed for modern React applications. All hooks are written in TypeScript, providing complete type safety, comprehensive testing, and minimal bundle size.\n\n### ✨ Why usefy?\n\n- **🚀 Zero Dependencies** — Pure React implementation with no external dependencies\n- **📦 Tree Shakeable** — Import only the hooks you need to optimize bundle size\n- **🔷 TypeScript First** — Complete type safety with full autocomplete support\n- **⚡ SSR Compatible** — Works seamlessly with Next.js, Remix, and other SSR frameworks\n- **🧪 Well Tested** — High test coverage ensures reliability and stability\n- **📖 Well Documented** — Detailed documentation with practical examples\n- **🎨 Interactive Demos** — Try all hooks in action with our Storybook playground\n\n---\n\n## Installation\n\n### All-in-One Package\n\nInstall all hooks at once:\n\n```bash\n# npm\nnpm install @usefy/usefy\n\n# yarn\nyarn add @usefy/usefy\n\n# pnpm\npnpm add @usefy/usefy\n```\n\n### Individual Packages\n\nYou can also install only the hooks you need:\n\n```bash\n# Example: Install only use-toggle\npnpm add @usefy/use-toggle\n\n# Install multiple packages\npnpm add @usefy/use-debounce @usefy/use-local-storage\n```\n\n### Peer Dependencies\n\nAll packages require React 18 or 19:\n\n```json\n{\n  \"peerDependencies\": {\n    \"react\": \"^18.0.0 || ^19.0.0\"\n  }\n}\n```\n\n---\n\n## Packages\n\n### 📦 Available Hooks\n\n| Hook                                                                                                                                                    | Description                                             | npm                                                                                                                                                                                                                                                     | Coverage                                                                            |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-toggle\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-toggle</a>                               | Boolean state management with toggle, setTrue, setFalse | <a href=\"https://www.npmjs.com/package/@usefy/use-toggle\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-toggle.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                               | ![100%](https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square) |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-counter\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-counter</a>                             | Counter state with increment, decrement, reset          | <a href=\"https://www.npmjs.com/package/@usefy/use-counter\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-counter.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                             | ![100%](https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square) |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-debounce\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-debounce</a>                           | Value debouncing with leading/trailing edge             | <a href=\"https://www.npmjs.com/package/@usefy/use-debounce\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-debounce.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                           | ![92%](https://img.shields.io/badge/coverage-92%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-debounce-callback\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-debounce-callback</a>         | Debounced callbacks with cancel/flush/pending           | <a href=\"https://www.npmjs.com/package/@usefy/use-debounce-callback\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-debounce-callback.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>         | ![93%](https://img.shields.io/badge/coverage-93%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-throttle\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-throttle</a>                           | Value throttling for rate-limiting updates              | <a href=\"https://www.npmjs.com/package/@usefy/use-throttle\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-throttle.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                           | ![100%](https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square) |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-throttle-callback\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-throttle-callback</a>         | Throttled callbacks with cancel/flush/pending           | <a href=\"https://www.npmjs.com/package/@usefy/use-throttle-callback\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-throttle-callback.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>         | ![100%](https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square) |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-local-storage\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-local-storage</a>                 | localStorage persistence with cross-tab sync            | <a href=\"https://www.npmjs.com/package/@usefy/use-local-storage\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-local-storage.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                 | ![95%](https://img.shields.io/badge/coverage-95%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-session-storage\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-session-storage</a>             | sessionStorage persistence for tab lifetime             | <a href=\"https://www.npmjs.com/package/@usefy/use-session-storage\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-session-storage.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>             | ![95%](https://img.shields.io/badge/coverage-95%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-click-any-where\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-click-any-where</a>             | Document-wide click event detection                     | <a href=\"https://www.npmjs.com/package/@usefy/use-click-any-where\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-click-any-where.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>             | ![92%](https://img.shields.io/badge/coverage-92%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-copy-to-clipboard\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-copy-to-clipboard</a>         | Clipboard copy with fallback support                    | <a href=\"https://www.npmjs.com/package/@usefy/use-copy-to-clipboard\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-copy-to-clipboard.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>         | ![88%](https://img.shields.io/badge/coverage-88%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-event-listener\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-event-listener</a>               | DOM event listener with auto cleanup                    | <a href=\"https://www.npmjs.com/package/@usefy/use-event-listener\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-event-listener.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>               | ![96%](https://img.shields.io/badge/coverage-96%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-on-click-outside\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-on-click-outside</a>           | Outside click detection for modals/dropdowns            | <a href=\"https://www.npmjs.com/package/@usefy/use-on-click-outside\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-on-click-outside.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>           | ![98%](https://img.shields.io/badge/coverage-98%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-unmount\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-unmount</a>                             | Execute callback on component unmount                   | <a href=\"https://www.npmjs.com/package/@usefy/use-unmount\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-unmount.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                             | ![100%](https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square) |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-init\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-init</a>                                   | One-time initialization with async, retry, timeout      | <a href=\"https://www.npmjs.com/package/@usefy/use-init\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-init.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                                   | ![96%](https://img.shields.io/badge/coverage-96%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-timer\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-timer</a>                                 | Countdown timer with drift compensation and formats     | <a href=\"https://www.npmjs.com/package/@usefy/use-timer\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-timer.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                                 | ![84%](https://img.shields.io/badge/coverage-84%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-geolocation\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-geolocation</a>                     | Device geolocation with real-time tracking and distance | <a href=\"https://www.npmjs.com/package/@usefy/use-geolocation\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-geolocation.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                     | ![90%](https://img.shields.io/badge/coverage-90%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-intersection-observer\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-intersection-observer</a> | Element visibility detection with Intersection Observer | <a href=\"https://www.npmjs.com/package/@usefy/use-intersection-observer\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-intersection-observer.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a> | ![94%](https://img.shields.io/badge/coverage-94%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-signal\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-signal</a>                                   | Event-driven communication between components           | <a href=\"https://www.npmjs.com/package/@usefy/use-signal\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-signal.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                                   | ![98%](https://img.shields.io/badge/coverage-98%25-brightgreen?style=flat-square)   |\n| <a href=\"https://www.npmjs.com/package/@usefy/use-memory-monitor\" target=\"_blank\" rel=\"noopener noreferrer\">@usefy/use-memory-monitor</a>                   | Real-time browser memory monitoring with leak detection | <a href=\"https://www.npmjs.com/package/@usefy/use-memory-monitor\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://img.shields.io/npm/v/@usefy/use-memory-monitor.svg?style=flat-square&color=007acc\" alt=\"npm version\" /></a>                   | ![90%](https://img.shields.io/badge/coverage-90%25-brightgreen?style=flat-square)   |\n\n---\n\n## Quick Start\n\n### Using the All-in-One Package\n\n```tsx\nimport {\n  useToggle,\n  useCounter,\n  useDebounce,\n  useLocalStorage,\n  useCopyToClipboard,\n  useEventListener,\n  useOnClickOutside,\n  useIntersectionObserver,\n  useSignal,\n  useUnmount,\n  useInit,\n} from \"@usefy/usefy\";\n\nfunction App() {\n  // Boolean state management\n  const { value: isOpen, toggle, setFalse: close } = useToggle(false);\n\n  // Counter with controls\n  const { count, increment, decrement, reset } = useCounter(0);\n\n  // Debounced search\n  const [query, setQuery] = useState(\"\");\n  const debouncedQuery = useDebounce(query, 300);\n\n  // Persistent theme preference\n  const [theme, setTheme] = useLocalStorage(\"theme\", \"light\");\n\n  // Copy functionality\n  const [copiedText, copy] = useCopyToClipboard();\n\n  // Lazy loading image\n  const { ref: imageRef, inView } = useIntersectionObserver({\n    triggerOnce: true,\n    rootMargin: \"50px\",\n  });\n\n  return (\n    <div data-theme={theme}>\n      {/* Modal */}\n      <button onClick={toggle}>Open Modal</button>\n      {isOpen && (\n        <div className=\"modal\">\n          <button onClick={close}>Close</button>\n        </div>\n      )}\n\n      {/* Counter */}\n      <div>\n        <button onClick={decrement}>-</button>\n        <span>{count}</span>\n        <button onClick={increment}>+</button>\n      </div>\n\n      {/* Search */}\n      <input\n        value={query}\n        onChange={(e) => setQuery(e.target.value)}\n        placeholder=\"Search...\"\n      />\n\n      {/* Theme Toggle */}\n      <button onClick={() => setTheme(theme === \"light\" ? \"dark\" : \"light\")}>\n        Toggle Theme\n      </button>\n\n      {/* Copy */}\n      <button onClick={() => copy(\"Hello World!\")}>\n        {copiedText ? \"Copied!\" : \"Copy\"}\n      </button>\n\n      {/* Lazy Loading */}\n      <div ref={imageRef}>\n        {inView && <img src=\"large-image.jpg\" alt=\"Lazy loaded\" />}\n      </div>\n    </div>\n  );\n}\n```\n\n### Using Individual Packages\n\n```tsx\nimport { useToggle } from \"@usefy/use-toggle\";\nimport { useDebounce } from \"@usefy/use-debounce\";\n\nfunction SearchModal() {\n  const { value: isOpen, toggle } = useToggle(false);\n  const [query, setQuery] = useState(\"\");\n  const debouncedQuery = useDebounce(query, 300);\n\n  useEffect(() => {\n    if (debouncedQuery) {\n      searchAPI(debouncedQuery);\n    }\n  }, [debouncedQuery]);\n\n  return (\n    <>\n      <button onClick={toggle}>Search</button>\n      {isOpen && (\n        <input value={query} onChange={(e) => setQuery(e.target.value)} />\n      )}\n    </>\n  );\n}\n```\n\n---\n\n## Features\n\n### 🔄 State Management\n\n<details>\n<summary><strong>useToggle</strong> — Boolean state with utility functions</summary>\n\n```tsx\nconst { value, toggle, setTrue, setFalse, setValue } = useToggle(false);\n```\n\nPerfect for modals, dropdowns, accordions, and switches.\n\n</details>\n\n<details>\n<summary><strong>useCounter</strong> — Counter state with controls</summary>\n\n```tsx\nconst { count, increment, decrement, reset } = useCounter(0);\n```\n\nIdeal for quantity selectors, pagination, and score tracking.\n\n</details>\n\n### ⏱️ Timing Utilities\n\n<details>\n<summary><strong>useDebounce</strong> — Debounce value updates</summary>\n\n```tsx\nconst debouncedValue = useDebounce(value, 300, {\n  leading: false,\n  trailing: true,\n  maxWait: 1000,\n});\n```\n\nBest for search inputs, form validation, and API calls.\n\n</details>\n\n<details>\n<summary><strong>useDebounceCallback</strong> — Debounce function calls</summary>\n\n```tsx\nconst debouncedFn = useDebounceCallback(callback, 300);\n\ndebouncedFn(args); // Call debounced\ndebouncedFn.cancel(); // Cancel pending\ndebouncedFn.flush(); // Execute immediately\ndebouncedFn.pending(); // Check if pending\n```\n\n</details>\n\n<details>\n<summary><strong>useThrottle</strong> — Throttle value updates</summary>\n\n```tsx\nconst throttledValue = useThrottle(value, 100, {\n  leading: true,\n  trailing: true,\n});\n```\n\nPerfect for scroll events, resize handlers, and mouse tracking.\n\n</details>\n\n<details>\n<summary><strong>useThrottleCallback</strong> — Throttle function calls</summary>\n\n```tsx\nconst throttledFn = useThrottleCallback(callback, 100);\n```\n\n</details>\n\n<details>\n<summary><strong>useTimer</strong> — Countdown timer with accurate timing</summary>\n\n```tsx\nimport { useTimer, ms } from \"@usefy/use-timer\";\n\nconst timer = useTimer(ms.minutes(5), {\n  format: \"MM:SS\",\n  autoStart: false,\n  loop: false,\n  onComplete: () => console.log(\"Time's up!\"),\n});\n\n// Controls\ntimer.start();\ntimer.pause();\ntimer.reset();\ntimer.addTime(ms.seconds(10));\ntimer.subtractTime(ms.seconds(5));\n\n// State\ntimer.time; // \"05:00\"\ntimer.progress; // 0-100\ntimer.isRunning; // boolean\n```\n\nPerfect for countdown timers, Pomodoro apps, kitchen timers, and time-based UIs with smart render optimization.\n\n</details>\n\n### 💾 Storage\n\n<details>\n<summary><strong>useLocalStorage</strong> — Persistent storage with sync</summary>\n\n```tsx\nconst [value, setValue, removeValue] = useLocalStorage(\"key\", initialValue, {\n  serializer: JSON.stringify,\n  deserializer: JSON.parse,\n  syncTabs: true,\n  onError: (error) => console.error(error),\n});\n```\n\nSupports cross-tab synchronization and custom serialization.\n\n</details>\n\n<details>\n<summary><strong>useSessionStorage</strong> — Session-scoped storage</summary>\n\n```tsx\nconst [value, setValue, removeValue] = useSessionStorage(\"key\", initialValue);\n```\n\nData persists during tab lifetime, isolated per tab.\n\n</details>\n\n### 📡 Communication\n\n<details>\n<summary><strong>useSignal</strong> — Event-driven communication between components</summary>\n\n```tsx\nimport { useSignal } from \"@usefy/use-signal\";\n\n// Emitter component\nfunction RefreshButton() {\n  const { emit, info } = useSignal(\"dashboard-refresh\");\n  \n  return (\n    <button onClick={() => emit()}>\n      Refresh All ({info.subscriberCount} widgets)\n    </button>\n  );\n}\n\n// Subscriber component\nfunction DataWidget() {\n  const { signal } = useSignal(\"dashboard-refresh\");\n  \n  useEffect(() => {\n    fetchData(); // Refetch when signal changes\n  }, [signal]);\n  \n  return <div>Widget Content</div>;\n}\n\n// With typed data payload\ninterface NotificationData {\n  type: \"success\" | \"error\";\n  message: string;\n}\n\nfunction NotificationEmitter() {\n  const { emit } = useSignal<NotificationData>(\"notification\");\n  \n  return (\n    <button onClick={() => emit({ type: \"success\", message: \"Done!\" })}>\n      Notify\n    </button>\n  );\n}\n\nfunction NotificationReceiver() {\n  const { signal, info } = useSignal<NotificationData>(\"notification\");\n  \n  useEffect(() => {\n    if (signal > 0 && info.data) {\n      toast[info.data.type](info.data.message);\n    }\n  }, [signal]);\n  \n  return null;\n}\n```\n\n**Perfect for:** Dashboard refresh, form reset, cache invalidation, multi-step flows, and event broadcasting.\n\n> ⚠️ **Note:** `useSignal` is NOT a global state management solution. It's designed for lightweight event-driven communication. For complex state management, use Context, Zustand, Jotai, or Recoil.\n\n</details>\n\n### 🖱️ Events\n\n<details>\n<summary><strong>useEventListener</strong> — DOM event listener with auto cleanup</summary>\n\n```tsx\n// Window resize event (default target)\nuseEventListener(\"resize\", (e) => {\n  console.log(\"Window resized:\", window.innerWidth);\n});\n\n// Document keydown event\nuseEventListener(\n  \"keydown\",\n  (e) => {\n    if (e.key === \"Escape\") closeModal();\n  },\n  document\n);\n\n// Element with ref\nconst buttonRef = useRef<HTMLButtonElement>(null);\nuseEventListener(\"click\", handleClick, buttonRef);\n\n// With options\nuseEventListener(\"scroll\", handleScroll, window, {\n  passive: true,\n  capture: false,\n  enabled: isTracking,\n});\n```\n\nSupports window, document, HTMLElement, and RefObject targets with full TypeScript type inference.\n\n</details>\n\n<details>\n<summary><strong>useOnClickOutside</strong> — Outside click detection</summary>\n\n```tsx\n// Basic usage - close modal on outside click\nconst modalRef = useRef<HTMLDivElement>(null);\nuseOnClickOutside(modalRef, () => onClose(), { enabled: isOpen });\n\n// Multiple refs - button and dropdown menu\nconst buttonRef = useRef<HTMLButtonElement>(null);\nconst menuRef = useRef<HTMLDivElement>(null);\nuseOnClickOutside([buttonRef, menuRef], () => setIsOpen(false), {\n  enabled: isOpen,\n});\n\n// With exclude refs\nuseOnClickOutside(modalRef, onClose, {\n  excludeRefs: [toastRef], // Clicks on toast won't close modal\n});\n```\n\nPerfect for modals, dropdowns, popovers, tooltips, and context menus with mouse + touch support.\n\n</details>\n\n<details>\n<summary><strong>useClickAnyWhere</strong> — Global click detection</summary>\n\n```tsx\nuseClickAnyWhere(\n  (event) => {\n    if (!ref.current?.contains(event.target)) {\n      closeMenu();\n    }\n  },\n  { enabled: isOpen }\n);\n```\n\nIdeal for closing dropdowns, modals, and context menus.\n\n</details>\n\n<details>\n<summary><strong>useCopyToClipboard</strong> — Clipboard operations</summary>\n\n```tsx\nconst [copiedText, copy] = useCopyToClipboard({\n  timeout: 2000,\n  onSuccess: (text) => toast.success(\"Copied!\"),\n  onError: (error) => toast.error(\"Failed to copy\"),\n});\n\nconst success = await copy(\"text to copy\");\n```\n\nModern Clipboard API with automatic fallback for older browsers.\n\n</details>\n\n### 📍 Location\n\n<details>\n<summary><strong>useGeolocation</strong> — Device geolocation with real-time tracking and distance calculation</summary>\n\n```tsx\nimport { useGeolocation } from \"@usefy/use-geolocation\";\n\n// Basic usage - get current position\nconst { position, loading, error } = useGeolocation();\n\n// Real-time tracking\nconst { position, watchPosition, clearWatch } = useGeolocation({\n  immediate: false,\n  watch: false,\n  onPositionChange: (pos) => console.log(\"Position updated:\", pos),\n});\n\n// Distance calculation\nconst { position, distanceFrom, bearingTo } = useGeolocation();\n\n// Calculate distance to New York (in meters)\nconst distance = distanceFrom(40.7128, -74.006);\n\n// Calculate bearing/direction to London (0-360 degrees)\nconst bearing = bearingTo(51.5074, -0.1278);\n\n// High accuracy mode\nconst { position } = useGeolocation({\n  enableHighAccuracy: true,\n  timeout: 10000,\n});\n\n// Permission tracking\nconst { permission } = useGeolocation({\n  onPermissionChange: (state) => {\n    console.log(\"Permission:\", state); // \"prompt\" | \"granted\" | \"denied\" | \"unavailable\"\n  },\n});\n```\n\nPerfect for location-based apps, maps, navigation, distance tracking, and geofencing with built-in Haversine distance calculation and bearing utilities.\n\n</details>\n\n### 👁️ Visibility\n\n<details>\n<summary><strong>useIntersectionObserver</strong> — Efficient element visibility detection with Intersection Observer API</summary>\n\n```tsx\nimport { useIntersectionObserver } from \"@usefy/use-intersection-observer\";\n\n// Basic usage - detect when element enters viewport\nconst { ref, inView, entry } = useIntersectionObserver();\n\n// Lazy loading images\nconst { ref, inView } = useIntersectionObserver({\n  triggerOnce: true, // Stop observing after first detection\n  threshold: 0.1, // Trigger when 10% visible\n  rootMargin: \"50px\", // Start loading 50px before entering viewport\n});\n\n// Infinite scroll with sentinel element\nconst { ref, inView } = useIntersectionObserver({\n  threshold: 1.0,\n  rootMargin: \"100px\", // Preload 100px ahead\n});\n\nuseEffect(() => {\n  if (inView) loadMoreItems();\n}, [inView]);\n\n// Scroll animations\nconst { ref, inView } = useIntersectionObserver({\n  triggerOnce: true,\n  threshold: 0.3,\n});\n\n// Progress tracking with multiple thresholds\nconst thresholds = Array.from({ length: 101 }, (_, i) => i / 100);\nconst { ref, entry } = useIntersectionObserver({\n  threshold: thresholds,\n  onChange: (entry) => {\n    setProgress(Math.round(entry.intersectionRatio * 100));\n  },\n});\n\n// Custom scroll container\nconst containerRef = useRef<HTMLDivElement>(null);\nconst { ref, inView } = useIntersectionObserver({\n  root: containerRef.current,\n  rootMargin: \"0px\",\n});\n\n// Delayed observation\nconst { ref, inView } = useIntersectionObserver({\n  delay: 500, // Wait 500ms before creating observer\n});\n```\n\nPerfect for lazy loading, infinite scroll, scroll animations, progress tracking, and any visibility-based interactions with smart re-render optimization.\n\n</details>\n\n### 🔄 Lifecycle\n\n<details>\n<summary><strong>useUnmount</strong> — Execute callback on component unmount</summary>\n\n```tsx\n// Basic usage\nuseUnmount(() => {\n  console.log(\"Component unmounted\");\n});\n\n// With latest state access\nconst [formData, setFormData] = useState({});\nuseUnmount(() => {\n  // Always accesses latest formData value\n  saveToLocalStorage(formData);\n});\n\n// Conditional cleanup\nuseUnmount(\n  () => {\n    sendAnalyticsEvent(\"component_unmounted\");\n  },\n  { enabled: trackingEnabled }\n);\n```\n\nPerfect for saving data, sending analytics, and cleaning up resources on component removal.\n\n</details>\n\n<details>\n<summary><strong>useInit</strong> — One-time initialization with async support, retry, timeout, and conditional execution</summary>\n\n```tsx\n// Basic async initialization\nconst { isInitialized, isInitializing, error } = useInit(async () => {\n  await loadConfiguration();\n});\n\n// With retry and timeout\nconst { error, reinitialize } = useInit(\n  async () => {\n    await connectToServer();\n  },\n  {\n    retry: 3,\n    retryDelay: 1000,\n    timeout: 5000,\n  }\n);\n\n// Conditional initialization\nuseInit(\n  () => {\n    initializeFeature();\n  },\n  { when: isEnabled }\n);\n\n// With cleanup function\nuseInit(() => {\n  const subscription = eventBus.subscribe();\n  return () => subscription.unsubscribe();\n});\n```\n\nPerfect for initializing services, loading configuration, setting up subscriptions, and any one-time setup tasks with robust error handling.\n\n</details>\n\n---\n\n## Test Coverage\n\nAll packages are comprehensively tested using Vitest to ensure reliability and stability.\n\n📊 <a href=\"https://mirunamu00.github.io/usefy/coverage/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>View Detailed Coverage Report</strong></a> (GitHub Pages)\n\n> 💡 To generate coverage report locally, run `pnpm test:coverage`. The report will be available at `coverage/index.html`.\n\n| Package                   | Statements | Branches | Functions | Lines  |\n| ------------------------- | ---------- | -------- | --------- | ------ |\n| use-toggle                | 100%       | 100%     | 100%      | 100%   |\n| use-counter               | 100%       | 100%     | 100%      | 100%   |\n| use-throttle              | 100%       | 100%     | 100%      | 100%   |\n| use-throttle-callback     | 100%       | 100%     | 100%      | 100%   |\n| use-on-click-outside      | 97.61%     | 93.93%   | 100%      | 97.61% |\n| use-event-listener        | 96.29%     | 91.66%   | 100%      | 96.29% |\n| use-init                  | 96.1%      | 88.63%   | 100%      | 96%    |\n| use-local-storage         | 95.18%     | 86.84%   | 93.75%    | 95.12% |\n| use-session-storage       | 94.66%     | 82.75%   | 93.33%    | 94.59% |\n| use-debounce-callback     | 93.2%      | 76%      | 93.75%    | 93.13% |\n| use-click-any-where       | 92.3%      | 87.5%    | 100%      | 92.3%  |\n| use-debounce              | 90%        | 82.6%    | 66.66%    | 91.95% |\n| use-copy-to-clipboard     | 87.87%     | 79.16%   | 85.71%    | 87.87% |\n| use-unmount               | 100%       | 100%     | 100%      | 100%   |\n| use-timer                 | 83.8%      | 72.63%   | 93.93%    | 84.13% |\n| use-geolocation           | 93.89%     | 93.47%   | 100%      | 93.75% |\n| use-intersection-observer | 94%        | 85%      | 95%       | 93.93% |\n| use-signal                | 98.61%     | 90.9%    | 96.42%    | 98.59% |\n| use-memory-monitor        | 89.05%     | 71.64%   | 87.87%    | 92.27% |\n\n---\n\n## Browser Support\n\n| Browser | Version          |\n| ------- | ---------------- |\n| Chrome  | 66+              |\n| Firefox | 63+              |\n| Safari  | 13.1+            |\n| Edge    | 79+              |\n| IE 11   | Fallback support |\n\n---\n\n## Related Links\n\n- 📦 <a href=\"https://www.npmjs.com/org/usefy\" target=\"_blank\" rel=\"noopener noreferrer\">npm Organization</a>\n- 🐙 <a href=\"https://github.com/mirunamu00/usefy\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Repository</a>\n- 📝 <a href=\"https://github.com/mirunamu00/usefy/blob/master/packages/usefy/CHANGELOG.md\" target=\"_blank\" rel=\"noopener noreferrer\">Changelog</a>\n- 🐛 <a href=\"https://github.com/mirunamu00/usefy/issues\" target=\"_blank\" rel=\"noopener noreferrer\">Issue Tracker</a>\n\n---\n\n## License\n\nMIT © <a href=\"https://github.com/mirunamu00\" target=\"_blank\" rel=\"noopener noreferrer\">mirunamu</a>\n\n---\n\n<p align=\"center\">\n  <sub>Built with ❤️ by the usefy team</sub>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/mirunamu00/usefy\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://img.shields.io/github/stars/mirunamu00/usefy?style=social\" alt=\"GitHub stars\" />\n  </a>\n</p>\n","readmeFilename":"README.md"}