UNPKG

@amplitude/ampli

Version:

Amplitude CLI

67 lines (66 loc) 3.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PropertyChange = exports.EventChange = void 0; var EventChange; (function (EventChange) { EventChange[EventChange["None"] = 0] = "None"; EventChange[EventChange["Name"] = 1] = "Name"; EventChange[EventChange["Properties"] = 2] = "Properties"; })(EventChange = exports.EventChange || (exports.EventChange = {})); var PropertyChange; (function (PropertyChange) { PropertyChange[PropertyChange["None"] = 0] = "None"; PropertyChange[PropertyChange["Name"] = 1] = "Name"; PropertyChange[PropertyChange["Required"] = 2] = "Required"; PropertyChange[PropertyChange["Type"] = 4] = "Type"; })(PropertyChange = exports.PropertyChange || (exports.PropertyChange = {})); class Compare { static compareProperties(lastProperties, properties) { const removed = lastProperties.filter((lep) => !properties.some((ep) => ep.id === lep.id)); const added = properties.filter((ep) => !lastProperties.some((lep) => lep.id === ep.id)); const same = properties.filter((ep) => lastProperties.some((lep) => lep.id === ep.id)); const changed = []; same.forEach((ep) => { const lep = lastProperties.find((p) => p.id === ep.id); const propertyDelta = { oldProperty: lep, newProperty: ep, change: PropertyChange.None }; if (ep.name !== lep.name) { propertyDelta.change |= PropertyChange.Name; } if (ep.required !== lep.required) { propertyDelta.change |= PropertyChange.Required; } if (ep.type !== lep.type) { propertyDelta.change |= PropertyChange.Type; } if (propertyDelta.change !== PropertyChange.None) { changed.push(propertyDelta); } }); return { removed, added, changed }; } static compareEvents(lastEvents, events) { const removed = lastEvents.filter(le => !events.some(e => e.id === le.id)); const added = events.filter(e => !lastEvents.some(le => le.id === e.id)); const same = events.filter(e => lastEvents.some(le => le.id === e.id)); const changed = []; same.forEach(e => { const le = lastEvents.find(candidate => candidate.id === e.id); const eventDelta = { oldEvent: le, newEvent: e, addedProperties: [], removedProperties: [], changedProperties: [], change: EventChange.None }; if (e.name !== le.name) { eventDelta.change |= EventChange.Name; } const result = Compare.compareProperties(le.properties, e.properties); eventDelta.removedProperties = result.removed; eventDelta.addedProperties = result.added; eventDelta.changedProperties = result.changed; if (result.removed.length > 0 || result.added.length > 0 || result.changed.length > 0) { eventDelta.change |= EventChange.Properties; } if (eventDelta.change !== EventChange.None) { changed.push(eventDelta); } }); return { removed, added, changed }; } } exports.default = Compare;