@resolveio/client-lib-core 1.1.34 → 1.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -400,55 +400,32 @@ function getDeepDiffDetails(obj1, obj2) {
400
400
  let diff = detailedDiff(obj1, obj2);
401
401
  let diffString = '';
402
402
  const formatObjectDiff = (obj1, obj2) => {
403
- let str = '';
404
- Object.keys(obj1).forEach(key => {
403
+ if (!obj1 || !obj2)
404
+ return '';
405
+ return Object.keys(obj1)
406
+ .map(key => {
405
407
  if (Array.isArray(obj1[key]) && Array.isArray(obj2[key])) {
406
- const arrayDiff = obj1[key].map((item, index) => {
407
- if (typeof item === 'object' && typeof obj2[key][index] === 'object') {
408
- return `{${formatObjectDiff(item, obj2[key][index])}}`;
409
- }
410
- return `"${item}" to "${obj2[key][index]}"`;
411
- }).join(', ');
412
- str += `${toTitleCase(key.replace(/_/g, ' '))}: [${arrayDiff}], `;
408
+ const arrayDiff = obj1[key].map((item, index) => typeof item === 'object' && obj2[key][index]
409
+ ? `{${formatObjectDiff(item, obj2[key][index])}}`
410
+ : `"${item}" to "${obj2[key][index]}"`).join(', ');
411
+ return `${toTitleCase(key)}: [${arrayDiff}]`;
413
412
  }
414
- else if (typeof obj1[key] === 'object' && obj1[key] !== null && obj2[key] !== null) {
415
- str += `${toTitleCase(key.replace(/_/g, ' '))}: {${formatObjectDiff(obj1[key], obj2[key])}}, `;
416
- }
417
- else {
418
- str += `${toTitleCase(key.replace(/_/g, ' '))}: "${obj1[key]}" to "${obj2[key]}", `;
413
+ if (typeof obj1[key] === 'object' && obj2[key]) {
414
+ return `${toTitleCase(key)}: {${formatObjectDiff(obj1[key], obj2[key])}}`;
419
415
  }
420
- });
421
- return str.slice(0, -2);
422
- };
423
- const formatDiff = (changeType, items) => {
424
- let str = `${changeType}:\n`;
425
- Object.keys(items).forEach(key => {
426
- str += `${toTitleCase(key.replace(/_/g, ' '))}: "${items[key]}",\n`;
427
- });
428
- return str.slice(0, -2) + '\n';
416
+ return `${toTitleCase(key)}: "${obj1[key]}" to "${obj2[key]}"`;
417
+ })
418
+ .join(', ');
429
419
  };
430
- if (Object.keys(diff.added).length > 0) {
431
- diffString += formatDiff('Added', diff.added);
432
- }
433
- if (Object.keys(diff.deleted).length > 0) {
434
- diffString += formatDiff('Deleted', diff.deleted);
435
- }
436
420
  if (Object.keys(diff.updated).length > 0) {
437
421
  diffString += 'Updated:\n';
438
- Object.keys(diff.updated).forEach(key => {
439
- if (key.substr(0, 2) !== 'id') {
440
- if (moment.isDate(diff.updated[key])) {
441
- diffString += `${toTitleCase(key.replace(/_/g, ' '))}: "${moment(diff.updated[key]).format('llll')}" to "${moment(obj2[key]).format('llll')}",\n`;
442
- }
443
- else if (typeof diff.updated[key] === 'object' && diff.updated[key] !== null && obj2[key] !== null) {
444
- diffString += `${toTitleCase(key.replace(/_/g, ' '))}: {${formatObjectDiff(diff.updated[key], obj2[key])}},\n`;
445
- }
446
- else {
447
- diffString += `${toTitleCase(key.replace(/_/g, ' '))}: "${diff.updated[key]}" to "${obj2[key]}",\n`;
448
- }
449
- }
450
- });
451
- diffString = diffString.slice(0, -2) + '\n';
422
+ const updates = Object.keys(diff.updated)
423
+ .filter(key => key.substr(0, 2) !== 'id' && diff.updated[key] !== obj2[key])
424
+ .map(key => moment.isDate(diff.updated[key])
425
+ ? `${toTitleCase(key)}: "${moment(diff.updated[key]).format('llll')}" to "${moment(obj2[key]).format('llll')}"`
426
+ : `${toTitleCase(key)}: {${formatObjectDiff(diff.updated[key], obj2[key])}}`)
427
+ .join(',\n');
428
+ diffString += updates ? `${updates}\n` : '';
452
429
  }
453
430
  return diffString;
454
431
  }