import webPush, { PushSubscription as WebPushSubscriptionJSON } from "npm:web-push";
export type PushParams = Parameters<ServiceWorkerRegistration["showNotification"]>;
export default async (
{ url, pubKey, privKey }: { url: string; pubKey: string; privKey: string },
subscription?: PushSubscriptionJSON,
...params: Parameters<ServiceWorkerRegistration["showNotification"]>
) => {
webPush.setVapidDetails(url, pubKey, privKey);
if (!subscription) throw new Error("subscription is falsy");
await webPush.sendNotification(
subscription as WebPushSubscriptionJSON,
JSON.stringify(params),
{ TTL: 3600 },
);
};