I am trying to setup the web push notification delivery with VAPID, job fails with following message
"event_message": "job failed 1a9afe2f-b2a0-4916-a1ec-fde786bb324a TypeError: Failed to execute 'sign' on 'SubtleCrypto': Argument 2 is not of type CryptoKey\n at makeException (ext:deno_webidl/00_webidl.js:93:10)\n at Array.CryptoKey (ext:deno_webidl/00_webidl.js:1120:13)\n at SubtleCrypto.sign (ext:deno_crypto/00_crypto.js:802:29)\n at forgeJwt (https://jsr.io/@negrel/webpush/0.5.0/crypto_utils.ts:62:31)\n at PushSubscriber.forgeVapidToken (https://jsr.io/@negrel/webpush/0.5.0/subscriber.ts:50:12)\n at PushSubscriber.pushMessage (https://jsr.io/@negrel/webpush/0.5.0/subscriber.ts:72:44)\n at eventLoopTick (ext:core/01_core.js:175:7)\n at async sendPush (file:///var/tmp/sb-compile-edge-runtime/source/index.ts:70:13)\n at async Promise.all (index 0)\n at async Object.handler
}```
```import * as webpush from "jsr:@negrel/webpush";
import { createClient } from "jsr:@supabase/supabase-js@2";
// ------------------------------------------------
// Supabase admin client
// ------------------------------------------------
const supabase = createClient(
Deno.env.get("SUPABASE_URL")!,
Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!
);
// ------------------------------------------------
// Lazy initialization for push server
// ------------------------------------------------
let appServer: webpush.ApplicationServer | null = null;
async function getPushServer() {
if (appServer) return appServer;
appServer = await webpush.ApplicationServer.new({
contactInformation: Deno.env.get("VAPID_SUBJECT")!,
vapidKeys: {
publicKey: Deno.env.get("VAPID_PUBLIC_KEY")!,
privateKey: Deno.env.get("VAPID_PRIVATE_KEY")!,
},
});
return appServer;
}
Deno.serve(async () => {
try {
const server = await getPushServer();```
The user is attempting to set up web push notification delivery using VAPID and encounters a TypeError related to the 'sign' method in SubtleCrypto. The error occurs during the execution of an edge function using the '@negrel/webpush' library.