@altostra/core
Version:
Core library for shared types and logic
83 lines (82 loc) • 4.46 kB
TypeScript
/// <reference types="node" />
import { BlueprintHelper } from "../../../blueprint/Helpers/BlueprintHelper";
import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { NaturalNumber } from "../../../common/CustomTypes/Numerics";
import type { Logger, OperationLoggingSeverity } from "../../../common/Logging";
import type { Void } from "../../../common/Types";
import type { AxiosInstance } from 'axios';
import type { TaggedDeploymentPart } from "../../CustomTypes/TaggedDeployment";
import { Git } from "../../git";
import type { Project, ProjectId, ProjectType } from "../../Types";
import type { ErrorMapping, IdentityToken, ServiceClientConfig } from "../common";
import type { ItemSelection } from "../ItemSelection";
import { ServiceClientBase } from "../ServiceClientBase";
import type { ConfigurableServiceClientCtor } from "../ServiceClientBase/ConfigurableServiceClient";
import type { ProjectValidatingServiceClientCtor } from "../ServiceClientBase/ProjectValidatingServiceClient";
import type { Cursor, PresignedUrlsResponse, UploadBuiltProjectOptions, VersionsSummaryResponse, VersionsResponse } from "./Types";
export declare const BuildsServiceClientBase: ConfigurableServiceClientCtor<ServiceClientConfig, ProjectValidatingServiceClientCtor<typeof ServiceClientBase>>;
export interface BuildsManagerOptions {
axios?: AxiosInstance;
endpoints: BuildEndpoints;
getToken: () => Promise<IdentityToken>;
logger?: Logger<OperationLoggingSeverity>;
config?: ServiceClientConfig;
git?: Git;
customPresigning?: (projectId: string, version: TaggedDeploymentPart, partsNumbers: number, projectType?: ProjectType) => Promise<PresignedUrlsResponse>;
errorMapping?: ErrorMapping;
}
export interface BuildEndpoints {
backoffice: string;
integrations: string;
}
export interface IBuildsManager {
publish(options: PublishOptions): Promise<Void>;
publishNonAltostraProject(options: PublishNonAltostraOptions): Promise<Void>;
list(projectId: ItemSelection | NonEmptyString, options?: ListOptions): Promise<VersionsResponse>;
getVersionsSummary(): Promise<VersionsSummaryResponse>;
delete(projectId: NonEmptyString, version: TaggedDeploymentPart): Promise<Void>;
}
export interface PublishOptionsBase {
project?: Project;
version: TaggedDeploymentPart;
requireCommitOnPush: boolean;
}
export interface PublishOptions extends PublishOptionsBase {
projectDir: string;
force?: boolean;
initializeProject?: boolean;
}
export interface PublishNonAltostraOptions extends PublishOptionsBase {
project: Project;
packagePath: string | null;
cfnTemplatePath: string;
}
export interface ListOptions {
pageCursor?: Cursor;
filter?: ListFilter;
}
export interface ListFilter {
date?: {
from?: DateInput;
to?: DateInput;
};
}
export declare type DateInput = ConstructorParameters<typeof Date>[0];
export declare const defaultConfig: ServiceClientConfig;
export declare class BuildsManager extends BuildsServiceClientBase implements IBuildsManager {
#private;
constructor({ axios, endpoints, getToken, logger, config, customPresigning, errorMapping, git, }: BuildsManagerOptions);
publishNonAltostraProject({ project, packagePath, cfnTemplatePath, version, requireCommitOnPush, }: PublishNonAltostraOptions): Promise<Void>;
publish({ projectDir, version, force, project, initializeProject, requireCommitOnPush, }: PublishOptions): Promise<Void>;
list(projectIdOrSelection: ItemSelection | ProjectId, options?: ListOptions): Promise<VersionsResponse>;
getVersionsSummary(): Promise<VersionsSummaryResponse>;
delete(projectId: NonEmptyString, version: TaggedDeploymentPart): Promise<Void>;
static packFiles(projectDir: string, helper?: BlueprintHelper, isFileIgnored?: (projectDir: string, file: string) => boolean): Promise<Buffer>;
static getPartsNumberFromPackedFiles(packedFiles: null): 0;
static getPartsNumberFromPackedFiles(packedFiles: Buffer): NaturalNumber;
static getPartsNumberFromPackedFiles(packedFiles: Buffer | null): NaturalNumber | 0;
static uploadBuiltProject({ uploadParams, cleanup, complete, concurrencyLimit, }: UploadBuiltProjectOptions): Promise<Void>;
}
export declare const NEXT_PAGE_QUERY_PARAM = "next-page";
export declare const FROM_DATE_FILTER_QUERY_PARAM = "from-date";
export declare const TO_DATE_FILTER_QUERY_PARAM = "to-date";