@hypertune/openfeature-server-provider
Version:
OpenFeature provider for Hypertune.
36 lines (35 loc) • 1.47 kB
JavaScript
import { OpenFeatureEventEmitter, ProviderEvents, } from "@openfeature/server-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 = "server";
}
postCreate() {
this._source.addUpdateListener((_, { becameReady }) => {
if (!becameReady) {
this.events.emit(ProviderEvents.ConfigurationChanged);
}
});
}
resolveBooleanEvaluation(flagKey, defaultValue, context) {
return this.resolveValueAsync(flagKey, defaultValue, context, "boolean");
}
resolveStringEvaluation(flagKey, defaultValue, context) {
return this.resolveValueAsync(flagKey, defaultValue, context, "string");
}
resolveNumberEvaluation(flagKey, defaultValue, context) {
return this.resolveValueAsync(flagKey, defaultValue, context, "number");
}
resolveObjectEvaluation(flagKey, defaultValue, context) {
return this.resolveValueAsync(flagKey, defaultValue, context, "any");
}
resolveValueAsync(flagKey, defaultValue, context, expectedValueType) {
return Promise.resolve(this.resolveValue(flagKey, defaultValue, context, expectedValueType));
}
}