Skip to content

Commit 21bf36f

Browse files
allow onFeatureEvaluated callback
1 parent 75bb990 commit 21bf36f

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

sdk/feature-management/src/featureManager.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { isTargetedGroup, isTargetedPercentile, isTargetedUser } from "./common/
1414
export class FeatureManager implements IFeatureManager {
1515
#provider: IFeatureFlagProvider;
1616
#featureFilters: Map<string, IFeatureFilter> = new Map();
17+
#onFeatureEvaluated?: (event: EvaluationResult) => void;
1718

1819
constructor(provider: IFeatureFlagProvider, options?: FeatureManagerOptions) {
1920
this.#provider = provider;
@@ -24,6 +25,8 @@ export class FeatureManager implements IFeatureManager {
2425
for (const filter of [...builtinFilters, ...(options?.customFilters ?? [])]) {
2526
this.#featureFilters.set(filter.name, filter);
2627
}
28+
29+
this.#onFeatureEvaluated = options?.onFeatureEvaluated;
2730
}
2831

2932
async listFeatureNames(): Promise<string[]> {
@@ -164,9 +167,6 @@ export class FeatureManager implements IFeatureManager {
164167
}
165168
}
166169

167-
// TODO: send telemetry for variant assignment reason in the future.
168-
console.log(`Variant assignment for feature ${featureName}: ${variantDef?.name ?? "default"} (${reason})`);
169-
170170
if (variantDef?.configuration_reference !== undefined) {
171171
console.warn("Configuration reference is not supported yet.");
172172
}
@@ -183,12 +183,24 @@ export class FeatureManager implements IFeatureManager {
183183
}
184184
}
185185

186+
if (this.#onFeatureEvaluated !== undefined) {
187+
this.#onFeatureEvaluated(result);
188+
}
189+
186190
return result;
187191
}
188192
}
189193

190194
interface FeatureManagerOptions {
195+
/**
196+
* The custom filters to be used by the feature manager.
197+
*/
191198
customFilters?: IFeatureFilter[];
199+
200+
/**
201+
* The callback function that is called when a feature flag is evaluated.
202+
*/
203+
onFeatureEvaluated?: (event: EvaluationResult) => void;
192204
}
193205

194206
/**

0 commit comments

Comments
 (0)