integreat
Version:
Node.js integration layer
24 lines • 1.26 kB
JavaScript
const has = (prop) => Number(prop !== undefined);
const hasArray = (prop) => Number(Array.isArray(prop) && prop.length);
const hasParams = ({ params }, required) => Number(!!params &&
Object.values(params).filter((isRequired) => isRequired === required)
.length);
const hasFilters = ({ filters }) => Number(!!filters && Object.keys(filters).length);
const hasConditions = ({ conditions }) => Number(!!conditions && conditions.length);
export default function compareEndpoints(a, b) {
const matchA = a.match || {};
const matchB = b.match || {};
return (has(matchB.incoming) - has(matchA.incoming) ||
has(matchB.type) - has(matchA.type) ||
hasArray(matchA.type) - hasArray(matchB.type) ||
hasParams(matchB, true) - hasParams(matchA, true) ||
hasParams(matchB, false) - hasParams(matchA, false) ||
hasConditions(matchB) - hasConditions(matchA) ||
hasFilters(matchB) - hasFilters(matchA) ||
has(matchB.scope) - has(matchA.scope) ||
hasArray(matchA.scope) - hasArray(matchB.scope) ||
has(matchB.action) - has(matchA.action) ||
hasArray(matchA.action) - hasArray(matchB.action) ||
has(a.id) - has(b.id));
}
//# sourceMappingURL=compareEndpoints.js.map