1. /**
  2. * Transforms message queue data with manual overrides.
  3. *
  4. * @param {Array<Object>} queueData - The raw message queue data. Each object is a message.
  5. * @param {Object} overrides - An object containing manual overrides for specific messages. Key is message ID, value is the modified message object.
  6. * @returns {Array<Object>} - The transformed message queue data.
  7. */
  8. function transformQueueData(queueData, overrides) {
  9. if (!queueData || !Array.isArray(queueData)) {
  10. return []; // Return empty array if input is invalid
  11. }
  12. const transformedData = queueData.map(message => {
  13. let transformedMessage = { ...message }; // Create a copy to avoid modifying original
  14. if (overrides && overrides[message.id]) {
  15. // Apply overrides if available
  16. transformedMessage = { ...overrides[message.id] }; // Use override object as base
  17. for (const key in message) {
  18. if (message.hasOwnProperty(key) && key !== 'id') {
  19. transformedMessage[key] = message[key]; // Override with value from original message
  20. }
  21. }
  22. }
  23. return transformedMessage;
  24. });
  25. return transformedData;
  26. }

Add your comment