{"_id":"@benjaming61001/use-handle-loading","_rev":"3-b258c3843434e4460eb67477fd135ec8","name":"@benjaming61001/use-handle-loading","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@benjaming61001/use-handle-loading","version":"0.0.1","keywords":["loading","async","hooks","typescript","utility"],"author":"","license":"MIT","_id":"@benjaming61001/use-handle-loading@0.0.1","maintainers":[{"name":"benjaming61001","email":"pavin5356@gmail.com"}],"homepage":"https://github.com/Benjaming61001/use-handle-loading#readme","bugs":{"url":"https://github.com/Benjaming61001/use-handle-loading/issues"},"dist":{"shasum":"d36f9f63cee7ca01f96f4f44868a3872c2f8db17","tarball":"https://registry.npmjs.org/@benjaming61001/use-handle-loading/-/use-handle-loading-0.0.1.tgz","fileCount":7,"integrity":"sha512-yZJKSXaUG0QGCE6JCmjq+De5VFycXDxk3wsxcuptwpyzAylIcm5qrvdEIwGyBEgo/anHeOpMC/d2LFLpUYpEWw==","signatures":[{"sig":"MEQCIB+ZVIGrNWzwsVg9h6LTNnPdP7/w/SqXdch+zn9yFYdrAiAqurcDf2ozQxl9e7pFC4Eu4ej3+mM3r1FWtHu4m98dZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13832},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"93add3f3e5a73f171a1a2a57765b7cc08283aa14","scripts":{"test":"echo \"Error: no test specified\"","build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build"},"_npmUser":{"name":"benjaming61001","email":"pavin5356@gmail.com"},"repository":{"url":"git+https://github.com/Benjaming61001/use-handle-loading.git","type":"git"},"_npmVersion":"11.13.0","description":"A lightweight TypeScript utility for managing async loading states with success/error/finally hooks.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/use-handle-loading_0.0.1_1780992645107_0.5793495662171022","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@benjaming61001/use-handle-loading","version":"0.1.0","keywords":["loading","async","hooks","typescript","utility"],"author":"","license":"MIT","_id":"@benjaming61001/use-handle-loading@0.1.0","maintainers":[{"name":"benjaming61001","email":"pavin5356@gmail.com"}],"homepage":"https://github.com/Benjaming61001/use-handle-loading#readme","bugs":{"url":"https://github.com/Benjaming61001/use-handle-loading/issues"},"dist":{"shasum":"bf9c3762765d767bb2d0a975a14b35c42d5c9cc5","tarball":"https://registry.npmjs.org/@benjaming61001/use-handle-loading/-/use-handle-loading-0.1.0.tgz","fileCount":7,"integrity":"sha512-KJTiE1NJXZgmI9v3ZVmIUYJxxd8zTs+L84VtKMfPtese8cgDGWUmNLr1cDMPcqBRELD486tNcWTDDu+vhRbDig==","signatures":[{"sig":"MEUCIQCatunGH6gVLEl9Z5v6qD7+6eTw3zhLUcF723iEchg7jQIgTFDjqjvPVh0E4JABKdnpaNL6q8WQE3rJUnfi3R2Xo8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benjaming61001%2fuse-handle-loading@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14197},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"1040f18373dde8abc03b95208a5817106f48c7ed","scripts":{"test":"vitest run","build":"tsup src/index.ts --format cjs,esm --dts","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c6320c6-24c5-45d6-b049-e6ed46db542b"}},"repository":{"url":"git+https://github.com/Benjaming61001/use-handle-loading.git","type":"git"},"_npmVersion":"11.13.0","description":"A lightweight TypeScript utility for managing async loading states with success/error/finally hooks.","directories":{},"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.1.8","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/use-handle-loading_0.1.0_1780994099522_0.5335437017661167","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@benjaming61001/use-handle-loading","version":"0.1.1","description":"A lightweight TypeScript utility for managing async loading states with success/error/finally hooks.","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","prepublishOnly":"npm run build","test":"vitest run","test:watch":"vitest","lint":"oxlint src/","lint:fix":"oxlint src/ --fix","format":"oxfmt src/","format:fix":"oxfmt src/ --write"},"repository":{"type":"git","url":"git+https://github.com/Benjaming61001/use-handle-loading.git"},"keywords":["loading","async","hooks","typescript","utility"],"author":"","license":"MIT","bugs":{"url":"https://github.com/Benjaming61001/use-handle-loading/issues"},"homepage":"https://github.com/Benjaming61001/use-handle-loading#readme","devDependencies":{"oxfmt":"^0.54.0","oxlint":"^1.69.0","tsup":"^8.5.0","typescript":"^5.9.3","vitest":"^4.1.8"},"gitHead":"5365c78b81a662baab90f9705c4f10b220e358cf","_id":"@benjaming61001/use-handle-loading@0.1.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-wToonEELjgQioWLMyJb1SHsfzPPLG5tFxwoijHshyVJP0ofNK+Zhw6z95pu0n56nibDqSUZ6V2BqVo16/rFiPQ==","shasum":"184efd9bb9ee1c6167c7c3af8a3c6eb9b7d9b6b0","tarball":"https://registry.npmjs.org/@benjaming61001/use-handle-loading/-/use-handle-loading-0.1.1.tgz","fileCount":7,"unpackedSize":14498,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benjaming61001%2fuse-handle-loading@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH7mhnMqLl8qKOM/+E3uj35nAtXGzG8eByCMBXuEvENNAiEA5mff2Y5pSW4pUdpx3n+PjqVpE1y9yewryyw1szD08vg="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c6320c6-24c5-45d6-b049-e6ed46db542b"}},"directories":{},"maintainers":[{"name":"benjaming61001","email":"pavin5356@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/use-handle-loading_0.1.1_1780996238951_0.9279798862818534"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-09T08:10:44.840Z","modified":"2026-06-09T09:10:39.430Z","0.0.1":"2026-06-09T08:10:45.267Z","0.1.0":"2026-06-09T08:34:59.656Z","0.1.1":"2026-06-09T09:10:39.089Z"},"bugs":{"url":"https://github.com/Benjaming61001/use-handle-loading/issues"},"license":"MIT","homepage":"https://github.com/Benjaming61001/use-handle-loading#readme","keywords":["loading","async","hooks","typescript","utility"],"repository":{"type":"git","url":"git+https://github.com/Benjaming61001/use-handle-loading.git"},"description":"A lightweight TypeScript utility for managing async loading states with success/error/finally hooks.","maintainers":[{"name":"benjaming61001","email":"pavin5356@gmail.com"}],"readme":"# use-handle-loading\n\nA lightweight TypeScript utility for managing async loading states with success/error/finally hooks.\n\n## Installation\n\n```bash\nnpm install @benjaming61001/use-handle-loading\n```\n\n```bash\nbun add @benjaming61001/use-handle-loading\n```\n\n```bash\nyarn add @benjaming61001/use-handle-loading\n```\n\n```bash\npnpm add @benjaming61001/use-handle-loading\n```\n\n## Usage\n\n### Direct Usage\n\n```typescript\nimport { handleLoading } from '@benjaming61001/use-handle-loading'\n\nconst result = await handleLoading(\n  fetchData,\n  {\n    setLoading: (loading) => isLoading.value = loading,\n    onSuccess: (data) => console.log(data),\n    onError: (err) => errorToast(err.message),\n    onFinally: () => console.log('finished')\n  },\n  userId\n)\n```\n\n### Factory Method (Builder Pattern)\n\n```typescript\nimport { createHandleLoading } from '@benjaming61001/use-handle-loading'\n\nconst handleLoading = createHandleLoading()\n  .setSuccess((result) => console.log('first success'))\n  .setSuccess((result) => successToast('Done!'))\n  .setError((err) => errorToast(err.message))\n  .setError((err) => console.error(err))\n  .setFinally(() => console.log('finished'))\n  .setLoading((loading) => isLoading.value = loading)\n  .build()\n\n// Use with pre-configured hooks\nawait handleLoading(fetchData, {}, userId)\n\n// Override hooks per call (appends to stack)\nawait handleLoading(fetchData, {\n  onSuccess: [(data) => console.log('extra success')],\n  onError: [(err) => console.log('extra error')]\n}, userId)\n```\n\n### Validation\n\nAdd validation callbacks to control when hooks execute:\n\n```typescript\nconst handleLoading = createHandleLoading()\n  .setSuccess((result) => console.log('success'))\n  .setError((err) => errorToast(err.message))\n  .setValidateSuccess((result) => result !== null) // skip if null\n  .setValidateError((err) => err.httpStatus !== 401) // skip if 401\n  .build()\n\n// Validation runs before callbacks\nawait handleLoading(fetchData, {}, userId)\n\n// Override validation per call\nawait handleLoading(fetchData, {\n  validateSuccess: (result) => result.data.length > 0,\n  validateError: (err) => err.httpStatus >= 500\n}, userId)\n```\n\n## API\n\n### `handleLoading(callback, options?, ...args)`\n\nWraps an async callback with loading state management and error handling.\n\n### `createHandleLoading()`\n\nReturns a `HandleLoadingBuilder` for chaining configuration.\n\n### HandleLoadingBuilder Methods\n\n| Method | Description |\n|--------|-------------|\n| `.setSuccess(fn)` | Add success callback |\n| `.setError(fn)` | Add error callback |\n| `.setFinally(fn)` | Add finally callback |\n| `.setLoading(fn)` | Set loading state handler |\n| `.setValidateSuccess(fn)` | Add validation before success callbacks |\n| `.setValidateError(fn)` | Add validation before error callbacks |\n| `.setValidateFinally(fn)` | Add validation before finally callbacks |\n| `.build()` | Create the configured handler function |\n\n## Development\n\n```bash\nbun install\nbun run test        # run tests\nbun run test:watch  # watch mode\nbun run build       # build package\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}