UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

112 lines 6.65 kB
/** * Copyright Super iPaaS Integration LLC, an IBM Company 2024 */ import { Response } from "../../common/models/response-wrapper.js"; import { PinnedProject } from "../../lfs/models/pinned-project.model.js"; import { Project } from "../../lfs/models/project.model.js"; import { RootDirectoryInfo } from "../../lfs/models/root-directory-info.model.js"; import { VCSProject } from "../../vcs/models/vcs-project.model.js"; import { ProjectDuplicateRequest } from "../models/project-operations.model.js"; export interface IProjectsHandler { /** * Loads all local projects and its corresponding assets from the configured root directories and returns as a list of project objects * * @returns A promise of list of projects wrapped in the response-wrapper */ loadAllProjects(): Promise<Response<Project[]>>; /** * Loads all local projects and its corresponding assets from the given root directory and returns as a list of project objects * * @param parentFolder The root directory info / repository data to load projects from * @returns A promise of list of projects wrapped in the response-wrapper */ loadProjectsForParentsFolder(parentFolder: RootDirectoryInfo): Promise<Response<Project[]>>; /** * Loads all local projects and its corresponding assets from the given root directory and returns as a list of project objects * * @param parentFolder The root directory info / repository data to load projects from * @returns A promise of list of projects wrapped in the response-wrapper */ loadProjectsForParentsFolders(parentFolders: RootDirectoryInfo[]): Promise<Response<Project[]>>; /** * Creates a new project entry in studio meta data file, returns the updated list of projects to use in store * @param newProject New project object * @returns A promise of updated list of projects wrapped in response-wrapper to use in store */ createNewProject(newProject: Project, fileList?: File[]): Promise<Response<Project>>; /** * Returns a list of projects by filtering based on the parent folder name * @param projects List of projects to filter from * @param uniqueParentFolderName Unique parent folder name to filter projects with, which could be either a repository name or a root directory alias * @returns A list of filtered projects */ filterProjectsByUniqueParentFolderName(projects: (Project | VCSProject)[], uniqueParentFolderName: string): (Project | VCSProject)[]; /** * Reloads all assets present in local project folder into the project argument. * @param project Project object to be refreshed * @returns A Promise of reloaded project with updated assets as per local project folder. */ refreshProject(project: Project): Promise<Response<Project>>; /** * Checks and returns the given project as a VCSProject * @param project Local or VCS Project type * @returns A boolean to indicate whether the project is Local or VCS project, in addition it also informs ts compiler to treat project as VCS project if return type is true. */ isVCSProject(project: Project | VCSProject): project is VCSProject; /** * Checks whether the given project is already present in project list. * @param existingProjectList Existing list of projects from store * @param rootDirectoryAlias Unique label for the root directory / repository. * @param projectName Name of the project to be searched for duplication * @returns A boolean to indicate whether the project is duplicate or not. */ isDuplicateProject(existingProjectList: (Project | VCSProject)[], rootDirectoryAlias: string, projectName: string): boolean; /** * Searches through the project list and returns the index of specified project. * @param projects List of Local or VCS projects. * @param rootDirectoryAlias Unique label for the root directory / repository. * @param projectName Name of the project to be searched. * @returns Index of the first element in the projects list which matches with provided projectName and rootDirectoryAlias. * Returns -1 if no match is found. */ findProjectIndex(projects: (Project | VCSProject)[], rootDirectoryAlias: string, projectName: string): number; /** * Sorts the projects based on pinned projects. * @param pinnedProjects List of pinned projects * @param projects List of projects * @returns Sorted list of projects */ getSortedProjects(pinnedProjects: PinnedProject[], projects: (Project | VCSProject)[], sortColumn: string | null, sortOrder: 'asc' | 'desc'): (Project | VCSProject)[]; /** * Filters and returns the list of projects after removing projects belonging to any of the given parent folders * @param parentFolders The parent folder aliases for which the projects are to be deleted * @param projects List of all projects * @returns List of projects that do not belong to any of the given parents folders */ removeProjectsByParentFolders(parentFolderAlias: string[], projects: (Project | VCSProject)[]): (Project | VCSProject)[]; /** * Identifies whether the project is local or vcs and orchestrates the flow accordingly to update the project * @param existingProject The original version of project * @param updatedProject Project with updated metadata */ updateProject(existingProject: (Project | VCSProject), updatedProject: (Project | VCSProject)): Promise<void>; /** * Identifes whether the project is local or vcs and orchestrates the flow accordingly to delete the projects * @param projects List of projects to be deleted */ deleteProjects(projects: (Project | VCSProject)[]): Promise<void>; /** * Identifes whether the project is local or vcs and orchestrates the flow accordingly to duplicate the projects * @param duplicateRequestData Contains details aboout project source to be duplicated and target destination * @param newProjectName A unique project name for duplicated project */ duplicateProject(duplicateRequestData: ProjectDuplicateRequest, newProjectName: string): Promise<Response<Project | VCSProject>>; /** * Generates a unique project name for duplicate project creation * @param name Current project name * @param projectList List of existing projects * @returns Newly generated unique project name */ generateUniqueProjectName(name: string, projectList: (Project | VCSProject)[]): string; } //# sourceMappingURL=projects-handler.interface.d.ts.map