import * as webpush from 'web-push'; import * as fs from 'fs'; import * as path from 'path'; const envPath = path.join(__dirname, '..', '.env'); function generateVapidKeys(): void { console.log('Generating VAPID keys...'); const vapidKeys = webpush.generateVAPIDKeys(); let envContent = ''; if (fs.existsSync(envPath)) { envContent = fs.readFileSync(envPath, 'utf-8'); } const lines = envContent.split('\n'); const vapidSubject = `VAPID_SUBJECT=mailto:contact@placebo.mk`; const vapidPublicKey = `VAPID_PUBLIC_KEY=${vapidKeys.publicKey}`; const vapidPrivateKey = `VAPID_PRIVATE_KEY=${vapidKeys.privateKey}`; const updatedLines = lines.filter( (line) => !line.startsWith('VAPID_SUBJECT=') && !line.startsWith('VAPID_PUBLIC_KEY=') && !line.startsWith('VAPID_PRIVATE_KEY='), ); const nonEmptyLines = updatedLines.filter((line) => line.trim() !== ''); const newEnvContent = nonEmptyLines.join('\n') + (nonEmptyLines.length > 0 ? '\n' : '') + `${vapidSubject}\n${vapidPublicKey}\n${vapidPrivateKey}\n`; fs.writeFileSync(envPath, newEnvContent); console.log('VAPID keys generated and added to .env file:'); console.log(` Public Key: ${vapidKeys.publicKey}`); console.log(` Private Key: ${vapidKeys.privateKey}`); console.log('\nKeep your private key secret!'); } generateVapidKeys();