generated from salesforcecli/plugin-template
-
Notifications
You must be signed in to change notification settings - Fork 18
/
types.ts
124 lines (102 loc) · 3.53 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
* Copyright (c) 2021, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import {
ComponentStatus,
FileResponse,
MetadataApiDeployStatus,
MetadataApiRetrieveStatus,
RequestStatus,
SourceComponent,
FileResponseFailure,
FileResponseSuccess,
ComponentLike,
} from '@salesforce/source-deploy-retrieve';
import { isObject } from '@salesforce/ts-types';
import { DefaultReportOptions } from '@salesforce/apex-node';
export const reportsFormatters = Object.keys(DefaultReportOptions);
export enum TestLevel {
NoTestRun = 'NoTestRun',
RunSpecifiedTests = 'RunSpecifiedTests',
RunLocalTests = 'RunLocalTests',
RunAllTestsInOrg = 'RunAllTestsInOrg',
}
export enum API {
SOAP = 'SOAP',
REST = 'REST',
}
export type PathInfo = {
type: 'directory' | 'file';
path: string;
};
export type Verbosity = 'verbose' | 'concise' | 'normal';
export type AsyncDeployResultJson = Omit<Partial<MetadataApiDeployStatus>, 'status'> & {
status: RequestStatus | 'Queued' | 'Nothing to deploy';
files: FileResponse[];
zipSize?: number;
zipFileCount?: number;
};
type ConvertEntry = {
fullName: string;
type: string;
filePath: string;
state: 'Add';
};
export type ConvertMdapiJson = ConvertEntry[];
export type ConvertResultJson = {
location: string;
};
export type DeleteSourceJson = {
deletedSource?: FileResponse[];
deployedSource: FileResponse[];
outboundFiles: string[];
deploys?: MetadataApiDeployStatus[];
deletes?: MetadataApiDeployStatus[];
replacements?: Record<string, string[]>;
coverage?: CoverageResultsFileInfo;
junit?: string;
} & MetadataApiDeployStatus;
export type CoverageResultsFileInfo = Record<keyof Partial<typeof DefaultReportOptions>, string>;
export type DeployResultJson =
| (MetadataApiDeployStatus & {
files: FileResponse[];
replacements?: Record<string, string[]>;
zipSize?: number;
zipFileCount?: number;
})
| AsyncDeployResultJson;
export type MetadataRetrieveResultJson = Omit<MetadataApiRetrieveStatus, 'zipFile'> & {
zipFilePath: string;
files: FileResponse[];
};
export type RetrieveResultJson =
| (Omit<MetadataApiRetrieveStatus, 'zipFile'> & { files: FileResponse[] })
| MetadataRetrieveResultJson;
export type Formatter<T> = {
getJson: () => Promise<T>;
display: () => void;
};
/** validates source component with fullname, type, and xml props */
export const isSourceComponent = (sc: ComponentLike): sc is SourceComponent =>
isObject(sc) &&
'type' in sc &&
typeof sc.type === 'object' &&
sc.type !== null &&
'name' in sc.type &&
typeof sc.type.name === 'string' &&
'fullName' in sc &&
'walkContent' in sc &&
// (typeof sc.fullName === 'string' || typeof sc.fullName === 'function');
typeof sc.fullName === 'string';
export const isSourceComponentWithXml = (sc: ComponentLike): sc is SourceComponent & { xml: string } =>
isSourceComponent(sc) && 'xml' in sc && typeof sc.xml === 'string';
export const isSdrFailure = (fileResponse: FileResponse): fileResponse is FileResponseFailure =>
fileResponse.state === ComponentStatus.Failed;
export const isSdrSuccess = (fileResponse: FileResponse): fileResponse is FileResponseSuccess =>
fileResponse.state !== ComponentStatus.Failed;
export const isFileResponseDeleted = (fileResponse: FileResponseSuccess): boolean =>
fileResponse.state === ComponentStatus.Deleted;
export const isDefined = <T>(value?: T): value is T => value !== undefined;