{"_id":"@atlex/notifications","_rev":"16-884097d7b44a257830583cd5900601c6","name":"@atlex/notifications","dist-tags":{"latest":"0.2.2"},"versions":{"0.1.1":{"name":"@atlex/notifications","version":"0.1.1","keywords":["atlex","notifications","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.1","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/atlex-monorepo/issues"},"dist":{"shasum":"a924ba3bf8a099745df56ac775c9f9135d1a17df","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.1.tgz","fileCount":127,"integrity":"sha512-1ohspD1/tObHz+4EFL8qeP+GssZh+b9War95O0xQNOwHlVi1GGBoQs7LhArZ5n5OiX9NLVKjuLYadOUN9w7b8g==","signatures":[{"sig":"MEUCIQDbozWnjIqQSpxndvYCL+7U7OPsZCpB8fPrl2hGxMsjMQIgNRh36lH9LN9JxmVWW2JlctwJe/hogu7rOQRVXINhV1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":461095},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/6736b5bd9d7916e28c8ec1b64b0613d6/atlex-notifications-0.1.1.tgz","_integrity":"sha512-1ohspD1/tObHz+4EFL8qeP+GssZh+b9War95O0xQNOwHlVi1GGBoQs7LhArZ5n5OiX9NLVKjuLYadOUN9w7b8g==","repository":{"url":"git+https://github.com/atlex-framework/atlex-monorepo.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.1","@atlex/core":"0.1.1","@atlex/mail":"0.1.1","@atlex/queue":"0.1.1","@atlex/config":"0.1.1","@atlex/storage":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.1","@atlex/core":"0.1.1","@atlex/mail":"0.1.1","@atlex/queue":"0.1.1","@atlex/config":"0.1.1","@atlex/storage":"0.1.1"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.1_1776194491168_0.23328394151965637","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@atlex/notifications","version":"0.1.2","keywords":["atlex","notifications","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.2","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"0c11f3acd69aa5477a70554717b45dbb7ec35603","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.2.tgz","fileCount":127,"integrity":"sha512-/MkZG2SRLO4WTGyBTu+JnUukKBX7hAv6QUJOZTzfZry8+Jpk1gvznOQ4EsbS67AX1EYGk5UPR7X89jUuo84tUg==","signatures":[{"sig":"MEQCIDmSBgEFZW6oAzv4ysYV8EJDEWP5zGUEqFcT5ZwdS5KOAiBH4IVhvISluwWm4OF7s8ZJv+lPDDHzdgByuJmmZQjVcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":461312},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/8f346b5e00ab47acba2d23aef4826ded/atlex-notifications-0.1.2.tgz","_integrity":"sha512-/MkZG2SRLO4WTGyBTu+JnUukKBX7hAv6QUJOZTzfZry8+Jpk1gvznOQ4EsbS67AX1EYGk5UPR7X89jUuo84tUg==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.2","@atlex/core":"0.1.2","@atlex/mail":"0.1.2","@atlex/queue":"0.1.2","@atlex/config":"0.1.2","@atlex/storage":"0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.2","@atlex/core":"0.1.2","@atlex/mail":"0.1.2","@atlex/queue":"0.1.2","@atlex/config":"0.1.2","@atlex/storage":"0.1.2"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.2_1776235404129_0.18453578783659297","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@atlex/notifications","version":"0.1.3","keywords":["atlex","notifications","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.3","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"9b7baf48cdacd27cddb93c7e153cae865b27af6d","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.3.tgz","fileCount":127,"integrity":"sha512-uf9Vhw2+MzEp4ui4tRVVKqDBAPoL2jVbdPC6Zy8oMzyCNRklX1koWWZ3EA0G0Axa+Vq8odLJorJ5XPhwvyvZUA==","signatures":[{"sig":"MEUCIH+2DezReYHf/fF2PCIMP1uOd/ybD4ZNccBpcV7NI6hOAiEA/0528EIutNBblxyFFsCGGIZeobKQdySFIxGI0NgJDjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":461544},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/33d21d6f9dcf5c1edafc017f48317404/atlex-notifications-0.1.3.tgz","_integrity":"sha512-uf9Vhw2+MzEp4ui4tRVVKqDBAPoL2jVbdPC6Zy8oMzyCNRklX1koWWZ3EA0G0Axa+Vq8odLJorJ5XPhwvyvZUA==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.3","@atlex/core":"0.1.3","@atlex/mail":"0.1.3","@atlex/queue":"0.1.3","@atlex/config":"0.1.3","@atlex/storage":"0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.3","@atlex/core":"0.1.3","@atlex/mail":"0.1.3","@atlex/queue":"0.1.3","@atlex/config":"0.1.3","@atlex/storage":"0.1.3"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.3_1776256092967_0.07982075285770174","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@atlex/notifications","version":"0.1.4","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.4","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"e5541a14c7da2c7daee4ab7dad6f1b047b6d2ad1","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.4.tgz","fileCount":127,"integrity":"sha512-ecqBn74L/MuechUr8dnfPhHrFlTvoOADr9X/KGvX7e59Kw6LaI4HpkiIAHBTYgrDggkMe3otPv5HUjB1JRtTuQ==","signatures":[{"sig":"MEQCIEKCD0k2T1qb0yK9sdV7A9i+k9FNT8rfbgoIEmT9ge76AiBQIa9ejQCwcy5mX5Nf30odl/b7+/BhEpPY1w1kYrJaMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462167},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/516923c3d46087db0fbb3b22660741e2/atlex-notifications-0.1.4.tgz","_integrity":"sha512-ecqBn74L/MuechUr8dnfPhHrFlTvoOADr9X/KGvX7e59Kw6LaI4HpkiIAHBTYgrDggkMe3otPv5HUjB1JRtTuQ==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.4","@atlex/core":"0.1.4","@atlex/mail":"0.1.4","@atlex/queue":"0.1.4","@atlex/config":"0.1.4","@atlex/storage":"0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.4","@atlex/core":"0.1.4","@atlex/mail":"0.1.4","@atlex/queue":"0.1.4","@atlex/config":"0.1.4","@atlex/storage":"0.1.4"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.4_1776259461172_0.3851111011154007","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@atlex/notifications","version":"0.1.5","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.5","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"0621aa9aa2fcff13be293a3fe1f0922c98df3f15","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.5.tgz","fileCount":127,"integrity":"sha512-7Qz7/iPhCOI303GUFrLkWpVbyW7jHAu+LAKI3HxzWt5/HfFPxRrStK/fyw9oHQPnZDR4Tw7QQGqKtR+zsxmLNw==","signatures":[{"sig":"MEUCIQC9BcIPXDxNHJM+WhCfLilCgApAWRWXCoCjNI9Hx5BAtQIgPuRtHNg+E3vqAVO0ojQe9nZU8N9wZGEM8yauZuG1QfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462386},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/85a339ba08f2df20046e8406822f2a36/atlex-notifications-0.1.5.tgz","_integrity":"sha512-7Qz7/iPhCOI303GUFrLkWpVbyW7jHAu+LAKI3HxzWt5/HfFPxRrStK/fyw9oHQPnZDR4Tw7QQGqKtR+zsxmLNw==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.5","@atlex/core":"0.1.5","@atlex/mail":"0.1.5","@atlex/queue":"0.1.5","@atlex/config":"0.1.5","@atlex/storage":"0.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.5","@atlex/core":"0.1.5","@atlex/mail":"0.1.5","@atlex/queue":"0.1.5","@atlex/config":"0.1.5","@atlex/storage":"0.1.5"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.5_1776260735515_0.4004279461183493","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@atlex/notifications","version":"0.1.6","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.6","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"f583d5ec0a29f1a014b9d98043e3045ed9b9e982","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.6.tgz","fileCount":127,"integrity":"sha512-XNV2fAzMul37U4vukIso/vnFWHBoW5WQBbzYGhYCadfRCmP4uaIwQxYJA+4f7vH2FnhPjnJ9DRzCAlWIlhhTzg==","signatures":[{"sig":"MEUCIQDhtFtvXujpnwElKGTp0ilFwgyVCWxOBs1PHTn1SCwiOgIgeM+5Z6vcn9Zeen44i7DdXlxxleirP5Ad4XoEjqD7Gac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462634},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/750b1a3c40d57d0df9ef270d3d814101/atlex-notifications-0.1.6.tgz","_integrity":"sha512-XNV2fAzMul37U4vukIso/vnFWHBoW5WQBbzYGhYCadfRCmP4uaIwQxYJA+4f7vH2FnhPjnJ9DRzCAlWIlhhTzg==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.6","@atlex/core":"0.1.6","@atlex/mail":"0.1.6","@atlex/queue":"0.1.6","@atlex/config":"0.1.6","@atlex/storage":"0.1.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.6","@atlex/core":"0.1.6","@atlex/mail":"0.1.6","@atlex/queue":"0.1.6","@atlex/config":"0.1.6","@atlex/storage":"0.1.6"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.6_1778694370822_0.2741792615647536","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@atlex/notifications","version":"0.1.7","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.7","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"89dbac5025901f6e3efcf918bbf669050a85e2e1","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.7.tgz","fileCount":135,"integrity":"sha512-pQPA4unxAlnHsTndAJNQlU1aABoV3gf1BW9JS7DgZ1GpNQ6yQ8kL1nXi7nGdsqDUYdegeVPe9AhziUL0Nc8Bkg==","signatures":[{"sig":"MEUCIFgFWW6TLGXjbfLU+00kUJYhOXIUtNMZE/drgaD4ARd8AiEAgKbXGBMOvJLi6IQV8X2JfdzPU8dS8yjOOH37cZpQMKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":521106},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/8df85e21e6b094660a62ae0cca4c2d19/atlex-notifications-0.1.7.tgz","_integrity":"sha512-pQPA4unxAlnHsTndAJNQlU1aABoV3gf1BW9JS7DgZ1GpNQ6yQ8kL1nXi7nGdsqDUYdegeVPe9AhziUL0Nc8Bkg==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.7","@atlex/core":"0.1.7","@atlex/mail":"0.1.7","@atlex/queue":"0.1.7","@atlex/config":"0.1.7","@atlex/storage":"0.1.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.7","@atlex/core":"0.1.7","@atlex/mail":"0.1.7","@atlex/queue":"0.1.7","@atlex/config":"0.1.7","@atlex/storage":"0.1.7"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.7_1778755097165_0.3340470054596931","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@atlex/notifications","version":"0.1.8","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.8","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"fc3026939527ff3c200fe53d91e47d473b97fe02","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.8.tgz","fileCount":135,"integrity":"sha512-Stl5vOhk1qUn1R6lpXTexuukk+Pyu0SpBvmkhl88zBBwf2iQwvWCn1pgNfI9QkQVReX0WggJXOid4WypjgXJxw==","signatures":[{"sig":"MEYCIQCoxnv6HpO6Gv+MqUHY94HGeSai8CM8dx40rL0jrGV4YAIhANTmx8Arpkf3Ub5qpi9utda4ZluHR4i5ufWuwM3MWlJT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":521328},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/489bd26c0bb1956b5a489f824fcedde5/atlex-notifications-0.1.8.tgz","_integrity":"sha512-Stl5vOhk1qUn1R6lpXTexuukk+Pyu0SpBvmkhl88zBBwf2iQwvWCn1pgNfI9QkQVReX0WggJXOid4WypjgXJxw==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.8","@atlex/core":"0.1.8","@atlex/mail":"0.1.8","@atlex/queue":"0.1.8","@atlex/config":"0.1.8","@atlex/storage":"0.1.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.8","@atlex/core":"0.1.8","@atlex/mail":"0.1.8","@atlex/queue":"0.1.8","@atlex/config":"0.1.8","@atlex/storage":"0.1.8"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.8_1778775536573_0.2893424410320673","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@atlex/notifications","version":"0.1.9","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.9","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"ba7b803f3cb478c72709385a0b76bebab1f1a6c9","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.9.tgz","fileCount":135,"integrity":"sha512-dsvnoIHZqlBhdFelE1ObFzVpqGwMDv7p22UC86QeH3vV96TOGnfgRuzcLAa40Kl72cZ6QWCDoUHHOF9NRW2Ecg==","signatures":[{"sig":"MEUCIQDBcsrkIRGj6wLUHjcICN3S/8CJAkcIhESGtegvyDIDqgIgarL4XICE93mskebJ0fcOKcxH95Cn/e8oS2tkIxBvS58=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":521565},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.9.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/c3353434ab738e59d7bd54538bc713bc/atlex-notifications-0.1.9.tgz","_integrity":"sha512-dsvnoIHZqlBhdFelE1ObFzVpqGwMDv7p22UC86QeH3vV96TOGnfgRuzcLAa40Kl72cZ6QWCDoUHHOF9NRW2Ecg==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.10","@atlex/core":"0.1.9","@atlex/mail":"0.1.9","@atlex/queue":"0.1.9","@atlex/config":"0.1.9","@atlex/storage":"0.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.10","@atlex/core":"0.1.9","@atlex/mail":"0.1.9","@atlex/queue":"0.1.9","@atlex/config":"0.1.9","@atlex/storage":"0.1.9"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.9_1778830262599_0.3048289675074345","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@atlex/notifications","version":"0.1.10","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.10","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"aa0c37f09409ad9b4143dee12595907b083e07ea","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.10.tgz","fileCount":135,"integrity":"sha512-wRvCD9s6f3M26T8O1qAQiC3SWnF45iMnOSjmMuvakEly5bo2SESmtuBQ0a19pU3GALMa+PoPOlWYQRgeJJ1T8w==","signatures":[{"sig":"MEYCIQCxupZ6yFwkWJhfvt+kPbVkm0HLAxhhHWg79IidH430eAIhAPgaruF2ZOgBJZxKDy6cTGrCUVC2G5tWVQo4g6kpkGEh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":521782},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/1edaa58241583e3059cbf97d86fab058/atlex-notifications-0.1.10.tgz","_integrity":"sha512-wRvCD9s6f3M26T8O1qAQiC3SWnF45iMnOSjmMuvakEly5bo2SESmtuBQ0a19pU3GALMa+PoPOlWYQRgeJJ1T8w==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.7","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@atlex/orm":"0.1.10","@atlex/core":"0.1.10","@atlex/mail":"0.1.10","@atlex/queue":"0.1.10","@atlex/config":"0.1.10","@atlex/storage":"0.1.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.10","@atlex/core":"0.1.10","@atlex/mail":"0.1.10","@atlex/queue":"0.1.10","@atlex/config":"0.1.10","@atlex/storage":"0.1.10"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.10_1778834116793_0.25023432445378124","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@atlex/notifications","version":"0.1.11","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.1.11","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"9954d5c45fbf0612fa7ec98eeb26238800ebb50a","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.1.11.tgz","fileCount":135,"integrity":"sha512-AwJCAq6J1nLVusLGTnFrLIFxVX5UD4ibS4qWAPYl3bMa2zXB/z2iOazwQVmO6V9b8NpLuLDdOs99FkZWPUeIrw==","signatures":[{"sig":"MEUCIQChc8CvELUgrqhkQmSyTzA7L+Pi7d8KN2CFpKLHdLsTAwIgBjUkbFQetzOfE/sDzs1z7DKcqcUSkefTa+zTFu2Tebk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":522008},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.1.11.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/8ecd8df4eebdbdd351eb5c86f735663e/atlex-notifications-0.1.11.tgz","_integrity":"sha512-AwJCAq6J1nLVusLGTnFrLIFxVX5UD4ibS4qWAPYl3bMa2zXB/z2iOazwQVmO6V9b8NpLuLDdOs99FkZWPUeIrw==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.8","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@atlex/orm":"0.1.11","@atlex/core":"0.1.11","@atlex/mail":"0.1.11","@atlex/queue":"0.1.11","@atlex/config":"0.1.11","@atlex/storage":"0.1.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":"0.1.11","@atlex/core":"0.1.11","@atlex/mail":"0.1.11","@atlex/queue":"0.1.11","@atlex/config":"0.1.11","@atlex/storage":"0.1.11"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.1.11_1780144971731_0.18835369883374198","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atlex/notifications","version":"0.2.0","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.2.0","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"526f6f6d6885ae9194b3f0028e6104a226c210f5","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.2.0.tgz","fileCount":135,"integrity":"sha512-bq80H1i/RYYGI9o469iCQeQNlz1OAMkV1mLkrIK3R6/Du67nSKg/Erv9LajAzetegUFLT60z0nFuA8UXXi0WNA==","signatures":[{"sig":"MEUCIQDsW9Q6OWWCHG44ax4Hujn6Dpsn5WfAlRoBtwztcKI4VwIgAVYfx3N2TYsykDLU2omheXABclR9hf9t4+HmETfL9Fo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523316},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/15ead84b0cfdd72db8aeccf4080c7088/atlex-notifications-0.2.0.tgz","_integrity":"sha512-bq80H1i/RYYGI9o469iCQeQNlz1OAMkV1mLkrIK3R6/Du67nSKg/Erv9LajAzetegUFLT60z0nFuA8UXXi0WNA==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.8","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@atlex/orm":"0.2.0","@atlex/core":"0.2.0","@atlex/mail":"0.2.0","@atlex/queue":"0.2.0","@atlex/config":"0.2.0","@atlex/storage":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":">=0.2.0","@atlex/core":">=0.2.0","@atlex/mail":">=0.2.0","@atlex/queue":">=0.2.0","@atlex/config":">=0.2.0","@atlex/storage":">=0.2.0"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.2.0_1780306560068_0.128859445730936","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@atlex/notifications","version":"0.2.1","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"author":{"url":"https://github.com/khamazaspyan","name":"Karen Hamazaspyan"},"license":"MIT","_id":"@atlex/notifications@0.2.1","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"dist":{"shasum":"c75d48c68fcd3e8ef0c7e52b3349ca3fe94c3506","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.2.1.tgz","fileCount":135,"integrity":"sha512-sHPLfzHelHFsJKCRuPcc1Wo9OrlDh6dVkFZCSaaBnyDWbuiDXQup+c618DaLsxW9lbPuJxSYmcTrLUDQOEMd6Q==","signatures":[{"sig":"MEQCIFIg04BGGjTvDIaYk9h8BDnLTXAtZIi0VCarY0+aWBJFAiBPDum19kiLig8N9qiDw4o4EoQ3RIoNvk2kdzFdGdWgoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523550},"main":"./dist/index.js","type":"module","_from":"file:atlex-notifications-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts","build":"tsup --config tsup.config.ts","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"_resolved":"/tmp/70ac78387ebbb905f618ea72c49bd408/atlex-notifications-0.2.1.tgz","_integrity":"sha512-sHPLfzHelHFsJKCRuPcc1Wo9OrlDh6dVkFZCSaaBnyDWbuiDXQup+c618DaLsxW9lbPuJxSYmcTrLUDQOEMd6Q==","repository":{"url":"git+https://github.com/atlex-framework/notifications.git","type":"git","directory":"packages/notifications"},"_npmVersion":"10.9.8","description":"Notification channels and database notifications for Atlex","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@atlex/orm":"0.2.1","@atlex/core":"0.2.1","@atlex/mail":"0.2.1","@atlex/queue":"0.2.1","@atlex/config":"0.2.1","@atlex/storage":"0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.2.4","typescript":"^5.0.0","better-sqlite3":"^11.0.0"},"peerDependencies":{"@atlex/orm":">=0.2.1","@atlex/core":">=0.2.1","@atlex/mail":">=0.2.1","@atlex/queue":">=0.2.1","@atlex/config":">=0.2.1","@atlex/storage":">=0.2.1"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/notifications_0.2.1_1780423679914_0.39162573422357494","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@atlex/notifications","version":"0.2.2","description":"Notification channels and database notifications for Atlex","type":"module","license":"MIT","author":{"name":"Karen Hamazaspyan","url":"https://github.com/khamazaspyan"},"keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"engines":{"node":">=20"},"repository":{"type":"git","url":"git+https://github.com/atlex-framework/notifications.git","directory":"packages/notifications"},"homepage":"https://atlex.dev","bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"publishConfig":{"access":"public"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"}},"peerDependencies":{"@atlex/config":">=0.2.2","@atlex/core":">=0.2.2","@atlex/mail":">=0.2.2","@atlex/orm":">=0.2.2","@atlex/queue":">=0.2.2","@atlex/storage":">=0.2.2"},"peerDependenciesMeta":{"@atlex/storage":{"optional":true}},"dependencies":{"@atlex/config":"0.2.2","@atlex/core":"0.2.2","@atlex/mail":"0.2.2","@atlex/orm":"0.2.2","@atlex/queue":"0.2.2","@atlex/storage":"0.2.2"},"devDependencies":{"better-sqlite3":"^11.0.0","tsup":"^8.5.0","typescript":"^5.0.0","vitest":"^3.2.4"},"scripts":{"build":"tsup --config tsup.config.ts","lint":"tsc --noEmit -p tsconfig.json","typecheck":"tsc --noEmit -p tsconfig.json","test":"vitest run -c vitest.config.ts"},"_id":"@atlex/notifications@0.2.2","_integrity":"sha512-H+f+BI0qvAueV3zcleDzXGk7FOd/0Fqqsbfg9ZbUYJ0uh8Q4tE5wcHmVP3X+vYMjEg8FlfzAXQHd00R/cV89Rw==","_resolved":"/tmp/f1c15658cb701e23c7eca3f6739bc9cb/atlex-notifications-0.2.2.tgz","_from":"file:atlex-notifications-0.2.2.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-H+f+BI0qvAueV3zcleDzXGk7FOd/0Fqqsbfg9ZbUYJ0uh8Q4tE5wcHmVP3X+vYMjEg8FlfzAXQHd00R/cV89Rw==","shasum":"a52c7f5d60ca2b1eb376d2fad7c1eb8c1be45883","tarball":"https://registry.npmjs.org/@atlex/notifications/-/notifications-0.2.2.tgz","fileCount":135,"unpackedSize":523780,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDcKtjexfuMmq8kjIzxYbpADHbtUjMdyVSZebLupAmdPAIgAWvOPjBwBnsP+YdEWc3rZ+0i3GKI371Tj0RelLY6CAY="}]},"_npmUser":{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"},"directories":{},"maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/notifications_0.2.2_1784391607075_0.21489555696081575"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T19:21:30.981Z","modified":"2026-07-18T16:20:07.443Z","0.1.0-beta":"2026-04-11T21:23:27.512Z","0.1.1":"2026-04-14T19:21:31.326Z","0.1.2":"2026-04-15T06:43:24.261Z","0.1.3":"2026-04-15T12:28:13.137Z","0.1.4":"2026-04-15T13:24:21.383Z","0.1.5":"2026-04-15T13:45:35.750Z","0.1.6":"2026-05-13T17:46:10.989Z","0.1.7":"2026-05-14T10:38:17.372Z","0.1.8":"2026-05-14T16:18:56.771Z","0.1.9":"2026-05-15T07:31:02.750Z","0.1.10":"2026-05-15T08:35:16.952Z","0.1.11":"2026-05-30T12:42:51.900Z","0.2.0":"2026-06-01T09:36:00.241Z","0.2.1":"2026-06-02T18:08:00.070Z","0.2.2":"2026-07-18T16:20:07.270Z"},"bugs":{"url":"https://github.com/atlex-framework/notifications/issues"},"author":{"name":"Karen Hamazaspyan","url":"https://github.com/khamazaspyan"},"license":"MIT","homepage":"https://atlex.dev","keywords":["atlex","notifications","notification","multi-channel-notifications","slack-notifications","email-notifications","database-notifications","push-notifications","alert","notifiable","laravel-notifications","laravel-alternative","nodejs","javascript","typescript"],"repository":{"type":"git","url":"git+https://github.com/atlex-framework/notifications.git","directory":"packages/notifications"},"description":"Notification channels and database notifications for Atlex","maintainers":[{"name":"khamazaspyan","email":"khamazaspyan@gmail.com"}],"readme":"# @atlex/notifications\n\n> Multi-channel notifications: mail, Slack, and database.\n\n[![npm](https://img.shields.io/npm/v/@atlex/notifications.svg?style=flat-square&color=7c3aed)](https://www.npmjs.com/package/@atlex/notifications)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-7c3aed.svg?style=flat-square)](https://www.typescriptlang.org/)\n\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-Support-yellow?style=flat-square&logo=buy-me-a-coffee)](https://buymeacoffee.com/khamazaspyan)\n\n## Installation\n\n```bash\nnpm install @atlex/notifications\n# or\nyarn add @atlex/notifications\n```\n\n## Quick Start\n\n```typescript\nimport { Notification, MailChannel, MailMessage } from '@atlex/notifications'\n\nclass OrderShippedNotification extends Notification {\n  constructor(private order: any) {\n    super()\n  }\n\n  via() {\n    return ['mail']\n  }\n\n  toMail() {\n    return new MailMessage()\n      .subject(`Order ${this.order.id} has shipped`)\n      .greeting('Hello!')\n      .line('Your order is on the way.')\n      .action('Track Order', `https://example.com/orders/${this.order.id}`)\n      .line('Thank you for your purchase!')\n  }\n}\n\n// Send notification\nconst user = { email: 'user@example.com' }\nawait user.notify(new OrderShippedNotification(order))\n```\n\n## Features\n\n- **Multi-Channel Delivery**: Send via mail, Slack, database, APNs, or custom channels\n- **Fluent API**: Build notifications with a clean, expressive interface\n- **Delayed Delivery**: Schedule notifications to be sent later\n- **Conditional Routing**: Decide delivery channels based on notification content\n- **Broadcast Notifications**: Send to multiple channels simultaneously\n- **Notifiable Models**: Add notification support to any model\n- **Event Hooks**: Listen to notification lifecycle events\n- **Queue Integration**: Async notification delivery with job queues\n- **APNs Critical Alerts**: Bypass Do Not Disturb with `sound.critical = 1` (v0.1.7)\n\n## Creating Notifications\n\n### Basic Notification Class\n\n```typescript\nimport { Notification, MailMessage, DatabaseMessage } from '@atlex/notifications'\n\nclass WelcomeNotification extends Notification {\n  constructor(private userName: string) {\n    super()\n  }\n\n  // Define which channels to use\n  via() {\n    return ['mail', 'database']\n  }\n\n  // Build mail notification\n  toMail() {\n    return new MailMessage()\n      .subject('Welcome to Our Platform')\n      .greeting(`Hello ${this.userName}!`)\n      .line('Thanks for joining us.')\n      .action('Get Started', 'https://example.com/setup')\n      .line('We are excited to have you on board!')\n  }\n\n  // Build database notification\n  toDatabase() {\n    return new DatabaseMessage()\n      .title('Welcome to Our Platform')\n      .message(`Hello ${this.userName}, thanks for joining us!`)\n  }\n}\n```\n\n## Notification Channels\n\n### Mail Channel\n\n```typescript\nimport { MailMessage } from '@atlex/notifications'\n\nclass PaymentConfirmedNotification extends Notification {\n  constructor(private amount: number) {\n    super()\n  }\n\n  via() {\n    return ['mail']\n  }\n\n  toMail() {\n    return new MailMessage()\n      .subject(`Payment of $${this.amount} confirmed`)\n      .greeting('Hello!')\n      .line(`We have received your payment of $${this.amount}.`)\n      .line(`Transaction ID: TXN-${Date.now()}`)\n      .line('Thank you!')\n      .salutation('Best regards,\\nThe Team')\n  }\n}\n```\n\n### Database Channel\n\n```typescript\nimport { DatabaseMessage } from '@atlex/notifications'\n\nclass CommentReplyNotification extends Notification {\n  constructor(\n    private comment: any,\n    private author: string,\n  ) {\n    super()\n  }\n\n  via() {\n    return ['database']\n  }\n\n  toDatabase() {\n    return new DatabaseMessage()\n      .title('New reply to your comment')\n      .message(`${this.author} replied: \"${this.comment.text}\"`)\n      .action('View Comment', `/comments/${this.comment.id}`)\n  }\n}\n```\n\n### Slack Channel\n\n```typescript\nimport { SlackMessage, SlackAttachment } from '@atlex/notifications'\n\nclass DeploymentFailedNotification extends Notification {\n  constructor(\n    private deployment: any,\n    private error: string,\n  ) {\n    super()\n  }\n\n  via() {\n    return ['slack']\n  }\n\n  toSlack() {\n    return new SlackMessage().text('Deployment failed!').attachment(\n      new SlackAttachment()\n        .title('Deployment Status')\n        .fields({\n          Environment: this.deployment.environment,\n          Branch: this.deployment.branch,\n          Error: this.error,\n        })\n        .markdown(),\n    )\n  }\n}\n```\n\n## Notifiable Models\n\n### Adding Notification Support\n\n```typescript\nimport { Notifiable } from '@atlex/notifications'\n\nclass User extends Notifiable {\n  id: number\n  email: string\n  name: string\n\n  // Implement routing for notifications\n  routeNotificationFor(channel: string) {\n    if (channel === 'mail') {\n      return this.email\n    }\n    if (channel === 'slack') {\n      return this.slackUserId // Custom property\n    }\n    return null\n  }\n\n  // Define preferred notification channels\n  preferredChannels() {\n    return ['mail', 'database']\n  }\n}\n```\n\n### Sending Notifications\n\n```typescript\nconst user = await User.find(1)\n\n// Send single notification\nawait user.notify(new WelcomeNotification(user.name))\n\n// Send and wait for queue\nawait user.notifyNow(new PaymentConfirmedNotification(100))\n\n// Send to multiple recipients\nconst users = await User.all()\nfor (const user of users) {\n  await user.notify(new NewsletterNotification())\n}\n```\n\n## Conditional Routing\n\n```typescript\nimport { Notification } from '@atlex/notifications'\n\nclass SecurityAlertNotification extends Notification {\n  constructor(private severity: 'low' | 'medium' | 'high') {\n    super()\n  }\n\n  via(notifiable: any) {\n    // Route based on severity\n    if (this.severity === 'high') {\n      return ['mail', 'slack']\n    }\n    return ['database']\n  }\n\n  shouldSend(notifiable: any) {\n    // Check if user wants to receive this type\n    return notifiable.notificationPreferences?.securityAlerts ?? true\n  }\n}\n```\n\n## Delayed Notifications\n\n```typescript\nimport { Notification } from '@atlex/notifications'\n\nclass ReminderNotification extends Notification {\n  via() {\n    return ['mail']\n  }\n\n  deliveryDelay() {\n    // Delay 24 hours\n    return 24 * 60 * 60 * 1000\n  }\n\n  toMail() {\n    return new MailMessage()\n      .subject('Your appointment is tomorrow')\n      .line('This is a friendly reminder...')\n  }\n}\n\n// Schedule notification with delay\nawait user.notify(new ReminderNotification())\n```\n\n## Broadcast Notifications\n\n```typescript\nimport { AnonymousNotifiable } from '@atlex/notifications'\n\n// Send to multiple recipients without model binding\nconst notifiable = new AnonymousNotifiable()\n  .route('mail', 'user1@example.com')\n  .route('mail', 'user2@example.com')\n  .route('slack', 'slack-channel-id')\n\nawait notifiable.notify(new SystemAnnouncementNotification())\n```\n\n## Notification Events\n\n```typescript\nimport { NotificationSending, NotificationSent, NotificationFailed } from '@atlex/notifications'\nimport { EventEmitter } from '@atlex/events'\n\nconst emitter = new EventEmitter()\n\n// Listen to sending event\nemitter.on('notification.sending', (event: NotificationSending) => {\n  console.log(`Sending ${event.notification.constructor.name}`)\n})\n\n// Listen to sent event\nemitter.on('notification.sent', (event: NotificationSent) => {\n  console.log(`Notification sent successfully`)\n})\n\n// Listen to failed event\nemitter.on('notification.failed', (event: NotificationFailed) => {\n  console.error(`Notification failed: ${event.error}`)\n})\n```\n\n## Database Notifications\n\n### DatabaseNotification Model\n\n```typescript\nimport { DatabaseNotification } from '@atlex/notifications'\n\n// Retrieve notifications for a user\nconst notifications = await DatabaseNotification.where('notifiable_id', userId)\n  .where('notifiable_type', 'User')\n  .get()\n\n// Mark as read\nawait notification.markAsRead()\n\n// Mark all as read\nawait DatabaseNotification.where('notifiable_id', userId).update({ readAt: new Date() })\n```\n\n### Notification Data Structure\n\n```typescript\nconst notification = {\n  id: 'uuid',\n  notifiable_id: 1,\n  notifiable_type: 'User',\n  type: 'OrderShipped',\n  data: {\n    orderId: 123,\n    trackingNumber: 'TRACK123',\n  },\n  readAt: null,\n  createdAt: new Date(),\n  updatedAt: new Date(),\n}\n```\n\n## NotificationManager Configuration\n\n```typescript\nimport { NotificationManager } from '@atlex/notifications'\nimport { MailChannel, DatabaseChannel, SlackChannel } from '@atlex/notifications'\n\nconst manager = new NotificationManager()\n\n// Register mail channel\nmanager.channel(\n  'mail',\n  new MailChannel({\n    from: 'noreply@example.com',\n    transport: 'smtp',\n  }),\n)\n\n// Register database channel\nmanager.channel('database', new DatabaseChannel())\n\n// Register Slack channel\nmanager.channel(\n  'slack',\n  new SlackChannel({\n    webhook: process.env.SLACK_WEBHOOK_URL,\n  }),\n)\n\n// Extend with custom channel\nmanager.extend(\n  'sms',\n  new SMSChannel({\n    apiKey: process.env.SMS_API_KEY,\n  }),\n)\n```\n\n## Complete Example\n\n```typescript\nimport {\n  Notification,\n  MailMessage,\n  DatabaseMessage,\n  SlackMessage,\n  SlackAttachment,\n  Notifiable,\n} from '@atlex/notifications'\n\nclass Order extends Notifiable {\n  id: number\n  status: string\n  userId: number\n  total: number\n\n  routeNotificationFor(channel: string) {\n    if (channel === 'mail') {\n      return this.user.email\n    }\n    if (channel === 'slack') {\n      return this.user.slackId\n    }\n    return null\n  }\n}\n\nclass OrderStatusChangedNotification extends Notification {\n  constructor(\n    private order: Order,\n    private oldStatus: string,\n    private newStatus: string,\n  ) {\n    super()\n  }\n\n  via() {\n    return ['mail', 'database', 'slack']\n  }\n\n  toMail() {\n    return new MailMessage()\n      .subject(`Order #${this.order.id} status updated`)\n      .greeting(`Hello ${this.order.user.name}!`)\n      .line(`Your order status has changed from ${this.oldStatus} to ${this.newStatus}.`)\n      .action('View Order', `https://example.com/orders/${this.order.id}`)\n      .line('Thank you!')\n  }\n\n  toDatabase() {\n    return new DatabaseMessage()\n      .title(`Order #${this.order.id} ${this.newStatus}`)\n      .message(`Your order status changed to ${this.newStatus}.`)\n      .action('View Order', `/orders/${this.order.id}`)\n  }\n\n  toSlack() {\n    return new SlackMessage().text(`Order ${this.order.id} status changed`).attachment(\n      new SlackAttachment()\n        .title('Order Update')\n        .fields({\n          'Order ID': `#${this.order.id}`,\n          'Previous Status': this.oldStatus,\n          'New Status': this.newStatus,\n          Total: `$${this.order.total}`,\n        })\n        .color('#2E7D32'),\n    )\n  }\n}\n\n// Usage\nconst order = await Order.find(123)\nawait order.notify(new OrderStatusChangedNotification(order, 'pending', 'shipped'))\n```\n\n## APNs Critical Alerts\n\n`@atlex/notifications` v0.1.7 adds `ApnsCriticalAlert` and `ApnsChannel` for sending Apple Push Notifications that bypass Do Not Disturb and play at full volume — required for emergency features such as an SOS button.\n\n> **Apple entitlement required.** Critical alerts need `com.apple.developer.usernotifications.critical-alerts` approved by Apple. Without it, the notification is delivered as a standard push and will not bypass Do Not Disturb. Request the entitlement at [developer.apple.com](https://developer.apple.com/contact/request/notifications-critical-alerts-entitlement/) and add it to `Entitlements.plist`:\n>\n> ```xml\n> <key>com.apple.developer.usernotifications.critical-alerts</key>\n> <true/>\n> ```\n\n### Build a Critical Alert Notification\n\n```typescript\nimport { Notification } from '@atlex/notifications'\nimport { ApnsCriticalAlert } from '@atlex/notifications'\n\nexport class SuperSignalNotification extends Notification {\n  constructor(\n    private childName: string,\n    private eventId: string,\n  ) {\n    super()\n  }\n\n  via(_notifiable: User) {\n    return ['apns']\n  }\n\n  toApns(_notifiable: User): ApnsCriticalAlert {\n    return new ApnsCriticalAlert()\n      .title('Emergency Alert')\n      .body(`${this.childName} triggered SOS`)\n      .sound({ critical: 1, name: 'default', volume: 1.0 })\n      .contentAvailable()\n      .deepLink(`kidup://super-signal/${this.eventId}`)\n  }\n}\n```\n\nThis produces the following APNs payload:\n\n```json\n{\n  \"aps\": {\n    \"alert\": { \"title\": \"Emergency Alert\", \"body\": \"Child triggered SOS\" },\n    \"sound\": { \"critical\": 1, \"name\": \"default\", \"volume\": 1.0 },\n    \"content-available\": 1\n  },\n  \"deepLink\": \"kidup://super-signal/abc123\"\n}\n```\n\n### Implement an ApnsSender\n\n`ApnsChannel` requires an `ApnsSender` — a thin adapter to your APNs HTTP/2 client:\n\n```typescript\nimport apn from 'apn'\nimport type { ApnsSender, ApnsPayload } from '@atlex/notifications'\n\nclass MyApnsSender implements ApnsSender {\n  private provider = new apn.Provider({\n    /* your APNs credentials */\n  })\n\n  async send(deviceToken: string, payload: ApnsPayload): Promise<void> {\n    const note = new apn.Notification()\n    note.rawPayload = payload\n    await this.provider.send(note, deviceToken)\n  }\n}\n```\n\n### Register the Channel\n\n```typescript\nimport { NotificationsServiceProvider, ApnsChannel } from '@atlex/notifications'\n\napp.register(\n  new NotificationsServiceProvider({\n    channels: {\n      apns: new ApnsChannel(new MyApnsSender()),\n    },\n  }),\n)\n```\n\n### Route the Device Token\n\nYour notifiable model must return the APNs device token for the `'apns'` channel:\n\n```typescript\nclass User extends Notifiable(Model) {\n  routeNotificationFor(channel: string): unknown {\n    if (channel === 'apns') return this.device_token\n    if (channel === 'mail') return this.email\n  }\n}\n\n// Send\nawait user.notify(new SuperSignalNotification(child.name, event.id))\n```\n\n### ApnsCriticalAlert API\n\n| Method               | Returns       | Description                                           |\n| -------------------- | ------------- | ----------------------------------------------------- |\n| `title(value)`       | `this`        | Alert title text                                      |\n| `body(value)`        | `this`        | Alert body text                                       |\n| `sound(value)`       | `this`        | APNs `aps.sound` object (`critical: 1` required)      |\n| `contentAvailable()` | `this`        | Sets `content-available: 1` for background processing |\n| `deepLink(url)`      | `this`        | Adds `deepLink` key to the top-level payload          |\n| `data(key, value)`   | `this`        | Add any custom top-level payload key                  |\n| `toPayload()`        | `ApnsPayload` | Build the complete APNs payload object                |\n\n## API Overview\n\n### Notification\n\n| Method                       | Description               |\n| ---------------------------- | ------------------------- |\n| `via(notifiable?)`           | Define delivery channels  |\n| `toMail()`                   | Build mail message        |\n| `toDatabase()`               | Build database message    |\n| `toSlack()`                  | Build Slack message       |\n| `toArray()`                  | Convert to array format   |\n| `toBroadcast()`              | Send to multiple channels |\n| `shouldSend(notifiable?)`    | Check if should send      |\n| `deliveryDelay(notifiable?)` | Get delivery delay        |\n\n### Notifiable\n\n| Method                          | Description                    |\n| ------------------------------- | ------------------------------ |\n| `notify(notification)`          | Send notification              |\n| `notifyNow(notification)`       | Send immediately without queue |\n| `routeNotificationFor(channel)` | Get notification route         |\n\n### Channels\n\n| Channel           | Description                                |\n| ----------------- | ------------------------------------------ |\n| `MailChannel`     | Email notifications                        |\n| `DatabaseChannel` | Store in database                          |\n| `SlackChannel`    | Send to Slack                              |\n| `ApnsChannel`     | Apple Push Notifications (critical alerts) |\n\n## Documentation\n\nFor complete documentation, visit [https://atlex.dev/guide/notifications](https://atlex.dev/guide/notifications)\n\n## License\n\n## MIT\n\nPart of [Atlex](https://atlex.dev) — A modern framework for Node.js.\n","readmeFilename":"README.md"}