1. /**
  2. * Writes development-only header metadata to the document's `<head>`.
  3. * Includes retry logic to handle potential errors.
  4. */
  5. async function writeDevelopmentHeaders(headers) {
  6. const maxRetries = 3;
  7. let retryCount = 0;
  8. while (retryCount <= maxRetries) {
  9. try {
  10. // Create a new <style> element to hold the metadata.
  11. const style = document.createElement('style');
  12. style.textContent = `
  13. :root {
  14. --dev-header1: ${headers.header1};
  15. --dev-header2: ${headers.header2};
  16. /* Add more headers as needed */
  17. }
  18. `;
  19. document.head.appendChild(style);
  20. console.log("Development headers written successfully.");
  21. return; // Exit if successful
  22. } catch (error) {
  23. retryCount++;
  24. console.warn(`Failed to write development headers (attempt ${retryCount}/${maxRetries}):`, error);
  25. if (retryCount > maxRetries) {
  26. console.error("Failed to write development headers after multiple retries.");
  27. return; // Exit after max retries
  28. }
  29. // Optionally add a delay before retrying
  30. await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1 second
  31. }
  32. }
  33. }
  34. // Example usage:
  35. // Define your headers object.
  36. const devHeaders = {
  37. header1: 'value1',
  38. header2: 'value2',
  39. // ... more headers
  40. };
  41. writeDevelopmentHeaders(devHeaders);

Add your comment