// Test URLSearchParams encoding vs manual encoding const diagram = `graph TD A[Website Analytics] --> B[Traffic] A --> C[Revenue]`; console.log("=== Manual encodeURIComponent ==="); const manualEncoded = encodeURIComponent(diagram); console.log("Manual:", manualEncoded); console.log("\n=== URLSearchParams ==="); const params = new URLSearchParams(); params.set('data', diagram); params.set('type', 'svg'); console.log("URLSearchParams:", params.toString()); console.log("\n=== Decoded comparison ==="); const manualDecoded = decodeURIComponent(manualEncoded); const paramsDecoded = decodeURIComponent(params.get('data')); console.log("Manual decoded:", JSON.stringify(manualDecoded)); console.log("Params decoded:", JSON.stringify(paramsDecoded)); console.log("Are equal:", manualDecoded === paramsDecoded); // Test with problematic characters console.log("\n=== Testing problematic chars ==="); const problematic = `graph TD A[Test] --> B[End]`; const problemParams = new URLSearchParams(); problemParams.set('data', problematic); console.log("Problematic encoded:", problemParams.toString()); // Show exact URL that would be generated console.log("\n=== Full URL ==="); const fullUrl = `https://diagrams.starbit.cloud/generate?${params.toString()}`; console.log("URL length:", fullUrl.length); console.log("URL:", fullUrl);