22// Licensed under the MIT license.
33
44import { IGettable } from "./gettable.js" ;
5- import { FeatureFlag , FeatureManagementConfiguration , FEATURE_MANAGEMENT_KEY , FEATURE_FLAGS_KEY } from "./model.js" ;
5+ import { FeatureFlag , FeatureManagementConfiguration , FEATURE_MANAGEMENT_KEY , FEATURE_FLAGS_KEY } from "./schema/model.js" ;
6+ import { validateFeatureFlag } from "./schema/validator.js" ;
67
78export interface IFeatureFlagProvider {
89 /**
@@ -28,12 +29,16 @@ export class ConfigurationMapFeatureFlagProvider implements IFeatureFlagProvider
2829 }
2930 async getFeatureFlag ( featureName : string ) : Promise < FeatureFlag | undefined > {
3031 const featureConfig = this . #configuration. get < FeatureManagementConfiguration > ( FEATURE_MANAGEMENT_KEY ) ;
31- return featureConfig ?. [ FEATURE_FLAGS_KEY ] ?. findLast ( ( feature ) => feature . id === featureName ) ;
32+ const featureFlag = featureConfig ?. [ FEATURE_FLAGS_KEY ] ?. findLast ( ( feature ) => feature . id === featureName ) ;
33+ validateFeatureFlag ( featureFlag ) ;
34+ return featureFlag ;
3235 }
3336
3437 async getFeatureFlags ( ) : Promise < FeatureFlag [ ] > {
3538 const featureConfig = this . #configuration. get < FeatureManagementConfiguration > ( FEATURE_MANAGEMENT_KEY ) ;
36- return featureConfig ?. [ FEATURE_FLAGS_KEY ] ?? [ ] ;
39+ const featureFlag = featureConfig ?. [ FEATURE_FLAGS_KEY ] ?? [ ] ;
40+ validateFeatureFlag ( featureFlag ) ;
41+ return featureFlag ;
3742 }
3843}
3944
@@ -49,10 +54,14 @@ export class ConfigurationObjectFeatureFlagProvider implements IFeatureFlagProvi
4954
5055 async getFeatureFlag ( featureName : string ) : Promise < FeatureFlag | undefined > {
5156 const featureFlags = this . #configuration[ FEATURE_MANAGEMENT_KEY ] ?. [ FEATURE_FLAGS_KEY ] ;
52- return featureFlags ?. findLast ( ( feature : FeatureFlag ) => feature . id === featureName ) ;
57+ const featureFlag = featureFlags ?. findLast ( ( feature : FeatureFlag ) => feature . id === featureName ) ;
58+ validateFeatureFlag ( featureFlag ) ;
59+ return featureFlag ;
5360 }
5461
5562 async getFeatureFlags ( ) : Promise < FeatureFlag [ ] > {
56- return this . #configuration[ FEATURE_MANAGEMENT_KEY ] ?. [ FEATURE_FLAGS_KEY ] ?? [ ] ;
63+ const featureFlag = this . #configuration[ FEATURE_MANAGEMENT_KEY ] ?. [ FEATURE_FLAGS_KEY ] ?? [ ] ;
64+ validateFeatureFlag ( featureFlag ) ;
65+ return featureFlag ;
5766 }
58- }
67+ }
0 commit comments