| 1 | import * as crypto from 'node:crypto' |
| 2 | |
| 3 | export function base64UrlEncode(buffer: Uint8Array): string { |
| 4 | return Buffer.from(buffer).toString('base64').replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_') |
| 5 | } |
| 6 | export function generateApiKey(prefix = 'sk', category = ''): string { |
| 7 | const randomBytes = new Uint8Array(32) |
| 8 | crypto.getRandomValues(randomBytes) |
| 9 | const token = base64UrlEncode(randomBytes) |
| 10 | if (category) { |
| 11 | return `${prefix}-${category}-${token}` |
| 12 | } |
| 13 | return `${prefix}-${token}` |
| 14 | } |
| 15 |