UNPKG

node-hue-api

Version:
47 lines (46 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HueApiRateLimits = void 0; // Set up a limiter on the group state changes from the library to once per second as per guidance documentation const DEFAULT_GROUP_RATE_LIMITS = { maxConcurrent: 1, minTime: 1000 // how long to wait before launching another request in ms }; // As per Bridge documentation guidance, limit the number of calls to the light state changes to 10 per second max const DEFAULT_LIGHT_RATE_LIMITS = { maxConcurrent: 1, minTime: 60 // how long to wait before launching another request in ms }; // Limiting the general rate limits across the API to a hue bridge const DEFAULT_RATE_LIMITS = { maxConcurrent: 4, minTime: 50 // how long to wait before launching another request in ms }; class HueApiRateLimits { constructor(rateLimits) { if (rateLimits) { this._rateLimits = { transport: rateLimits.transport || DEFAULT_RATE_LIMITS, group: rateLimits.group || DEFAULT_GROUP_RATE_LIMITS, light: rateLimits.light || DEFAULT_LIGHT_RATE_LIMITS }; } else { this._rateLimits = { transport: DEFAULT_RATE_LIMITS, group: DEFAULT_GROUP_RATE_LIMITS, light: DEFAULT_LIGHT_RATE_LIMITS, }; } } get groupRateLimit() { return this._rateLimits.group || DEFAULT_GROUP_RATE_LIMITS; } get lightRateLimit() { return this._rateLimits.light || DEFAULT_LIGHT_RATE_LIMITS; } get transportRateLimit() { return this._rateLimits.transport || DEFAULT_RATE_LIMITS; } } exports.HueApiRateLimits = HueApiRateLimits;