@theguild/federation-composition
Version:
Open Source Composition library for Apollo Federation
41 lines (40 loc) • 987 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.occurrences = occurrences;
exports.scoreKeyFields = scoreKeyFields;
exports.lazy = lazy;
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;
}
function scoreKeyFields(keyFields) {
const fields = occurrences(keyFields, ' ') + 1;
const innerSelectionSets = occurrences(keyFields, '{') * 3;
return fields + innerSelectionSets;
}
function lazy(factory) {
let value;
return {
get() {
if (value === undefined) {
value = factory();
}
return value;
},
invalidate() {
value = undefined;
},
};
}
;