1. /**
  2. * Flattens nested date structures for dry-run scenarios.
  3. *
  4. * @param {any} data The data to flatten.
  5. * @returns {any} The flattened data. Returns original data if not an object or null.
  6. */
  7. function flattenDates(data) {
  8. if (!data || typeof data !== 'object') {
  9. return data; // Return original value if not an object.
  10. }
  11. let flattened = {};
  12. for (const key in data) {
  13. if (data.hasOwnProperty(key)) {
  14. const value = data[key];
  15. if (value instanceof Date) {
  16. flattened[key] = value.toISOString(); // Convert Date to ISO string
  17. } else if (typeof value === 'object' && value !== null) {
  18. const nestedFlattened = flattenDates(value);
  19. for (const nestedKey in nestedFlattened) {
  20. if (nestedFlattened.hasOwnProperty(nestedKey)) {
  21. flattened[key + '.' + nestedKey] = nestedFlattened[nestedKey]; // Flatten nested objects
  22. }
  23. }
  24. } else {
  25. flattened[key] = value; // Keep primitive values as is
  26. }
  27. }
  28. }
  29. return flattened;
  30. }

Add your comment