{"_id":"@asyncify-hq/node","_rev":"17-3a0e6d7763fbc11388acb6c8832e5209","name":"@asyncify-hq/node","dist-tags":{"latest":"0.8.8"},"versions":{"0.1.0":{"name":"@asyncify-hq/node","version":"0.1.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.1.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"58d07c05085091c31b9452633b502897b10221ff","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.1.0.tgz","fileCount":7,"integrity":"sha512-NwWLV1ER7halr/YqShipnqWLzzzG/bi5B2F1LZ+eA/jJR5j71XVpMJjp6es1BDbFR0blS22ibZc7qfKroqRtYw==","signatures":[{"sig":"MEQCIE3uvp56HYfQzOoTWV68v5i7o0yzqDjK0QFsXYHty4QZAiAL6xm/Y7TI9sNIWCVEed/jtO9+HqzZudT1hGYK2+l6sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21043},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"6a788f240d984e3226ac52d1950147db08320810","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"shubam14dec","email":"shubamp981@gmail.com"},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.6.2","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.1.0_1783360183244_0.2338293015617321","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@asyncify-hq/node","version":"0.2.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.2.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"e1f133414e3596b1621473bb2a1088b057042150","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.2.0.tgz","fileCount":7,"integrity":"sha512-Nu4co3+7eXIcipajh7gI/2oQRdhT995pin9lqEBheM2gpvRECImzkpcSaLO0SsQSg92Nry6wd1lNP0qpQt1KTA==","signatures":[{"sig":"MEQCIG4hXgHbJZaRJIvi7v790SYmsIqjhlReQc5yHDMhcrSNAiBvUHb7GQtEEE00a5UCqJqDoV2AkgfHCuTT4NQUGPZKuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36707},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e8c9a64311e19018730b59afc9e010814d9060ac","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"shubam14dec","email":"shubamp981@gmail.com"},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.6.2","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.2.0_1783633684584_0.04435098931721848","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@asyncify-hq/node","version":"0.2.1","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.2.1","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"4647e5bda3cb3a29629a181418127ddf17d6d6d0","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.2.1.tgz","fileCount":7,"integrity":"sha512-SQGWg7C+8bytJyZqFd4GD3iag9ij/edKvg+OfDG9EIhtC0JSXJrybHEtJHbPa2x6p4h54hdeqRkUrWc1RGHMWA==","signatures":[{"sig":"MEYCIQCryzqTx3FIyWBtH/3JdqEha/dQhlsvlpfsUIwC2VCFAQIhAPlkOaaVEDd7MWP4Cho4txCz51jCE0y+feZb7DrSb2An","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":36771},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c3eb0a29c04025d718235f04ed4823f843dd11ee","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.2.1_1783868866770_0.3862043119434866","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@asyncify-hq/node","version":"0.3.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.3.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"6da5b62f854613da32b165b77d1183b01495f526","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.3.0.tgz","fileCount":7,"integrity":"sha512-jxuzuYqRw49pYOfG5GETpVvuB/DKGRJPFB6Q5KYOB+jhulrCGbni9Qm2nYDggYYmteZa6czCWtE2wkayxYDPhA==","signatures":[{"sig":"MEQCIF78LykwB0QjWNObCwA/U8qHyWad4qZI078v3+33kWJCAiBOlI1oAcOEFbISAU/EHlvV+Ys0Z1fPigECnuPHL9Hq5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51703},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f974e69792138f444fa193e1cade0f5776b579db","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.3.0_1784146881335_0.7053343535578385","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@asyncify-hq/node","version":"0.4.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.4.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"3ce8910b8e261a1d37dd4cee0d7072442380e580","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.4.0.tgz","fileCount":7,"integrity":"sha512-a6N4HKl4aYB7z97hUPZ8En5NZhcSxZ2mwXggHSUByahbGe8CCZVfJv0/oJME9nwxVUKwuJI7gCVy7Zdi7UzA0g==","signatures":[{"sig":"MEYCIQDzXsn7K43eEoIhpGZzqd//heDnp5gVWkISCLFCXWYiHwIhAM9PplDvkxDS4Taoc5cnbDUZGYUwiYpTmMFGzQSfU4lQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55833},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7df1114f23678f4db498c0d6fca74dbf494f597b","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.4.0_1784454120640_0.35284150272202397","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asyncify-hq/node","version":"0.5.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.5.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"b2760737388e536dfac88568e0928413bbf70344","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.5.0.tgz","fileCount":7,"integrity":"sha512-At4KCRHmBoOksCvsD1TSBFZAGezvLfYR2z0a0XHtZ0y8uUy4ZLqaqWmJWX5x14RZWvIIYoQuxzOo4fdkP9qpYw==","signatures":[{"sig":"MEYCIQCMdHKuswOhiAIQRCv9KWe4ro2k4c1i+saiESVasIiuZQIhAO9MI9gHOucsqTH0d6o66mhAz7Sl+mxx9pMcuoKfjaZg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":68415},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"db07d5c48f64125d93eed5f6b74ebe19e8862969","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.5.0_1784818991672_0.8979386320253726","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@asyncify-hq/node","version":"0.6.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.6.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"6c780be5ef2510021a15fa2e703151c598194135","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.6.0.tgz","fileCount":7,"integrity":"sha512-xb49oJK0JJDaCXzKZQlvEdD0AULBgssaV/u7czBYyW9alFRoItoqxZelV1DjMnoKeDz3/I3fha5pqtyuPx22gQ==","signatures":[{"sig":"MEUCIQDt+Na0l7kpuQWd2hiGFmxJ0ZeiPgKVPudfI5nbSFfksQIgMHU/yZMR4sVjfupRmPHsrrkW/a7mpNy1R5w95Bf7ZuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77103},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"5ff56b6942abab4c2f14731e3e86c438fba44e85","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.6.0_1784889166033_0.05088500835771703","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@asyncify-hq/node","version":"0.7.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.7.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"279e04e2306622d51d648cb0346b4d92d6970925","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.7.0.tgz","fileCount":7,"integrity":"sha512-KNa0zE45Ya7XBFwVwMGaYm45X2BBxtn6xs0gao2o13GbpTb7dLJuBOygXMVPzKv0n3BALTMWnCN6Yeg12sLpUw==","signatures":[{"sig":"MEQCIHcpkzkSmJnqRHxo27OOxHiBZESL1A7iOHLN9xcwsbqPAiB07nQhoCR51EQRAV+xctuhRYr5U1CoZnLozy0JWSstvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86120},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0be20a183b72cbcc73d69fba455e611db62580b9","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.7.0_1784993621310_0.022124230334167994","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@asyncify-hq/node","version":"0.8.0","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.0","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"7359b61db87058d500c88d4bb412d91d7df434e2","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.0.tgz","fileCount":7,"integrity":"sha512-zvBnhyNapWxHvzTUV2hsYkEJQgDriojciJpr5s9EMdoEXDYGzWTZvcz8aNAoCqSouKu8QoTL9PrZOy+h28p3zQ==","signatures":[{"sig":"MEYCIQDGfERybBPNoiXKH18rJCL0PW9lsZ0ZrGU06t7uFhlXJAIhAML4wcwVVWI/zjjwUMVFXtT/eyAhevYb602dZ2EvvOmS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86856},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1d23eb26df9334fe2d5a9615285871d94593e1f7","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.16.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.0_1785178353220_0.7036714700119708","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@asyncify-hq/node","version":"0.8.1","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.1","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"caf64fa45520bc45ebc82d3582074400d26949ff","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.1.tgz","fileCount":7,"integrity":"sha512-CiMug7toY7BqTYJeMuiA/dFz/1yMIfGVc/AIQLPP+Btcz7UyQ7HInMVMgqJB5ePrknltXUj0zvO81Oke3Yc/Hw==","signatures":[{"sig":"MEYCIQC4Cwej7MpZwhSq9Z+muduya/aB2iQpCR4TH/Zs+Nv5cgIhAN3Wx5lHuxLwtKgH15oeDHSsLR740RSYgLwTPm8npA1j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88998},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"27d961487a4d41529370992182c3fdaa86ce5dfc","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.1_1787343240063_0.3293847426290193","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@asyncify-hq/node","version":"0.8.2","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.2","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"723341ecf716f593270fad0606d0fa909e679c5c","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.2.tgz","fileCount":7,"integrity":"sha512-D8gz3xOW6WmyNXK7y3Bcab82MQZfDViV6FkoCDH+nRRwQgd33BVphUESNGm9fIYu46bYaZaxzaMHzic1myFLaA==","signatures":[{"sig":"MEYCIQDfveX5etThwA9lQGLTjN7SCEEX6OyRbznu1GakLZogRgIhAOPD0a80TkbsOO8Xbs3JGP3dzi8DtzDdw/tY/gSSejBQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92576},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8f871808df8b26a6d498ee3fbe8bacc15a6d452f","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.2_1787387163770_0.10792398235808554","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@asyncify-hq/node","version":"0.8.3","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.3","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"786b1a8921e9af5b862d6109629fe2e77a765bf0","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.3.tgz","fileCount":7,"integrity":"sha512-zcfQjcUswaiO6nI/eZEZlWvyJmGha3nBNlhKkVTXmrnmtd2KYcgDmph+1hsBaZIAQyuXLShQ0hUjbkVyjoUopg==","signatures":[{"sig":"MEQCIF8aVgmTFE1xf34F5R4eWSZrk+u3d0uOfeUK06XaykMoAiAFzC+2dYHjDbTEkvkpZRTo7ObySuv4lXUvqTtdK7j5VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":122786},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2531fbba16590634461867312fd4a62b67213112","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.3_1787407014508_0.63652298431692","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@asyncify-hq/node","version":"0.8.4","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.4","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"dcdbeac29a5476c2b3551bb60fa60ab357f4ecc5","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.4.tgz","fileCount":7,"integrity":"sha512-AN1AO0iVYbGbcgNPA6JBR1h3v04dQDw/rIGhWBa/NkbcXpfyjEUgXuTZDF7FE0L74TEmPuWQ3BWHlVYFOu9hcA==","signatures":[{"sig":"MEUCICVvIp8OJAHNRZWO8PS2bJmPNx5bJITLuKAq7zY/xR5mAiEA2wDKP4UUNwE1F79BpJfMZbJzFPo2KpTPzQH+6AcGSs4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127699},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"6071799a84607c23a9ca07e510b35f5ca3ddd55f","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.4_1787430908672_0.7376408729866184","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@asyncify-hq/node","version":"0.8.5","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.5","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"c53cb8ffba1031767b7b5202bb2694c22898b422","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.5.tgz","fileCount":7,"integrity":"sha512-zAGfPlP37SE66uyloJRbmtiDl/Dx72fdi1FJrMcLwx8afhiQOebRySCOkfvC6GH4cOSGmPx0DOgSq1aKB+LvoA==","signatures":[{"sig":"MEQCIFc+BV2XiV3vmhbywBMzj4DyXPFU8S/Nbp7oa7TgShYvAiBReGyaItcfRu4BzYMfU1JuBlWoS+5dgmplvUAvzR0uAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":138285},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"314dfba5240f3785c3dff77c1ebe33cefcdccca0","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.5_1787529118139_0.4304896800418003","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@asyncify-hq/node","version":"0.8.6","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.6","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"a16ea249b8fa91bf9297525d97778368f02c2e03","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.6.tgz","fileCount":7,"integrity":"sha512-sQaqXueyDU78wmGMe8L354QfucX15EFXjb4m9JG+UOkRz0Oz9flZnz8oXmH4qd3v+skX8mLXbqTZxvhIdQhKcw==","signatures":[{"sig":"MEQCIHW1dxj/gGlq2PNxQ90z65IyrMGqP1gRavw1PiYb0NjQAiAryAI7PhoIpwHQb58nKTNen5hiAyZS9rT6vADZ30WVJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":145115},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ba4f678111c44010847b8b4a1e63f1a6f23ada8a","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.6_1787748172349_0.20159975036847078","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"@asyncify-hq/node","version":"0.8.7","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"author":{"name":"Shubam Patil"},"license":"MIT","_id":"@asyncify-hq/node@0.8.7","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"homepage":"https://asyncify.org","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"dist":{"shasum":"5d9b07703863a8d04be7af1c1b3ec9b68fdf2239","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.7.tgz","fileCount":7,"integrity":"sha512-c2XRdIybMTrW+OkUxkgJWqoow7rvUnxv//FZUmDogNwLgGyo70G6ok0bWiS2v0tZs6M+74Sic+rbYGsPcvxs/A==","signatures":[{"sig":"MEYCIQDRMhsEDBmtoy/G5R+Qaz99R135Lmx2eJ1o3FYecdPWbwIhAOjf0fwm1d5QXiV4zdF4Qxl1jeHg72weELy+uU72JACL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176750},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0b949b092f01fc79645d2ed1c9bb49daab341382","scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"repository":{"url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","type":"git","directory":"packages/sdk-node"},"_npmVersion":"11.17.0","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/node_0.8.7_1787843042103_0.8308728918446406","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"@asyncify-hq/node","version":"0.8.8","description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"homepage":"https://asyncify.org","repository":{"type":"git","url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","directory":"packages/sdk-node"},"license":"MIT","author":{"name":"Shubam Patil"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"sideEffects":false,"publishConfig":{"access":"public"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","prepublishOnly":"npm run build"},"devDependencies":{"tsup":"^8.3.5","typescript":"^5.7.2"},"engines":{"node":">=18"},"gitHead":"9dcbf99199be9badbe2adf13da96eefe236a273a","_id":"@asyncify-hq/node@0.8.8","bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-RgXYUWnrtXwm61zj5A1nuDAKuJQdN5RQxOTzsQGfWlMa6xn8ey9CqZj75qHb8WQW6u+26cWQ3T7y030qSWphyw==","shasum":"67ceda31a669a25757e1e25ceeafe52d1459de04","tarball":"https://registry.npmjs.org/@asyncify-hq/node/-/node-0.8.8.tgz","fileCount":7,"unpackedSize":177925,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asyncify-hq%2fnode@0.8.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGg+lqZgTJorZMf2LWsB7t9tDyiDr2CKHehw3mITlGIuAiEAkHivpiHdZWpd75bf7qo3YVPQvjxKSe0yyKDZQU6WQss="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:51f0e124-2da8-4cfa-a5d0-a4aa014a0702"}},"directories":{},"maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node_0.8.8_1788932606557_0.982672762204057"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-06T17:49:42.683Z","modified":"2026-09-09T05:43:26.976Z","0.1.0":"2026-07-06T17:49:43.417Z","0.2.0":"2026-07-09T21:48:04.751Z","0.2.1":"2026-07-12T15:07:46.914Z","0.3.0":"2026-07-15T20:21:21.493Z","0.4.0":"2026-07-19T09:42:00.808Z","0.5.0":"2026-07-23T15:03:11.841Z","0.6.0":"2026-07-24T10:32:46.182Z","0.7.0":"2026-07-25T15:33:41.446Z","0.8.0":"2026-07-27T18:52:33.381Z","0.8.1":"2026-08-21T20:14:00.209Z","0.8.2":"2026-08-22T08:26:03.904Z","0.8.3":"2026-08-22T13:56:54.632Z","0.8.4":"2026-08-22T20:35:08.817Z","0.8.5":"2026-08-23T23:51:58.278Z","0.8.6":"2026-08-26T12:42:52.529Z","0.8.7":"2026-08-27T15:04:02.259Z","0.8.8":"2026-09-09T05:43:26.667Z"},"bugs":{"url":"https://github.com/shubam14dec/Scalable-Notification-System/issues"},"author":{"name":"Shubam Patil"},"license":"MIT","homepage":"https://asyncify.org","keywords":["notifications","email","sms","push","in-app","asyncify","notification-infrastructure"],"repository":{"type":"git","url":"git+https://github.com/shubam14dec/Scalable-Notification-System.git","directory":"packages/sdk-node"},"description":"Server-side SDK for Asyncify — multi-channel notification infrastructure (email, SMS, push, in-app)","maintainers":[{"name":"shubam14dec","email":"shubamp981@gmail.com"}],"readme":"# @asyncify-hq/node\n\nServer-side SDK for [Asyncify](https://asyncify.org) — multi-channel\nnotification infrastructure. One trigger call fans out to email, SMS, push\nand in-app, with priority queues, retries, digests and delivery tracking\nhandled for you.\n\n## Install\n\n```bash\nnpm install @asyncify-hq/node\n```\n\n## Quickstart\n\n```ts\nimport { AsyncifyClient } from '@asyncify-hq/node';\n\nconst asyncify = new AsyncifyClient({\n  apiKey: process.env.ASYNCIFY_API_KEY!,\n  baseUrl: 'https://api.your-deployment.com',\n});\n\n// Fire a workflow for a user\nawait asyncify.trigger('order-shipped', {\n  to: [{ subscriberId: 'user-42', email: 'user42@example.com' }],\n  payload: { orderId: 'ORD-1', eta: 'Tuesday' },\n});\n\n// Idempotent retries: same transactionId can never double-send\nawait asyncify.trigger('otp', {\n  to: [{ subscriberId: 'user-42', phone: '+15550001111' }],\n  payload: { code: '123456' },\n  priority: 'p0',\n  transactionId: `otp-${loginAttemptId}`,\n});\n\n// Send to a topic (named segment) or to everyone\nawait asyncify.trigger('changelog', { to: [{ topic: 'beta-users' }] });\nawait asyncify.broadcast('maintenance-notice');\n```\n\n## The inbox widget token\n\nMint a short-lived, single-subscriber token in your backend and hand it to\n[`@asyncify-hq/react`](https://www.npmjs.com/package/@asyncify-hq/react) in\nyour frontend — API keys never reach the browser:\n\n```ts\nconst { token } = await asyncify.subscriberToken('user-42');\n```\n\n## Agent tools & approvals\n\nGive a managed agent a custom tool, then review the calls it wants to make:\n\n```ts\n// Register a tool — the secret is returned ONCE; store it to verify our\n// signed calls to your endpoint.\nconst { secret } = await asyncify.agents.tools.create('acme-support', {\n  name: 'lookup_order',\n  description: 'Fetch an order by id',\n  parameters: { type: 'object', properties: { orderId: { type: 'string' } } },\n  endpointUrl: 'https://api.acme.com/tools/lookup-order',\n  approval: 'required',\n});\n\n// Work the human-in-the-loop queue\nconst { approvals } = await asyncify.approvals.list({ status: 'pending' });\nawait asyncify.approvals.decide(approvals[0].id, 'approve');\n\n// Route approval cards to a Slack channel\nawait asyncify.settings.putApprovals({ slackConnectionId, slackChannelId: 'C0123' });\n```\n\n## Grounding an agent in your own knowledge\n\nGive a managed agent material to answer from — pasted text or a URL. Indexing\nruns async, so poll `list` until the source is `ready` (needs the tenant's\nembeddings + vector-store integrations configured first):\n\n```ts\nconst { source } = await asyncify.agents.knowledge.create('acme-support', {\n  name: 'returns-policy',\n  kind: 'text',\n  text: 'Opened electronics can be returned within 14 days…',\n});\n\n// poll until ready\nconst { sources } = await asyncify.agents.knowledge.list('acme-support');\n\n// re-embed after the underlying page/text changes, or drop a source\nawait asyncify.agents.knowledge.reindex('acme-support', source.id);\nawait asyncify.agents.knowledge.remove('acme-support', source.id);\n```\n\nOnce a source is `ready`, the managed brain is offered a `search_knowledge`\ntool and cites what it finds as `[source: returns-policy]`.\n\n## Long-term memory (per customer)\n\nKnowledge is what your business knows; **memory** is the durable facts an agent\nkeeps about *one* customer — a preference, their plan, a constraint — loaded\ninto every future conversation with them. The agent writes these itself (its\n`remember` built-in), and you can read or edit them by the subscriber's external\nid:\n\n```ts\n// what the agent remembers about this customer\nconst { memories } = await asyncify.agents.memories.list('acme-support', 'user-42');\n// → [{ key: 'channel_pref', value: 'prefers email over SMS', source: 'agent', updatedAt: '…' }]\n\n// set/correct a fact yourself (tagged source: 'operator')\nawait asyncify.agents.memories.put('acme-support', 'user-42', {\n  key: 'plan',\n  value: 'Pro',\n});\n\n// forget one fact, or the whole profile (omit the key)\nawait asyncify.agents.memories.remove('acme-support', 'user-42', 'plan');\nawait asyncify.agents.memories.remove('acme-support', 'user-42');\n```\n\nCaps are enforced: ≤32 keys per customer, key ≤64 chars, value ≤300 chars. A new\nkey on a full profile → `AsyncifyError` (409) — overwrite an existing key\ninstead. Never store secrets or payment data here.\n\n## Testing a prompt change before it ships (evals)\n\nAn eval is a scripted conversation plus assertions about what the agent *did* —\nwhich tools it called — and, optionally, **LLM-judged dimensions** for what a\ntool trace can't see: `groundedness`, `tone`, `refusal`, scored 1–5 against a bar\nyou set. Runs drive the real pipeline (queue → worker → brain → tools), so a\ngreen run is about the agent your customers actually reach:\n\n```ts\nawait asyncify.agents.evals.create('acme-support', {\n  name: 'refund-window',\n  scenario: {\n    turns: [\n      { user: 'my headphones broke — can I get a refund?' },\n      { expect: { tool: 'lookup_order' } },\n      { expect: { judge: { groundedness: { min: 4 } } } },\n    ],\n  },\n});\n\n// Grade the agent as it is live right now…\nconst { runId } = await asyncify.agents.evals.run('acme-support');\n\n// …or grade an edit you have NOT saved yet: the real agent, tools, guardrails\n// and knowledge, with only the prompt and/or model swapped in for the run.\n// Nothing is written to the agent — this is what the dashboard's pre-save\n// check does. Managed agents only; a candidate on a bridge agent is a 400.\nconst { runId: preSaveRun } = await asyncify.agents.evals.run('acme-support', {\n  trigger: 'pre_save',\n  candidate: { systemPrompt: 'You are Acme support. Refunds within 14 days…' },\n});\n\n// Runs are async — poll until it leaves 'running'\nconst { run } = await asyncify.agents.evals.getRun('acme-support', preSaveRun);\n// run.status  → 'running' | 'passed' | 'failed' | 'error'\n// run.results → [{ name, passed, attempts, failures, judged? }]\n//   failures: ['judge.groundedness: 2/5 < 4 — \"30 days\" appears in no source']\n//   judged:   [{ turn, dim: 'groundedness', verdict: 'fail', score: 2, rationale }]\n```\n\nA judged dimension comes back as `verdict: 'skipped'` when no judge was\navailable (the agent has no model, or its LLM client couldn't be built) — never\na silent pass. Compare `run.results` against the previous run's to show a delta\nrather than a wall of green.\n\n## Versioning and canary (managed agents)\n\nEvery save that changes a managed agent's prompt or model snapshots itself, so\nthe history is append-only — **restore doesn't rewind it, it publishes**:\n\n```ts\nconst { versions } = await asyncify.agents.versions.list('acme-support');\n// [{ version: 7, model, promptLength, promptHead, current: true, createdAt }, …]\n\nconst { version } = await asyncify.agents.versions.get('acme-support', 5);\n// version.systemPrompt → the full text of that snapshot\n\n// Roll back = a new save carrying v5's content. v6 and v7 stay in the history.\nconst restored = await asyncify.agents.versions.restore('acme-support', 5);\n// restored.restoredFrom → 5, restored.version → 8\n```\n\nA new version can also **trial on a share of real conversations** before it\ntakes over. The arm is picked when a conversation opens and sticks for its whole\nlife — nobody meets two personalities in one thread — and a canary-arm turn runs\non the trial snapshot through the same candidate mechanism the pre-save check\nuses. Nothing about the live agent changes:\n\n```ts\nawait asyncify.agents.canary.start('acme-support', {\n  version: 8,\n  percent: 10,        // 1–99 of NEWLY OPENED conversations join the trial arm\n  samplePercent: 20,  // 0–100 (default 20) of replies judged in BOTH arms\n});\n\nconst report = await asyncify.agents.canary.report('acme-support');\n// report.arms → exactly two, 'canary' and 'control', zeros before traffic lands\n//   { arm, conversations, turns, resolutions, handoffs, guardPauses,\n//     avgTokensPerTurn, judged: { groundedness: { avg: 4.3, n: 31 }, tone: {…} } }\n\nawait asyncify.agents.canary.promote('acme-support'); // …or .stop(…)\n```\n\nBoth arms are judged at the **same** rate on purpose — an unjudged control arm\nis not a control. The judged numbers are **averages, not verdicts**: live\ntraffic carries no scenario author's declaration of what the reply should have\nbeen, so there is no bar to pass here, only canary's average against control's.\n`promote` ends the trial by publishing the winner as an ordinary new version;\n`stop` ends it with no change, and enrolled conversations return to the live\nprompt at their next turn. One trial per agent — starting a second is a `409`.\n\nCareful with the control arm: saving an edit to the live prompt **while a trial\nis running** changes what the control arm is serving, so the comparison from\nthat point measures against a different baseline than it started with.\n\n### Model routing\n\n`agents.update(id, { routing })` puts a managed agent's simple replies on a\ncheaper model. Every routed turn runs on `cheapModel` first; the moment that\nattempt reaches for a consequential tool — a workflow, one of your own tools, a\nknowledge lookup — the whole turn is discarded and re-run on the agent's main\nmodel, so a small model is trusted to talk and never to act. `cheapModel` must\nbe an id your own endpoint serves (routing rides this agent's key and base URL);\na wrong id is safe — the cheap call fails, the turn escalates, and every reply\nstill lands. `routing: null` switches it off. Managed agents only; a bridge\nagent answers `400`.\n\n```ts\nawait asyncify.agents.update('acme-support', {\n  routing: { enabled: true, cheapModel: 'claude-haiku-4-5' },\n});\n```\n\nAn eval run can grade the router before you save it — pass `routing` inside\n`candidate` and the run really executes through it (`null` grades the agent with\nrouting off).\n\n### Topic rules and reply rules\n\n`agents.update(id, { topics })` decides **what a managed agent will discuss**:\none small classifier call in front of the brain names the topic of each message,\nand anything you denied (or anything outside `allow`, when you fill it in) gets\nyour `redirect` sent back word for word, without the brain ever running.\n`agents.update(id, { moderation })` decides **what may ship**: every drafted\nreply is checked in-process — no model, no latency — against `denyPhrases`\n(case-insensitive substrings) and, with `blockPii`, against emails and phone\nnumbers that are not the customer's own; a blocked reply is replaced by your\n`fallback`. Write that fallback carefully: the turn's tools have already run by\nthen, so \"a teammate will follow up\" is safe where \"I couldn't help\" may be\nfalse. `null` switches either off. Managed agents only; a bridge agent answers\n`400`.\n\n```ts\nawait asyncify.agents.update('acme-support', {\n  topics: {\n    deny: ['medical advice', 'legal advice'],\n    redirect: 'I can only help with orders and returns here.',\n  },\n  moderation: {\n    denyPhrases: ['guarantee', 'risk-free'],\n    blockPii: true,\n    fallback: 'Let me get a teammate to confirm that — someone will follow up shortly.',\n  },\n});\n```\n\nBoth gates take `candidate` overrides on an eval run, with one difference from\n`routing` worth knowing: **omitting** them leaves the agent's own gates in force\nfor the run (a check grades the agent you have, boundaries included), so `null`\nis how you ask \"do these still pass with the gate off?\".\n\n### Per-customer message limits\n\n`agents.update(id, { subscriberRate })` caps how many messages **one end user**\nmay send inside a fixed window. Past the cap that person stops getting replies\nuntil the window ends and receives your `notice` **once** — never on every\nmessage, since a limit that answered a flood would be an amplifier. Their\nmessages still land in the conversation exactly as they sent them; only the turn\nis skipped, so the transcript stays true. Everyone else is unaffected, which is\nthe difference from the daily token budget: that one goes quiet for *all* your\ncustomers, so using it as the defense against one abusive user lets that user\nmute the agent for everybody. `subscriberRate: null` switches it off. This is the\none agent config that works on **both runtimes** — it protects your own handler's\ncompute, not a brain we run.\n\n```ts\nawait asyncify.agents.update('acme-support', {\n  subscriberRate: {\n    maxMessages: 20,\n    windowMinutes: 5,\n    notice: \"You're sending messages faster than I can answer — I'll pick this up shortly.\",\n  },\n});\n```\n\nA config outside the bounds (`maxMessages` 1–1000, `windowMinutes` 1–1440,\n`notice` 1–2000) is rejected on save and read as **off** if one ever reaches the\nrow another way — never clamped, because a limiter throttling at a number you did\nnot choose is worse than none. There is deliberately **no `candidate` override**:\nan eval scenario is a burst of messages from one synthetic subscriber by\nconstruction, so a gradeable message limit would throttle the check itself.\n\n## The kill-switch\n\n`agents.pause(id)` stops an agent answering **right now**, without shutting the\ndoor on your customers. While it is paused their messages still land in the\nconversation exactly as they sent them, nothing is refused, and the transcript\nstays true — what stops is the answering: no model calls, no tools, no calls to\nyour own service. Each customer is told once that a person is taking over, and\ntheir conversations move to your team's human queue. During an incident, filling\nthat queue is the point.\n\n```ts\nawait asyncify.agents.pause('acme-support');\n// …ship the fix, verify it…\nawait asyncify.agents.resume('acme-support');\n```\n\nThis is **not** `agents.update(id, { status: 'disabled' })`. `disabled` is a hard\noff that refuses messages at the door; a pause keeps taking them. The two are\nseparate axes and can both be true — `agent.pausedAt` (a timestamp, so a\npost-mortem can read *when*) sits beside `status` rather than inside it. Both\ncalls are idempotent, because a double-pressed emergency button must never\nerror, and neither mints a prompt version: a pause changes no config.\n\nResuming does not take conversations back from your team. Threads a teammate\nalready picked up stay with them until they hand back.\n\n## Config as code\n\n`agents.export(id)` returns the whole agent as one JSON file — prompt, model,\nevery knob, budgets, tools with their guards, knowledge by reference, and the\nworkflow keys the prompt requires. It contains **no secret of any kind**, by\nconstruction, so it is safe to commit and review in a diff. The response *is*\nthe file, with no envelope, so `curl … > acme-support.agent.json` writes\nsomething you can import.\n\nImporting is two steps, because \"what changes?\" is a real question and a green\ncheckmark is not an answer to it:\n\n```ts\nconst file = await asyncify.agents.export('acme-support'); // from staging\n\nconst preview = await asyncify.agents.importPreview(file); // against production\npreview.mode;            // 'create' | 'update'\npreview.changes;         // [{ field: 'systemPrompt', action: 'changed' }, …]\npreview.toolChanges;     // { added, changed, removed }\npreview.needsLlmKey;     // true when a managed create needs a key from you\n\nif (!preview.needsLlmKey) await asyncify.agents.import(file);\nelse await asyncify.agents.import(file, { llmApiKey: process.env.PROD_LLM_KEY! });\n```\n\n**An import deletes nothing.** A knob the file does not mention is left as it\nis, and a tool on the agent but not in the file is **kept** — that is what\n`preview.removalPolicy: 'kept'` states out loud, and `toolChanges.removed` names\nthe asymmetry rather than an action. An import must not destroy what the file's\nauthor never knew about; removing a tool stays a deliberate act done by someone\nwho can see what calls it.\n\nPreview validates everything apply validates — through the *same* schemas the\nordinary save routes use — so \"preview clean, apply 400\" cannot happen. Applying\nan update rides the normal save path, so a changed prompt or model mints a\nprompt version like any other save and your history stays complete. An import\nnever touches `status`, `pausedAt` (importing a config is not an all-clear), the\ncanary, or version history.\n\nWhat travels and what does not:\n\n| Travels | Stays behind |\n|---|---|\n| Prompt, model, all six knobs, budgets | The LLM key and every tool signing secret |\n| Tools with their guards and endpoints | Disabled tools (operational state) |\n| Knowledge as **references** (name + origin) | Knowledge **content** — index it in the target |\n| Workflow keys as **requirements** | The workflows themselves — an import never creates one |\n\nBecause keys never travel, creating a managed agent from a file needs the target\nenvironment's own key passed to `import`. Newly created tools each get a fresh\nsigning secret, returned **once** in `result.tools.created` — store them then or\nrotate later. `preview.missingWorkflows` and `preview.missingKnowledge` are\nwarnings, never refusals: the import can only tell you the truth about what the\ntarget lacks.\n\n## API surface\n\n| Method | Purpose |\n|---|---|\n| `trigger(workflowKey, { to, payload, priority?, transactionId? })` | Fire a workflow (recipients and/or `{ topic }` refs) |\n| `broadcast(workflowKey, { payload? })` | Send to every subscriber (bulk tier) |\n| `events.get(transactionId)` | Per-channel delivery status |\n| `subscribers.upsert({ subscriberId, email?, phone?, pushToken? })` | Create/update a subscriber |\n| `subscribers.registerDevice / listDevices / removeDevice` | Multi-device push tokens per subscriber |\n| `topics.upsert / addSubscribers / removeSubscribers / list / delete` | Manage segments |\n| `workflows.upsert / list` · `templates.upsert / get / list / delete` | Manage workflows & MJML templates |\n| `agents.create / list / get / update / rotateSecret / delete / linkToken` | Manage AI agents |\n| `agents.pause / resume` | The kill-switch: stop answering without refusing messages |\n| `agents.export / importPreview / import` | Config as code — one secret-free JSON file per agent, previewed before it applies |\n| `agents.tools.create / list / update / delete / rotateSecret` | Per-agent custom tool registry |\n| `agents.knowledge.create / list / reindex / remove` | Per-agent knowledge sources for grounded answers |\n| `agents.memories.list / put / remove` | Per-customer long-term memory (durable facts, by subscriber external id) |\n| `agents.evals.list / create / update / remove` | Per-agent eval scenarios (scripted turns + tool-trace and judged expectations) |\n| `agents.evals.run / runs / getRun` | Run the enabled scenarios — live config, or an unsaved `candidate` — and poll the verdict |\n| `agents.versions.list / get / restore` | Prompt history for a managed agent; restore publishes an old snapshot as a new version |\n| `agents.canary.start / stop / promote / report` | Trial a version on a share of real conversations, then read the per-arm comparison |\n| `approvals.list / decide` | Human-in-the-loop tool-call queue |\n| `settings.getApprovals / putApprovals` | Which channels carry approval cards |\n| `subscriberToken(subscriberId, ttlSeconds?)` | Browser-safe inbox token (60s–6h, default 1h) |\n\nErrors throw `AsyncifyError` with `status` and the API's message.\n\nMIT © Shubam Patil\n","readmeFilename":"README.md"}