@hypertune/openfeature-web-provider
Version:
OpenFeature provider for Hypertune.
36 lines (35 loc) • 1.35 kB
JavaScript
import { OpenFeatureEventEmitter, ProviderEvents, } from "@openfeature/web-sdk";
import { HypertuneProviderBase } from "@hypertune/openfeature-base-provider";
export class HypertuneProvider extends HypertuneProviderBase {
constructor() {
super(...arguments);
this.metadata = {
name: HypertuneProvider.name,
};
this.events = new OpenFeatureEventEmitter();
this.hooks = [];
this.runsOn = "client";
}
postCreate() {
this._source.addUpdateListener((_, { becameReady }) => {
if (!becameReady) {
this.events.emit(ProviderEvents.ConfigurationChanged);
}
});
}
onContextChange(oldContext, newContext) {
this.setRoot(newContext);
}
resolveBooleanEvaluation(flagKey, defaultValue, context) {
return this.resolveValue(flagKey, defaultValue, context, "boolean");
}
resolveStringEvaluation(flagKey, defaultValue, context) {
return this.resolveValue(flagKey, defaultValue, context, "string");
}
resolveNumberEvaluation(flagKey, defaultValue, context) {
return this.resolveValue(flagKey, defaultValue, context, "number");
}
resolveObjectEvaluation(flagKey, defaultValue, context) {
return this.resolveValue(flagKey, defaultValue, context, "any");
}
}