unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
79 lines (78 loc) • 4.74 kB
TypeScript
import { Request, Response } from 'express';
import { Operation } from 'fast-json-patch';
import Controller from '../../controller';
import { IUnleashConfig } from '../../../types/option';
import { IUnleashServices } from '../../../types';
import { IAuthRequest } from '../../unleash-types';
import { CreateFeatureSchema } from '../../../openapi/spec/create-feature-schema';
import { FeatureSchema } from '../../../openapi/spec/feature-schema';
import { FeatureStrategySchema } from '../../../openapi/spec/feature-strategy-schema';
import { ParametersSchema } from '../../../openapi/spec/parameters-schema';
import { FeaturesSchema } from '../../../openapi/spec/features-schema';
import { UpdateFeatureSchema } from '../../../openapi/spec/update-feature-schema';
import { UpdateFeatureStrategySchema } from '../../../openapi/spec/update-feature-strategy-schema';
import { CreateFeatureStrategySchema } from '../../../openapi/spec/create-feature-strategy-schema';
import { FeatureEnvironmentSchema } from '../../../openapi/spec/feature-environment-schema';
import { SetStrategySortOrderSchema } from '../../../openapi/spec/set-strategy-sort-order-schema';
interface FeatureStrategyParams {
projectId: string;
featureName: string;
environment: string;
sortOrder?: number;
}
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;
}
declare type ProjectFeaturesServices = Pick<IUnleashServices, 'featureToggleServiceV2' | 'projectHealthService' | 'openApiService' | 'segmentService'>;
export default class ProjectFeaturesController extends Controller {
private featureService;
private openApiService;
private segmentService;
private readonly logger;
constructor(config: IUnleashConfig, { featureToggleServiceV2, openApiService, segmentService, }: ProjectFeaturesServices);
getFeatures(req: IAuthRequest<ProjectParam, any, any, any>, res: Response<FeaturesSchema>): Promise<void>;
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>;
getFeature(req: IAuthRequest<FeatureParams, any, any, any>, res: Response): 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>;
getFeatureEnvironment(req: Request<FeatureStrategyParams, any, any, any>, res: Response<FeatureEnvironmentSchema>): Promise<void>;
toggleFeatureEnvironmentOn(req: IAuthRequest<FeatureStrategyParams, any, any, any>, 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: Request<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>;
updateStrategyParameter(req: IAuthRequest<StrategyIdParams, any, {
name: string;
value: string | number;
}, any>, res: Response<FeatureStrategySchema>): Promise<void>;
getStrategyParameters(req: Request<StrategyIdParams, any, any, any>, res: Response<ParametersSchema>): Promise<void>;
}
export {};