{"_id":"@ackstate/js-sdk","_rev":"3-8c4c672aaac2d26f011f88ba151980ae","name":"@ackstate/js-sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@ackstate/js-sdk","version":"0.1.0","keywords":["ackstate","events","webhooks","ingest","sdk"],"license":"MIT","_id":"@ackstate/js-sdk@0.1.0","maintainers":[{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"}],"homepage":"https://github.com/hussam-salah/ackstate-js-sdk#readme","bugs":{"url":"https://github.com/hussam-salah/ackstate-js-sdk/issues"},"dist":{"shasum":"5e98f5ff10de74ea8b156f562fb7c7681f5fd987","tarball":"https://registry.npmjs.org/@ackstate/js-sdk/-/js-sdk-0.1.0.tgz","fileCount":8,"integrity":"sha512-dOyw8lv2KeM4TdL5Mq8VNsV1J+hRViGemt0AhmpLGNSHzzxE7tq3ZfEGryceuAilmNZ7l2n8Mp5Uig4JMNkx5w==","signatures":[{"sig":"MEQCIEET0oKEfAIz1zjZset0EiWtxr86CNCxm8ulaEufugtHAiAx9DZmzd/SilMdcpmi+513T/aLzooYzGn8wJ98fYfGZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8570},"main":"src/index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"6fa593d41d365f04c5fa0543664536d4ec14fdb6","scripts":{},"_npmUser":{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"},"repository":{"url":"git+https://github.com/hussam-salah/ackstate-js-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Lightweight JavaScript SDK for ackstate event delivery & tracking","directories":{},"_nodeVersion":"24.4.0","dependencies":{"undici":"^6.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/js-sdk_0.1.0_1770487945240_0.9499652237385015","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ackstate/js-sdk","version":"0.1.1","keywords":["ackstate","events","webhooks","ingest","sdk"],"license":"MIT","_id":"@ackstate/js-sdk@0.1.1","maintainers":[{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"}],"homepage":"https://github.com/hussam-salah/ackstate-js-sdk#readme","bugs":{"url":"https://github.com/hussam-salah/ackstate-js-sdk/issues"},"dist":{"shasum":"bc219226ac29169e5e757d51a030d6dda3ad55cf","tarball":"https://registry.npmjs.org/@ackstate/js-sdk/-/js-sdk-0.1.1.tgz","fileCount":8,"integrity":"sha512-6AUYensgYsY2wMzLs8pGd6XDlar3l3+GX/2zukyJPnH3IN1AEZSAQbytJ/+XS1+GRNxSemsGj8kZWaNHruXzeg==","signatures":[{"sig":"MEQCIGgrN+IaldnbZG+7MR9js0uYdV6oEXiVhjZ5pjE20P63AiBxC1BWX/7FaOHxMcUNM5urU9FUtp0lpW2/PTgArzK44w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8623},"main":"src/index.js","type":"module","engines":{"node":">=18"},"exports":{".":"./src/index.js"},"gitHead":"372cd646a2b9c7210130914bcb020d3a36f0e8db","scripts":{},"_npmUser":{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"},"repository":{"url":"git+https://github.com/hussam-salah/ackstate-js-sdk.git","type":"git"},"_npmVersion":"11.4.2","description":"Lightweight JavaScript SDK for ackstate event delivery & tracking","directories":{},"_nodeVersion":"24.4.0","dependencies":{"undici":"^6.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/js-sdk_0.1.1_1770503362450_0.521045405346866","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ackstate/js-sdk","version":"0.2.0","description":"Lightweight JavaScript SDK for ackstate event delivery & tracking","main":"src/index.js","exports":{".":"./src/index.js"},"type":"module","scripts":{},"dependencies":{"undici":"^6.0.0"},"engines":{"node":">=18"},"keywords":["ackstate","events","webhooks","ingest","sdk"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/hussam-salah/ackstate-js-sdk.git"},"homepage":"https://github.com/hussam-salah/ackstate-js-sdk#readme","bugs":{"url":"https://github.com/hussam-salah/ackstate-js-sdk/issues"},"_id":"@ackstate/js-sdk@0.2.0","gitHead":"d6e3388ed8eedf827ae2c33adf6ef714876c2c4e","_nodeVersion":"24.4.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-7ggyxHzfqFWpSGSX5w8sTz/lODbxbBtFoQkGXZw/nudY/uSgMcw4Zd9MbzfjliQKnEEjhIYasNOZt+G8+dVIVw==","shasum":"bfa872ef9807327c6978d52d78d9b5b7eb0c8edb","tarball":"https://registry.npmjs.org/@ackstate/js-sdk/-/js-sdk-0.2.0.tgz","fileCount":8,"unpackedSize":8554,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDLosHydaj5SUCKHHHSSNT7KPL0vKyG++sknh5V5fv4KQIhAKxy50LSgHqo0Hn+LsI7K6N0fzDGhZP0xnOh8ZfO0Z7t"}]},"_npmUser":{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"},"directories":{},"maintainers":[{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/js-sdk_0.2.0_1771103888522_0.8440962830230443"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-07T18:12:25.130Z","modified":"2026-02-14T21:18:08.784Z","0.1.0":"2026-02-07T18:12:25.388Z","0.1.1":"2026-02-07T22:29:22.594Z","0.2.0":"2026-02-14T21:18:08.663Z"},"bugs":{"url":"https://github.com/hussam-salah/ackstate-js-sdk/issues"},"license":"MIT","homepage":"https://github.com/hussam-salah/ackstate-js-sdk#readme","keywords":["ackstate","events","webhooks","ingest","sdk"],"repository":{"type":"git","url":"git+https://github.com/hussam-salah/ackstate-js-sdk.git"},"description":"Lightweight JavaScript SDK for ackstate event delivery & tracking","maintainers":[{"name":"ackstate","email":"hussam.salah.muhamed@gmail.com"}],"readme":"# AckState JavaScript SDK\n\n### **An event is a fact: it exists once received, is seen once delivered, and is done only when acknowledged.**\n\n### Install\n```bash\nnpm install @ackstate/js-sdk\n```\n\n### Basic Usage\n\n```javascript\nimport { Inbox, LeaseLostError, NetworkError } from \"@ackstate/js-sdk\";\n\nconst inbox = new Inbox({\n  apiKey: process.env.ACK_STATE_API_KEY,\n  projectId: \"proj_123\",\n  consumerId: \"worker-1\",\n});\n\nasync function run() {\n  while (true) { // or your long running process condition\n\n    const event = await inbox.next();\n    if (!event) break;\n\n    try {\n      // event.body is raw bytes — parse only if you need to\n      const payload = JSON.parse(event.body.toString(\"utf8\"));\n\n      await handleBusinessLogic(payload);\n\n      await inbox.ack(event);\n    } catch (err) {\n      if (err instanceof LeaseLostError) {\n        // Another worker took over. Do nothing.\n        return;\n      }\n\n      if (err instanceof NetworkError) {\n        // Optional: crash or retry at process level\n        throw err;\n      }\n\n      await inbox.fail(event, err instanceof Error ? err.message : undefined);\n    }\n  }\n}\n\nrun().catch(console.error);\n```\n\n### Note\n- Each pulled event with `inbox.next()` gets leased for 20 seconds\n- In this lease period, `inbox.ack()` or `inbox.fail()` is expected\n- If the event wasn't acked or failed, it will be eligible to be pulled again  \n\n### Guarantees\n\n- \"An event is delivered to only one consumer at a time\"\n- \"Events are acknowledged only after successful processing\"\n- \"Failed events are retried safely\"\n- \"Replay is explicit and intentional\"\n- \"The SDK never hides state or guesses outcomes\"\n\n### What This SDK Does Not Do\n- Retry your business logic\n- Auto-extend leases\n- Parse payloads\n- Hide failures\n- Infer success\n\n### API Reference\n\nFor detailed API documentation, see [Docs](https://github.com/hussam-salah/ackstate-js-sdk/blob/main/docs/getting-started.md).\n\n","readmeFilename":"README.md"}