mermaid-server/test_urlsearchparams.js

36 lines
1.3 KiB
JavaScript

// 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);