humpty
Version:
Makes sure your changelogs mention your breaking changes
43 lines (37 loc) • 1.09 kB
JavaScript
import * as changeTypes from "./changeTypes";
const findReactApiChanges = (oldExport, newExport) => {
const { api: newApi } = newExport;
const apiChanges = [];
oldExport.api.props.forEach(oldProp => {
const newProp = newApi.props.find(p => p.name === oldProp.name);
if (!newProp) {
apiChanges.push({
propName: oldProp.name,
changeType: changeTypes.PROP_REMOVED
});
return;
}
if (oldProp.type.name !== newProp.type.name) {
apiChanges.push({
propName: oldProp.name,
changeType: changeTypes.PROP_TYPE_CHANGED,
oldType: oldProp.type.name,
newType: newProp.type.name
});
}
if (!oldProp.required && newProp.required) {
apiChanges.push({
propName: oldProp.name,
changeType: changeTypes.PROP_MADE_REQUIRED
});
}
if (oldProp.required && !newProp.required) {
apiChanges.push({
propName: oldProp.name,
changeType: changeTypes.PROP_MADE_OPTIONAL
});
}
});
return apiChanges;
};
export default findReactApiChanges;