UNPKG

@theguild/federation-composition

Version:
36 lines (35 loc) 834 B
export function occurrences(str, subString) { if (subString.length <= 0) { return str.length + 1; } let n = 0, pos = 0, step = subString.length; while (true) { pos = str.indexOf(subString, pos); if (pos >= 0) { ++n; pos += step; } else break; } return n; } export function scoreKeyFields(keyFields) { const fields = occurrences(keyFields, ' ') + 1; const innerSelectionSets = occurrences(keyFields, '{') * 3; return fields + innerSelectionSets; } export function lazy(factory) { let value; return { get() { if (value === undefined) { value = factory(); } return value; }, invalidate() { value = undefined; }, }; }