@amplitude/ampli
Version:
Amplitude CLI
67 lines (66 loc) • 3.24 kB
JavaScript
;
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;