@graphql-hive/core
Version:
28 lines (27 loc) • 923 B
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.randomSampling = randomSampling;
exports.dynamicSampling = dynamicSampling;
function randomSampling(sampleRate) {
if (sampleRate > 1 || sampleRate < 0) {
throw new Error(`Expected usage.sampleRate to be 0 <= x <= 1, received ${sampleRate}`);
}
return function shouldInclude() {
return Math.random() <= sampleRate;
};
}
function dynamicSampling(sampler) {
return function shouldInclude(context) {
let sampleRate = sampler(context);
if (sampleRate === true) {
sampleRate = 1;
}
else if (sampleRate === false) {
sampleRate = 0;
}
if (sampleRate > 1 || sampleRate < 0) {
throw new Error(`Expected usage.sampleRate to be 0 <= x <= 1, received ${sampleRate}`);
}
return Math.random() <= sampleRate;
};
}
;