{"_id":"@adatechnology/push-provider","_rev":"8-8059275d96b2a6bfab09b9be4968481f","name":"@adatechnology/push-provider","dist-tags":{"latest":"0.1.0","rc":"0.1.0-rc.6"},"versions":{"0.1.0-rc.1":{"name":"@adatechnology/push-provider","version":"0.1.0-rc.1","license":"MIT","_id":"@adatechnology/push-provider@0.1.0-rc.1","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"0dfe3a878ae852b7e4c5423bda753281e2863a7a","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0-rc.1.tgz","fileCount":8,"integrity":"sha512-26mwhCpcMZOSGDEgqqLVk3BRQ6O6wxLwWajCPVKx4YiM4EVsbe0CAQmlZeNO0UYnS6RiDfoS6pU34EHzwJvbSw==","signatures":[{"sig":"MEYCIQDV5DLte8OUJF1uzW5hB80hXh7rOxizKFUNujkwZIzsrQIhAMB8PPbSH/sp8Oc1C4kzJswT86ckgFuldMLbuh+Ur8sA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58361},"main":"dist/index.js","type":"module","_from":"file:adatechnology-push-provider-0.1.0-rc.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"bun test","build":"tsup","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/e7533133e4fd78d892f1b545c06a5579/adatechnology-push-provider-0.1.0-rc.1.tgz","_integrity":"sha512-26mwhCpcMZOSGDEgqqLVk3BRQ6O6wxLwWajCPVKx4YiM4EVsbe0CAQmlZeNO0UYnS6RiDfoS6pU34EHzwJvbSw==","_npmVersion":"10.9.8","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"@adatechnology/notification-contracts":"0.1.0-rc.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.7.3","firebase-admin":"^13.7.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/push-provider_0.1.0-rc.1_1785852811732_0.504041260379468","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.2":{"name":"@adatechnology/push-provider","version":"0.1.0-rc.2","license":"MIT","_id":"@adatechnology/push-provider@0.1.0-rc.2","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"384c628b1169d9a2b75029b9431fa18a0c6d8202","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0-rc.2.tgz","fileCount":8,"integrity":"sha512-LSb7mMy/HIPVwG6acOpjFlxvauS2lf5ali7SejajHK6lYAbC/4j0Vlpb8AhdSiAw1gaNbsZ9C0cnFshfrR5imw==","signatures":[{"sig":"MEYCIQDLQxc2YXQIGpKxMBLy4Dx0G+Opj2fqRU8isM8T0XHPrQIhALbE2W4J+pCERw4rSK1BMzZNCzkNRGoxXSsviIFwMtDU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58361},"main":"dist/index.js","type":"module","_from":"file:adatechnology-push-provider-0.1.0-rc.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"bun test","build":"tsup","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/a8a18075ca9f2deec7bb2671595d89e6/adatechnology-push-provider-0.1.0-rc.2.tgz","_integrity":"sha512-LSb7mMy/HIPVwG6acOpjFlxvauS2lf5ali7SejajHK6lYAbC/4j0Vlpb8AhdSiAw1gaNbsZ9C0cnFshfrR5imw==","_npmVersion":"10.9.8","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","dependencies":{"@adatechnology/notification-contracts":"0.1.0-rc.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.7.3","firebase-admin":"^13.7.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/push-provider_0.1.0-rc.2_1786034189649_0.0807508909319885","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.3":{"name":"@adatechnology/push-provider","version":"0.1.0-rc.3","license":"MIT","_id":"@adatechnology/push-provider@0.1.0-rc.3","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"893e751d33119997bcb58d8ff2f9a13934a68b10","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0-rc.3.tgz","fileCount":8,"integrity":"sha512-m3avl++HJevRhC7l2T4vHDyjx5eYlo47WaacVaTlU5EP0lEkngDS7GE076BCMcJVDSkmPQirz9MFEuDTu4BMQQ==","signatures":[{"sig":"MEUCIQC4ay3GNQGChNmt7kRvuxtLYdk7P8ZaZJqEhJt2cSg9ugIgL68EnZygKjBX1Uwe7X8gUTAQhMjJxLlKhqAFkstgFNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58361},"main":"dist/index.js","type":"module","_from":"file:adatechnology-push-provider-0.1.0-rc.3.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"bun test","build":"tsup","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/8990d01db3b1ba8de91caa20f18d9cb1/adatechnology-push-provider-0.1.0-rc.3.tgz","_integrity":"sha512-m3avl++HJevRhC7l2T4vHDyjx5eYlo47WaacVaTlU5EP0lEkngDS7GE076BCMcJVDSkmPQirz9MFEuDTu4BMQQ==","_npmVersion":"10.9.8","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@adatechnology/notification-contracts":"0.1.0-rc.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.7.3","firebase-admin":"^13.7.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/push-provider_0.1.0-rc.3_1787587602318_0.291511548113631","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.4":{"name":"@adatechnology/push-provider","version":"0.1.0-rc.4","license":"MIT","_id":"@adatechnology/push-provider@0.1.0-rc.4","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"c3eca244d4f9539d40121bb9c1b792f5c1001ed7","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0-rc.4.tgz","fileCount":8,"integrity":"sha512-836wAb0jp51DLv1ha+++Oe4q+DAvaHDP3SKpv/rqf3ig91a2iIUKZz0rJNpSgMe37J0WpToo987U1htBzV+UeA==","signatures":[{"sig":"MEUCIQCmxU3f5eRiuBMQyASK2GeTksnXp8jPD+xtmJHja8e22QIgFLfSYZJ9sUCB3lp0NkbTVn6vwDmdCJxDzgiWJTBfQlA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58361},"main":"dist/index.js","type":"module","_from":"file:adatechnology-push-provider-0.1.0-rc.4.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"bun test","build":"tsup","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/7ae57767830d9a6327e6cba0b87f1e69/adatechnology-push-provider-0.1.0-rc.4.tgz","_integrity":"sha512-836wAb0jp51DLv1ha+++Oe4q+DAvaHDP3SKpv/rqf3ig91a2iIUKZz0rJNpSgMe37J0WpToo987U1htBzV+UeA==","_npmVersion":"10.9.8","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@adatechnology/notification-contracts":"0.1.0-rc.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.7.3","firebase-admin":"^13.7.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/push-provider_0.1.0-rc.4_1787623203564_0.17511310674134384","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.5":{"name":"@adatechnology/push-provider","version":"0.1.0-rc.5","license":"MIT","_id":"@adatechnology/push-provider@0.1.0-rc.5","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"22165023514ffe28ac9c2d8f53a6ed22a7fabf43","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0-rc.5.tgz","fileCount":8,"integrity":"sha512-K5aVaH4i+xo6GDyNm4cFE9giMqqZS3NcSd3Y098N7AZdVKtkqjUvor6BcC0SHKSs5xAVFZGywOHGsyVfkEr9Yw==","signatures":[{"sig":"MEUCIEGUtroJVoZhLGR6NVd6jXyS3rze6XaWaNclUei4Pm5ZAiEAsYU9efJNY+4WMAi30Gg8D+6OCMFAlzx7YPXO6nHrybM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58361},"main":"dist/index.js","type":"module","_from":"file:adatechnology-push-provider-0.1.0-rc.5.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"bun test","build":"tsup","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/654cf6db5510ff6d1f156a8ab93df2b1/adatechnology-push-provider-0.1.0-rc.5.tgz","_integrity":"sha512-K5aVaH4i+xo6GDyNm4cFE9giMqqZS3NcSd3Y098N7AZdVKtkqjUvor6BcC0SHKSs5xAVFZGywOHGsyVfkEr9Yw==","_npmVersion":"10.9.8","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@adatechnology/notification-contracts":"0.1.0-rc.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.7.3","firebase-admin":"^13.7.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/push-provider_0.1.0-rc.5_1787623917705_0.35445447334042157","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-rc.6":{"name":"@adatechnology/push-provider","version":"0.1.0-rc.6","license":"MIT","_id":"@adatechnology/push-provider@0.1.0-rc.6","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"dist":{"shasum":"53adde7b39c4e35999923e064742f43a310dd991","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0-rc.6.tgz","fileCount":8,"integrity":"sha512-acip1yeER2nughLXWZbmi580czhS6j/pyUBdaIIg8Cys2gAlo12HGywXdBrLRTT5HBXFfsAyMeciU56eKrTKcA==","signatures":[{"sig":"MEUCIQCuDMpR2MJfG20STBFGXZ/+7zWXyKOc6A/7N0H0vrSpDQIgEgOi3JYSnTazqCK2edQmHKvkHymbZzBCPgBotdPRwbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58361},"main":"dist/index.js","type":"module","_from":"file:adatechnology-push-provider-0.1.0-rc.6.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"bun test","build":"tsup","check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"_resolved":"/tmp/d2e45968aa9436c0168a05d046c9956d/adatechnology-push-provider-0.1.0-rc.6.tgz","_integrity":"sha512-acip1yeER2nughLXWZbmi580czhS6j/pyUBdaIIg8Cys2gAlo12HGywXdBrLRTT5HBXFfsAyMeciU56eKrTKcA==","_npmVersion":"10.9.8","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@adatechnology/notification-contracts":"0.1.0-rc.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","@types/bun":"1.3.14","typescript":"^5.7.3","firebase-admin":"^13.7.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/push-provider_0.1.0-rc.6_1787657686917_0.1895963303671342","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@adatechnology/push-provider","version":"0.1.0","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","license":"MIT","publishConfig":{"access":"public"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"dependencies":{"@adatechnology/notification-contracts":"0.1.0"},"peerDependencies":{"firebase-admin":">=12 <14"},"peerDependenciesMeta":{"firebase-admin":{"optional":true}},"devDependencies":{"@types/bun":"1.3.14","firebase-admin":"^13.7.0","tsup":"^8.5.1","typescript":"^5.7.3"},"scripts":{"build":"tsup","check":"tsc -p tsconfig.json --noEmit","test":"bun test"},"_id":"@adatechnology/push-provider@0.1.0","_integrity":"sha512-vTWYMIkllksrXt83aSqLVeRwnpBR4nV78v2F088pJb3phxUQzYb65EEiOqf6M6tvvO1acso8beSC5yAMk6kLRA==","_resolved":"/tmp/50e051277d519e80f05f561a89644223/adatechnology-push-provider-0.1.0.tgz","_from":"file:adatechnology-push-provider-0.1.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-vTWYMIkllksrXt83aSqLVeRwnpBR4nV78v2F088pJb3phxUQzYb65EEiOqf6M6tvvO1acso8beSC5yAMk6kLRA==","shasum":"c5996b219b6623aafd75eb6087b321c2b48a3ef6","tarball":"https://registry.npmjs.org/@adatechnology/push-provider/-/push-provider-0.1.0.tgz","fileCount":8,"unpackedSize":58351,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICvr+gJpxjaXJqbA3PSMFfmLEiICQ+Kf9y1uk+D+d2XyAiAiIhrkic3v9TBlqZ3x4GPeOi7SKU+grr8meVIuUjaImQ=="}]},"_npmUser":{"name":"miyazaki","email":"andersonfrfilho@gmail.com"},"directories":{},"maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/push-provider_0.1.0_1788318100544_0.442965665123213"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T14:13:31.475Z","modified":"2026-09-02T03:01:40.853Z","0.1.0-rc.1":"2026-08-04T14:13:31.858Z","0.1.0-rc.2":"2026-08-06T16:36:29.809Z","0.1.0-rc.3":"2026-08-24T16:06:42.469Z","0.1.0-rc.4":"2026-08-25T02:00:03.713Z","0.1.0-rc.5":"2026-08-25T02:11:57.841Z","0.1.0-rc.6":"2026-08-25T11:34:47.061Z","0.1.0":"2026-09-02T03:01:40.674Z"},"license":"MIT","description":"Stateless push notification providers (Expo, FCM) behind a single port — part of the notification trio","maintainers":[{"name":"miyazaki","email":"andersonfrfilho@gmail.com"}],"readme":"# @adatechnology/push-provider\n\nPush por **Expo** e **FCM** atrás de uma porta só. Stateless: recebe token e mensagem, devolve\nresultado classificado. Não guarda estado, não conhece banco, não sabe o que é uma notificação —\nisso é o `notification-module`.\n\n## Instalação\n\n```bash\nbun add @adatechnology/push-provider\n```\n\nO `firebase-admin` é peer **opcional**, carregado por `import()` dinâmico só quando o driver FCM é\nusado de fato. Quem manda push só por Expo não instala os ~50 MB do SDK do Firebase.\n\n## Uso\n\n```ts\nimport { createPushProvider } from '@adatechnology/push-provider'\n\nconst push = createPushProvider({ driver: 'expo' })\n// ou: createPushProvider({ driver: 'fcm', serviceAccount })\n```\n\nTambém dá para instanciar direto: `createExpoPushProvider`, `createFcmPushProvider`.\n\n## O resultado é classificado, e é o ponto do pacote\n\n```ts\nconst result = await push.send({ token, title, body, data })\n```\n\n| `outcome` | Quando | O que o módulo faz |\n|---|---|---|\n| `sent` | aceito pelo provedor | grava `providerMessageId` |\n| `retriable` | 429, 5xx, rede | reenfileira com backoff |\n| `permanent` | payload inválido, credencial errada | marca falha, **sem retry** |\n| `invalid-target` | `DeviceNotRegistered`, `UNREGISTERED` | **desativa o device** |\n\n`invalid-target` é separado de `permanent` de propósito. Token de push morre o tempo todo — app\ndesinstalado, reinstalado, cache limpo. Sem essa distinção, cada usuário que troca de celular\ndeixa para trás um token que a fila tenta para sempre.\n\nTraduzir o vocabulário de erro do provedor é responsabilidade **daqui**: só este pacote sabe que\n`DeviceNotRegistered` do Expo e `UNREGISTERED` do FCM significam a mesma coisa.\n\n## Envio em lote\n\nO Expo aceita até 100 mensagens por chamada, e o driver fatia sozinho. Cada item volta com o\npróprio `outcome` — um token morto no lote não invalida os outros 99.\n\n## Licença\n\nMIT © Ada Technology\n","readmeFilename":"README.md"}