@altostra/core
Version:
Core library for shared types and logic
37 lines (36 loc) • 2.15 kB
TypeScript
import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { Logger, OperationLoggingSeverity } from "../../../common/Logging";
import type { Void } from "../../../common/Types";
import type { AxiosInstance } from 'axios';
import type { TemplateDescriptor } from "../../TemplateManager";
import type { ErrorMapping, IdentityToken } from "../common";
import type { ItemSelection } from "../ItemSelection";
import { ServiceClientBase } from "../ServiceClientBase";
import type { ApplyTemplateResponse, GetProjectsResponse, ProjectId, ProjectResponse as AltostraProject, ProjectUpdate } from "./Types";
export type { AltostraProject };
export interface IAltostraProjectsManager {
getProject(projectSelection: ItemSelection | NonEmptyString): Promise<AltostraProject>;
listProjects(): Promise<GetProjectsResponse>;
deleteProject(projectSelection: ItemSelection): Promise<Void>;
updateProject(projectSelection: ItemSelection, update: ProjectUpdate): Promise<Void>;
applyTemplate(projectId: ProjectId, template: TemplateDescriptor): Promise<ApplyTemplateResponse>;
}
export interface AltostraProjectsManagerOptions {
axios?: AxiosInstance;
endpoint: string;
getToken: () => Promise<IdentityToken>;
logger?: Logger<OperationLoggingSeverity>;
errorMapping?: ErrorMapping;
}
export declare const ERR_NO_PROJECT = "project-not-exist";
export declare const ERR_SYSTEM_ERROR = "get-project-from-server";
export declare class AltostraProjectsManager extends ServiceClientBase implements IAltostraProjectsManager {
#private;
constructor({ axios, endpoint, getToken, logger, errorMapping, }: AltostraProjectsManagerOptions);
exists(projectId: NonEmptyString): Promise<boolean>;
getProject(projectSelection: ItemSelection | NonEmptyString): Promise<AltostraProject>;
listProjects(): Promise<GetProjectsResponse>;
deleteProject(projectSelection: ItemSelection): Promise<Void>;
updateProject(projectSelection: ItemSelection, update: ProjectUpdate): Promise<Void>;
applyTemplate(projectId: ProjectId, template: TemplateDescriptor): Promise<ApplyTemplateResponse>;
}