@salesforce/packaging 0.0.19 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/lib/interfaces/packagingInterfacesAndType.d.ts +31 -6
- package/lib/package/index.d.ts +1 -0
- package/lib/package/index.js +1 -0
- package/lib/package/package.d.ts +1 -2
- package/lib/package/packageProfileApi.d.ts +12 -5
- package/lib/package/packageProfileApi.js +3 -3
- package/lib/package/packageVersion.d.ts +14 -15
- package/lib/package/packageVersion.js +45 -56
- package/lib/package/packageVersionCreate.d.ts +12 -32
- package/lib/package/packageVersionCreate.js +105 -305
- package/lib/package/packageVersionCreateRequest.d.ts +1 -1
- package/lib/package/packageVersionReport.js +7 -9
- package/lib/package1/package1VersionList.d.ts +1 -1
- package/lib/package1/package1VersionList.js +1 -1
- package/lib/utils/packageUtils.d.ts +6 -20
- package/lib/utils/packageUtils.js +7 -148
- package/messages/messages.md +6 -30
- package/messages/packageVersionCreate.md +71 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.0.22](https://github.com/forcedotcom/packaging/compare/v0.0.21...v0.0.22) (2022-08-22)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- add package.promote method ([de5867b](https://github.com/forcedotcom/packaging/commit/de5867bc45850ca2040e4e929a2149a7a146c93f))
|
|
10
|
+
|
|
11
|
+
### [0.0.21](https://github.com/forcedotcom/packaging/compare/v0.0.20...v0.0.21) (2022-08-19)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- inital refactor for PVC - a lot left to do, but a lot has been done ([c629291](https://github.com/forcedotcom/packaging/commit/c629291ae375c7db627b47f4ddb2f6bdd874c394))
|
|
16
|
+
|
|
17
|
+
### [0.0.20](https://github.com/forcedotcom/packaging/compare/v0.0.19...v0.0.20) (2022-08-19)
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- modfy some types ([9ee61a1](https://github.com/forcedotcom/packaging/commit/9ee61a15254dbeec2cff50a9aa7166e7f61b0597))
|
|
22
|
+
|
|
5
23
|
### [0.0.19](https://github.com/forcedotcom/packaging/compare/v0.0.18...v0.0.19) (2022-08-18)
|
|
6
24
|
|
|
7
25
|
### Bug Fixes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Duration } from '@salesforce/kit';
|
|
2
|
-
import { Connection, SfProject } from '@salesforce/core';
|
|
2
|
+
import { Connection, NamedPackageDir, SfProject } from '@salesforce/core';
|
|
3
3
|
import { QueryResult, SaveResult } from 'jsforce';
|
|
4
4
|
import { PackageProfileApi } from '../package/packageProfileApi';
|
|
5
5
|
import { PackagingSObjects } from './packagingSObjects';
|
|
@@ -119,6 +119,34 @@ export declare type PackageCreateOptions = {
|
|
|
119
119
|
errorNotificationUsername: string;
|
|
120
120
|
path: string;
|
|
121
121
|
};
|
|
122
|
+
export declare type PackageDescriptorJson = Partial<NamedPackageDir> & Partial<{
|
|
123
|
+
id: string;
|
|
124
|
+
features: string[];
|
|
125
|
+
orgPreferences: string[];
|
|
126
|
+
snapshot: string;
|
|
127
|
+
unpackagedMetadata: NamedPackageDir;
|
|
128
|
+
apexTestAccess: {
|
|
129
|
+
permissionSets: string[] | string;
|
|
130
|
+
permissionSetLicenses: string[] | string;
|
|
131
|
+
};
|
|
132
|
+
permissionSetNames: string[];
|
|
133
|
+
permissionSetLicenseDeveloperNames: string[];
|
|
134
|
+
branch: string;
|
|
135
|
+
subscriberPackageVersionId: string;
|
|
136
|
+
packageId: string;
|
|
137
|
+
versionName: string;
|
|
138
|
+
}>;
|
|
139
|
+
export declare type PackageVersionCreateRequest = {
|
|
140
|
+
Package2Id: string;
|
|
141
|
+
VersionInfo: string;
|
|
142
|
+
Tag: string;
|
|
143
|
+
Branch: string;
|
|
144
|
+
InstallKey: string;
|
|
145
|
+
Instance: string;
|
|
146
|
+
SourceOrg: string;
|
|
147
|
+
CalculateCodeCoverage: boolean;
|
|
148
|
+
SkipValidation: boolean;
|
|
149
|
+
};
|
|
122
150
|
export declare type PackageVersionQueryOptions = {
|
|
123
151
|
project: SfProject;
|
|
124
152
|
orderBy: string;
|
|
@@ -171,8 +199,7 @@ export declare type PackageVersionCreateOptions = Partial<PackageVersionOptions
|
|
|
171
199
|
definitionfile: string;
|
|
172
200
|
installationkey: string;
|
|
173
201
|
installationkeybypass: boolean;
|
|
174
|
-
|
|
175
|
-
path: string;
|
|
202
|
+
packageId: string;
|
|
176
203
|
postinstallscript: string;
|
|
177
204
|
postinstallurl: string;
|
|
178
205
|
preserve: boolean;
|
|
@@ -186,8 +213,6 @@ export declare type PackageVersionCreateOptions = Partial<PackageVersionOptions
|
|
|
186
213
|
versiondescription: string;
|
|
187
214
|
versionname: string;
|
|
188
215
|
versionnumber: string;
|
|
189
|
-
wait: Duration;
|
|
190
|
-
pollInterval: Duration;
|
|
191
216
|
profileApi: PackageProfileApi;
|
|
192
217
|
}>;
|
|
193
218
|
export declare type PackageVersionCreateRequestQueryOptions = {
|
|
@@ -205,6 +230,7 @@ export declare type PackageVersionReportResult = Partial<PackagingSObjects.Packa
|
|
|
205
230
|
SubscriberPackageVersion?: Pick<PackagingSObjects.SubscriberPackageVersion, 'Dependencies'>;
|
|
206
231
|
Version: string;
|
|
207
232
|
AncestorVersion?: string;
|
|
233
|
+
PackageType: PackageType;
|
|
208
234
|
};
|
|
209
235
|
export declare type PackageVersionCreateReportProgress = PackageVersionCreateRequestResult & {
|
|
210
236
|
remainingWaitTime: Duration;
|
|
@@ -219,7 +245,6 @@ export declare type InstalledPackages = {
|
|
|
219
245
|
SubscriberPackageVersion?: Omit<MetadataPackageVersion, 'MetadataPackageId' | 'ReleaseState' | 'IsDeprecated'>;
|
|
220
246
|
};
|
|
221
247
|
export declare type CodeCoverage = null | {
|
|
222
|
-
[key: string]: unknown;
|
|
223
248
|
apexCodeCoveragePercentage: number;
|
|
224
249
|
};
|
|
225
250
|
export declare type CodeCoveragePercentages = null | {
|
package/lib/package/index.d.ts
CHANGED
package/lib/package/index.js
CHANGED
|
@@ -35,4 +35,5 @@ Object.defineProperty(exports, "deletePackage", { enumerable: true, get: functio
|
|
|
35
35
|
var packageUninstall_1 = require("./packageUninstall");
|
|
36
36
|
Object.defineProperty(exports, "uninstallPackage", { enumerable: true, get: function () { return packageUninstall_1.uninstallPackage; } });
|
|
37
37
|
__exportStar(require("./packageInstalledList"), exports);
|
|
38
|
+
__exportStar(require("./packageVersionCreateRequestReport"), exports);
|
|
38
39
|
//# sourceMappingURL=index.js.map
|
package/lib/package/package.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { AsyncCreatable, Duration } from '@salesforce/kit';
|
|
2
2
|
import { QueryResult } from 'jsforce';
|
|
3
3
|
import { Optional } from '@salesforce/ts-types';
|
|
4
|
-
import { IPackage, PackageOptions, PackagingSObjects } from '../interfaces';
|
|
5
|
-
import { PackageInstallOptions, PackageInstallCreateRequest, PackageIdType } from '../interfaces/packagingInterfacesAndType';
|
|
4
|
+
import { IPackage, PackageOptions, PackagingSObjects, PackageInstallOptions, PackageInstallCreateRequest, PackageIdType } from '../interfaces';
|
|
6
5
|
declare type PackageInstallRequest = PackagingSObjects.PackageInstallRequest;
|
|
7
6
|
/**
|
|
8
7
|
* Package class.
|
|
@@ -30,17 +30,24 @@ export declare class PackageProfileApi extends AsyncCreatable<ProfileApiOptions>
|
|
|
30
30
|
* @param excludedDirectories Directories to not include profiles from
|
|
31
31
|
*/
|
|
32
32
|
generateProfiles(destPath: string, manifest: {
|
|
33
|
-
Package: {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
Package: Array<{
|
|
34
|
+
name: string[];
|
|
35
|
+
members: string[];
|
|
36
|
+
}>;
|
|
37
|
+
}, excludedDirectories?: string[]): string[];
|
|
37
38
|
/**
|
|
38
39
|
* Filter out all profiles in the manifest and if any profiles exists in the workspace, add them to the manifest.
|
|
39
40
|
*
|
|
40
41
|
* @param typesArr array of objects { name[], members[] } that represent package types JSON.
|
|
41
42
|
* @param excludedDirectories Direcotires not to generate profiles for
|
|
42
43
|
*/
|
|
43
|
-
filterAndGenerateProfilesForManifest(typesArr:
|
|
44
|
+
filterAndGenerateProfilesForManifest(typesArr: Array<{
|
|
45
|
+
name: string[];
|
|
46
|
+
members: string[];
|
|
47
|
+
}>, excludedDirectories?: string[]): Array<{
|
|
48
|
+
name: string[];
|
|
49
|
+
members: string[];
|
|
50
|
+
}>;
|
|
44
51
|
getProfileInformation(): ProfileInformation[];
|
|
45
52
|
private copyNodes;
|
|
46
53
|
private findAllProfiles;
|
|
@@ -115,9 +115,9 @@ class PackageProfileApi extends kit_1.AsyncCreatable {
|
|
|
115
115
|
let hasNodes = false;
|
|
116
116
|
// We need to keep track of all the members for when we package up the "OtherProfileSettings"
|
|
117
117
|
let allMembers = [];
|
|
118
|
-
manifest.Package.
|
|
119
|
-
const name = element
|
|
120
|
-
const members = element
|
|
118
|
+
manifest.Package.forEach((element) => {
|
|
119
|
+
const name = element.name;
|
|
120
|
+
const members = element.members;
|
|
121
121
|
allMembers = allMembers.concat(members);
|
|
122
122
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
123
123
|
const idx = this.nodeEntities.name.indexOf(name[0]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Duration } from '@salesforce/kit';
|
|
2
|
-
import {
|
|
2
|
+
import { PackageSaveResult, PackageVersionCreateOptions, PackageVersionCreateRequestResult, PackageVersionOptions, PackageVersionReportResult } from '../interfaces';
|
|
3
3
|
export declare class PackageVersion {
|
|
4
4
|
private options;
|
|
5
5
|
private readonly project;
|
|
@@ -9,8 +9,12 @@ export declare class PackageVersion {
|
|
|
9
9
|
* Creates a new package version.
|
|
10
10
|
*
|
|
11
11
|
* @param options
|
|
12
|
+
* @param polling frequency and timeout Durations to be used in polling
|
|
12
13
|
*/
|
|
13
|
-
create(options: PackageVersionCreateOptions
|
|
14
|
+
create(options: PackageVersionCreateOptions, polling?: {
|
|
15
|
+
frequency: Duration;
|
|
16
|
+
timeout: Duration;
|
|
17
|
+
}): Promise<Partial<PackageVersionCreateRequestResult>>;
|
|
14
18
|
/**
|
|
15
19
|
* Deletes a package version.
|
|
16
20
|
*
|
|
@@ -42,26 +46,21 @@ export declare class PackageVersion {
|
|
|
42
46
|
* This function emits LifeCycle events, "enqueued", "in-progress", "success", "error" and "timed-out" to
|
|
43
47
|
* progress and current status. Events also carry a payload of type PackageVersionCreateRequestResult.
|
|
44
48
|
*
|
|
49
|
+
* @param packageId - The package id to wait for
|
|
45
50
|
* @param createPackageVersionRequestId
|
|
46
|
-
* @param
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
* @param polling frequency and timeout Durations to be used in polling
|
|
52
|
+
* */
|
|
53
|
+
waitForCreateVersion(createPackageVersionRequestId: string, polling: {
|
|
54
|
+
frequency: Duration;
|
|
55
|
+
timeout: Duration;
|
|
56
|
+
}): Promise<PackageVersionCreateRequestResult>;
|
|
50
57
|
convert(): Promise<void>;
|
|
51
58
|
install(): Promise<void>;
|
|
52
59
|
list(): Promise<void>;
|
|
53
60
|
uninstall(): Promise<void>;
|
|
61
|
+
promote(id: string): Promise<PackageSaveResult>;
|
|
54
62
|
update(): Promise<void>;
|
|
55
63
|
private updateDeprecation;
|
|
56
|
-
/**
|
|
57
|
-
* Increase the wait time for a package version that is org dependent.
|
|
58
|
-
*
|
|
59
|
-
* @param resolvedPackageId
|
|
60
|
-
* @param pollInterval
|
|
61
|
-
* @param wait
|
|
62
|
-
* @private
|
|
63
|
-
*/
|
|
64
|
-
private resolveOrgDependentPollingTime;
|
|
65
64
|
private updateProjectWithPackageVersion;
|
|
66
65
|
private generatePackageDirectory;
|
|
67
66
|
}
|
|
@@ -9,16 +9,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.PackageVersion = void 0;
|
|
10
10
|
const core_1 = require("@salesforce/core");
|
|
11
11
|
const kit_1 = require("@salesforce/kit");
|
|
12
|
-
const pkgUtils = require("../utils/packageUtils");
|
|
13
12
|
const utils_1 = require("../utils");
|
|
14
|
-
const packageUtils_1 = require("../utils/packageUtils");
|
|
15
13
|
const packageVersionCreate_1 = require("./packageVersionCreate");
|
|
16
14
|
const packageVersionReport_1 = require("./packageVersionReport");
|
|
17
15
|
const packageVersionCreateRequestReport_1 = require("./packageVersionCreateRequestReport");
|
|
18
16
|
const package_1 = require("./package");
|
|
19
17
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
20
|
-
// const messages = Messages.loadMessages('@salesforce/packaging', 'messages');
|
|
21
|
-
// const logger = Logger.childFromRoot('packageVersionCreate');
|
|
22
18
|
class PackageVersion {
|
|
23
19
|
constructor(options) {
|
|
24
20
|
this.options = options;
|
|
@@ -29,16 +25,19 @@ class PackageVersion {
|
|
|
29
25
|
* Creates a new package version.
|
|
30
26
|
*
|
|
31
27
|
* @param options
|
|
28
|
+
* @param polling frequency and timeout Durations to be used in polling
|
|
32
29
|
*/
|
|
33
|
-
async create(options
|
|
30
|
+
async create(options, polling = {
|
|
31
|
+
frequency: kit_1.Duration.seconds(0),
|
|
32
|
+
timeout: kit_1.Duration.seconds(0),
|
|
33
|
+
}) {
|
|
34
34
|
const pvc = new packageVersionCreate_1.PackageVersionCreate({ ...options, ...this.options });
|
|
35
35
|
const createResult = await pvc.createPackageVersion();
|
|
36
|
-
|
|
36
|
+
return await this.waitForCreateVersion(createResult.Id, polling).catch((err) => {
|
|
37
37
|
// TODO
|
|
38
38
|
// until package2 is GA, wrap perm-based errors w/ 'contact sfdc' action (REMOVE once package2 is GA'd)
|
|
39
|
-
throw
|
|
39
|
+
throw (0, utils_1.applyErrorAction)(err);
|
|
40
40
|
});
|
|
41
|
-
return waitResult;
|
|
42
41
|
}
|
|
43
42
|
/**
|
|
44
43
|
* Deletes a package version.
|
|
@@ -71,7 +70,7 @@ class PackageVersion {
|
|
|
71
70
|
}).catch((err) => {
|
|
72
71
|
// TODO
|
|
73
72
|
// until package2 is GA, wrap perm-based errors w/ 'contact sfdc' action (REMOVE once package2 is GA'd)
|
|
74
|
-
throw
|
|
73
|
+
throw (0, utils_1.applyErrorAction)(err);
|
|
75
74
|
});
|
|
76
75
|
return results[0];
|
|
77
76
|
}
|
|
@@ -87,7 +86,7 @@ class PackageVersion {
|
|
|
87
86
|
}).catch((err) => {
|
|
88
87
|
// TODO
|
|
89
88
|
// until package2 is GA, wrap perm-based errors w/ 'contact sfdc' action (REMOVE once package2 is GA'd)
|
|
90
|
-
throw
|
|
89
|
+
throw (0, utils_1.applyErrorAction)(err);
|
|
91
90
|
});
|
|
92
91
|
}
|
|
93
92
|
/**
|
|
@@ -96,17 +95,15 @@ class PackageVersion {
|
|
|
96
95
|
* This function emits LifeCycle events, "enqueued", "in-progress", "success", "error" and "timed-out" to
|
|
97
96
|
* progress and current status. Events also carry a payload of type PackageVersionCreateRequestResult.
|
|
98
97
|
*
|
|
98
|
+
* @param packageId - The package id to wait for
|
|
99
99
|
* @param createPackageVersionRequestId
|
|
100
|
-
* @param
|
|
101
|
-
*
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const result = await this.getCreateVersionReport(createPackageVersionRequestId);
|
|
106
|
-
return result;
|
|
100
|
+
* @param polling frequency and timeout Durations to be used in polling
|
|
101
|
+
* */
|
|
102
|
+
async waitForCreateVersion(createPackageVersionRequestId, polling) {
|
|
103
|
+
if (polling.timeout?.milliseconds <= 0) {
|
|
104
|
+
return await this.getCreateVersionReport(createPackageVersionRequestId);
|
|
107
105
|
}
|
|
108
|
-
|
|
109
|
-
let remainingWaitTime = wait;
|
|
106
|
+
let remainingWaitTime = polling.timeout;
|
|
110
107
|
let report;
|
|
111
108
|
const pollingClient = await core_1.PollingClient.create({
|
|
112
109
|
poll: async () => {
|
|
@@ -114,7 +111,7 @@ class PackageVersion {
|
|
|
114
111
|
switch (report.Status) {
|
|
115
112
|
case 'Queued':
|
|
116
113
|
await core_1.Lifecycle.getInstance().emit('enqueued', { ...report, remainingWaitTime });
|
|
117
|
-
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds -
|
|
114
|
+
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds - polling.frequency.seconds);
|
|
118
115
|
return {
|
|
119
116
|
completed: false,
|
|
120
117
|
payload: report,
|
|
@@ -126,7 +123,7 @@ class PackageVersion {
|
|
|
126
123
|
case 'VerifyingMetadata':
|
|
127
124
|
case 'FinalizingPackageVersion':
|
|
128
125
|
await core_1.Lifecycle.getInstance().emit('in-progress', { ...report, remainingWaitTime });
|
|
129
|
-
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds -
|
|
126
|
+
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds - polling.frequency.seconds);
|
|
130
127
|
return {
|
|
131
128
|
completed: false,
|
|
132
129
|
payload: report,
|
|
@@ -134,21 +131,32 @@ class PackageVersion {
|
|
|
134
131
|
case 'Success':
|
|
135
132
|
await this.updateProjectWithPackageVersion(this.project, report);
|
|
136
133
|
await core_1.Lifecycle.getInstance().emit('success', report);
|
|
134
|
+
if (!process.env.SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_CREATE) {
|
|
135
|
+
// get the newly created package version from the server
|
|
136
|
+
const versionResult = (await this.connection.tooling.query(`SELECT Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version WHERE SubscriberPackageVersionId='${report.SubscriberPackageVersionId}'`)).records[0];
|
|
137
|
+
const version = `${(0, utils_1.getPackageAliasesFromId)(report.Package2Id, this.project).join()}@${versionResult.MajorVersion ?? 0}.${versionResult.MinorVersion ?? 0}.${versionResult.PatchVersion ?? 0}`;
|
|
138
|
+
const build = versionResult.BuildNumber ? `-${versionResult.BuildNumber}` : '';
|
|
139
|
+
const branch = versionResult.Branch ? `-${versionResult.Branch}` : '';
|
|
140
|
+
// set packageAliases entry '<package>@<major>.<minor>.<patch>-<build>-<branch>: <result.subscriberPackageVersionId>'
|
|
141
|
+
this.project.getSfProjectJson().getContents().packageAliases[`${version}${build}${branch}`] =
|
|
142
|
+
report.SubscriberPackageVersionId;
|
|
143
|
+
await this.project.getSfProjectJson().write();
|
|
144
|
+
}
|
|
137
145
|
return { completed: true, payload: report };
|
|
138
146
|
case 'Error':
|
|
139
147
|
await core_1.Lifecycle.getInstance().emit('error', report);
|
|
140
148
|
return { completed: true, payload: report };
|
|
141
149
|
}
|
|
142
150
|
},
|
|
143
|
-
frequency:
|
|
144
|
-
timeout:
|
|
151
|
+
frequency: polling.frequency,
|
|
152
|
+
timeout: polling.timeout,
|
|
145
153
|
});
|
|
146
154
|
try {
|
|
147
155
|
return pollingClient.subscribe();
|
|
148
156
|
}
|
|
149
157
|
catch (err) {
|
|
150
158
|
await core_1.Lifecycle.getInstance().emit('timed-out', report);
|
|
151
|
-
throw
|
|
159
|
+
throw (0, utils_1.applyErrorAction)(err);
|
|
152
160
|
}
|
|
153
161
|
}
|
|
154
162
|
convert() {
|
|
@@ -163,15 +171,22 @@ class PackageVersion {
|
|
|
163
171
|
uninstall() {
|
|
164
172
|
return Promise.resolve(undefined);
|
|
165
173
|
}
|
|
174
|
+
async promote(id) {
|
|
175
|
+
// lookup the 05i ID, if needed
|
|
176
|
+
if (id.startsWith('04t')) {
|
|
177
|
+
id = await (0, utils_1.getPackageVersionId)(id, this.connection);
|
|
178
|
+
}
|
|
179
|
+
return await this.options.connection.tooling.update('Package2Version', { IsReleased: true, Id: id });
|
|
180
|
+
}
|
|
166
181
|
update() {
|
|
167
182
|
return Promise.resolve(undefined);
|
|
168
183
|
}
|
|
169
184
|
async updateDeprecation(idOrAlias, IsDeprecated) {
|
|
170
|
-
const packageVersionId =
|
|
185
|
+
const packageVersionId = (0, utils_1.getPackageIdFromAlias)(idOrAlias, this.project);
|
|
171
186
|
// ID can be an 04t or 05i
|
|
172
|
-
|
|
187
|
+
(0, utils_1.validateId)([utils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, utils_1.BY_LABEL.PACKAGE_VERSION_ID], packageVersionId);
|
|
173
188
|
// lookup the 05i ID, if needed
|
|
174
|
-
const packageId = await
|
|
189
|
+
const packageId = await (0, utils_1.getPackageVersionId)(packageVersionId, this.connection);
|
|
175
190
|
// setup the request
|
|
176
191
|
const request = {
|
|
177
192
|
Id: packageId,
|
|
@@ -181,35 +196,9 @@ class PackageVersion {
|
|
|
181
196
|
if (!updateResult.success) {
|
|
182
197
|
throw (0, utils_1.combineSaveErrors)('Package2', 'update', updateResult.errors);
|
|
183
198
|
}
|
|
184
|
-
updateResult.id = await
|
|
199
|
+
updateResult.id = await (0, utils_1.getSubscriberPackageVersionId)(packageVersionId, this.connection);
|
|
185
200
|
return updateResult;
|
|
186
201
|
}
|
|
187
|
-
/**
|
|
188
|
-
* Increase the wait time for a package version that is org dependent.
|
|
189
|
-
*
|
|
190
|
-
* @param resolvedPackageId
|
|
191
|
-
* @param pollInterval
|
|
192
|
-
* @param wait
|
|
193
|
-
* @private
|
|
194
|
-
*/
|
|
195
|
-
async resolveOrgDependentPollingTime(resolvedPackageId, wait, pollInterval) {
|
|
196
|
-
// If we are polling check to see if the package is Org-Dependent, if so, update the poll time
|
|
197
|
-
if (wait.milliseconds > 0) {
|
|
198
|
-
const query = `SELECT IsOrgDependent FROM Package2 WHERE Id = '${resolvedPackageId}'`;
|
|
199
|
-
try {
|
|
200
|
-
const pkgQueryResult = await this.connection.singleRecordQuery(query, {
|
|
201
|
-
tooling: true,
|
|
202
|
-
});
|
|
203
|
-
if (pkgQueryResult.IsOrgDependent) {
|
|
204
|
-
return kit_1.Duration.seconds((60 / pollInterval.seconds) * wait.seconds);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
catch {
|
|
208
|
-
// do nothing
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return wait;
|
|
212
|
-
}
|
|
213
202
|
async updateProjectWithPackageVersion(withProject, results) {
|
|
214
203
|
if (withProject && !process.env.SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE) {
|
|
215
204
|
const query = `SELECT Name, Package2Id, MajorVersion, MinorVersion, PatchVersion, BuildNumber, Description, Branch FROM Package2Version WHERE Id = '${results.Package2VersionId}'`;
|
|
@@ -218,14 +207,14 @@ class PackageVersion {
|
|
|
218
207
|
});
|
|
219
208
|
const packageVersionVersionString = `${packageVersion.MajorVersion}.${packageVersion.MinorVersion}.${packageVersion.PatchVersion}.${packageVersion.BuildNumber}`;
|
|
220
209
|
await this.generatePackageDirectory(packageVersion, withProject, packageVersionVersionString);
|
|
221
|
-
const newConfig = await (0,
|
|
210
|
+
const newConfig = await (0, utils_1.generatePackageAliasEntry)(this.connection, withProject, packageVersion.SubscriberPackageVersionId, packageVersionVersionString, packageVersion.Branch, packageVersion.Package2Id);
|
|
222
211
|
withProject.getSfProjectJson().set('packageAliases', newConfig);
|
|
223
212
|
await withProject.getSfProjectJson().write();
|
|
224
213
|
}
|
|
225
214
|
}
|
|
226
215
|
async generatePackageDirectory(packageVersion, withProject, packageVersionVersionString) {
|
|
227
216
|
const pkg = await (await package_1.Package.create({ connection: this.connection })).getPackage(packageVersion.Package2Id);
|
|
228
|
-
const pkgDir = (0,
|
|
217
|
+
const pkgDir = (0, utils_1.getConfigPackageDirectory)(withProject.getPackageDirectories(), 'id', pkg.Id) ?? {};
|
|
229
218
|
pkgDir.versionNumber = packageVersionVersionString;
|
|
230
219
|
pkgDir.versionDescription = packageVersion.Description;
|
|
231
220
|
const packageDirs = withProject.getPackageDirectories().map((pd) => (pkgDir['id'] === pd['id'] ? pkgDir : pd));
|
|
@@ -1,61 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { PackageVersionCreateRequestResult, PackageVersionCreateOptions } from '../interfaces';
|
|
1
|
+
import { PackageVersionCreateOptions, PackageVersionCreateRequestResult } from '../interfaces';
|
|
3
2
|
export declare class PackageVersionCreate {
|
|
4
3
|
private options;
|
|
5
4
|
private apiVersionFromPackageXml;
|
|
6
5
|
private readonly project;
|
|
7
6
|
private readonly connection;
|
|
7
|
+
private packageObject;
|
|
8
|
+
private packageType;
|
|
9
|
+
private packageId;
|
|
10
|
+
private packageAlias;
|
|
8
11
|
constructor(options: PackageVersionCreateOptions);
|
|
9
12
|
createPackageVersion(): Promise<Partial<PackageVersionCreateRequestResult>>;
|
|
10
|
-
listRequest(createdlastdays?: number, status?: string): Promise<PackageVersionCreateRequestResult[]>;
|
|
11
|
-
listRequestById(id: string, connection: Connection): Promise<PackageVersionCreateRequestResult[]>;
|
|
12
13
|
private generateMDFolderForArtifact;
|
|
13
14
|
private validateDependencyValues;
|
|
14
15
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
16
|
+
* A dependency in the workspace config file may be specified using either a subscriber package version id (04t)
|
|
17
|
+
* or a package Id (0Ho) + a version number. Additionally, a build number may be the actual build number, or a
|
|
18
|
+
* keyword: LATEST or RELEASED (meaning the latest or released build number for a given major.minor.patch).
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
20
|
+
* This method resolves a package Id + version number to a subscriber package version id (04t)
|
|
21
|
+
* and adds it as a SubscriberPackageVersionId parameter in the dependency object.
|
|
21
22
|
*/
|
|
22
23
|
private retrieveSubscriberPackageVersionId;
|
|
23
24
|
private resolveBuildNumber;
|
|
24
25
|
private createRequestObject;
|
|
25
|
-
private getPackageDescriptorJsonFromPackageId;
|
|
26
26
|
/**
|
|
27
27
|
* Convert the list of command line options to a JSON object that can be used to create an Package2VersionCreateRequest entity.
|
|
28
28
|
*
|
|
29
|
-
* @param options
|
|
30
|
-
* @param packageId
|
|
31
|
-
* @param versionNumberString
|
|
32
29
|
* @returns {{Package2Id: (*|p|boolean), Package2VersionMetadata: *, Tag: *, Branch: number}}
|
|
33
30
|
* @private
|
|
34
31
|
*/
|
|
35
32
|
private createPackageVersionCreateRequestFromOptions;
|
|
33
|
+
private cleanGeneratedPackage;
|
|
36
34
|
private resolveApexTestPermissions;
|
|
37
35
|
private resolveUnpackagedMetadata;
|
|
38
|
-
private getPackagePropertyFromPackage;
|
|
39
|
-
private getPackageValuePropertyFromDirectory;
|
|
40
|
-
/**
|
|
41
|
-
* Returns the property value that corresponds to the propertyToLookup. This value found for a particular
|
|
42
|
-
* package directory element that matches the knownProperty and knownValue. In other words, we locate a package
|
|
43
|
-
* directory element whose knownProperty matches the knownValue, then we grab the value for the propertyToLookup
|
|
44
|
-
* and return it.
|
|
45
|
-
*
|
|
46
|
-
* @param packageDirs The list of all the package directories from the sfdx-project.json
|
|
47
|
-
* @param propertyToLookup The property ID whose value we want to find
|
|
48
|
-
* @param knownProperty The JSON property in the packageDirectories that is already known
|
|
49
|
-
* @param knownValue The value that corresponds to the knownProperty in the packageDirectories JSON
|
|
50
|
-
* @param knownFlag The flag details e.g. short/long name, etc. Only used for the error message
|
|
51
|
-
* @param options
|
|
52
|
-
*/
|
|
53
|
-
private getConfigPackageDirectoriesValue;
|
|
54
36
|
private packageVersionCreate;
|
|
55
|
-
private resolveCanonicalPackageProperty;
|
|
56
|
-
private validateVersionNumber;
|
|
57
37
|
private resolveUserLicenses;
|
|
58
|
-
private
|
|
38
|
+
private validateOptionsForPackageType;
|
|
59
39
|
/**
|
|
60
40
|
* Cleans invalid attribute(s) from the packageDescriptorJSON
|
|
61
41
|
*/
|