1. /**
  2. * Aggregates values of response headers for sandbox usage, supporting older browsers.
  3. *
  4. * @param {object} headers - An object containing the response headers.
  5. * @returns {object} - An object containing aggregated header values. Returns an empty object if headers is null or undefined.
  6. */
  7. function aggregateHeaders(headers) {
  8. if (!headers) {
  9. return {};
  10. }
  11. const aggregated = {};
  12. for (const key in headers) {
  13. if (headers.hasOwnProperty(key)) {
  14. const value = headers[key];
  15. if (Array.isArray(value)) {
  16. // Handle headers that are arrays (e.g., Cache-Control)
  17. aggregated[key] = value.join(', ');
  18. } else if (typeof value === 'string') {
  19. // Handle string values
  20. aggregated[key] = value;
  21. } else if (typeof value === 'number' || typeof value === 'boolean') {
  22. aggregated[key] = String(value); //convert to string for consistency
  23. } else {
  24. // Handle other types (e.g., null, undefined) - convert to string to prevent errors
  25. aggregated[key] = String(value);
  26. }
  27. }
  28. }
  29. return aggregated;
  30. }

Add your comment