UNPKG

@salesforce/source-deploy-retrieve

Version:

JavaScript library to run Salesforce metadata deploys and retrieves

335 lines (334 loc) 9.49 kB
import { RegistryAccess } from '../registry/registryAccess'; import { ComponentSet } from '../collections/componentSet'; import { PackageTypeMembers } from '../collections/types'; import { SourcePath } from '../common/types'; import { SourceComponent } from '../resolve/sourceComponent'; import { MetadataComponent } from '../resolve/types'; import { SfdxFileFormat } from '../convert/types'; import { MetadataTransferOptions } from './metadataTransfer'; export type RecordId = string; export declare enum ComponentStatus { Created = "Created", Changed = "Changed", Unchanged = "Unchanged", Deleted = "Deleted", Failed = "Failed" } export type ComponentDeployment = { id?: string; component: SourceComponent; status: ComponentStatus; diagnostics: ComponentDiagnostic[]; }; export type ComponentRetrieval = { component: SourceComponent; status?: RequestStatus; diagnostics?: ComponentDiagnostic; }; export type ComponentDiagnostic = { lineNumber?: number; columnNumber?: number; filePath?: SourcePath; error: string; problemType: 'Warning' | 'Error'; }; type FileResponseBase = { fullName: string; type: string; filePath?: string; }; export type FileResponseSuccess = Required<FileResponseBase> & { state: Exclude<ComponentStatus, ComponentStatus.Failed>; }; export type FileResponseFailure = { state: ComponentStatus.Failed; lineNumber?: number; columnNumber?: number; error: string; problemType: 'Warning' | 'Error'; } & FileResponseBase; export type FileResponse = FileResponseSuccess | FileResponseFailure; export type MetadataTransferResult = { response: MetadataRequestStatus; components?: ComponentSet; getFileResponses(): FileResponse[]; }; export type AsyncResult = { id: RecordId; }; export declare enum RequestStatus { Pending = "Pending", InProgress = "InProgress", Succeeded = "Succeeded", SucceededPartial = "SucceededPartial", Failed = "Failed", Canceling = "Canceling", Canceled = "Canceled" } export type MetadataRequestStatus = { id: string; status: RequestStatus; success: boolean; done: boolean; }; export type RetrieveFailure = { component?: MetadataComponent; message: string; }; export type RetrieveSuccess = { component: SourceComponent; properties?: FileProperties; }; /** * Raw response returned from a checkDeployStatus call to the Metadata API */ export type MetadataApiDeployStatus = { canceledBy?: string; canceledByName?: string; checkOnly: boolean; completedDate?: string; createdBy: string; createdByName: string; createdDate: string; details: DeployDetails; errorMessage?: string; errorStatusCode?: string; ignoreWarnings: boolean; lastModifiedDate: string; numberComponentErrors: number; numberComponentsDeployed: number; numberComponentsTotal: number; numberTestErrors: number; numberTestsCompleted: number; numberTestsTotal: number; runTestsEnabled: boolean; rollbackOnError: boolean; startDate?: string; stateDetail?: string; } & MetadataRequestStatus; export type DeployDetails = { componentFailures?: DeployMessage | DeployMessage[]; componentSuccesses?: DeployMessage | DeployMessage[]; runTestResult?: RunTestResult; }; export type RunTestResult = { codeCoverage?: CodeCoverage[] | CodeCoverage; codeCoverageWarnings?: CodeCoverageWarnings[] | CodeCoverageWarnings; failures?: Failures[] | Failures; numFailures: string; numTestsRun: string; successes?: Successes[] | Successes; totalTime: string; }; export type CodeCoverage = { id: string; locationsNotCovered?: LocationsNotCovered[] | LocationsNotCovered; name: string; numLocations: string; numLocationsNotCovered: string; type: string; }; export type LocationsNotCovered = { column: string; line: string; numExecutions: string; time: string; }; export type CodeCoverageWarnings = { id: string; message: string; namespace: string; }; export type Failures = { id: string; message: string; methodName: string; name: string; packageName: string; stackTrace: string; time: string; type: string; }; export type Successes = { id: string; methodName: string; name: string; time: string; }; export type BooleanString = 'true' | 'false' | true | false; export type DeployMessage = { changed: BooleanString; columnNumber?: string; componentType?: string; created: BooleanString; createdDate: string; deleted: BooleanString; fileName: string; fullName: string; id?: string; lineNumber?: string; problem?: string; problemType?: 'Warning' | 'Error'; success: BooleanString; }; export type RetrieveRequest = { apiVersion: string; packageNames?: string[]; singlePackage?: boolean; specificFiles?: string[]; unpackaged?: { types: PackageTypeMembers[]; }; }; export type RetrieveMessage = { fileName: string; problem: string; }; export declare enum ManageableState { Beta = "beta", Deleted = "deleted", Deprecated = "deprecated", DeprecatedEditable = "deprecatedEditable", Installed = "installed", InstalledEditable = "installedEditable", Released = "released", Unmanaged = "unmanaged" } export type FileProperties = { createdById: string; createdByName: string; createdDate: string; fileName: string; fullName: string; id: string; lastModifiedById: string; lastModifiedByName: string; lastModifiedDate: string; manageableState?: ManageableState; namespacePrefix?: string; type: string; }; /** * Raw response returned from a checkRetrieveStatus call to the Metadata API */ export type MetadataApiRetrieveStatus = { done: boolean; fileProperties: FileProperties | FileProperties[]; id: string; status: RequestStatus; success: boolean; messages?: RetrieveMessage[] | RetrieveMessage; /** `base64` encoded string */ zipFile: string; }; export type PackageOption = { /** * The name of the package to retrieve. */ name: string; /** * The directory where the retrieved package source should be * converted. If this is not specified the directory will * default to `<process.cwd()>/PackageOption.name`. */ outputDir?: SourcePath; }; export type PackageOptions = string[] | PackageOption[]; export type RetrieveExtractOptions = { /** * Top most directory within the retrieved zip file. * E.g., `unpackaged` for unpackaged source, or the name of the * package for retrieved package source. */ zipTreeLocation: string; /** * The directory where the retrieved source should be converted. * This is `RetrieveOptions.output` for unpackaged source, and * `PackageOption.outputDir` for packaged source. */ outputDir: SourcePath; }; export type RetrieveOptions = { /** * The directory to retrieve components to. If `merge: true`, components are only * retrieved to `output` if there wasn't a component to merge with. */ output: SourcePath; /** * Whether or not to merge and replace input components with the retrieved versions. */ merge?: boolean; /** * A list of package names to retrieve, or package names and their retrieval locations. */ packageOptions?: PackageOptions; /** * The file format desired for the retrieved files. */ format?: SfdxFileFormat; /** * Specifies whether only a single package is being retrieved (true) or not (false). * If false, then more than one package is being retrieved. */ singlePackage?: boolean; /** * The name of the retrieved zip file containing the source from the org. Only applies when `format: metadata`. */ zipFileName?: string; /** * Specifies whether to unzip the retrieved zip file. Only applies when `format: metadata`. */ unzip?: boolean; /** * Specifies whether to suppress the <Pre|Post><Retrieve> events */ suppressEvents?: boolean; }; export type MetadataApiDeployOptions = { allowMissingFiles?: boolean; autoUpdatePackage?: boolean; checkOnly?: boolean; ignoreWarnings?: boolean; performRetrieve?: boolean; purgeOnDelete?: boolean; rollbackOnError?: boolean; runAllTests?: boolean; runTests?: string[]; singlePackage?: boolean; testLevel?: 'NoTestRun' | 'RunSpecifiedTests' | 'RunLocalTests' | 'RunAllTestsInOrg'; /** * Set to true to use the REST API for deploying. */ rest?: boolean; }; export type StdValueSetRecord = { Id: string; MasterLabel: string; Metadata: { standardValue: Array<Record<string, unknown>>; }; }; export type ListMetadataQuery = { type: string; folder?: string; }; export type DeployVersionData = { apiVersion: string; manifestVersion: string | undefined; webService: 'SOAP' | 'REST'; }; /** * Data about a deployment zip file being sent to the Metadata API. */ export type DeployZipData = { zipSize: number; zipFileCount: number; }; export type RetrieveVersionData = { apiVersion: string; manifestVersion: string; }; export type MetadataApiRetrieveOptions = MetadataTransferOptions & RetrieveOptions & { registry?: RegistryAccess; }; export {};