webcryptopush
v0.1.0
Published
Send notifications using Web Push Protocol and Web Crypto APIs (works with NodeJS, Cloudflare Workers, Bun and Deno)
Downloads
77
Maintainers
Readme
webcryptopush
Send notifications using Web Push Protocol and Web Crypto APIs (works with NodeJS, Cloudflare Workers, Bun and Deno)
Fork of @block65/webcrypto-web-push with a critical encryption bug fix and updated dependencies.
Installation
npm install webcryptopushConfiguration
Typescript
Note This is an ESM package. If you are using Typescript, you will need to set
moduleResolutiontonode16,nodenextorbundlerin order to resolve the package exports.
Usage
import {
buildPushPayload,
type PushSubscription,
type PushMessage,
type VapidKeys,
} from 'webcryptopush';
// `env` could be `process.env` or `import.meta.env` depending
// on your platform or build tooling
const vapid: VapidKeys = {
subject: env.VAPID_SUBJECT,
publicKey: env.VAPID_SERVER_PUBLIC_KEY,
privateKey: env.VAPID_SERVER_PRIVATE_KEY,
};
// Obtained from the client using PushManager subscribe() method:
// https://developer.mozilla.org/en-US/docs/Web/API/PushManager/subscribe
const subscription: PushSubscription = {
endpoint: 'https://fcm.googleapis.com/fcm/send/...',
expirationTime: null,
keys: {
p256dh: '...',
auth: '...',
},
};
const message: PushMessage = {
data: "You've got mail!",
options: {
ttl: 60,
},
};
const payload = await buildPushPayload(message, subscription, vapid);
// send the payload to the subscription endpoint using your favourite HTTP client
const res = await fetch(subscription.endpoint, payload);
console.log(res.status); // 201License
This package is licensed under the MIT license. See the LICENSE file for more information.
