unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
50 lines (49 loc) • 2.8 kB
TypeScript
/// <reference types="node" />
import { Knex } from 'knex';
import EventEmitter from 'events';
import { LogProvider } from '../logger';
import { FeatureToggleWithEnvironment, IFeatureOverview, IFeatureStrategy } from '../types/model';
import { IFeatureStrategiesStore } from '../types/stores/feature-strategies-store';
import { PartialSome } from '../types/partial';
import { IFlagResolver } from '../types/experimental';
import { IFeatureProjectUserParams } from '../routes/admin-api/project/features';
export interface ILoadFeatureToggleWithEnvsParams {
featureName: string;
archived: boolean;
withEnvironmentVariants: boolean;
userId?: number;
}
declare class FeatureStrategiesStore implements IFeatureStrategiesStore {
private db;
private logger;
private readonly timer;
private flagResolver;
constructor(db: Knex, eventBus: EventEmitter, getLogger: LogProvider, flagResolver: IFlagResolver);
delete(key: string): Promise<void>;
deleteAll(): Promise<void>;
destroy(): void;
exists(key: string): Promise<boolean>;
get(key: string): Promise<IFeatureStrategy>;
createStrategyFeatureEnv(strategyConfig: PartialSome<IFeatureStrategy, 'id' | 'createdAt'>): Promise<IFeatureStrategy>;
removeAllStrategiesForFeatureEnv(featureName: string, environment: string): Promise<void>;
getAll(): Promise<IFeatureStrategy[]>;
getStrategiesForFeatureEnv(projectId: string, featureName: string, environment: string): Promise<IFeatureStrategy[]>;
getFeatureToggleWithEnvs(featureName: string, userId?: number, archived?: boolean): Promise<FeatureToggleWithEnvironment>;
getFeatureToggleWithVariantEnvs(featureName: string, userId?: number, archived?: boolean): Promise<FeatureToggleWithEnvironment>;
loadFeatureToggleWithEnvs({ featureName, archived, withEnvironmentVariants, userId, }: ILoadFeatureToggleWithEnvsParams): Promise<FeatureToggleWithEnvironment>;
private addSegmentIdsToStrategy;
private static getEnvironment;
private addTag;
private isNewTag;
private static rowToTag;
getFeatureOverview({ projectId, archived, userId, }: IFeatureProjectUserParams): Promise<IFeatureOverview[]>;
getStrategyById(id: string): Promise<IFeatureStrategy>;
updateSortOrder(id: string, sortOrder: number): Promise<void>;
updateStrategy(id: string, updates: Partial<IFeatureStrategy>): Promise<IFeatureStrategy>;
private static getAdminStrategy;
deleteConfigurationsForProjectAndEnvironment(projectId: String, environment: String): Promise<void>;
setProjectForStrategiesBelongingToFeature(featureName: string, newProjectId: string): Promise<void>;
getStrategiesBySegment(segmentId: number): Promise<IFeatureStrategy[]>;
prefixColumns(): string[];
}
export default FeatureStrategiesStore;