@salesforce/packaging 0.0.17 → 0.0.20
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 +19 -0
- package/lib/interfaces/packagingInterfacesAndType.d.ts +12 -0
- package/lib/interfaces/packagingSObjects.d.ts +6 -3
- package/lib/package/package.d.ts +1 -0
- package/lib/package/package.js +4 -0
- package/lib/package/packageVersion.d.ts +12 -1
- package/lib/package/packageVersion.js +54 -3
- package/lib/package/packageVersionCreate.d.ts +0 -1
- package/lib/package/packageVersionCreate.js +0 -32
- package/lib/package/packageVersionReport.js +7 -9
- package/lib/utils/packageUtils.d.ts +18 -2
- package/lib/utils/packageUtils.js +9 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
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.20](https://github.com/forcedotcom/packaging/compare/v0.0.19...v0.0.20) (2022-08-19)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- modfy some types ([9ee61a1](https://github.com/forcedotcom/packaging/commit/9ee61a15254dbeec2cff50a9aa7166e7f61b0597))
|
|
10
|
+
|
|
11
|
+
### [0.0.19](https://github.com/forcedotcom/packaging/compare/v0.0.18...v0.0.19) (2022-08-18)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- package version. now stored in packdir in sfdx project ([a7a725d](https://github.com/forcedotcom/packaging/commit/a7a725dde13b8c73fbac7527141d006a7ed28fa8))
|
|
16
|
+
|
|
17
|
+
### [0.0.18](https://github.com/forcedotcom/packaging/compare/v0.0.17...v0.0.18) (2022-08-17)
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- add missing field in package2version ([1f609e9](https://github.com/forcedotcom/packaging/commit/1f609e95a9fd5775feaeab77a794c8039e55b48b))
|
|
22
|
+
- add missing field in package2version ([3a21cbc](https://github.com/forcedotcom/packaging/commit/3a21cbcbdfa786db901703a4bdf2ff84d6bb7902))
|
|
23
|
+
|
|
5
24
|
### [0.0.17](https://github.com/forcedotcom/packaging/compare/v0.0.16...v0.0.17) (2022-08-10)
|
|
6
25
|
|
|
7
26
|
### Bug Fixes
|
|
@@ -205,6 +205,7 @@ export declare type PackageVersionReportResult = Partial<PackagingSObjects.Packa
|
|
|
205
205
|
SubscriberPackageVersion?: Pick<PackagingSObjects.SubscriberPackageVersion, 'Dependencies'>;
|
|
206
206
|
Version: string;
|
|
207
207
|
AncestorVersion?: string;
|
|
208
|
+
PackageType: PackageType;
|
|
208
209
|
};
|
|
209
210
|
export declare type PackageVersionCreateReportProgress = PackageVersionCreateRequestResult & {
|
|
210
211
|
remainingWaitTime: Duration;
|
|
@@ -218,3 +219,14 @@ export declare type InstalledPackages = {
|
|
|
218
219
|
SubscriberPackage?: PackagingSObjects.SubscriberPackage;
|
|
219
220
|
SubscriberPackageVersion?: Omit<MetadataPackageVersion, 'MetadataPackageId' | 'ReleaseState' | 'IsDeprecated'>;
|
|
220
221
|
};
|
|
222
|
+
export declare type CodeCoverage = null | {
|
|
223
|
+
apexCodeCoveragePercentage: number;
|
|
224
|
+
};
|
|
225
|
+
export declare type CodeCoveragePercentages = null | {
|
|
226
|
+
codeCovPercentages: [
|
|
227
|
+
{
|
|
228
|
+
className: string;
|
|
229
|
+
codeCoveragePercentage: number;
|
|
230
|
+
}
|
|
231
|
+
];
|
|
232
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Nullable } from '@salesforce/ts-types';
|
|
2
|
-
import { PackageType } from './packagingInterfacesAndType';
|
|
2
|
+
import { CodeCoverage, CodeCoveragePercentages, PackageType } from './packagingInterfacesAndType';
|
|
3
3
|
export declare namespace PackagingSObjects {
|
|
4
4
|
type Package2 = {
|
|
5
5
|
Id: string;
|
|
@@ -41,7 +41,8 @@ export declare namespace PackagingSObjects {
|
|
|
41
41
|
BuildNumber: number;
|
|
42
42
|
IsDeprecated: boolean;
|
|
43
43
|
IsPasswordProtected: boolean;
|
|
44
|
-
CodeCoverage:
|
|
44
|
+
CodeCoverage: CodeCoverage;
|
|
45
|
+
CodeCoveragePercentages: CodeCoveragePercentages;
|
|
45
46
|
HasPassedCodeCoverageCheck: boolean;
|
|
46
47
|
InstallKey: string;
|
|
47
48
|
IsReleased: boolean;
|
|
@@ -117,7 +118,9 @@ export declare namespace PackagingSObjects {
|
|
|
117
118
|
sourceProfiles: SubscriberPackageSourceProfile[];
|
|
118
119
|
};
|
|
119
120
|
type SubscriberPackageDependencies = {
|
|
120
|
-
ids:
|
|
121
|
+
ids: Array<{
|
|
122
|
+
subscriberPackageVersionId: string;
|
|
123
|
+
}>;
|
|
121
124
|
};
|
|
122
125
|
type SubscriberPackageRemoteSiteSetting = {
|
|
123
126
|
secure: boolean;
|
package/lib/package/package.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare class Package extends AsyncCreatable<PackageOptions> implements I
|
|
|
34
34
|
list(): Promise<QueryResult<PackagingSObjects.Package2>>;
|
|
35
35
|
uninstall(): Promise<void>;
|
|
36
36
|
update(): Promise<void>;
|
|
37
|
+
getPackage(packageId: string): Promise<PackagingSObjects.Package2>;
|
|
37
38
|
getExternalSites(subscriberPackageVersionId: string, installationKey?: string): Promise<Optional<string[]>>;
|
|
38
39
|
waitForPublish(subscriberPackageVersionId: string, timeout: number | Duration, installationKey?: string): Promise<void>;
|
|
39
40
|
protected init(): Promise<void>;
|
package/lib/package/package.js
CHANGED
|
@@ -75,6 +75,10 @@ class Package extends kit_1.AsyncCreatable {
|
|
|
75
75
|
update() {
|
|
76
76
|
return Promise.resolve(undefined);
|
|
77
77
|
}
|
|
78
|
+
async getPackage(packageId) {
|
|
79
|
+
const package2 = await this.options.connection.tooling.sobject('Package2').retrieve(packageId);
|
|
80
|
+
return package2;
|
|
81
|
+
}
|
|
78
82
|
async getExternalSites(subscriberPackageVersionId, installationKey) {
|
|
79
83
|
return (0, packageInstall_1.getExternalSites)(this.options.connection, subscriberPackageVersionId, installationKey);
|
|
80
84
|
}
|
|
@@ -46,11 +46,22 @@ export declare class PackageVersion {
|
|
|
46
46
|
* @param wait - how long to wait for the package version to be created
|
|
47
47
|
* @param interval - frequency of checking for the package version to be created
|
|
48
48
|
*/
|
|
49
|
-
waitForCreateVersion(createPackageVersionRequestId: string, wait?: Duration, interval?: Duration): Promise<PackageVersionCreateRequestResult>;
|
|
49
|
+
waitForCreateVersion(packageId: string, createPackageVersionRequestId: string, wait?: Duration, interval?: Duration): Promise<PackageVersionCreateRequestResult>;
|
|
50
50
|
convert(): Promise<void>;
|
|
51
51
|
install(): Promise<void>;
|
|
52
52
|
list(): Promise<void>;
|
|
53
53
|
uninstall(): Promise<void>;
|
|
54
54
|
update(): Promise<void>;
|
|
55
55
|
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
|
+
private updateProjectWithPackageVersion;
|
|
66
|
+
private generatePackageDirectory;
|
|
56
67
|
}
|
|
@@ -11,9 +11,11 @@ const core_1 = require("@salesforce/core");
|
|
|
11
11
|
const kit_1 = require("@salesforce/kit");
|
|
12
12
|
const pkgUtils = require("../utils/packageUtils");
|
|
13
13
|
const utils_1 = require("../utils");
|
|
14
|
+
const packageUtils_1 = require("../utils/packageUtils");
|
|
14
15
|
const packageVersionCreate_1 = require("./packageVersionCreate");
|
|
15
16
|
const packageVersionReport_1 = require("./packageVersionReport");
|
|
16
17
|
const packageVersionCreateRequestReport_1 = require("./packageVersionCreateRequestReport");
|
|
18
|
+
const package_1 = require("./package");
|
|
17
19
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
18
20
|
// const messages = Messages.loadMessages('@salesforce/packaging', 'messages');
|
|
19
21
|
// const logger = Logger.childFromRoot('packageVersionCreate');
|
|
@@ -31,7 +33,7 @@ class PackageVersion {
|
|
|
31
33
|
async create(options) {
|
|
32
34
|
const pvc = new packageVersionCreate_1.PackageVersionCreate({ ...options, ...this.options });
|
|
33
35
|
const createResult = await pvc.createPackageVersion();
|
|
34
|
-
const waitResult = await this.waitForCreateVersion(createResult.Id, options.wait ?? kit_1.Duration.milliseconds(0), options.pollInterval ? options.pollInterval : kit_1.Duration.seconds(30)).catch((err) => {
|
|
36
|
+
const waitResult = await this.waitForCreateVersion(createResult.Package2Id, createResult.Id, options.wait ?? kit_1.Duration.milliseconds(0), options.pollInterval ? options.pollInterval : kit_1.Duration.seconds(30)).catch((err) => {
|
|
35
37
|
// TODO
|
|
36
38
|
// until package2 is GA, wrap perm-based errors w/ 'contact sfdc' action (REMOVE once package2 is GA'd)
|
|
37
39
|
throw pkgUtils.applyErrorAction(err);
|
|
@@ -98,11 +100,12 @@ class PackageVersion {
|
|
|
98
100
|
* @param wait - how long to wait for the package version to be created
|
|
99
101
|
* @param interval - frequency of checking for the package version to be created
|
|
100
102
|
*/
|
|
101
|
-
async waitForCreateVersion(createPackageVersionRequestId, wait = kit_1.Duration.milliseconds(0), interval = kit_1.Duration.milliseconds(0)) {
|
|
103
|
+
async waitForCreateVersion(packageId, createPackageVersionRequestId, wait = kit_1.Duration.milliseconds(0), interval = kit_1.Duration.milliseconds(0)) {
|
|
102
104
|
if (wait?.milliseconds <= 0) {
|
|
103
105
|
const result = await this.getCreateVersionReport(createPackageVersionRequestId);
|
|
104
106
|
return result;
|
|
105
107
|
}
|
|
108
|
+
const resolvedWait = await this.resolveOrgDependentPollingTime(packageId, wait, interval);
|
|
106
109
|
let remainingWaitTime = wait;
|
|
107
110
|
let report;
|
|
108
111
|
const pollingClient = await core_1.PollingClient.create({
|
|
@@ -129,6 +132,7 @@ class PackageVersion {
|
|
|
129
132
|
payload: report,
|
|
130
133
|
};
|
|
131
134
|
case 'Success':
|
|
135
|
+
await this.updateProjectWithPackageVersion(this.project, report);
|
|
132
136
|
await core_1.Lifecycle.getInstance().emit('success', report);
|
|
133
137
|
return { completed: true, payload: report };
|
|
134
138
|
case 'Error':
|
|
@@ -137,7 +141,7 @@ class PackageVersion {
|
|
|
137
141
|
}
|
|
138
142
|
},
|
|
139
143
|
frequency: interval,
|
|
140
|
-
timeout:
|
|
144
|
+
timeout: resolvedWait,
|
|
141
145
|
});
|
|
142
146
|
try {
|
|
143
147
|
return pollingClient.subscribe();
|
|
@@ -180,6 +184,53 @@ class PackageVersion {
|
|
|
180
184
|
updateResult.id = await pkgUtils.getSubscriberPackageVersionId(packageVersionId, this.connection);
|
|
181
185
|
return updateResult;
|
|
182
186
|
}
|
|
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
|
+
async updateProjectWithPackageVersion(withProject, results) {
|
|
214
|
+
if (withProject && !process.env.SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE) {
|
|
215
|
+
const query = `SELECT Name, Package2Id, MajorVersion, MinorVersion, PatchVersion, BuildNumber, Description, Branch FROM Package2Version WHERE Id = '${results.Package2VersionId}'`;
|
|
216
|
+
const packageVersion = await this.connection.singleRecordQuery(query, {
|
|
217
|
+
tooling: true,
|
|
218
|
+
});
|
|
219
|
+
const packageVersionVersionString = `${packageVersion.MajorVersion}.${packageVersion.MinorVersion}.${packageVersion.PatchVersion}.${packageVersion.BuildNumber}`;
|
|
220
|
+
await this.generatePackageDirectory(packageVersion, withProject, packageVersionVersionString);
|
|
221
|
+
const newConfig = await (0, packageUtils_1.generatePackageAliasEntry)(this.connection, withProject, packageVersion.SubscriberPackageVersionId, packageVersionVersionString, packageVersion.Branch, packageVersion.Package2Id);
|
|
222
|
+
withProject.getSfProjectJson().set('packageAliases', newConfig);
|
|
223
|
+
await withProject.getSfProjectJson().write();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async generatePackageDirectory(packageVersion, withProject, packageVersionVersionString) {
|
|
227
|
+
const pkg = await (await package_1.Package.create({ connection: this.connection })).getPackage(packageVersion.Package2Id);
|
|
228
|
+
const pkgDir = (0, packageUtils_1.getConfigPackageDirectory)(withProject.getPackageDirectories(), 'id', pkg.Id) ?? {};
|
|
229
|
+
pkgDir.versionNumber = packageVersionVersionString;
|
|
230
|
+
pkgDir.versionDescription = packageVersion.Description;
|
|
231
|
+
const packageDirs = withProject.getPackageDirectories().map((pd) => (pkgDir['id'] === pd['id'] ? pkgDir : pd));
|
|
232
|
+
withProject.getSfProjectJson().set('packageDirectories', packageDirs);
|
|
233
|
+
}
|
|
183
234
|
}
|
|
184
235
|
exports.PackageVersion = PackageVersion;
|
|
185
236
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -55,7 +55,6 @@ export declare class PackageVersionCreate {
|
|
|
55
55
|
private resolveCanonicalPackageProperty;
|
|
56
56
|
private validateVersionNumber;
|
|
57
57
|
private resolveUserLicenses;
|
|
58
|
-
private resolveOrgDependentPollingTime;
|
|
59
58
|
private validateFlagsForPackageType;
|
|
60
59
|
/**
|
|
61
60
|
* Cleans invalid attribute(s) from the packageDescriptorJSON
|
|
@@ -15,7 +15,6 @@ const source_deploy_retrieve_1 = require("@salesforce/source-deploy-retrieve");
|
|
|
15
15
|
const testSetup_1 = require("@salesforce/core/lib/testSetup");
|
|
16
16
|
const scratchOrgSettingsGenerator_1 = require("@salesforce/core/lib/org/scratchOrgSettingsGenerator");
|
|
17
17
|
const xml2js = require("xml2js");
|
|
18
|
-
const kit_1 = require("@salesforce/kit");
|
|
19
18
|
const pkgUtils = require("../utils/packageUtils");
|
|
20
19
|
const constants_1 = require("../constants");
|
|
21
20
|
const utils_1 = require("../utils");
|
|
@@ -26,7 +25,6 @@ core_1.Messages.importMessagesDirectory(__dirname);
|
|
|
26
25
|
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'messages');
|
|
27
26
|
const logger = core_1.Logger.childFromRoot('packageVersionCreate');
|
|
28
27
|
const DESCRIPTOR_FILE = 'package2-descriptor.json';
|
|
29
|
-
const POLL_INTERVAL_WITHOUT_VALIDATION_SECONDS = 5;
|
|
30
28
|
class PackageVersionCreate {
|
|
31
29
|
constructor(options) {
|
|
32
30
|
this.options = options;
|
|
@@ -589,15 +587,6 @@ class PackageVersionCreate {
|
|
|
589
587
|
errStr.toString(),
|
|
590
588
|
]);
|
|
591
589
|
}
|
|
592
|
-
let pollInterval = kit_1.Duration.seconds(pkgUtils.POLL_INTERVAL_SECONDS);
|
|
593
|
-
let maxRetries = 0;
|
|
594
|
-
if (options.wait?.milliseconds > 0) {
|
|
595
|
-
if (options.skipvalidation === true) {
|
|
596
|
-
pollInterval = kit_1.Duration.seconds(POLL_INTERVAL_WITHOUT_VALIDATION_SECONDS);
|
|
597
|
-
}
|
|
598
|
-
maxRetries = (60 / pollInterval.seconds) * options.wait.seconds;
|
|
599
|
-
}
|
|
600
|
-
[pollInterval, maxRetries] = await this.resolveOrgDependentPollingTime(resolvedPackageId, options, pollInterval, maxRetries);
|
|
601
590
|
return (await this.listRequestById(createResult.id, this.connection))[0];
|
|
602
591
|
}
|
|
603
592
|
resolveCanonicalPackageProperty(options) {
|
|
@@ -651,27 +640,6 @@ class PackageVersionCreate {
|
|
|
651
640
|
generateProfileInformation: shouldGenerateProfileInformation,
|
|
652
641
|
});
|
|
653
642
|
}
|
|
654
|
-
async resolveOrgDependentPollingTime(resolvedPackageId, options, pollInterval, maxRetries) {
|
|
655
|
-
let pi = pollInterval;
|
|
656
|
-
let mr = maxRetries;
|
|
657
|
-
// If we are polling check to see if the package is Org-Dependent, if so, update the poll time
|
|
658
|
-
if (options.wait) {
|
|
659
|
-
const query = `SELECT IsOrgDependent FROM Package2 WHERE Id = '${resolvedPackageId}'`;
|
|
660
|
-
try {
|
|
661
|
-
const pkgQueryResult = await this.connection.singleRecordQuery(query, {
|
|
662
|
-
tooling: true,
|
|
663
|
-
});
|
|
664
|
-
if (pkgQueryResult.IsOrgDependent) {
|
|
665
|
-
pi = kit_1.Duration.seconds(POLL_INTERVAL_WITHOUT_VALIDATION_SECONDS);
|
|
666
|
-
mr = (60 / pollInterval.seconds) * options.wait.seconds;
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
catch {
|
|
670
|
-
// do nothing
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
return [pi, mr];
|
|
674
|
-
}
|
|
675
643
|
async validateFlagsForPackageType(packageId, options) {
|
|
676
644
|
const packageType = await pkgUtils.getPackageType(packageId, this.connection);
|
|
677
645
|
if (packageType === 'Unlocked') {
|
|
@@ -40,17 +40,16 @@ async function getPackageVersionReport(options) {
|
|
|
40
40
|
const record = records[0];
|
|
41
41
|
record.Version = [record.MajorVersion, record.MinorVersion, record.PatchVersion, record.BuildNumber].join('.');
|
|
42
42
|
const containerOptions = await pkgUtils.getContainerOptions([record.Package2Id], options.connection);
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
record.PackageType = containerOptions.get(record.Package2Id);
|
|
44
|
+
record.AncestorVersion = null;
|
|
45
45
|
if (record.AncestorId) {
|
|
46
46
|
// lookup AncestorVersion value
|
|
47
47
|
const ancestorVersionMap = await pkgUtils.getPackageVersionStrings([record.AncestorId], options.connection);
|
|
48
|
-
|
|
48
|
+
record.AncestorVersion = ancestorVersionMap.get(record.AncestorId);
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
ancestorVersion = null;
|
|
51
|
+
if (record.PackageType !== 'Managed') {
|
|
52
|
+
record.AncestorVersion = null;
|
|
54
53
|
record.AncestorId = null;
|
|
55
54
|
}
|
|
56
55
|
}
|
|
@@ -58,10 +57,9 @@ async function getPackageVersionReport(options) {
|
|
|
58
57
|
record.Package2.IsOrgDependent === true || record.ValidationSkipped === true
|
|
59
58
|
? null
|
|
60
59
|
: record.HasPassedCodeCoverageCheck;
|
|
61
|
-
record.Package2.IsOrgDependent =
|
|
60
|
+
record.Package2.IsOrgDependent = record.PackageType === 'Managed' ? null : !!record.Package2.IsOrgDependent;
|
|
62
61
|
// set HasMetadataRemoved to null Unlocked, otherwise use existing value
|
|
63
|
-
record.HasMetadataRemoved =
|
|
64
|
-
record.AncestorVersion = ancestorVersion;
|
|
62
|
+
record.HasMetadataRemoved = record.PackageType !== 'Managed' ? null : !!record.HasMetadataRemoved;
|
|
65
63
|
return records;
|
|
66
64
|
}
|
|
67
65
|
return [];
|
|
@@ -2,7 +2,7 @@ import { Connection, NamedPackageDir, PackageDir, SfdcUrl, SfError, SfProject }
|
|
|
2
2
|
import { Duration } from '@salesforce/kit';
|
|
3
3
|
import { Many, Nullable } from '@salesforce/ts-types';
|
|
4
4
|
import { SaveError } from 'jsforce';
|
|
5
|
-
import { PackagingSObjects, PackageVersionCreateRequestResult, PackageVersionCreateOptions } from '../interfaces';
|
|
5
|
+
import { PackagingSObjects, PackageVersionCreateRequestResult, PackageVersionCreateOptions, PackageType } from '../interfaces';
|
|
6
6
|
export declare const VERSION_NUMBER_SEP = ".";
|
|
7
7
|
export declare type IdRegistryValue = {
|
|
8
8
|
prefix: string;
|
|
@@ -71,7 +71,7 @@ export declare function getSubscriberPackageVersionId(versionId: string, connect
|
|
|
71
71
|
* @param packageIds The list of package IDs
|
|
72
72
|
* @param connection For tooling query
|
|
73
73
|
*/
|
|
74
|
-
export declare function getContainerOptions(packageIds: string[], connection: Connection): Promise<Map<string,
|
|
74
|
+
export declare function getContainerOptions(packageIds: string[], connection: Connection): Promise<Map<string, PackageType>>;
|
|
75
75
|
/**
|
|
76
76
|
* Return the Package2Version.HasMetadataRemoved field value for the given Id (05i)
|
|
77
77
|
*
|
|
@@ -148,6 +148,22 @@ export declare function convertCamelCaseStringToSentence(stringIn: string): stri
|
|
|
148
148
|
export declare function getPackageAliasesFromId(packageId: string, project: SfProject): string[];
|
|
149
149
|
export declare function findOrCreatePackage(seedPackage: string, connection: Connection): Promise<string>;
|
|
150
150
|
export declare function pollForStatusWithInterval(id: string, retries: number, packageId: string, branch: string, withProject: SfProject, connection: Connection, interval: Duration): Promise<PackageVersionCreateRequestResult>;
|
|
151
|
+
/**
|
|
152
|
+
* Generate package alias json entry for this package version that can be written to sfdx-project.json
|
|
153
|
+
*
|
|
154
|
+
* @param connection
|
|
155
|
+
* @param project SfProject instance for the project
|
|
156
|
+
* @param packageVersionId 04t id of the package to create the alias entry for
|
|
157
|
+
* @param packageVersionNumber that will be appended to the package name to form the alias
|
|
158
|
+
* @param branch
|
|
159
|
+
* @param packageId the 0Ho id
|
|
160
|
+
* @private
|
|
161
|
+
*/
|
|
162
|
+
export declare function generatePackageAliasEntry(connection: Connection, project: SfProject, packageVersionId: string, packageVersionNumber: string, branch: string, packageId: string): Promise<{
|
|
163
|
+
packageAliases: {
|
|
164
|
+
[p: string]: string;
|
|
165
|
+
};
|
|
166
|
+
}>;
|
|
151
167
|
export declare function getSoqlWhereClauseMaxLength(): number;
|
|
152
168
|
export declare function formatDate(date: Date): string;
|
|
153
169
|
export declare function combineSaveErrors(sObject: string, crudOperation: string, errors: SaveError[]): SfError;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveCanonicalPackageProperty = exports.combineSaveErrors = exports.formatDate = exports.getSoqlWhereClauseMaxLength = exports.pollForStatusWithInterval = exports.findOrCreatePackage = exports.getPackageAliasesFromId = exports.convertCamelCaseStringToSentence = exports.getPackageIdFromAlias = exports.getConfigPackageDirectory = exports.getConfigPackageDirectories = exports.getPackageVersionNumber = exports.concatVersion = exports.getAncestorIdHighestRelease = exports.validateAncestorId = exports.getAncestorId = exports.getInClauseItemsCount = exports.queryWithInConditionChunking = exports.getPackageVersionStrings = exports.getHasMetadataRemoved = exports.getContainerOptions = exports.getSubscriberPackageVersionId = exports.getPackageTypeBy04t = exports.getPackageType = exports.escapeInstallationKey = exports.getPackageVersionId = exports.applyErrorAction = exports.massageErrorMessage = exports.isErrorPackageNotAvailable = exports.isErrorFromSPVQueryRestriction = exports.validUrl = exports.validatePatchVersion = exports.validateVersionNumber = exports.validateIdNoThrow = exports.validateId = exports.BY_LABEL = exports.BY_PREFIX = exports.DEFAULT_PACKAGE_DIR = exports.POLL_INTERVAL_SECONDS = exports.SOQL_WHERE_CLAUSE_MAX_LENGTH = exports.INSTALL_URL_BASE = exports.VERSION_NUMBER_SEP = void 0;
|
|
3
|
+
exports.resolveCanonicalPackageProperty = exports.combineSaveErrors = exports.formatDate = exports.getSoqlWhereClauseMaxLength = exports.generatePackageAliasEntry = exports.pollForStatusWithInterval = exports.findOrCreatePackage = exports.getPackageAliasesFromId = exports.convertCamelCaseStringToSentence = exports.getPackageIdFromAlias = exports.getConfigPackageDirectory = exports.getConfigPackageDirectories = exports.getPackageVersionNumber = exports.concatVersion = exports.getAncestorIdHighestRelease = exports.validateAncestorId = exports.getAncestorId = exports.getInClauseItemsCount = exports.queryWithInConditionChunking = exports.getPackageVersionStrings = exports.getHasMetadataRemoved = exports.getContainerOptions = exports.getSubscriberPackageVersionId = exports.getPackageTypeBy04t = exports.getPackageType = exports.escapeInstallationKey = exports.getPackageVersionId = exports.applyErrorAction = exports.massageErrorMessage = exports.isErrorPackageNotAvailable = exports.isErrorFromSPVQueryRestriction = exports.validUrl = exports.validatePatchVersion = exports.validateVersionNumber = exports.validateIdNoThrow = exports.validateId = exports.BY_LABEL = exports.BY_PREFIX = exports.DEFAULT_PACKAGE_DIR = exports.POLL_INTERVAL_SECONDS = exports.SOQL_WHERE_CLAUSE_MAX_LENGTH = exports.INSTALL_URL_BASE = exports.VERSION_NUMBER_SEP = void 0;
|
|
4
4
|
/*
|
|
5
5
|
* Copyright (c) 2022, salesforce.com, inc.
|
|
6
6
|
* All rights reserved.
|
|
@@ -682,11 +682,11 @@ async function pollForStatusWithInterval(id, retries, packageId, branch, withPro
|
|
|
682
682
|
const record = pkgQueryResult.records[0];
|
|
683
683
|
return `${record.MajorVersion}.${record.MinorVersion}.${record.PatchVersion}-${record.BuildNumber}`;
|
|
684
684
|
});
|
|
685
|
-
const newConfig = await
|
|
685
|
+
const newConfig = await generatePackageAliasEntry(connection, withProject, results[0].SubscriberPackageVersionId, packageVersionVersionString, branch, packageId);
|
|
686
686
|
withProject.getSfProjectJson().set('packageAliases', newConfig);
|
|
687
687
|
await withProject.getSfProjectJson().write();
|
|
688
688
|
}
|
|
689
|
-
core_1.Lifecycle.getInstance().emit(Package2VersionStatus.success, {
|
|
689
|
+
await core_1.Lifecycle.getInstance().emit(Package2VersionStatus.success, {
|
|
690
690
|
id,
|
|
691
691
|
packageVersionCreateRequestResult: results[0],
|
|
692
692
|
projectUpdated,
|
|
@@ -706,13 +706,13 @@ async function pollForStatusWithInterval(id, retries, packageId, branch, withPro
|
|
|
706
706
|
}
|
|
707
707
|
status = errors.length !== 0 ? errors.join('\n') : results[0].Error.join('\n');
|
|
708
708
|
}
|
|
709
|
-
core_1.Lifecycle.getInstance().emit(Package2VersionStatus.error, { id, status });
|
|
709
|
+
await core_1.Lifecycle.getInstance().emit(Package2VersionStatus.error, { id, status });
|
|
710
710
|
throw new core_1.SfError(status);
|
|
711
711
|
}
|
|
712
712
|
}
|
|
713
713
|
else {
|
|
714
714
|
const remainingTime = kit_1.Duration.milliseconds(interval.milliseconds * remainingRetries);
|
|
715
|
-
core_1.Lifecycle.getInstance().emit(Package2VersionStatus.inProgress, {
|
|
715
|
+
await core_1.Lifecycle.getInstance().emit(Package2VersionStatus.inProgress, {
|
|
716
716
|
id,
|
|
717
717
|
packageVersionCreateRequestResult: results[0],
|
|
718
718
|
message: '',
|
|
@@ -740,16 +740,15 @@ exports.pollForStatusWithInterval = pollForStatusWithInterval;
|
|
|
740
740
|
* @param packageId the 0Ho id
|
|
741
741
|
* @private
|
|
742
742
|
*/
|
|
743
|
-
async function
|
|
743
|
+
async function generatePackageAliasEntry(connection, project, packageVersionId, packageVersionNumber, branch, packageId) {
|
|
744
744
|
const configContent = project.getSfProjectJson().getContents();
|
|
745
745
|
const packageAliases = configContent.packageAliases || {};
|
|
746
746
|
const aliasForPackageId = getPackageAliasesFromId(packageId, project);
|
|
747
747
|
let packageName;
|
|
748
748
|
if (!aliasForPackageId || aliasForPackageId.length === 0) {
|
|
749
749
|
const query = `SELECT Name FROM Package2 WHERE Id = '${packageId}'`;
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
.then((pkgQueryResult) => pkgQueryResult.records[0]?.Name);
|
|
750
|
+
const package2 = await connection.singleRecordQuery(query, { tooling: true });
|
|
751
|
+
packageName = package2.Name;
|
|
753
752
|
}
|
|
754
753
|
else {
|
|
755
754
|
packageName = aliasForPackageId[0];
|
|
@@ -760,6 +759,7 @@ async function _generatePackageAliasEntry(connection, project, packageVersionId,
|
|
|
760
759
|
packageAliases[packageAlias] = packageVersionId;
|
|
761
760
|
return { packageAliases };
|
|
762
761
|
}
|
|
762
|
+
exports.generatePackageAliasEntry = generatePackageAliasEntry;
|
|
763
763
|
/**
|
|
764
764
|
* Return true if the queryResult.records[0].Status is equal to one of the values in statuses.
|
|
765
765
|
*
|