{"_id":"@aevr/notifications","_rev":"7-0610e0d2ae11d91b0ee719315b4fbd36","name":"@aevr/notifications","dist-tags":{"latest":"1.3.4"},"versions":{"1.0.0":{"name":"@aevr/notifications","version":"1.0.0","license":"MIT","_id":"@aevr/notifications@1.0.0","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"dist":{"shasum":"3e86b84a36c2b14e55180e56b3e491ca095fcd7a","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.0.0.tgz","fileCount":77,"integrity":"sha512-LbNJgDag6YnGGGeN5CsC0uS3A/LMidCwVdR+5yqJUyW3Qo+kGRcVHi4S/Dw3/PuF4kwBsz5n/BmgIU+YkGjCkg==","signatures":[{"sig":"MEUCIHal7Fopo8wNrmSJ+w1KdF3UwXvnniBup6rUywcM9UUxAiEAu7PNPyG5GzW5koUWXd6C5YN/pOpofDIg87kCD9aGCmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188550},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js"}},"gitHead":"4ca2825c2326ba6a5e91a10aee0cdf40eda58f7e","scripts":{"build":"tsc -p .","release":"standard-version --tag-prefix notifications@v","typecheck":"tsc --noEmit","release:major":"standard-version --release-as major --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v","prepublishOnly":"npm run build"},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"_npmVersion":"11.9.0","description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.0.0","pino":"^9.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2","@aevr/mailer":"workspace:*","standard-version":"^9.5.0"},"peerDependencies":{"@aevr/mailer":"*"},"_npmOperationalInternal":{"tmp":"tmp/notifications_1.0.0_1786039583435_0.015220183823952738","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aevr/notifications","version":"1.1.1","license":"MIT","_id":"@aevr/notifications@1.1.1","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"dist":{"shasum":"72006f1f813de289f2deeec604557a8a1f782843","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.1.1.tgz","fileCount":81,"integrity":"sha512-dMMVcTyvbXGXEfFhNmjQB1mcJkArPL/8GcPqKfsT6epRNdPfAgv7u5/00na7TXUh9KTP8zVnAwcmUsOxf/vRvw==","signatures":[{"sig":"MEUCIHVGzlziO9S+kiPcj4RjFoCNciQ/FGzmYArt8sF9OUU4AiEA2jr8Gr2WO9sy2WTkFNLPTLEpAnp0Lkae6EIpbIrcoWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197591},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./push":{"types":"./dist/channels/push.d.ts","import":"./dist/channels/push.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js"}},"gitHead":"12bd6d7673898c92e17c20536e729704f84b77a5","scripts":{"build":"tsc -p .","release":"standard-version --tag-prefix notifications@v","typecheck":"tsc --noEmit","release:major":"standard-version --release-as major --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v","prepublishOnly":"npm run build"},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"_npmVersion":"11.17.0","description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.0.0","pino":"^9.6.0","web-push":"^3.6.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f","devDependencies":{"typescript":"^5.7.2","@aevr/mailer":"^1.0.0","@types/web-push":"^3.6.4","standard-version":"^9.5.0"},"peerDependencies":{"@aevr/mailer":"*"},"_npmOperationalInternal":{"tmp":"tmp/notifications_1.1.1_1787225289135_0.654355784979985","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aevr/notifications","version":"1.3.0","license":"MIT","_id":"@aevr/notifications@1.3.0","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"dist":{"shasum":"2005e9cfe00e11373925df1faaec4c80e8915dea","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.3.0.tgz","fileCount":80,"integrity":"sha512-DlJYafCxxEzK455NJYMm9ptU1ufVIvmyaXXcMA/icSJqc/BWq4bn1+Rg+6q7pcpoIlx39dueSiC1ErGzWlpCJA==","signatures":[{"sig":"MEUCIQCgGdkvVbSsEJVT1xjGT9N2bfVMfkNw3fnaqgwHUeyk1AIgZ1GvrVX5qu8T6r2o6yJTYGMkJcldgSlDokliWVVQguI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172567},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./push":{"types":"./dist/channels/push.d.ts","import":"./dist/channels/push.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js"}},"gitHead":"5353069ae5f75feaa178a94a506fe64405c5d9d3","scripts":{"test":"tsx --test src/*.test.ts src/**/*.test.ts","build":"tsc -p .","release":"standard-version --tag-prefix notifications@v","typecheck":"tsc --noEmit","release:major":"standard-version --release-as major --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v","prepublishOnly":"npm test && npm run typecheck && npm run build"},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"_npmVersion":"11.17.0","description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.0.0","pino":"^9.6.0","web-push":"^3.6.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f","devDependencies":{"tsx":"^4.20.6","typescript":"^5.7.2","@aevr/mailer":"^1.0.0","@types/web-push":"^3.6.4","standard-version":"^9.5.0"},"peerDependencies":{"@aevr/mailer":"*"},"_npmOperationalInternal":{"tmp":"tmp/notifications_1.3.0_1787658282443_0.6307093316997188","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@aevr/notifications","version":"1.3.1","license":"MIT","_id":"@aevr/notifications@1.3.1","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"dist":{"shasum":"35075a924923a1bba552621db91cbd17b750284f","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.3.1.tgz","fileCount":80,"integrity":"sha512-n5MK2IZLUQ6E7+rhR5SuyLmxzVHfnSiK9c0BR2G0DrazlY72ZJTe2Of0z1GX8qeoH/J/VAOYj9FtRlCkwtOQbA==","signatures":[{"sig":"MEUCIQCbMqk4TPqpSmrhS0/5qrttHeiOxP9efKDa0fiOMlHiKwIgLUBFYRBclXOE5ypQkTaipLji+m54pQlu7RzuunIGANs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175727},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./push":{"types":"./dist/channels/push.d.ts","import":"./dist/channels/push.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js"}},"scripts":{"test":"tsx --test src/*.test.ts src/**/*.test.ts","build":"tsc -p .","release":"standard-version --tag-prefix notifications@v","typecheck":"tsc --noEmit","release:major":"standard-version --release-as major --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v"},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.0.0","pino":"^9.6.0","web-push":"^3.6.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.7.2","@aevr/mailer":"^1.0.0","@types/web-push":"^3.6.4","standard-version":"^9.5.0"},"peerDependencies":{"@aevr/mailer":"*"},"_npmOperationalInternal":{"tmp":"tmp/notifications_1.3.1_1788357217316_0.23023429213376057","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@aevr/notifications","version":"1.3.2","license":"MIT","_id":"@aevr/notifications@1.3.2","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"dist":{"shasum":"1f06af02cfbd19718372dfee432dad64523a05e2","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.3.2.tgz","fileCount":80,"integrity":"sha512-HGaXJkAVGAvdANSl3paX9AOatDgxJPbtBESdhd6wn2ZwT4M24+vIDoJ+wXzFdCxo3G811oegDKcvOqItA7kJfw==","signatures":[{"sig":"MEYCIQCT7KyKx9iE8mwqf1chI2x6ENIt9eTxVPFokAZSpnAPugIhALha7eZ3jN5AB9uncQSLRI6x6PGSF3FIYtEXC9LOf8T7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176405},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./push":{"types":"./dist/channels/push.d.ts","import":"./dist/channels/push.js","default":"./dist/channels/push.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js","default":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js","default":"./dist/channels/slack.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js","default":"./dist/channels/in-app.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js","default":"./dist/channels/discord.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js","default":"./dist/channels/webhook.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js","default":"./dist/channels/telegram.js"}},"scripts":{"test":"tsx --test src/*.test.ts src/**/*.test.ts","build":"tsc -p .","release":"standard-version --tag-prefix notifications@v","typecheck":"tsc --noEmit","release:major":"standard-version --release-as major --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v"},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.0.0","pino":"^9.6.0","web-push":"^3.6.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","typescript":"^5.7.2","@aevr/mailer":"^1.0.0","@types/web-push":"^3.6.4","standard-version":"^9.5.0"},"peerDependencies":{"@aevr/mailer":"*"},"_npmOperationalInternal":{"tmp":"tmp/notifications_1.3.2_1788359116312_0.5331847181950902","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@aevr/notifications","version":"1.3.3","license":"MIT","_id":"@aevr/notifications@1.3.3","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"dist":{"shasum":"55a98142e90035ec651bc47a795c1e91f28c7013","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.3.3.tgz","fileCount":80,"integrity":"sha512-JnP0kUQo2wloZ8qPQZieH1wwkai91z9OPUyI3jPjfHAYycsYOdwnuIwCsGN6DU+1zDMv7OPV4EK0IbDJg32YXA==","signatures":[{"sig":"MEUCIAL4JPMpbntrh3mGIaENRO+IhOFB3T02psYhOzntKgnSAiEA7JldQ7FgC7Az7ByiNsDwHM0ZoDba5pDJ+HaGJ2Lr3/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178447},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./push":{"types":"./dist/channels/push.d.ts","import":"./dist/channels/push.js","default":"./dist/channels/push.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js","default":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js","default":"./dist/channels/slack.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js","default":"./dist/channels/in-app.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js","default":"./dist/channels/discord.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js","default":"./dist/channels/webhook.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js","default":"./dist/channels/telegram.js"}},"gitHead":"b648ef429af547bc438b31133d168d6081e48782","scripts":{"test":"tsx --test src/*.test.ts src/**/*.test.ts","build":"tsc -p .","release":"standard-version --tag-prefix notifications@v","typecheck":"tsc --noEmit","release:major":"standard-version --release-as major --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v","prepublishOnly":"npm test && npm run typecheck && npm run build"},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"_npmVersion":"10.9.8","description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.0.0","pino":"^9.6.0","web-push":"^3.6.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f","devDependencies":{"tsx":"^4.20.6","typescript":"^5.7.2","@aevr/mailer":"^1.0.0","@types/web-push":"^3.6.4","standard-version":"^9.5.0"},"peerDependencies":{"@aevr/mailer":"*"},"_npmOperationalInternal":{"tmp":"tmp/notifications_1.3.3_1789388387070_0.8986477879148533","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@aevr/notifications","version":"1.3.4","description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./email":{"types":"./dist/channels/email.d.ts","import":"./dist/channels/email.js","default":"./dist/channels/email.js"},"./slack":{"types":"./dist/channels/slack.d.ts","import":"./dist/channels/slack.js","default":"./dist/channels/slack.js"},"./discord":{"types":"./dist/channels/discord.d.ts","import":"./dist/channels/discord.js","default":"./dist/channels/discord.js"},"./telegram":{"types":"./dist/channels/telegram.d.ts","import":"./dist/channels/telegram.js","default":"./dist/channels/telegram.js"},"./webhook":{"types":"./dist/channels/webhook.d.ts","import":"./dist/channels/webhook.js","default":"./dist/channels/webhook.js"},"./in-app":{"types":"./dist/channels/in-app.d.ts","import":"./dist/channels/in-app.js","default":"./dist/channels/in-app.js"},"./push":{"types":"./dist/channels/push.d.ts","import":"./dist/channels/push.js","default":"./dist/channels/push.js"},"./testing":{"types":"./dist/testing.d.ts","import":"./dist/testing.js","default":"./dist/testing.js"}},"scripts":{"build":"tsc -p .","typecheck":"tsc --noEmit","test":"tsx --test src/*.test.ts src/**/*.test.ts","prepublishOnly":"npm test && npm run typecheck && npm run build","release":"standard-version --tag-prefix notifications@v","release:patch":"standard-version --release-as patch --tag-prefix notifications@v","release:minor":"standard-version --release-as minor --tag-prefix notifications@v","release:major":"standard-version --release-as major --tag-prefix notifications@v"},"publishConfig":{"access":"public"},"license":"MIT","engines":{"node":">=20.0.0"},"peerDependencies":{"@aevr/mailer":"*"},"dependencies":{"pino":"^9.6.0","web-push":"^3.6.7","zod":"^4.0.0"},"devDependencies":{"@aevr/mailer":"^1.0.0","@types/web-push":"^3.6.4","standard-version":"^9.5.0","tsx":"^4.20.6","typescript":"^5.7.2"},"packageManager":"pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f","_id":"@aevr/notifications@1.3.4","gitHead":"d28dd4ac883836bf29132de06eeb1b1d0b7c61a8","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-aubQS5w9Rm5StfNTvkoD37pAmKsjICL/VLD/0Ip8X7fBOXICLWpFT0f7i/JDhOiW8Ff0wdBLnqiyZiTblVfBeg==","shasum":"aacbd6806992aab413868d0ba16cc875e78fac43","tarball":"https://registry.npmjs.org/@aevr/notifications/-/notifications-1.3.4.tgz","fileCount":80,"unpackedSize":178701,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDaYY+lwMt2BRZiEbZdJDw2USJxBs+fVQoESR/ain9gmgIgJSzefxTyGjOQqGHxynHW+1sD5e2eYff4qijNHOmqIm4="}]},"_npmUser":{"name":"miracleio","email":"miracleficient@gmail.com"},"directories":{},"maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/notifications_1.3.4_1789392123183_0.6540314408782706"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-06T18:06:23.184Z","modified":"2026-09-14T13:22:03.496Z","1.0.0":"2026-08-06T18:06:23.598Z","1.1.1":"2026-08-20T11:28:09.278Z","1.3.0":"2026-08-25T11:44:42.600Z","1.3.1":"2026-09-02T13:53:37.487Z","1.3.2":"2026-09-02T14:25:16.487Z","1.3.3":"2026-09-14T12:19:47.221Z","1.3.4":"2026-09-14T13:22:03.325Z"},"license":"MIT","description":"Multi-channel notification dispatch engine. Send email, in-app, Slack, Discord, Telegram, and webhook notifications from a single API.","maintainers":[{"name":"miracleio","email":"miracleficient@gmail.com"}],"readme":"# @aevr/notifications\n## Delivery receipts\n\nEvery `dispatch()` returns a `NotificationDispatchResult` with one normalized\nreceipt for each recipient/channel attempt. Existing channels that return\n`void` remain compatible and are recorded as `sent`. Channels with provider\nvisibility can return target counts and `sent`, `partial`, `failed`, or\n`unavailable` status.\n\n```ts\nconst result = await registry.dispatch(event, data, recipients, channels)\n\nfor (const receipt of result.receipts) {\n  console.log(receipt.channel, receipt.status, receipt.deliveredTargets)\n}\n```\n\nWeb Push reports `unavailable` with `NO_PUSH_SUBSCRIPTIONS` when a recipient has\nno registered browser subscription. This prevents a default-enabled channel\nfrom being mistaken for a successful delivery. `NotificationDispatchOptions`\nalso provides an `onReceipt` observer for durable product-owned persistence.\n\n\nMulti-channel notification dispatch engine for Node.js. Register renderers per event, dispatch to email, in-app, Slack, Discord, Telegram, and custom webhooks from a single API.\n\n[![npm](https://img.shields.io/npm/v/@aevr/notifications)](https://www.npmjs.com/package/@aevr/notifications)\n[![license](https://img.shields.io/npm/l/@aevr/notifications)](./LICENSE)\n\n## Install\n\n```bash\nnpm install @aevr/notifications\n# peer dep — required only if you use the email channel:\nnpm install @aevr/mailer\n```\n\n## Quick start\n\n```ts\nimport { registerRenderer, dispatch } from \"@aevr/notifications\";\nimport { createMailer } from \"@aevr/mailer\";\nimport { EmailChannel } from \"@aevr/notifications/email\";\n\n// 1. Wire up channels\nconst emailCh = new EmailChannel(createMailer());\n\n// 2. Register a renderer for an event\nregisterRenderer(\"user.welcome\", {\n  email: (data) => ({\n    subject: `Welcome, ${data.name}!`,\n    body: \"Thanks for signing up.\",\n    html: `<p>Thanks for signing up, <strong>${data.name}</strong>!</p>`,\n  }),\n});\n\n// 3. Dispatch — fire and forget\nawait dispatch(\n  \"user.welcome\",\n  { name: \"Alice\" },\n  [{ userId: \"u1\", email: \"alice@example.com\" }],\n  [emailCh],\n);\n```\n\n## Channels\n\n| Import | Channel | Notes |\n|---|---|---|\n| `@aevr/notifications/email` | `EmailChannel` | Requires `@aevr/mailer` peer dep |\n| `@aevr/notifications/webhook` | `createWebhookChannel` | HMAC signing, custom body template |\n| `@aevr/notifications/telegram` | `createTelegramChannel` | Message splitting, inline keyboard |\n| `@aevr/notifications/slack` | `createSlackChannel` | Incoming Webhook, Block Kit |\n| `@aevr/notifications/discord` | `createDiscordChannel` | Incoming Webhook, rich embeds |\n| `@aevr/notifications/in-app` | `createInAppChannel` | Injected storage adapter |\n| `@aevr/notifications/push` | `createWebPushChannel` | VAPID Web Push with injected subscription storage |\n\n### Web Push\n\n```ts\nimport { createWebPushChannel, testWebPushDelivery } from \"@aevr/notifications/push\";\n\nconst push = createWebPushChannel({\n  vapid: {\n    subject: \"mailto:ops@example.com\",\n    publicKey: process.env.VAPID_PUBLIC_KEY!,\n    privateKey: process.env.VAPID_PRIVATE_KEY!,\n  },\n  storage: {\n    getSubscriptions: (userId) => subscriptions.findByUser(userId),\n    removeSubscription: (userId, endpoint) => subscriptions.remove(userId, endpoint),\n  },\n  timeout: 8_000,\n});\n\nregisterRenderer(\"product.alert\", {\n  web_push: (data) => ({\n    subject: data.title,\n    body: data.message,\n    url: data.url,\n    meta: { tag: \"product-alert\" },\n  }),\n});\n```\n\nThe product owns browser subscription HTTP routes and persistence. The channel owns VAPID delivery and removes endpoints that return HTTP 404 or 410. Set `timeout` to bound each provider request; `web-push` otherwise has no request timeout.\n\nNormal `dispatch()` remains fire-and-forget: channel failures are logged and never block other channels. For diagnostics or synchronous workflows, use observable delivery:\n\n```ts\nconst result = await push.sendWithResult(payload, recipient, {\n  endpoint: currentBrowserEndpoint, // optional: restrict to this device\n});\n\n// Or send a standard diagnostic payload without a renderer:\nconst test = await testWebPushDelivery(pushConfig, userId, {\n  endpoint: currentBrowserEndpoint,\n  url: \"/settings/notifications\",\n});\n\n// { attempted, delivered, staleRemoved, failed, storageError }\nif (test.attempted === 0) return reply.status(409).send({ error: \"No subscription\" });\nif (test.delivered === 0) return reply.send({ success: false, error: \"Provider delivery failed\", data: test });\n```\n\nDiagnostic delivery defaults to an 8-second provider timeout, configurable through `WebPushChannelConfig.timeout`. `failed[]` includes the endpoint, provider HTTP status when available, and error message. Applications should sanitize or fingerprint endpoints before returning diagnostics to browsers. A 404/410 response removes the endpoint and increments `staleRemoved` rather than `failed`. When an edge proxy replaces upstream 5xx bodies, return a readable `success: false` diagnostic envelope with HTTP 200 after the probe completes.\n\n## Retry\n\n```ts\nimport { withRetry } from \"@aevr/notifications\";\n\nconst resilientChannel = withRetry(slackCh, { maxAttempts: 3, backoffMs: 500 });\n```\n\n## Isolated registry (multi-tenant / testing)\n\n```ts\nimport { createNotificationRegistry } from \"@aevr/notifications\";\n\nconst { registerRenderer, dispatch } = createNotificationRegistry();\n```\n\n## Testing\n\n```ts\nimport { createMockChannel, assertDeliveredTo } from \"@aevr/notifications/testing\";\n\nconst mock = createMockChannel(\"email\");\nawait dispatch(\"user.welcome\", data, recipients, [mock]);\nassertDeliveredTo(mock, \"u1\");\n```\n\n## Types\n\n```ts\nimport type {\n  NotificationPayload,\n  NotificationRecipient,\n  NotificationChannel,\n  ChannelRenderer,\n} from \"@aevr/notifications\";\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}