@salesforce/packaging 0.0.35 → 0.0.37
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 +12 -0
- package/lib/interfaces/packagingInterfacesAndType.d.ts +31 -1
- package/lib/interfaces/packagingInterfacesAndType.js +31 -1
- package/lib/package/package.d.ts +1 -1
- package/lib/package/package.js +3 -2
- package/lib/package/packageAncestry.d.ts +1 -1
- package/lib/package/packageAncestry.js +5 -5
- package/lib/package/packageConvert.d.ts +1 -0
- package/lib/package/packageConvert.js +122 -4
- package/lib/package/packageCreate.d.ts +3 -3
- package/lib/package/packageCreate.js +12 -11
- package/lib/package/packageInstall.d.ts +3 -2
- package/lib/package/packageInstall.js +50 -17
- package/lib/package/packageProfileApi.js +1 -1
- package/lib/package/packageUninstall.js +5 -3
- package/lib/package/packageVersion.d.ts +7 -0
- package/lib/package/packageVersion.js +34 -7
- package/lib/package/packageVersionCreate.d.ts +6 -0
- package/lib/package/packageVersionCreate.js +227 -21
- package/lib/package/packageVersionCreateRequest.js +8 -3
- package/lib/package/packageVersionList.js +1 -1
- package/lib/package/packageVersionReport.js +28 -2
- package/lib/package1/package1VersionCreate.js +3 -2
- package/lib/utils/packageUtils.d.ts +1 -37
- package/lib/utils/packageUtils.js +6 -397
- package/lib/utils/versionNumber.js +1 -1
- package/messages/package1_version_create.md +8 -0
- package/messages/package_ancestry.md +19 -0
- package/messages/package_create.md +3 -0
- package/messages/{package-install.md → package_install.md} +2 -2
- package/messages/package_uninstall.md +3 -0
- package/messages/package_version.md +3 -0
- package/messages/{packageVersionCreate.md → package_version_create.md} +35 -6
- package/messages/pkg_utils.md +93 -0
- package/messages/{profile-api.md → profile_api.md} +0 -0
- package/messages/version_number.md +15 -0
- package/package.json +2 -2
- package/messages/messages.md +0 -285
|
@@ -10,8 +10,10 @@ exports.uninstallPackage = void 0;
|
|
|
10
10
|
const os = require("os");
|
|
11
11
|
const core_1 = require("@salesforce/core");
|
|
12
12
|
const kit_1 = require("@salesforce/kit");
|
|
13
|
+
const interfaces_1 = require("../interfaces");
|
|
13
14
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
14
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
15
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_uninstall');
|
|
16
|
+
const pkgMessages = core_1.Messages.loadMessages('@salesforce/packaging', 'package');
|
|
15
17
|
async function poll(id, conn) {
|
|
16
18
|
const uninstallRequest = await conn.tooling.sobject('SubscriberPackageVersionUninstallRequest').retrieve(id);
|
|
17
19
|
switch (uninstallRequest.Status) {
|
|
@@ -20,13 +22,13 @@ async function poll(id, conn) {
|
|
|
20
22
|
}
|
|
21
23
|
case 'InProgress':
|
|
22
24
|
case 'Queued': {
|
|
23
|
-
core_1.Lifecycle.getInstance().emit(
|
|
25
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.uninstall, {
|
|
24
26
|
...uninstallRequest,
|
|
25
27
|
});
|
|
26
28
|
return { completed: false, payload: uninstallRequest };
|
|
27
29
|
}
|
|
28
30
|
default: {
|
|
29
|
-
const err =
|
|
31
|
+
const err = pkgMessages.getMessage('defaultErrorMessage', [id, uninstallRequest.Id]);
|
|
30
32
|
const errorQueryResult = await conn.tooling.query(`"SELECT Message FROM PackageVersionUninstallRequestError WHERE ParentRequest.Id = '${id}' ORDER BY Message"`);
|
|
31
33
|
const errors = [];
|
|
32
34
|
if (errorQueryResult.records.length) {
|
|
@@ -63,4 +63,11 @@ export declare class PackageVersion {
|
|
|
63
63
|
update(id: string, options: PackageVersionUpdateOptions): Promise<PackageSaveResult>;
|
|
64
64
|
private updateDeprecation;
|
|
65
65
|
private updateProjectWithPackageVersion;
|
|
66
|
+
/**
|
|
67
|
+
* Given a package version ID (05i) or subscriber package version ID (04t), return the subscriber package version ID (04t)
|
|
68
|
+
*
|
|
69
|
+
* @param versionId The suscriber package version ID
|
|
70
|
+
* @param connection For tooling query
|
|
71
|
+
*/
|
|
72
|
+
private getSubscriberPackageVersionId;
|
|
66
73
|
}
|
|
@@ -9,6 +9,7 @@ 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 interfaces_1 = require("../interfaces");
|
|
12
13
|
const utils_1 = require("../utils");
|
|
13
14
|
const packageVersionCreate_1 = require("./packageVersionCreate");
|
|
14
15
|
const packageVersionReport_1 = require("./packageVersionReport");
|
|
@@ -16,6 +17,7 @@ const packageVersionCreateRequestReport_1 = require("./packageVersionCreateReque
|
|
|
16
17
|
const packageVersionList_1 = require("./packageVersionList");
|
|
17
18
|
const packageVersionCreateRequest_1 = require("./packageVersionCreateRequest");
|
|
18
19
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
20
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version');
|
|
19
21
|
class PackageVersion {
|
|
20
22
|
constructor(options) {
|
|
21
23
|
this.options = options;
|
|
@@ -114,7 +116,7 @@ class PackageVersion {
|
|
|
114
116
|
report = await this.getCreateVersionReport(createPackageVersionRequestId);
|
|
115
117
|
switch (report.Status) {
|
|
116
118
|
case 'Queued':
|
|
117
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
119
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.enqueued, { ...report, remainingWaitTime });
|
|
118
120
|
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds - polling.frequency.seconds);
|
|
119
121
|
return {
|
|
120
122
|
completed: false,
|
|
@@ -126,18 +128,21 @@ class PackageVersion {
|
|
|
126
128
|
case 'VerifyingDependencies':
|
|
127
129
|
case 'VerifyingMetadata':
|
|
128
130
|
case 'FinalizingPackageVersion':
|
|
129
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
131
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.progress, {
|
|
132
|
+
...report,
|
|
133
|
+
remainingWaitTime,
|
|
134
|
+
});
|
|
130
135
|
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds - polling.frequency.seconds);
|
|
131
136
|
return {
|
|
132
137
|
completed: false,
|
|
133
138
|
payload: report,
|
|
134
139
|
};
|
|
135
140
|
case 'Success':
|
|
136
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
141
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.success, report);
|
|
137
142
|
await this.updateProjectWithPackageVersion(this.project, report);
|
|
138
143
|
return { completed: true, payload: report };
|
|
139
144
|
case 'Error':
|
|
140
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
145
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.error, report);
|
|
141
146
|
return { completed: true, payload: report };
|
|
142
147
|
}
|
|
143
148
|
},
|
|
@@ -148,7 +153,7 @@ class PackageVersion {
|
|
|
148
153
|
return pollingClient.subscribe();
|
|
149
154
|
}
|
|
150
155
|
catch (err) {
|
|
151
|
-
await core_1.Lifecycle.getInstance().emit('timed-out', report);
|
|
156
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create['timed-out'], report);
|
|
152
157
|
throw (0, utils_1.applyErrorAction)(err);
|
|
153
158
|
}
|
|
154
159
|
}
|
|
@@ -191,7 +196,7 @@ class PackageVersion {
|
|
|
191
196
|
throw new Error(result.errors.join(', '));
|
|
192
197
|
}
|
|
193
198
|
// Use the 04t ID for the success message
|
|
194
|
-
result.id = await
|
|
199
|
+
result.id = await this.getSubscriberPackageVersionId(id);
|
|
195
200
|
return result;
|
|
196
201
|
}
|
|
197
202
|
async updateDeprecation(idOrAlias, IsDeprecated) {
|
|
@@ -209,7 +214,7 @@ class PackageVersion {
|
|
|
209
214
|
if (!updateResult.success) {
|
|
210
215
|
throw (0, utils_1.combineSaveErrors)('Package2', 'update', updateResult.errors);
|
|
211
216
|
}
|
|
212
|
-
updateResult.id = await
|
|
217
|
+
updateResult.id = await this.getSubscriberPackageVersionId(packageVersionId);
|
|
213
218
|
return updateResult;
|
|
214
219
|
}
|
|
215
220
|
async updateProjectWithPackageVersion(withProject, results) {
|
|
@@ -225,6 +230,28 @@ class PackageVersion {
|
|
|
225
230
|
await this.project.getSfProjectJson().write();
|
|
226
231
|
}
|
|
227
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Given a package version ID (05i) or subscriber package version ID (04t), return the subscriber package version ID (04t)
|
|
235
|
+
*
|
|
236
|
+
* @param versionId The suscriber package version ID
|
|
237
|
+
* @param connection For tooling query
|
|
238
|
+
*/
|
|
239
|
+
async getSubscriberPackageVersionId(versionId) {
|
|
240
|
+
// if it's already a 04t return it, otherwise query for it
|
|
241
|
+
if (!versionId || versionId.startsWith(utils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID.prefix)) {
|
|
242
|
+
return versionId;
|
|
243
|
+
}
|
|
244
|
+
const query = `SELECT SubscriberPackageVersionId FROM Package2Version WHERE Id = '${versionId}'`;
|
|
245
|
+
const queryResult = await this.connection.tooling.query(query);
|
|
246
|
+
if (!queryResult || !queryResult.totalSize) {
|
|
247
|
+
throw messages.createError('errorInvalidIdNoMatchingVersionId', [
|
|
248
|
+
utils_1.BY_LABEL.PACKAGE_VERSION_ID.label,
|
|
249
|
+
versionId,
|
|
250
|
+
utils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID.label,
|
|
251
|
+
]);
|
|
252
|
+
}
|
|
253
|
+
return queryResult.records[0].SubscriberPackageVersionId;
|
|
254
|
+
}
|
|
228
255
|
}
|
|
229
256
|
exports.PackageVersion = PackageVersion;
|
|
230
257
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -44,4 +44,10 @@ export declare class PackageVersionCreate {
|
|
|
44
44
|
* Sets default or override values for packageDescriptorJSON attribs
|
|
45
45
|
*/
|
|
46
46
|
private setPackageDescriptorJsonValues;
|
|
47
|
+
private validateVersionNumber;
|
|
48
|
+
private validatePatchVersion;
|
|
49
|
+
private massageErrorMessage;
|
|
50
|
+
private getAncestorId;
|
|
51
|
+
private validateAncestorId;
|
|
52
|
+
private getAncestorIdHighestRelease;
|
|
47
53
|
}
|
|
@@ -16,12 +16,13 @@ const scratchOrgSettingsGenerator_1 = require("@salesforce/core/lib/org/scratchO
|
|
|
16
16
|
const xml2js = require("xml2js");
|
|
17
17
|
const uniqid_1 = require("../utils/uniqid");
|
|
18
18
|
const pkgUtils = require("../utils/packageUtils");
|
|
19
|
-
const versionNumber_1 = require("../utils/versionNumber");
|
|
20
19
|
const utils_1 = require("../utils");
|
|
20
|
+
const interfaces_1 = require("../interfaces");
|
|
21
|
+
const utils_2 = require("../utils");
|
|
21
22
|
const packageProfileApi_1 = require("./packageProfileApi");
|
|
22
23
|
const packageVersionCreateRequest_1 = require("./packageVersionCreateRequest");
|
|
23
24
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
24
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
25
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
|
|
25
26
|
const logger = core_1.Logger.childFromRoot('packageVersionCreate');
|
|
26
27
|
const DESCRIPTOR_FILE = 'package2-descriptor.json';
|
|
27
28
|
class PackageVersionCreate {
|
|
@@ -35,7 +36,7 @@ class PackageVersionCreate {
|
|
|
35
36
|
return this.packageVersionCreate();
|
|
36
37
|
}
|
|
37
38
|
catch (err) {
|
|
38
|
-
throw pkgUtils.applyErrorAction(
|
|
39
|
+
throw pkgUtils.applyErrorAction(this.massageErrorMessage(err));
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
// convert source to mdapi format and copy to tmp dir packaging up
|
|
@@ -57,7 +58,7 @@ class PackageVersionCreate {
|
|
|
57
58
|
if (packageName) {
|
|
58
59
|
// SDR will build an output path like /output/directory/packageName/package.xml
|
|
59
60
|
// this was breaking from toolbelt, so to revert it we copy the directory up a level and delete the original
|
|
60
|
-
(0,
|
|
61
|
+
(0, utils_2.copyDir)(convertResult.packagePath, outputDirectory);
|
|
61
62
|
try {
|
|
62
63
|
fs.rmSync(convertResult.packagePath, { recursive: true });
|
|
63
64
|
}
|
|
@@ -91,7 +92,8 @@ class PackageVersionCreate {
|
|
|
91
92
|
// Just override dependency.packageId value to the resolved alias.
|
|
92
93
|
dependency.packageId = packageIdFromAlias;
|
|
93
94
|
pkgUtils.validateId(pkgUtils.BY_LABEL.PACKAGE_ID, dependency.packageId);
|
|
94
|
-
|
|
95
|
+
this.validateVersionNumber(dependency.versionNumber, utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
|
|
96
|
+
await this.validatePatchVersion(dependency.versionNumber, dependency.packageId);
|
|
95
97
|
// Validate that the Package2 id exists on the server
|
|
96
98
|
const query = `SELECT Id FROM Package2 WHERE Id = '${dependency.packageId}'`;
|
|
97
99
|
const result = await this.connection.tooling.query(query);
|
|
@@ -114,7 +116,7 @@ class PackageVersionCreate {
|
|
|
114
116
|
// if a 04t id is specified just use it.
|
|
115
117
|
return dependency;
|
|
116
118
|
}
|
|
117
|
-
const versionNumber =
|
|
119
|
+
const versionNumber = utils_1.VersionNumber.from(dependency.versionNumber);
|
|
118
120
|
const buildNumber = versionNumber.build;
|
|
119
121
|
// use the dependency.branch if present otherwise use the branch of the version being created
|
|
120
122
|
const branch = dependency.branch || dependency.branch === '' ? dependency.branch : this.options.branch;
|
|
@@ -124,7 +126,7 @@ class PackageVersionCreate {
|
|
|
124
126
|
// now that we have a full build number, query for the associated 04t.
|
|
125
127
|
// because the build number may not be unique across versions, add in conditionals for
|
|
126
128
|
// the branch or the RELEASED token (if used)
|
|
127
|
-
const branchOrReleasedCondition = buildNumber ===
|
|
129
|
+
const branchOrReleasedCondition = buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
|
|
128
130
|
? 'AND IsReleased = true'
|
|
129
131
|
: `AND Branch = ${branchString}`;
|
|
130
132
|
const query = `SELECT SubscriberPackageVersionId FROM Package2Version WHERE Package2Id = '${dependency.packageId}' AND MajorVersion = ${versionNumber.major} AND MinorVersion = ${versionNumber.minor} AND PatchVersion = ${versionNumber.patch} AND BuildNumber = ${resolvedBuildNumber} ${branchOrReleasedCondition}`;
|
|
@@ -142,7 +144,7 @@ class PackageVersionCreate {
|
|
|
142
144
|
// warn user of the resolved build number when LATEST and RELEASED keywords are used
|
|
143
145
|
if (versionNumber.isbuildKeyword()) {
|
|
144
146
|
versionNumber.build = resolvedBuildNumber;
|
|
145
|
-
if (buildNumber ===
|
|
147
|
+
if (buildNumber === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
|
|
146
148
|
logger.info(messages.getMessage('buildNumberResolvedForLatest', [
|
|
147
149
|
dependency.package,
|
|
148
150
|
versionNumber.toString(),
|
|
@@ -150,7 +152,7 @@ class PackageVersionCreate {
|
|
|
150
152
|
dependency.subscriberPackageVersionId,
|
|
151
153
|
]));
|
|
152
154
|
}
|
|
153
|
-
else if (buildNumber ===
|
|
155
|
+
else if (buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
|
|
154
156
|
logger.info(messages.getMessage('buildNumberResolvedForReleased', [
|
|
155
157
|
dependency.package,
|
|
156
158
|
versionNumber.toString(),
|
|
@@ -172,18 +174,18 @@ class PackageVersionCreate {
|
|
|
172
174
|
// query for the LATEST or RELEASED build number (excluding deleted versions)
|
|
173
175
|
let branchCondition = '';
|
|
174
176
|
let releasedCondition = '';
|
|
175
|
-
if (versionNumber[3] ===
|
|
177
|
+
if (versionNumber[3] === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
|
|
176
178
|
// respect the branch when querying for LATEST
|
|
177
179
|
const branchString = !branch || branch === '' ? 'null' : `'${branch}'`;
|
|
178
180
|
branchCondition = `AND Branch = ${branchString}`;
|
|
179
181
|
}
|
|
180
|
-
else if (versionNumber[3] ===
|
|
182
|
+
else if (versionNumber[3] === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
|
|
181
183
|
releasedCondition = 'AND IsReleased = true';
|
|
182
184
|
}
|
|
183
185
|
const query = `SELECT MAX(BuildNumber) FROM Package2Version WHERE Package2Id = '${packageId}' AND IsDeprecated != true AND MajorVersion = ${versionNumber.major} AND MinorVersion = ${versionNumber.minor} AND PatchVersion = ${versionNumber.patch} ${branchCondition} ${releasedCondition}`;
|
|
184
186
|
const results = await this.connection.tooling.query(query);
|
|
185
187
|
if (results.records?.length === 0 || results.records[0].expr0 == null) {
|
|
186
|
-
if (versionNumber.build ===
|
|
188
|
+
if (versionNumber.build === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
|
|
187
189
|
throw messages.createError('noReleaseVersionFound', [packageId, versionNumber.toString()]);
|
|
188
190
|
}
|
|
189
191
|
else {
|
|
@@ -208,7 +210,7 @@ class PackageVersionCreate {
|
|
|
208
210
|
};
|
|
209
211
|
if (preserveFiles) {
|
|
210
212
|
const message = messages.getMessage('tempFileLocation', [packageVersTmpRoot]);
|
|
211
|
-
await core_1.Lifecycle.getInstance().emit('
|
|
213
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create['preserve-files'], {
|
|
212
214
|
location: packageVersTmpRoot,
|
|
213
215
|
message,
|
|
214
216
|
});
|
|
@@ -285,7 +287,7 @@ class PackageVersionCreate {
|
|
|
285
287
|
// branch can be set via options or descriptor; option takes precedence
|
|
286
288
|
this.options.branch = this.options.branch ?? packageDescriptorJson.branch;
|
|
287
289
|
const resultValues = await Promise.all(!dependencies ? [] : dependencies.map((dependency) => this.retrieveSubscriberPackageVersionId(dependency)));
|
|
288
|
-
const ancestorId = await
|
|
290
|
+
const ancestorId = await this.getAncestorId(packageDescriptorJson, this.options.project, this.options.versionnumber ?? packageDescriptorJson.versionNumber, this.options.skipancestorcheck);
|
|
289
291
|
// If dependencies exist, the resultValues array will contain the dependencies populated with a resolved
|
|
290
292
|
// subscriber pkg version id.
|
|
291
293
|
if (resultValues.length > 0) {
|
|
@@ -351,19 +353,19 @@ class PackageVersionCreate {
|
|
|
351
353
|
});
|
|
352
354
|
await fs.promises.writeFile(path.join(packageVersMetadataFolder, 'package.xml'), xml, 'utf-8');
|
|
353
355
|
// Zip the packageVersMetadataFolder folder and put the zip in {packageVersBlobDirectory}/package.zip
|
|
354
|
-
await (0,
|
|
356
|
+
await (0, utils_2.zipDir)(packageVersMetadataFolder, metadataZipFile);
|
|
355
357
|
if (hasUnpackagedMetadata) {
|
|
356
358
|
// Zip the unpackagedMetadataFolder folder and put the zip in {packageVersBlobDirectory}/{unpackagedMetadataZipFile}
|
|
357
|
-
await (0,
|
|
359
|
+
await (0, utils_2.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
|
|
358
360
|
}
|
|
359
361
|
// Zip up the expanded settings (if present)
|
|
360
362
|
if (settingsGenerator.hasSettings()) {
|
|
361
363
|
await settingsGenerator.createDeploy();
|
|
362
364
|
await settingsGenerator.createDeployPackageContents(this.apiVersionFromPackageXml);
|
|
363
|
-
await (0,
|
|
365
|
+
await (0, utils_2.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
|
|
364
366
|
}
|
|
365
367
|
// Zip the Version Info and package.zip files into another zip
|
|
366
|
-
await (0,
|
|
368
|
+
await (0, utils_2.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
|
|
367
369
|
}
|
|
368
370
|
resolveApexTestPermissions(packageDescriptorJson) {
|
|
369
371
|
// Process permissionSet and permissionSetLicenses that should be enabled when running Apex tests
|
|
@@ -418,7 +420,7 @@ class PackageVersionCreate {
|
|
|
418
420
|
throw messages.createError('errorEmptyPackageDirs');
|
|
419
421
|
}
|
|
420
422
|
// from the packageDirectories in sfdx-project.json, find the correct package entry either by finding a matching package (name) or path
|
|
421
|
-
this.packageAlias = (0,
|
|
423
|
+
this.packageAlias = (0, utils_2.getPackageAliasesFromId)(this.options.packageId, this.options.project).join();
|
|
422
424
|
this.packageId = this.options.packageId;
|
|
423
425
|
// set on the class, so we can access them in other methods without redoing this logic
|
|
424
426
|
this.packageObject = this.project
|
|
@@ -491,8 +493,8 @@ class PackageVersionCreate {
|
|
|
491
493
|
if (!packageDescriptorJson.versionName) {
|
|
492
494
|
const versionNumber = packageDescriptorJson.versionNumber;
|
|
493
495
|
packageDescriptorJson.versionName =
|
|
494
|
-
versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] ===
|
|
495
|
-
? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP +
|
|
496
|
+
versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] === utils_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN
|
|
497
|
+
? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP + utils_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN))
|
|
496
498
|
: versionNumber;
|
|
497
499
|
logger.warn(options, messages.getMessage('defaultVersionName', [packageDescriptorJson.versionName]));
|
|
498
500
|
}
|
|
@@ -515,6 +517,210 @@ class PackageVersionCreate {
|
|
|
515
517
|
packageDescriptorJson.uninstallScript = options.uninstallscript;
|
|
516
518
|
}
|
|
517
519
|
}
|
|
520
|
+
validateVersionNumber(versionNumberString, supportedBuildNumberToken, supportedBuildNumberToken2) {
|
|
521
|
+
const versionNumber = utils_1.VersionNumber.from(versionNumberString);
|
|
522
|
+
// build number can be a number or valid token
|
|
523
|
+
if (Number.isNaN(parseInt(`${versionNumber.build}`, 10)) &&
|
|
524
|
+
versionNumber.build !== supportedBuildNumberToken &&
|
|
525
|
+
versionNumber.build !== supportedBuildNumberToken2) {
|
|
526
|
+
if (supportedBuildNumberToken2) {
|
|
527
|
+
throw messages.createError('errorInvalidBuildNumberForKeywords', [
|
|
528
|
+
versionNumberString,
|
|
529
|
+
supportedBuildNumberToken,
|
|
530
|
+
supportedBuildNumberToken2,
|
|
531
|
+
]);
|
|
532
|
+
}
|
|
533
|
+
else {
|
|
534
|
+
throw messages.createError('errorInvalidBuildNumber', [versionNumberString, supportedBuildNumberToken]);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return versionNumberString;
|
|
538
|
+
}
|
|
539
|
+
async validatePatchVersion(versionNumberString, packageId) {
|
|
540
|
+
const query = `SELECT ContainerOptions FROM Package2 WHERE id ='${packageId}'`;
|
|
541
|
+
const queryResult = await this.connection.tooling.query(query);
|
|
542
|
+
if (queryResult.records === null || queryResult.records.length === 0) {
|
|
543
|
+
throw messages.createError('errorInvalidPackageId', [packageId]);
|
|
544
|
+
}
|
|
545
|
+
// Enforce a patch version of zero (0) for Locked packages only
|
|
546
|
+
if (queryResult.records[0].ContainerOptions === 'Locked') {
|
|
547
|
+
const versionNumber = utils_1.VersionNumber.from(versionNumberString);
|
|
548
|
+
if (versionNumber.patch !== '0') {
|
|
549
|
+
throw messages.createError('errorInvalidPatchNumber', [versionNumberString]);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
massageErrorMessage(err) {
|
|
554
|
+
if (err.name === 'INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST') {
|
|
555
|
+
err['message'] = messages.getMessage('invalidPackageTypeMessage');
|
|
556
|
+
}
|
|
557
|
+
if (err.name === 'MALFORMED_ID' &&
|
|
558
|
+
(err.message.includes('Version ID') || err.message.includes('Version Definition ID'))) {
|
|
559
|
+
err['message'] = messages.getMessage('malformedPackageVersionIdMessage');
|
|
560
|
+
}
|
|
561
|
+
if (err.name === 'MALFORMED_ID' && err.message.includes('Package2 ID')) {
|
|
562
|
+
err['message'] = messages.getMessage('malformedPackageIdMessage');
|
|
563
|
+
}
|
|
564
|
+
// remove references to Second Generation
|
|
565
|
+
if (err.message.includes('Second Generation ')) {
|
|
566
|
+
err['message'] = err.message.replace('Second Generation ', '');
|
|
567
|
+
}
|
|
568
|
+
return err;
|
|
569
|
+
}
|
|
570
|
+
// eslint-disable-next-line complexity
|
|
571
|
+
async getAncestorId(packageDescriptorJson, project, versionNumberString, skipAncestorCheck) {
|
|
572
|
+
// If an id property is present, use it. Otherwise, look up the package id from the package property.
|
|
573
|
+
const packageId = packageDescriptorJson.id ?? (0, utils_2.getPackageIdFromAlias)(packageDescriptorJson.package, project);
|
|
574
|
+
// No need to proceed if Unlocked
|
|
575
|
+
const packageType = await (0, utils_2.getPackageType)(packageId, this.connection);
|
|
576
|
+
if (packageType === 'Unlocked') {
|
|
577
|
+
return '';
|
|
578
|
+
}
|
|
579
|
+
let ancestorId = '';
|
|
580
|
+
// ancestorID can be alias, 05i, or 04t;
|
|
581
|
+
// validate and convert to 05i, as needed
|
|
582
|
+
const versionNumber = utils_1.VersionNumber.from(versionNumberString);
|
|
583
|
+
let origSpecifiedAncestor = packageDescriptorJson.ancestorId;
|
|
584
|
+
let highestReleasedVersion = null;
|
|
585
|
+
const explicitUseHighestRelease = packageDescriptorJson.ancestorId === utils_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN ||
|
|
586
|
+
packageDescriptorJson.ancestorVersion === utils_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN;
|
|
587
|
+
const explicitUseNoAncestor = packageDescriptorJson.ancestorId === utils_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN ||
|
|
588
|
+
packageDescriptorJson.ancestorVersion === utils_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN;
|
|
589
|
+
if ((explicitUseHighestRelease || explicitUseNoAncestor) &&
|
|
590
|
+
packageDescriptorJson.ancestorId &&
|
|
591
|
+
packageDescriptorJson.ancestorVersion) {
|
|
592
|
+
if (packageDescriptorJson.ancestorId !== packageDescriptorJson.ancestorVersion) {
|
|
593
|
+
// both ancestorId and ancestorVersion specified, HIGHEST and/or NONE are used, the values disagree
|
|
594
|
+
throw messages.createError('errorAncestorIdVersionHighestOrNoneMismatch', [
|
|
595
|
+
packageDescriptorJson.ancestorId,
|
|
596
|
+
packageDescriptorJson.ancestorVersion,
|
|
597
|
+
]);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
if (explicitUseNoAncestor && skipAncestorCheck) {
|
|
601
|
+
return '';
|
|
602
|
+
}
|
|
603
|
+
else {
|
|
604
|
+
const result = await this.getAncestorIdHighestRelease(packageId, versionNumberString, explicitUseHighestRelease, skipAncestorCheck);
|
|
605
|
+
if (result.finalAncestorId) {
|
|
606
|
+
return result.finalAncestorId;
|
|
607
|
+
}
|
|
608
|
+
highestReleasedVersion = result.highestReleasedVersion;
|
|
609
|
+
}
|
|
610
|
+
// at this point if explicitUseHighestRelease=true, we have returned the ancestorId or thrown an error
|
|
611
|
+
// highestReleasedVersion should be null only if skipAncestorCheck or if there is no existing released package version
|
|
612
|
+
if (!explicitUseNoAncestor && packageDescriptorJson.ancestorId) {
|
|
613
|
+
ancestorId = (0, utils_2.getPackageIdFromAlias)(packageDescriptorJson.ancestorId, project);
|
|
614
|
+
(0, utils_2.validateId)([utils_2.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, utils_2.BY_LABEL.PACKAGE_VERSION_ID], ancestorId);
|
|
615
|
+
ancestorId = await (0, utils_2.getPackageVersionId)(ancestorId, this.connection);
|
|
616
|
+
}
|
|
617
|
+
if (!explicitUseNoAncestor && packageDescriptorJson.ancestorVersion) {
|
|
618
|
+
const regNumbers = new RegExp('^[0-9]+$');
|
|
619
|
+
const versionNumber = packageDescriptorJson.ancestorVersion.split(utils_2.VERSION_NUMBER_SEP);
|
|
620
|
+
if (versionNumber.length < 3 ||
|
|
621
|
+
versionNumber.length > 4 ||
|
|
622
|
+
!versionNumber[0].match(regNumbers) ||
|
|
623
|
+
!versionNumber[1].match(regNumbers) ||
|
|
624
|
+
!versionNumber[2].match(regNumbers)) {
|
|
625
|
+
throw new Error(messages.getMessage('errorInvalidAncestorVersionFormat', [packageDescriptorJson.ancestorVersion]));
|
|
626
|
+
}
|
|
627
|
+
const query = 'SELECT Id, IsReleased FROM Package2Version ' +
|
|
628
|
+
`WHERE Package2Id = '${packageId}' AND MajorVersion = ${versionNumber[0]} AND MinorVersion = ${versionNumber[1]} AND PatchVersion = ${versionNumber[2]}`;
|
|
629
|
+
let queriedAncestorId;
|
|
630
|
+
const ancestorVersionResult = await this.connection.tooling.query(query);
|
|
631
|
+
if (!ancestorVersionResult || !ancestorVersionResult.totalSize) {
|
|
632
|
+
throw messages.createError('errorNoMatchingAncestor', [packageDescriptorJson.ancestorVersion, packageId]);
|
|
633
|
+
}
|
|
634
|
+
else {
|
|
635
|
+
const releasedAncestor = ancestorVersionResult.records.find((rec) => rec.IsReleased === true);
|
|
636
|
+
if (!releasedAncestor) {
|
|
637
|
+
throw messages.createError('errorAncestorNotReleased', [packageDescriptorJson.ancestorVersion]);
|
|
638
|
+
}
|
|
639
|
+
else {
|
|
640
|
+
queriedAncestorId = releasedAncestor.Id;
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
// check for discrepancy between queried ancestorId and descriptor's ancestorId
|
|
644
|
+
if (packageDescriptorJson?.ancestorId && ancestorId !== queriedAncestorId) {
|
|
645
|
+
throw messages.createError('errorAncestorIdVersionMismatch', [
|
|
646
|
+
packageDescriptorJson.ancestorVersion,
|
|
647
|
+
packageDescriptorJson.ancestorId,
|
|
648
|
+
]);
|
|
649
|
+
}
|
|
650
|
+
ancestorId = queriedAncestorId;
|
|
651
|
+
origSpecifiedAncestor = packageDescriptorJson.ancestorVersion;
|
|
652
|
+
}
|
|
653
|
+
return this.validateAncestorId(ancestorId, highestReleasedVersion, explicitUseNoAncestor, versionNumber.patch !== '0', skipAncestorCheck, origSpecifiedAncestor);
|
|
654
|
+
}
|
|
655
|
+
validateAncestorId(ancestorId, highestReleasedVersion, explicitUseNoAncestor, isPatch, skipAncestorCheck, origSpecifiedAncestor) {
|
|
656
|
+
if (explicitUseNoAncestor) {
|
|
657
|
+
if (!highestReleasedVersion) {
|
|
658
|
+
return '';
|
|
659
|
+
}
|
|
660
|
+
else {
|
|
661
|
+
// the explicitUseNoAncestor && skipAncestorCheck case is handled above
|
|
662
|
+
throw messages.createError('errorAncestorNoneNotAllowed', [(0, utils_2.getPackageVersionNumber)(highestReleasedVersion)]);
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
if (!isPatch && !skipAncestorCheck) {
|
|
666
|
+
if (highestReleasedVersion) {
|
|
667
|
+
if (highestReleasedVersion.Id !== ancestorId) {
|
|
668
|
+
throw messages.createError('errorAncestorNotHighest', [
|
|
669
|
+
origSpecifiedAncestor,
|
|
670
|
+
(0, utils_2.getPackageVersionNumber)(highestReleasedVersion),
|
|
671
|
+
]);
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
else {
|
|
675
|
+
// looks like the initial version:create - allow
|
|
676
|
+
ancestorId = '';
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
return ancestorId;
|
|
680
|
+
}
|
|
681
|
+
async getAncestorIdHighestRelease(packageId, versionNumberString, explicitUseHighestRelease, skipAncestorCheck) {
|
|
682
|
+
const versionNumber = versionNumberString.split(utils_2.VERSION_NUMBER_SEP);
|
|
683
|
+
const isPatch = versionNumber[2] !== '0';
|
|
684
|
+
const result = { finalAncestorId: null, highestReleasedVersion: null };
|
|
685
|
+
if (isPatch && explicitUseHighestRelease) {
|
|
686
|
+
// based on server-side validation, whatever ancestor is specified for a patch is
|
|
687
|
+
// tightly controlled; therefore we only need concern ourselves if explicitUseHighestRelease == true;
|
|
688
|
+
// equally applies when skipAncestorCheck == true
|
|
689
|
+
// gather appropriate matching major.minor.0
|
|
690
|
+
const query = `SELECT Id FROM Package2Version WHERE Package2Id = '${packageId}' ` +
|
|
691
|
+
'AND IsReleased = True AND IsDeprecated = False AND PatchVersion = 0 ' +
|
|
692
|
+
`AND MajorVersion = ${versionNumber[0]} AND MinorVersion = ${versionNumber[1]} ` +
|
|
693
|
+
'ORDER BY MajorVersion Desc, MinorVersion Desc, PatchVersion Desc, BuildNumber Desc LIMIT 1';
|
|
694
|
+
const majorMinorVersionResult = await this.connection.tooling.query(query);
|
|
695
|
+
const majorMinorVersionRecords = majorMinorVersionResult.records;
|
|
696
|
+
if (majorMinorVersionRecords && majorMinorVersionRecords?.length === 1 && majorMinorVersionRecords[0]) {
|
|
697
|
+
result.finalAncestorId = majorMinorVersionRecords[0].Id;
|
|
698
|
+
}
|
|
699
|
+
else {
|
|
700
|
+
const majorMinorNotFound = `${versionNumber[0]}.${versionNumber[1]}.0`;
|
|
701
|
+
throw messages.createError('errorNoMatchingMajorMinorForPatch', [majorMinorNotFound]);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
else if (!isPatch && (explicitUseHighestRelease || !skipAncestorCheck)) {
|
|
705
|
+
// ancestor must be set to latest released major.minor version
|
|
706
|
+
const query = 'SELECT Id, SubscriberPackageVersionId, MajorVersion, MinorVersion, PatchVersion FROM Package2Version ' +
|
|
707
|
+
`WHERE Package2Id = '${packageId}' AND IsReleased = True AND IsDeprecated = False AND PatchVersion = 0 ` +
|
|
708
|
+
'ORDER BY MajorVersion Desc, MinorVersion Desc, PatchVersion Desc, BuildNumber Desc LIMIT 1';
|
|
709
|
+
const highestVersionResult = await this.connection.tooling.query(query);
|
|
710
|
+
const highestVersionRecords = highestVersionResult.records;
|
|
711
|
+
if (highestVersionRecords && highestVersionRecords[0]) {
|
|
712
|
+
result.highestReleasedVersion = highestVersionRecords[0];
|
|
713
|
+
if (explicitUseHighestRelease) {
|
|
714
|
+
result.finalAncestorId = result.highestReleasedVersion.Id;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
else if (explicitUseHighestRelease) {
|
|
718
|
+
// there is no eligible ancestor version
|
|
719
|
+
throw messages.createError('errorNoMatchingAncestor', [versionNumberString, packageId]);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
return result;
|
|
723
|
+
}
|
|
518
724
|
}
|
|
519
725
|
exports.PackageVersionCreate = PackageVersionCreate;
|
|
520
726
|
//# sourceMappingURL=packageVersionCreate.js.map
|
|
@@ -9,9 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.byId = exports.list = void 0;
|
|
10
10
|
const util = require("util");
|
|
11
11
|
const core_1 = require("@salesforce/core");
|
|
12
|
-
const packageUtils = require("../utils/packageUtils");
|
|
13
12
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
14
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
13
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
|
|
15
14
|
const STATUS_ERROR = 'Error';
|
|
16
15
|
const QUERY = 'SELECT Id, Status, Package2Id, Package2VersionId, Package2Version.SubscriberPackageVersionId, Tag, Branch, ' +
|
|
17
16
|
'CreatedDate, Package2Version.HasMetadataRemoved, CreatedById ' +
|
|
@@ -19,6 +18,12 @@ const QUERY = 'SELECT Id, Status, Package2Id, Package2VersionId, Package2Version
|
|
|
19
18
|
'%s' + // WHERE, if applicable
|
|
20
19
|
'ORDER BY CreatedDate';
|
|
21
20
|
const ERROR_QUERY = "SELECT Message FROM Package2VersionCreateRequestError WHERE ParentRequest.Id = '%s'";
|
|
21
|
+
function formatDate(date) {
|
|
22
|
+
const pad = (num) => {
|
|
23
|
+
return num < 10 ? `0${num}` : `${num}`;
|
|
24
|
+
};
|
|
25
|
+
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`;
|
|
26
|
+
}
|
|
22
27
|
async function list(options) {
|
|
23
28
|
const whereClause = _constructWhere(options);
|
|
24
29
|
return _query(util.format(QUERY, whereClause), options.connection);
|
|
@@ -43,7 +48,7 @@ async function _query(query, connection) {
|
|
|
43
48
|
Tag: record.Tag,
|
|
44
49
|
Branch: record.Branch,
|
|
45
50
|
Error: [],
|
|
46
|
-
CreatedDate:
|
|
51
|
+
CreatedDate: formatDate(new Date(record.CreatedDate)),
|
|
47
52
|
HasMetadataRemoved: record.Package2Version != null ? record.Package2Version.HasMetadataRemoved : null,
|
|
48
53
|
CreatedBy: record.CreatedById,
|
|
49
54
|
}));
|
|
@@ -11,7 +11,7 @@ const core_1 = require("@salesforce/core");
|
|
|
11
11
|
const ts_types_1 = require("@salesforce/ts-types");
|
|
12
12
|
const utils_1 = require("../utils");
|
|
13
13
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
14
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
14
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
|
|
15
15
|
// Stripping CodeCoverage, HasPassedCodeCoverageCheck as they are causing a perf issue in 47.0+ W-6997762
|
|
16
16
|
const DEFAULT_SELECT = 'SELECT Id, Package2Id, SubscriberPackageVersionId, Name, Package2.Name, Package2.NamespacePrefix, Package2.IsOrgDependent, ' +
|
|
17
17
|
'Description, Tag, Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber, IsReleased, ' +
|
|
@@ -27,6 +27,32 @@ const QUERY_VERBOSE = 'SELECT Id, Package2Id, SubscriberPackageVersionId, Name,
|
|
|
27
27
|
"WHERE Id = '%s' AND IsDeprecated != true " +
|
|
28
28
|
'ORDER BY Package2Id, Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber';
|
|
29
29
|
const logger = core_1.Logger.childFromRoot('getPackageVersionReport');
|
|
30
|
+
/**
|
|
31
|
+
* Given a list of subscriber package version IDs (04t), return the associated version strings (e.g., Major.Minor.Patch.Build)
|
|
32
|
+
*
|
|
33
|
+
* @return Map of subscriberPackageVersionId to versionString
|
|
34
|
+
* @param subscriberPackageVersionIds
|
|
35
|
+
* @param connection For tooling query
|
|
36
|
+
*/
|
|
37
|
+
async function getPackageVersionStrings(subscriberPackageVersionIds, connection) {
|
|
38
|
+
let results = new Map();
|
|
39
|
+
if (!subscriberPackageVersionIds || subscriberPackageVersionIds.length === 0) {
|
|
40
|
+
return results;
|
|
41
|
+
}
|
|
42
|
+
// remove any duplicate Ids
|
|
43
|
+
const ids = [...new Set(subscriberPackageVersionIds)];
|
|
44
|
+
const query = `SELECT SubscriberPackageVersionId, MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version WHERE SubscriberPackageVersionId IN (${ids
|
|
45
|
+
.map((id) => `'${id}'`)
|
|
46
|
+
.join(',')})`;
|
|
47
|
+
const records = await pkgUtils.queryWithInConditionChunking(query, ids, '%IDS%', connection);
|
|
48
|
+
if (records && records.length > 0) {
|
|
49
|
+
results = new Map(records.map((record) => {
|
|
50
|
+
const version = pkgUtils.concatVersion(record.MajorVersion, record.MinorVersion, record.PatchVersion, record.BuildNumber);
|
|
51
|
+
return [record.SubscriberPackageVersionId, version];
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
30
56
|
async function getPackageVersionReport(options) {
|
|
31
57
|
logger.debug(`entering getPackageVersionReport(${util.inspect(options, { depth: null })})`);
|
|
32
58
|
let packageVersionId = pkgUtils.getPackageIdFromAlias(options.idOrAlias, options.project);
|
|
@@ -36,7 +62,7 @@ async function getPackageVersionReport(options) {
|
|
|
36
62
|
packageVersionId = await pkgUtils.getPackageVersionId(packageVersionId, options.connection);
|
|
37
63
|
const queryResult = await options.connection.tooling.query(util.format(options.verbose ? QUERY_VERBOSE : QUERY, packageVersionId));
|
|
38
64
|
const records = queryResult.records;
|
|
39
|
-
if (records
|
|
65
|
+
if (records?.length > 0) {
|
|
40
66
|
const record = records[0];
|
|
41
67
|
record.Version = [record.MajorVersion, record.MinorVersion, record.PatchVersion, record.BuildNumber].join('.');
|
|
42
68
|
const containerOptions = await pkgUtils.getContainerOptions([record.Package2Id], options.connection);
|
|
@@ -44,7 +70,7 @@ async function getPackageVersionReport(options) {
|
|
|
44
70
|
record.AncestorVersion = null;
|
|
45
71
|
if (record.AncestorId) {
|
|
46
72
|
// lookup AncestorVersion value
|
|
47
|
-
const ancestorVersionMap = await
|
|
73
|
+
const ancestorVersionMap = await getPackageVersionStrings([record.AncestorId], options.connection);
|
|
48
74
|
record.AncestorVersion = ancestorVersionMap.get(record.AncestorId);
|
|
49
75
|
}
|
|
50
76
|
else {
|
|
@@ -10,8 +10,9 @@ exports.package1VersionCreate = void 0;
|
|
|
10
10
|
const os = require("os");
|
|
11
11
|
const core_1 = require("@salesforce/core");
|
|
12
12
|
const kit_1 = require("@salesforce/kit");
|
|
13
|
+
const interfaces_1 = require("../interfaces");
|
|
13
14
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
14
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
15
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package1_version_create');
|
|
15
16
|
const packageUploadRequestStatus = async (id, connection, timeout, frequency) => {
|
|
16
17
|
const pollingResult = await connection.tooling.sobject('PackageUploadRequest').retrieve(id);
|
|
17
18
|
switch (pollingResult.Status) {
|
|
@@ -20,7 +21,7 @@ const packageUploadRequestStatus = async (id, connection, timeout, frequency) =>
|
|
|
20
21
|
case 'IN_PROGRESS':
|
|
21
22
|
case 'QUEUED':
|
|
22
23
|
timeout -= frequency;
|
|
23
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
24
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.Package1VersionEvents.create.progress, { timeout, pollingResult });
|
|
24
25
|
return { completed: false, payload: pollingResult };
|
|
25
26
|
default: {
|
|
26
27
|
if (pollingResult?.Errors?.errors?.length > 0) {
|