js-sdk-contrib/libs/shared/flagd-core/src/lib/feature-flag.ts

45 lines
1.0 KiB
TypeScript

import { FlagValue } from '@openfeature/core';
/**
* Flagd flag configuration structure mapping to schema definition.
*/
export interface Flag {
state: 'ENABLED' | 'DISABLED';
defaultVariant: string;
variants: { [key: string]: FlagValue };
targeting?: string;
}
/**
* Flagd flag configuration structure for internal reference.
*/
export class FeatureFlag {
private readonly _state: string;
private readonly _defaultVariant: string;
private readonly _variants: Map<string, FlagValue>;
private readonly _targeting: unknown;
constructor(flag: Flag) {
this._state = flag['state'];
this._defaultVariant = flag['defaultVariant'];
this._variants = new Map<string, FlagValue>(Object.entries(flag['variants']));
this._targeting = flag['targeting'];
}
get state(): string {
return this._state;
}
get defaultVariant(): string {
return this._defaultVariant;
}
get targeting(): unknown {
return this._targeting;
}
get variants(): Map<string, FlagValue> {
return this._variants;
}
}