UNPKG

unleash-server

Version:

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

54 lines (53 loc) 3.56 kB
import User, { IUser } from '../types/user'; import { AccessService } from './access-service'; import { IUnleashStores, IUnleashConfig } from '../types'; import { FeatureToggle, IProject, IProjectOverview, IProjectWithCount, IUserWithRole } from '../types/model'; import { IProjectQuery } from '../types/stores/project-store'; import { IProjectAccessModel, IRoleDescriptor } from '../types/stores/access-store'; import FeatureToggleService from './feature-toggle-service'; import { GroupService } from './group-service'; import { IGroupModelWithProjectRole, IGroupRole } from 'lib/types/group'; export interface AccessWithRoles { users: IUserWithRole[]; roles: IRoleDescriptor[]; groups: IGroupModelWithProjectRole[]; } export default class ProjectService { private store; private accessService; private eventStore; private featureToggleStore; private featureTypeStore; private featureEnvironmentStore; private environmentStore; private groupService; private logger; private featureToggleService; private tagStore; private userStore; constructor({ projectStore, eventStore, featureToggleStore, featureTypeStore, environmentStore, featureEnvironmentStore, featureTagStore, userStore, }: Pick<IUnleashStores, 'projectStore' | 'eventStore' | 'featureToggleStore' | 'featureTypeStore' | 'environmentStore' | 'featureEnvironmentStore' | 'featureTagStore' | 'userStore'>, config: IUnleashConfig, accessService: AccessService, featureToggleService: FeatureToggleService, groupService: GroupService); getProjects(query?: IProjectQuery, userId?: number): Promise<IProjectWithCount[]>; getProject(id: string): Promise<IProject>; createProject(newProject: Pick<IProject, 'id' | 'name'>, user: IUser): Promise<IProject>; updateProject(updatedProject: IProject, user: User): Promise<void>; checkProjectsCompatibility(feature: FeatureToggle, newProjectId: string): Promise<boolean>; addEnvironmentToProject(project: string, environment: string): Promise<void>; changeProject(newProjectId: string, featureName: string, user: User, currentProjectId: string): Promise<any>; deleteProject(id: string, user: User): Promise<void>; validateId(id: string): Promise<boolean>; validateUniqueId(id: string): Promise<void>; getAccessToProject(projectId: string): Promise<AccessWithRoles>; addUser(projectId: string, roleId: number, userId: number, createdBy: string): Promise<void>; removeUser(projectId: string, roleId: number, userId: number, createdBy: string): Promise<void>; addGroup(projectId: string, roleId: number, groupId: number, modifiedBy: string): Promise<void>; removeGroup(projectId: string, roleId: number, groupId: number, modifiedBy: string): Promise<void>; addAccess(projectId: string, roleId: number, usersAndGroups: IProjectAccessModel, createdBy: string): Promise<void>; findProjectGroupRole(projectId: string, roleId: number): Promise<IGroupRole>; findProjectRole(projectId: string, roleId: number): Promise<IRoleDescriptor>; validateAtLeastOneOwner(projectId: string, currentRole: IRoleDescriptor): Promise<void>; changeRole(projectId: string, roleId: number, userId: number, createdBy: string): Promise<void>; changeGroupRole(projectId: string, roleId: number, userId: number, createdBy: string): Promise<void>; getMembers(projectId: string): Promise<number>; getProjectsByUser(userId: number): Promise<string[]>; getProjectOverview(projectId: string, archived?: boolean): Promise<IProjectOverview>; }