UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

101 lines 4.47 kB
import type { Knex } from 'knex'; import type EventEmitter from 'events'; import type { LogProvider } from '../../logger.js'; import type { FeatureToggle, FeatureToggleDTO, IFeatureToggleQuery, IVariant } from '../../types/model.js'; import type { IFeatureToggleStore } from './types/feature-toggle-store-type.js'; import type { Db } from '../../db/db.js'; import type { LastSeenInput } from '../metrics/last-seen/last-seen-service.js'; import type { FeatureConfigurationClient } from './types/feature-toggle-strategies-store-type.js'; import { type IFeatureTypeCount, type IFlagResolver } from '../../types/index.js'; import type { IFeatureProjectUserParams } from './feature-toggle-controller.js'; export type EnvironmentFeatureNames = { [key: string]: string[]; }; export interface FeaturesTable { name: string; description: string | null; type?: string; stale?: boolean | null; project: string; last_seen_at?: Date; created_at?: Date; impression_data?: boolean | null; archived?: boolean; archived_at?: Date | null; created_by_user_id?: number; } export interface FeatureToggleInsert extends Omit<FeatureToggleDTO, 'createdByUserId'> { createdByUserId: number; } interface VariantDTO { variants: IVariant[]; } export default class FeatureToggleStore implements IFeatureToggleStore { private db; private logger; private timer; private featureToggleRowConverter; private flagResolver; constructor(db: Db, eventBus: EventEmitter, getLogger: LogProvider, flagResolver: IFlagResolver); count(query?: { archived?: boolean; project?: string; stale?: boolean; }): Promise<number>; deleteAll(): Promise<void>; destroy(): void; get(name: string): Promise<FeatureToggle>; private getBaseFeatureQuery; getFeatureToggleList(featureQuery?: IFeatureToggleQuery, userId?: number, archived?: boolean, includeDisabledStrategies?: boolean): Promise<FeatureToggle[]>; getPlaygroundFeatures(featureQuery: IFeatureToggleQuery): Promise<FeatureConfigurationClient[]>; getAll(query?: { archived?: boolean; project?: string; stale?: boolean; }): Promise<FeatureToggle[]>; getFeatureTypeCounts({ projectId, archived, }: IFeatureProjectUserParams): Promise<IFeatureTypeCount[]>; getAllByNames(names: string[]): Promise<FeatureToggle[]>; countByDate(queryModifiers: { archived?: boolean; project?: string; date?: string; range?: string[]; dateAccessor: string; }): Promise<number>; /** * Get projectId from feature filtered by name. Used by Rbac middleware * @deprecated * @param name */ getProjectId(name: string): Promise<string>; exists(name: string): Promise<boolean>; setLastSeen(data: LastSeenInput[]): Promise<void>; private mapMetricDataToEnvBuckets; static filterByArchived: Knex.QueryCallbackWithArgs; rowToFeature(row: FeaturesTable): FeatureToggle; rowToEnvVariants(variantRows: VariantDTO[]): IVariant[]; insertToRow(project: string, data: FeatureToggleInsert): FeaturesTable; dtoToUpdateRow(project: string, data: FeatureToggleDTO): Omit<FeaturesTable, 'created_by_user_id'>; create(project: string, data: FeatureToggleInsert): Promise<FeatureToggle>; update(project: string, data: FeatureToggleDTO): Promise<FeatureToggle>; archive(name: string): Promise<FeatureToggle>; batchArchive(names: string[]): Promise<FeatureToggle[]>; batchStale(names: string[], stale: boolean): Promise<FeatureToggle[]>; delete(name: string): Promise<void>; batchDelete(names: string[]): Promise<void>; revive(name: string): Promise<FeatureToggle>; batchRevive(names: string[]): Promise<FeatureToggle[]>; disableAllEnvironmentsForFeatures(names: string[]): Promise<void>; getVariants(featureName: string): Promise<IVariant[]>; getVariantsForEnv(featureName: string, environment: string): Promise<IVariant[]>; saveVariants(project: string, featureName: string, newVariants: IVariant[]): Promise<FeatureToggle>; updatePotentiallyStaleFeatures(currentTime?: string): Promise<{ name: string; potentiallyStale: boolean; project: string; }[]>; isPotentiallyStale(featureName: string): Promise<boolean>; setCreatedByUserId(batchSize: number): Promise<number | undefined>; } export {}; //# sourceMappingURL=feature-toggle-store.d.ts.map