"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.generatePKCE = generatePKCE; /** * PKCE utilities using Web Crypto API. * Works in both Node.js 20+ and browsers. */ /** * Encode bytes as base64url string. */ function base64urlEncode(bytes) { let binary = ""; for (const byte of bytes) { binary += String.fromCharCode(byte); } return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ""); } /** * Generate PKCE code verifier and challenge. * Uses Web Crypto API for cross-platform compatibility. */ async function generatePKCE() { // Generate random verifier const verifierBytes = new Uint8Array(32); crypto.getRandomValues(verifierBytes); const verifier = base64urlEncode(verifierBytes); // Compute SHA-256 challenge const encoder = new TextEncoder(); const data = encoder.encode(verifier); const hashBuffer = await crypto.subtle.digest("SHA-256", data); const challenge = base64urlEncode(new Uint8Array(hashBuffer)); return { verifier, challenge }; } /* v9-74ba9b9a80a408bf */