unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
86 lines • 5.42 kB
TypeScript
import type { Request, Response } from 'express';
import type { Operation } from 'fast-json-patch';
import Controller from '../../routes/controller.js';
import { type FeatureToggleView, type IUnleashConfig } from '../../types/index.js';
import type { IAuthRequest } from '../../routes/unleash-types.js';
import { type AdminFeaturesQuerySchema, type BulkToggleFeaturesSchema, type CreateFeatureSchema, type CreateFeatureStrategySchema, type FeatureEnvironmentSchema, type FeatureSchema, type FeatureStrategySchema, type ProjectFeaturesSchema, type SetStrategySortOrderSchema, type TagsBulkAddSchema, type TagSchema, type UpdateFeatureSchema, type UpdateFeatureStrategySchema } from '../../openapi/index.js';
import type { IUnleashServices } from '../../services/index.js';
import type { BatchStaleSchema } from '../../openapi/spec/batch-stale-schema.js';
interface FeatureStrategyParams {
projectId: string;
featureName: string;
environment: string;
sortOrder?: number;
}
interface BulkFeaturesStrategyParams {
projectId: string;
environment: string;
}
interface FeatureStrategyQuery {
shouldActivateDisabledStrategies: string;
}
interface FeatureParams extends ProjectParam {
featureName: string;
}
interface ProjectParam {
projectId: string;
}
interface StrategyIdParams extends FeatureStrategyParams {
strategyId: string;
}
export interface IFeatureProjectUserParams extends ProjectParam {
archived?: boolean;
userId?: number;
tag?: string[][];
namePrefix?: string;
}
type ProjectFeaturesServices = Pick<IUnleashServices, 'featureToggleService' | 'projectHealthService' | 'openApiService' | 'transactionalFeatureToggleService' | 'featureTagService'>;
export default class ProjectFeaturesController extends Controller {
private featureService;
private featureTagService;
private transactionalFeatureToggleService;
private openApiService;
private flagResolver;
private readonly logger;
constructor(config: IUnleashConfig, { featureToggleService, openApiService, transactionalFeatureToggleService, featureTagService, }: ProjectFeaturesServices);
getFeatures(req: IAuthRequest<ProjectParam, any, any, AdminFeaturesQuerySchema>, res: Response<ProjectFeaturesSchema>): Promise<void>;
prepQuery({ tag, namePrefix }: AdminFeaturesQuerySchema, projectId: string): Promise<IFeatureProjectUserParams>;
paramToArray(param: any): Array<any>;
cloneFeature(req: IAuthRequest<FeatureParams, any, {
name: string;
replaceGroupId?: boolean;
}>, res: Response<FeatureSchema>): Promise<void>;
createFeature(req: IAuthRequest<FeatureParams, FeatureSchema, CreateFeatureSchema>, res: Response<FeatureSchema>): Promise<void>;
maybeAnonymise(feature: FeatureToggleView): FeatureToggleView;
getFeature(req: IAuthRequest<FeatureParams, any, any, any>, res: Response<FeatureSchema>): Promise<void>;
updateFeature(req: IAuthRequest<{
projectId: string;
featureName: string;
}, any, UpdateFeatureSchema>, res: Response<FeatureSchema>): Promise<void>;
patchFeature(req: IAuthRequest<{
projectId: string;
featureName: string;
}, any, Operation[], any>, res: Response<FeatureSchema>): Promise<void>;
archiveFeature(req: IAuthRequest<{
projectId: string;
featureName: string;
}, any, any, any>, res: Response<void>): Promise<void>;
staleFeatures(req: IAuthRequest<{
projectId: string;
}, void, BatchStaleSchema>, res: Response): Promise<void>;
getFeatureEnvironment(req: Request<FeatureStrategyParams, any, any, any>, res: Response<FeatureEnvironmentSchema>): Promise<void>;
toggleFeatureEnvironmentOn(req: IAuthRequest<FeatureStrategyParams, any, any, FeatureStrategyQuery>, res: Response<void>): Promise<void>;
bulkToggleFeaturesEnvironmentOn(req: IAuthRequest<BulkFeaturesStrategyParams, any, BulkToggleFeaturesSchema, FeatureStrategyQuery>, res: Response<void>): Promise<void>;
bulkToggleFeaturesEnvironmentOff(req: IAuthRequest<BulkFeaturesStrategyParams, any, BulkToggleFeaturesSchema, FeatureStrategyQuery>, res: Response<void>): Promise<void>;
toggleFeatureEnvironmentOff(req: IAuthRequest<FeatureStrategyParams, any, any, any>, res: Response<void>): Promise<void>;
addFeatureStrategy(req: IAuthRequest<FeatureStrategyParams, any, CreateFeatureStrategySchema>, res: Response<FeatureStrategySchema>): Promise<void>;
getFeatureStrategies(req: Request<FeatureStrategyParams, any, any, any>, res: Response<FeatureStrategySchema[]>): Promise<void>;
setStrategiesSortOrder(req: IAuthRequest<FeatureStrategyParams, any, SetStrategySortOrderSchema, any>, res: Response): Promise<void>;
updateFeatureStrategy(req: IAuthRequest<StrategyIdParams, any, UpdateFeatureStrategySchema>, res: Response<FeatureStrategySchema>): Promise<void>;
patchFeatureStrategy(req: IAuthRequest<StrategyIdParams, any, Operation[], any>, res: Response<FeatureStrategySchema>): Promise<void>;
getFeatureStrategy(req: IAuthRequest<StrategyIdParams, any, any, any>, res: Response<FeatureStrategySchema>): Promise<void>;
deleteFeatureStrategy(req: IAuthRequest<StrategyIdParams, any, any, any>, res: Response<void>): Promise<void>;
updateFeaturesTags(req: IAuthRequest<void, void, TagsBulkAddSchema>, res: Response<TagSchema>): Promise<void>;
}
export {};
//# sourceMappingURL=feature-toggle-controller.d.ts.map