unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
46 lines • 1.64 kB
JavaScript
import ky from 'ky';
import { addonDefinitionSchema } from './addon-schema.js';
import { ADDON_EVENTS_HANDLED } from '../metric-events.js';
export default class Addon {
constructor(definition, { getLogger, integrationEventsService, flagResolver, eventBus, }) {
this.logger = getLogger(`addon/${definition.name}`);
const { error } = addonDefinitionSchema.validate(definition);
if (error) {
this.logger.warn(`Could not load addon provider ${definition.name}`, error);
throw error;
}
this._name = definition.name;
this._definition = definition;
this.integrationEventsService = integrationEventsService;
this.eventBus = eventBus;
this.flagResolver = flagResolver;
}
get name() {
return this._name;
}
get definition() {
return this._definition;
}
async fetchRetry(url, options = {}, retries = 1) {
try {
const res = await ky(url, {
retry: retries,
...options,
});
return res;
}
catch (e) {
const { method } = options;
this.logger.warn(`Error querying ${url} with method ${method || 'GET'} status code ${e.code}`, e);
return { status: e.code, ok: false };
}
}
async registerEvent(integrationEvent) {
await this.integrationEventsService.registerEvent(integrationEvent);
this.eventBus.emit(ADDON_EVENTS_HANDLED, {
result: integrationEvent.state,
destination: this.name,
});
}
}
//# sourceMappingURL=addon.js.map