UNPKG

@vtex/diagnostics-nodejs

Version:

Diagnostics library for Node.js applications

62 lines 2.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigurableProvider = void 0; exports.newConfigurableProvider = newConfigurableProvider; class ConfigurableProvider { constructor(config) { if (config.defaultRate < 0 || config.defaultRate > 1) { throw new Error(`Invalid default sampling rate: ${config.defaultRate}. Must be between 0 and 1.`); } this.defaultRate = config.defaultRate; this.accounts = new Map(); if (config.initialAccounts) { this.setAccounts(config.initialAccounts); } } setDefaultRate(rate) { if (rate < 0 || rate > 1) { throw new Error(`Invalid sampling rate: ${rate}. Must be between 0 and 1.`); } this.defaultRate = rate; } setAccountRate(accountId, rate) { if (rate < 0 || rate > 1) { throw new Error(`Invalid sampling rate: ${rate}. Must be between 0 and 1.`); } this.accounts.set(accountId, rate); } setAccounts(accounts) { for (const [accountId, rate] of Object.entries(accounts)) { if (typeof rate !== 'number') { console.warn(`Invalid rate type for account ${accountId}: ${typeof rate}, skipping`); continue; } this.setAccountRate(accountId, rate); } } removeAccount(accountId) { return this.accounts.delete(accountId); } getSamplingRate(accountId) { const rate = this.accounts.get(accountId); if (rate !== undefined) { return [rate, true]; } return [this.defaultRate, false]; } getDefaultRate() { return this.defaultRate; } getAccountRates() { const result = {}; for (const [accountId, rate] of this.accounts.entries()) { result[accountId] = rate; } return result; } } exports.ConfigurableProvider = ConfigurableProvider; function newConfigurableProvider(config) { return new ConfigurableProvider(config); } //# sourceMappingURL=configurable.js.map