@vtex/diagnostics-nodejs
Version:
Diagnostics library for Node.js applications
51 lines • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaticProvider = void 0;
exports.newStaticProvider = newStaticProvider;
class StaticProvider {
constructor(config) {
this.validateConfig(config);
this.defaultRate = config.defaultRate;
this.accounts = new Map();
if (config.accounts) {
for (const [accountId, rate] of Object.entries(config.accounts)) {
if (typeof rate === 'number') {
this.accounts.set(accountId, rate);
}
else {
console.warn(`Invalid rate type for account ${accountId}, expected number but got ${typeof rate}`);
}
}
}
}
validateConfig(config) {
if (config.defaultRate < 0 || config.defaultRate > 1) {
throw new Error(`Invalid default sampling rate: ${config.defaultRate}. Must be between 0 and 1.`);
}
if (config.accounts) {
for (const [accountId, rate] of Object.entries(config.accounts)) {
if (typeof rate !== 'number') {
throw new Error(`Invalid sampling rate type for account ${accountId}. Expected number, got ${typeof rate}.`);
}
if (rate < 0 || rate > 1) {
throw new Error(`Invalid sampling rate for account ${accountId}: ${rate}. Must be between 0 and 1.`);
}
}
}
}
getSamplingRate(accountId) {
const rate = this.accounts.get(accountId);
if (rate !== undefined) {
return [rate, true];
}
return [this.defaultRate, false];
}
getDefaultRate() {
return this.defaultRate;
}
}
exports.StaticProvider = StaticProvider;
function newStaticProvider(config) {
return new StaticProvider(config);
}
//# sourceMappingURL=static.js.map