@salesforce/packaging 0.0.34 → 0.0.36
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 +10 -8
- package/lib/package/packageConvert.js +83 -2
- package/lib/package/packageCreate.js +1 -1
- package/lib/package/packageInstall.d.ts +1 -2
- package/lib/package/packageInstall.js +17 -16
- package/lib/package/packageProfileApi.js +6 -7
- package/lib/package/packageUninstall.js +5 -3
- package/lib/package/packageVersion.js +9 -5
- package/lib/package/packageVersionCreate.js +21 -20
- package/lib/package/packageVersionCreateRequest.js +1 -1
- package/lib/package/packageVersionList.js +1 -1
- package/lib/package1/package1VersionCreate.js +3 -2
- package/lib/utils/packageUtils.d.ts +1 -3
- package/lib/utils/packageUtils.js +2 -83
- package/lib/utils/versionNumber.js +1 -1
- package/messages/messages.md +16 -4
- 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} +0 -4
- package/messages/package_uninstall.md +3 -0
- package/messages/{packageVersionCreate.md → package_version_create.md} +8 -4
- package/messages/pkg_utils.md +122 -0
- package/messages/profile_api.md +15 -0
- package/messages/version_number.md +15 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
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.36](https://github.com/forcedotcom/packaging/compare/v0.0.35...v0.0.36) (2022-09-14)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- standardize event names across classes, methods, and events ([d97c231](https://github.com/forcedotcom/packaging/commit/d97c231928582dd092bf0ce225dffa3298cce8eb))
|
|
10
|
+
|
|
11
|
+
### [0.0.35](https://github.com/forcedotcom/packaging/compare/v0.0.34...v0.0.35) (2022-09-09)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- apply fixes from qa issues ([2949f18](https://github.com/forcedotcom/packaging/commit/2949f1875da2e953977769cd1a8b4d8131fbdc1a))
|
|
16
|
+
|
|
5
17
|
### [0.0.34](https://github.com/forcedotcom/packaging/compare/v0.0.33...v0.0.34) (2022-09-08)
|
|
6
18
|
|
|
7
19
|
### Bug Fixes
|
|
@@ -15,7 +15,7 @@ export interface IPackage {
|
|
|
15
15
|
install(pkgInstallCreateRequest: PackageInstallCreateRequest, options?: PackageInstallOptions): Promise<PackageInstallRequest>;
|
|
16
16
|
getInstallStatus(installRequestId: string): Promise<PackageInstallRequest>;
|
|
17
17
|
list(): Promise<QueryResult<PackagingSObjects.Package2>>;
|
|
18
|
-
uninstall(): Promise<
|
|
18
|
+
uninstall(id: string, wait: Duration): Promise<PackagingSObjects.SubscriberPackageVersionUninstallRequest>;
|
|
19
19
|
update(options: PackageUpdateOptions): Promise<PackageSaveResult>;
|
|
20
20
|
waitForPublish(subscriberPackageVersionKey: string, timeout: number | Duration, installationKey?: string): any;
|
|
21
21
|
getExternalSites(subscriberPackageVersionKey: string, installationKey?: string): any;
|
|
@@ -308,3 +308,33 @@ export interface AncestryRepresentationProducer {
|
|
|
308
308
|
addNode(node: AncestryRepresentationProducer): void;
|
|
309
309
|
produce<T>(): T | string | void;
|
|
310
310
|
}
|
|
311
|
+
export declare const PackageEvents: {
|
|
312
|
+
convert: {
|
|
313
|
+
success: string;
|
|
314
|
+
error: string;
|
|
315
|
+
progress: string;
|
|
316
|
+
};
|
|
317
|
+
install: {
|
|
318
|
+
warning: string;
|
|
319
|
+
presend: string;
|
|
320
|
+
postsend: string;
|
|
321
|
+
status: string;
|
|
322
|
+
'subscriber-status': string;
|
|
323
|
+
};
|
|
324
|
+
uninstall: string;
|
|
325
|
+
};
|
|
326
|
+
export declare const PackageVersionEvents: {
|
|
327
|
+
create: {
|
|
328
|
+
enqueued: string;
|
|
329
|
+
progress: string;
|
|
330
|
+
success: string;
|
|
331
|
+
error: string;
|
|
332
|
+
'timed-out': string;
|
|
333
|
+
'preserve-files': string;
|
|
334
|
+
};
|
|
335
|
+
};
|
|
336
|
+
export declare const Package1VersionEvents: {
|
|
337
|
+
create: {
|
|
338
|
+
progress: string;
|
|
339
|
+
};
|
|
340
|
+
};
|
|
@@ -6,8 +6,38 @@
|
|
|
6
6
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.PackageVersionCreateRequestResultInProgressStatuses = void 0;
|
|
9
|
+
exports.Package1VersionEvents = exports.PackageVersionEvents = exports.PackageEvents = exports.PackageVersionCreateRequestResultInProgressStatuses = void 0;
|
|
10
10
|
const packagingSObjects_1 = require("./packagingSObjects");
|
|
11
11
|
var Package2VersionStatus = packagingSObjects_1.PackagingSObjects.Package2VersionStatus;
|
|
12
12
|
exports.PackageVersionCreateRequestResultInProgressStatuses = Object.values(Package2VersionStatus).filter((status) => !['Queued', 'Success', 'Error'].includes(status));
|
|
13
|
+
exports.PackageEvents = {
|
|
14
|
+
convert: {
|
|
15
|
+
success: 'Package/convert-success',
|
|
16
|
+
error: 'Package/convert-error',
|
|
17
|
+
progress: 'Package/convert-in-progress',
|
|
18
|
+
},
|
|
19
|
+
install: {
|
|
20
|
+
warning: 'Package/install-warning',
|
|
21
|
+
presend: 'Package/install-presend',
|
|
22
|
+
postsend: 'Package/install-postsend',
|
|
23
|
+
status: 'Package/install-status',
|
|
24
|
+
'subscriber-status': 'Package/install-subscriber-status',
|
|
25
|
+
},
|
|
26
|
+
uninstall: 'Package/uninstall',
|
|
27
|
+
};
|
|
28
|
+
exports.PackageVersionEvents = {
|
|
29
|
+
create: {
|
|
30
|
+
enqueued: 'PackageVersion/create-enqueued',
|
|
31
|
+
progress: 'PackageVersion/create-in-progress',
|
|
32
|
+
success: 'PackageVersion/create-success',
|
|
33
|
+
error: 'PackageVersion/create-error',
|
|
34
|
+
'timed-out': 'PackageVersion/create-timed-out',
|
|
35
|
+
'preserve-files': 'PackageVersion/create-preserve-files',
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
exports.Package1VersionEvents = {
|
|
39
|
+
create: {
|
|
40
|
+
progress: 'Package1Version/create-progress',
|
|
41
|
+
},
|
|
42
|
+
};
|
|
13
43
|
//# sourceMappingURL=packagingInterfacesAndType.js.map
|
package/lib/package/package.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare class Package extends AsyncCreatable<PackageOptions> implements I
|
|
|
32
32
|
install(pkgInstallCreateRequest: PackageInstallCreateRequest, options?: PackageInstallOptions): Promise<PackageInstallRequest>;
|
|
33
33
|
getInstallStatus(installRequestId: string): Promise<PackageInstallRequest>;
|
|
34
34
|
list(): Promise<QueryResult<PackagingSObjects.Package2>>;
|
|
35
|
-
uninstall(): Promise<
|
|
35
|
+
uninstall(id: string, wait: Duration): Promise<PackagingSObjects.SubscriberPackageVersionUninstallRequest>;
|
|
36
36
|
/**
|
|
37
37
|
* Reports on the uninstall progress of a package.
|
|
38
38
|
*
|
package/lib/package/package.js
CHANGED
|
@@ -12,6 +12,7 @@ const kit_1 = require("@salesforce/kit");
|
|
|
12
12
|
const packageList_1 = require("./packageList");
|
|
13
13
|
const packageInstall_1 = require("./packageInstall");
|
|
14
14
|
const packageConvert_1 = require("./packageConvert");
|
|
15
|
+
const packageUninstall_1 = require("./packageUninstall");
|
|
15
16
|
const packagePrefixes = {
|
|
16
17
|
PackageId: '0Ho',
|
|
17
18
|
SubscriberPackageVersionId: '04t',
|
|
@@ -70,8 +71,8 @@ class Package extends kit_1.AsyncCreatable {
|
|
|
70
71
|
list() {
|
|
71
72
|
return (0, packageList_1.listPackages)(this.options.connection);
|
|
72
73
|
}
|
|
73
|
-
uninstall() {
|
|
74
|
-
return
|
|
74
|
+
async uninstall(id, wait) {
|
|
75
|
+
return await (0, packageUninstall_1.uninstallPackage)(id, this.options.connection, wait);
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
77
78
|
* Reports on the uninstall progress of a package.
|
|
@@ -3,7 +3,7 @@ import { AsyncCreatable } from '@salesforce/kit';
|
|
|
3
3
|
import { Tree } from '@oclif/core/lib/cli-ux/styled/tree';
|
|
4
4
|
import { Attributes } from 'graphology-types';
|
|
5
5
|
import { AncestryRepresentationProducer, AncestryRepresentationProducerOptions, PackageAncestryNodeOptions, PackageAncestryOptions } from '../interfaces';
|
|
6
|
-
import { VersionNumber } from '../utils
|
|
6
|
+
import { VersionNumber } from '../utils';
|
|
7
7
|
/**
|
|
8
8
|
* A class that represents the package ancestry graph.
|
|
9
9
|
*/
|
|
@@ -26,14 +26,19 @@ const kit_1 = require("@salesforce/kit");
|
|
|
26
26
|
const tree_1 = require("@oclif/core/lib/cli-ux/styled/tree");
|
|
27
27
|
const graphology_traversal_1 = require("graphology-traversal");
|
|
28
28
|
const pkgUtils = require("../utils/packageUtils");
|
|
29
|
-
const
|
|
29
|
+
const utils_1 = require("../utils");
|
|
30
30
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
31
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
31
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_ancestry');
|
|
32
32
|
const SELECT_PACKAGE_VERSION = 'SELECT AncestorId, SubscriberPackageVersionId, MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version';
|
|
33
33
|
const SELECT_PACKAGE_CONTAINER_OPTIONS = 'SELECT ContainerOptions FROM Package2 ';
|
|
34
34
|
const SELECT_PACKAGE_VERSION_CONTAINER_OPTIONS = 'SELECT Package2ContainerOptions FROM SubscriberPackageVersion';
|
|
35
35
|
// Add this to query calls to only show released package versions in the output
|
|
36
36
|
const releasedOnlyFilter = ' AND IsReleased = true';
|
|
37
|
+
const sortAncestryNodeData = (a, b) => {
|
|
38
|
+
const aVersion = new utils_1.VersionNumber(a.options.node.MajorVersion, a.options.node.MinorVersion, a.options.node.PatchVersion, a.options.node.BuildNumber);
|
|
39
|
+
const bVersion = new utils_1.VersionNumber(b.options.node.MajorVersion, b.options.node.MinorVersion, b.options.node.PatchVersion, b.options.node.BuildNumber);
|
|
40
|
+
return aVersion.compareTo(bVersion);
|
|
41
|
+
};
|
|
37
42
|
/**
|
|
38
43
|
* A class that represents the package ancestry graph.
|
|
39
44
|
*/
|
|
@@ -310,11 +315,7 @@ class AncestryJsonProducer {
|
|
|
310
315
|
producers.push(this);
|
|
311
316
|
while (producers.length > 0) {
|
|
312
317
|
const producer = producers.shift();
|
|
313
|
-
producer.
|
|
314
|
-
const aVersion = new versionNumber_1.VersionNumber(a.data.MajorVersion, a.data.MinorVersion, a.data.PatchVersion, a.data.BuildNumber);
|
|
315
|
-
const bVersion = new versionNumber_1.VersionNumber(b.data.MajorVersion, b.data.MinorVersion, b.data.PatchVersion, b.data.BuildNumber);
|
|
316
|
-
return aVersion.compareTo(bVersion);
|
|
317
|
-
});
|
|
318
|
+
producer.children.sort(sortAncestryNodeData);
|
|
318
319
|
producers.push(...producer.children);
|
|
319
320
|
}
|
|
320
321
|
return this.data.children[0];
|
|
@@ -356,6 +357,7 @@ class AncestryDotProducer {
|
|
|
356
357
|
if (producer.options) {
|
|
357
358
|
dotLines.push(AncestryDotProducer.buildDotNode(producer));
|
|
358
359
|
}
|
|
360
|
+
producer.children.sort(sortAncestryNodeData);
|
|
359
361
|
producers.push(...producer.children);
|
|
360
362
|
}
|
|
361
363
|
producers.push(this);
|
|
@@ -382,7 +384,7 @@ class PackageAncestryNode extends kit_1.AsyncCreatable {
|
|
|
382
384
|
_PackageAncestryNode_AncestorId.set(this, void 0);
|
|
383
385
|
_PackageAncestryNode_SubscriberPackageVersionId.set(this, void 0);
|
|
384
386
|
_PackageAncestryNode_depthCounter.set(this, void 0);
|
|
385
|
-
__classPrivateFieldSet(this, _PackageAncestryNode_version, new
|
|
387
|
+
__classPrivateFieldSet(this, _PackageAncestryNode_version, new utils_1.VersionNumber(this.options.MajorVersion, this.options.MinorVersion, this.options.PatchVersion, this.options.BuildNumber), "f");
|
|
386
388
|
__classPrivateFieldSet(this, _PackageAncestryNode_AncestorId, this.options.AncestorId, "f");
|
|
387
389
|
__classPrivateFieldSet(this, _PackageAncestryNode_SubscriberPackageVersionId, this.options.SubscriberPackageVersionId, "f");
|
|
388
390
|
__classPrivateFieldSet(this, _PackageAncestryNode_MajorVersion, typeof this.options.MajorVersion === 'number'
|
|
@@ -14,11 +14,15 @@ const core_1 = require("@salesforce/core");
|
|
|
14
14
|
const kit_1 = require("@salesforce/kit");
|
|
15
15
|
const uniqid_1 = require("../utils/uniqid");
|
|
16
16
|
const pkgUtils = require("../utils/packageUtils");
|
|
17
|
+
const interfaces_1 = require("../interfaces");
|
|
17
18
|
const constants_1 = require("../constants");
|
|
18
19
|
const srcDevUtil = require("../utils/srcDevUtils");
|
|
20
|
+
const utils_1 = require("../utils");
|
|
19
21
|
const packageVersionCreateRequest_1 = require("./packageVersionCreateRequest");
|
|
22
|
+
const pvcr = require("./packageVersionCreateRequest");
|
|
23
|
+
var Package2VersionStatus = interfaces_1.PackagingSObjects.Package2VersionStatus;
|
|
20
24
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
21
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
25
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
|
|
22
26
|
async function convertPackage(pkg, connection, options, project) {
|
|
23
27
|
let maxRetries = 0;
|
|
24
28
|
const branch = 'main';
|
|
@@ -38,7 +42,7 @@ async function convertPackage(pkg, connection, options, project) {
|
|
|
38
42
|
}
|
|
39
43
|
let results;
|
|
40
44
|
if (options.wait) {
|
|
41
|
-
results = await
|
|
45
|
+
results = await pollForStatusWithInterval(createResult.id, maxRetries, packageId, branch, project, connection, new kit_1.Duration(pkgUtils.POLL_INTERVAL_SECONDS, kit_1.Duration.Unit.SECONDS));
|
|
42
46
|
}
|
|
43
47
|
else {
|
|
44
48
|
results = await (0, packageVersionCreateRequest_1.byId)(packageId, connection);
|
|
@@ -82,4 +86,81 @@ async function createRequestObject(packageId, options, packageVersTmpRoot, packa
|
|
|
82
86
|
await fs.promises.rm(packageVersTmpRoot, { recursive: true });
|
|
83
87
|
return requestObject;
|
|
84
88
|
}
|
|
89
|
+
async function pollForStatusWithInterval(id, retries, packageId, branch, withProject, connection, interval) {
|
|
90
|
+
let remainingRetries = retries;
|
|
91
|
+
const pollingClient = await core_1.PollingClient.create({
|
|
92
|
+
poll: async () => {
|
|
93
|
+
const results = await pvcr.byId(id, connection);
|
|
94
|
+
if (_isStatusEqualTo(results, [Package2VersionStatus.success, Package2VersionStatus.error])) {
|
|
95
|
+
// complete
|
|
96
|
+
if (_isStatusEqualTo(results, [Package2VersionStatus.success])) {
|
|
97
|
+
// update sfdx-project.json
|
|
98
|
+
let projectUpdated = false;
|
|
99
|
+
if (withProject && !process.env.SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE) {
|
|
100
|
+
projectUpdated = true;
|
|
101
|
+
const query = `SELECT MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version WHERE Id = '${results[0].Package2VersionId}'`;
|
|
102
|
+
const packageVersionVersionString = await connection.tooling
|
|
103
|
+
.query(query)
|
|
104
|
+
.then((pkgQueryResult) => {
|
|
105
|
+
const record = pkgQueryResult.records[0];
|
|
106
|
+
return `${record.MajorVersion}.${record.MinorVersion}.${record.PatchVersion}-${record.BuildNumber}`;
|
|
107
|
+
});
|
|
108
|
+
const newConfig = await (0, utils_1.generatePackageAliasEntry)(connection, withProject, results[0].SubscriberPackageVersionId, packageVersionVersionString, branch, packageId);
|
|
109
|
+
withProject.getSfProjectJson().set('packageAliases', newConfig);
|
|
110
|
+
await withProject.getSfProjectJson().write();
|
|
111
|
+
}
|
|
112
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.convert.success, {
|
|
113
|
+
id,
|
|
114
|
+
packageVersionCreateRequestResult: results[0],
|
|
115
|
+
projectUpdated,
|
|
116
|
+
});
|
|
117
|
+
return { completed: true, payload: results[0] };
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
let status = 'Unknown Error';
|
|
121
|
+
if (results?.length > 0 && results[0].Error.length > 0) {
|
|
122
|
+
const errors = [];
|
|
123
|
+
// for multiple errors, display one per line prefixed with (x)
|
|
124
|
+
if (results[0].Error.length > 1) {
|
|
125
|
+
results[0].Error.forEach((error) => {
|
|
126
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
127
|
+
errors.push(`(${errors.length + 1}) ${error}`);
|
|
128
|
+
});
|
|
129
|
+
errors.unshift(messages.getMessage('versionCreateFailedWithMultipleErrors'));
|
|
130
|
+
}
|
|
131
|
+
status = errors.length !== 0 ? errors.join('\n') : results[0].Error.join('\n');
|
|
132
|
+
}
|
|
133
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.convert.error, { id, status });
|
|
134
|
+
throw new core_1.SfError(status);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const remainingTime = kit_1.Duration.seconds(interval.seconds * remainingRetries);
|
|
139
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.convert.progress, {
|
|
140
|
+
id,
|
|
141
|
+
packageVersionCreateRequestResult: results[0],
|
|
142
|
+
message: '',
|
|
143
|
+
timeRemaining: remainingTime,
|
|
144
|
+
});
|
|
145
|
+
const logger = core_1.Logger.childFromRoot('packageConvert');
|
|
146
|
+
logger.info(`Request in progress. Sleeping ${interval.seconds} seconds. Will wait a total of ${remainingTime.seconds} more seconds before timing out. Current Status='${(0, utils_1.convertCamelCaseStringToSentence)(results[0]?.Status)}'`);
|
|
147
|
+
remainingRetries--;
|
|
148
|
+
return { completed: false, payload: results[0] };
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
frequency: kit_1.Duration.seconds(interval.seconds),
|
|
152
|
+
timeout: kit_1.Duration.seconds(interval.seconds * retries),
|
|
153
|
+
});
|
|
154
|
+
return pollingClient.subscribe();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Return true if the queryResult.records[0].Status is equal to one of the values in statuses.
|
|
158
|
+
*
|
|
159
|
+
* @param results to examine
|
|
160
|
+
* @param statuses array of statuses to look for
|
|
161
|
+
* @returns {boolean} if one of the values in status is found.
|
|
162
|
+
*/
|
|
163
|
+
function _isStatusEqualTo(results, statuses) {
|
|
164
|
+
return results?.length <= 0 ? false : statuses?.some((status) => results[0].Status === status);
|
|
165
|
+
}
|
|
85
166
|
//# sourceMappingURL=packageConvert.js.map
|
|
@@ -11,7 +11,7 @@ const core_1 = require("@salesforce/core");
|
|
|
11
11
|
const ts_types_1 = require("@salesforce/ts-types");
|
|
12
12
|
const pkgUtils = require("../utils/packageUtils");
|
|
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_create');
|
|
15
15
|
function _createPackageRequestFromContext(project, options) {
|
|
16
16
|
const namespace = options.noNamespace ? '' : project.getSfProjectJson().getContents().namespace || '';
|
|
17
17
|
return {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Connection } from '@salesforce/core';
|
|
2
2
|
import { Optional } from '@salesforce/ts-types';
|
|
3
3
|
import { Duration } from '@salesforce/kit';
|
|
4
|
-
import { PackagingSObjects } from '../interfaces';
|
|
5
|
-
import { PackageInstallOptions, PackageInstallCreateRequest } from '../interfaces/packagingInterfacesAndType';
|
|
4
|
+
import { PackagingSObjects, PackageInstallOptions, PackageInstallCreateRequest } from '../interfaces';
|
|
6
5
|
import PackageInstallRequest = PackagingSObjects.PackageInstallRequest;
|
|
7
6
|
export declare function installPackage(connection: Connection, pkgInstallCreateRequest: PackageInstallCreateRequest, options?: PackageInstallOptions): Promise<PackageInstallRequest>;
|
|
8
7
|
/**
|
|
@@ -10,10 +10,11 @@ exports.waitForPublish = exports.getStatus = exports.getExternalSites = exports.
|
|
|
10
10
|
const core_1 = require("@salesforce/core");
|
|
11
11
|
const ts_types_1 = require("@salesforce/ts-types");
|
|
12
12
|
const kit_1 = require("@salesforce/kit");
|
|
13
|
-
const
|
|
13
|
+
const utils_1 = require("../utils");
|
|
14
14
|
const constants_1 = require("../constants");
|
|
15
|
+
const interfaces_1 = require("../interfaces");
|
|
15
16
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
16
|
-
const installMsgs = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
17
|
+
const installMsgs = core_1.Messages.loadMessages('@salesforce/packaging', 'package_install');
|
|
17
18
|
let logger;
|
|
18
19
|
const getLogger = () => {
|
|
19
20
|
if (!logger) {
|
|
@@ -32,25 +33,25 @@ async function installPackage(connection, pkgInstallCreateRequest, options) {
|
|
|
32
33
|
};
|
|
33
34
|
const request = Object.assign({}, defaults, pkgInstallCreateRequest);
|
|
34
35
|
if (request.Password) {
|
|
35
|
-
request.Password = (0,
|
|
36
|
+
request.Password = (0, utils_1.escapeInstallationKey)(request.Password);
|
|
36
37
|
}
|
|
37
|
-
const pkgType = await (0,
|
|
38
|
+
const pkgType = await (0, utils_1.getPackageTypeBy04t)(request.SubscriberPackageVersionKey, connection, request.Password);
|
|
38
39
|
// Only unlocked packages can change the UpgradeType and ApexCompile options from the defaults.
|
|
39
40
|
if (pkgType !== 'Unlocked') {
|
|
40
41
|
if (request.UpgradeType !== defaults.UpgradeType) {
|
|
41
42
|
const msg = installMsgs.getMessage('upgradeTypeOnlyForUnlockedWarning');
|
|
42
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
43
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install.warning, msg);
|
|
43
44
|
delete request.UpgradeType;
|
|
44
45
|
}
|
|
45
46
|
if (request.ApexCompileType !== defaults.ApexCompileType) {
|
|
46
47
|
const msg = installMsgs.getMessage('apexCompileOnlyForUnlockedWarning');
|
|
47
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
48
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install.warning, msg);
|
|
48
49
|
delete request.ApexCompileType;
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
52
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install.presend, request);
|
|
52
53
|
const result = await connection.tooling.create('PackageInstallRequest', request);
|
|
53
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
54
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install.postsend, result);
|
|
54
55
|
const packageInstallRequestId = result.id;
|
|
55
56
|
if (!packageInstallRequestId) {
|
|
56
57
|
throw installMsgs.createError('packageInstallRequestError', [
|
|
@@ -78,7 +79,7 @@ async function getExternalSites(connection, subscriberPackageVersionId, installa
|
|
|
78
79
|
const queryNoKey = `SELECT RemoteSiteSettings, CspTrustedSites FROM SubscriberPackageVersion WHERE Id ='${subscriberPackageVersionId}'`;
|
|
79
80
|
let queryResult;
|
|
80
81
|
try {
|
|
81
|
-
const escapedInstallationKey = installationKey ? (0,
|
|
82
|
+
const escapedInstallationKey = installationKey ? (0, utils_1.escapeInstallationKey)(installationKey) : null;
|
|
82
83
|
const queryWithKey = `${queryNoKey} AND InstallationKey ='${escapedInstallationKey}'`;
|
|
83
84
|
getLogger().debug(`Checking package: [${subscriberPackageVersionId}] for external sites`);
|
|
84
85
|
queryResult = await connection.tooling.query(queryWithKey);
|
|
@@ -86,7 +87,7 @@ async function getExternalSites(connection, subscriberPackageVersionId, installa
|
|
|
86
87
|
catch (e) {
|
|
87
88
|
// First check for Implementation Restriction error that is enforced in 214, before it was possible to query
|
|
88
89
|
// against InstallationKey, otherwise surface the error.
|
|
89
|
-
if (e instanceof Error && (0,
|
|
90
|
+
if (e instanceof Error && (0, utils_1.isErrorFromSPVQueryRestriction)(e)) {
|
|
90
91
|
queryResult = await connection.tooling.query(queryNoKey);
|
|
91
92
|
}
|
|
92
93
|
else {
|
|
@@ -132,7 +133,7 @@ async function pollStatus(connection, installRequestId, options) {
|
|
|
132
133
|
poll: async () => {
|
|
133
134
|
packageInstallRequest = await getStatus(connection, installRequestId);
|
|
134
135
|
getLogger().debug(installMsgs.getMessage('packageInstallPolling', [packageInstallRequest?.Status]));
|
|
135
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
136
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install.status, packageInstallRequest);
|
|
136
137
|
if (['SUCCESS', 'ERROR'].includes(packageInstallRequest?.Status)) {
|
|
137
138
|
return { completed: true, payload: packageInstallRequest };
|
|
138
139
|
}
|
|
@@ -166,18 +167,18 @@ async function waitForPublish(connection, subscriberPackageVersionId, timeout, i
|
|
|
166
167
|
poll: async () => {
|
|
167
168
|
const QUERY_NO_KEY = `SELECT Id, SubscriberPackageId, InstallValidationStatus FROM SubscriberPackageVersion WHERE Id ='${subscriberPackageVersionId}'`;
|
|
168
169
|
try {
|
|
169
|
-
const escapedInstallationKey = installationKey ? (0,
|
|
170
|
+
const escapedInstallationKey = installationKey ? (0, utils_1.escapeInstallationKey)(installationKey) : null;
|
|
170
171
|
const queryWithKey = `${QUERY_NO_KEY} AND InstallationKey ='${escapedInstallationKey}'`;
|
|
171
172
|
queryResult = await connection.tooling.query(queryWithKey);
|
|
172
173
|
}
|
|
173
174
|
catch (e) {
|
|
174
175
|
// Check first for Implementation Restriction error that is enforced in 214, before it was possible to query
|
|
175
176
|
// against InstallationKey, otherwise surface the error.
|
|
176
|
-
if (e instanceof Error && (0,
|
|
177
|
+
if (e instanceof Error && (0, utils_1.isErrorFromSPVQueryRestriction)(e)) {
|
|
177
178
|
queryResult = await connection.tooling.query(QUERY_NO_KEY);
|
|
178
179
|
}
|
|
179
180
|
else {
|
|
180
|
-
if (e instanceof Error && !(0,
|
|
181
|
+
if (e instanceof Error && !(0, utils_1.isErrorPackageNotAvailable)(e)) {
|
|
181
182
|
throw e;
|
|
182
183
|
}
|
|
183
184
|
}
|
|
@@ -188,14 +189,14 @@ async function waitForPublish(connection, subscriberPackageVersionId, timeout, i
|
|
|
188
189
|
let installValidationStatus;
|
|
189
190
|
if (queryResult?.records?.length) {
|
|
190
191
|
installValidationStatus = queryResult.records[0].InstallValidationStatus;
|
|
191
|
-
await core_1.Lifecycle.getInstance().emit('
|
|
192
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install['subscriber-status'], installValidationStatus);
|
|
192
193
|
if (!['PACKAGE_UNAVAILABLE', 'UNINSTALL_IN_PROGRESS'].includes(installValidationStatus)) {
|
|
193
194
|
return { completed: true, payload: queryResult };
|
|
194
195
|
}
|
|
195
196
|
}
|
|
196
197
|
const tokens = installValidationStatus ? [` Status = ${installValidationStatus}`] : [];
|
|
197
198
|
getLogger().debug(installMsgs.getMessage('publishWaitProgress', tokens));
|
|
198
|
-
await core_1.Lifecycle.getInstance().emit('
|
|
199
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageEvents.install['subscriber-status'], installValidationStatus);
|
|
199
200
|
return { completed: false, payload: queryResult };
|
|
200
201
|
},
|
|
201
202
|
};
|
|
@@ -14,8 +14,7 @@ const xmldom_1 = require("@xmldom/xmldom");
|
|
|
14
14
|
const core_1 = require("@salesforce/core");
|
|
15
15
|
const kit_1 = require("@salesforce/kit");
|
|
16
16
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
17
|
-
|
|
18
|
-
const profileApiMessages = core_1.Messages.loadMessages('@salesforce/packaging', 'messages');
|
|
17
|
+
const profileApiMessages = core_1.Messages.loadMessages('@salesforce/packaging', 'profile_api');
|
|
19
18
|
/*
|
|
20
19
|
* This class provides functions used to re-write .profiles in the workspace when creating a package2 version.
|
|
21
20
|
* All profiles found in the workspaces are extracted out and then re-written to only include metadata in the profile
|
|
@@ -256,22 +255,22 @@ class ProfileInformation {
|
|
|
256
255
|
this.settingsRemoved.push(setting);
|
|
257
256
|
}
|
|
258
257
|
logDebug() {
|
|
259
|
-
let info = profileApiMessages.getMessage('
|
|
258
|
+
let info = profileApiMessages.getMessage('addProfileToPackage', [this.ProfileName, this.ProfilePath]);
|
|
260
259
|
this.settingsRemoved.forEach((setting) => {
|
|
261
|
-
info += '\n\t' + profileApiMessages.getMessage('
|
|
260
|
+
info += '\n\t' + profileApiMessages.getMessage('removeProfileSetting', [setting, this.ProfileName]);
|
|
262
261
|
});
|
|
263
262
|
if (!this.IsPackaged) {
|
|
264
|
-
info += '\n\t' + profileApiMessages.getMessage('
|
|
263
|
+
info += '\n\t' + profileApiMessages.getMessage('removeProfile', [this.ProfileName]);
|
|
265
264
|
}
|
|
266
265
|
info += '\n';
|
|
267
266
|
return info;
|
|
268
267
|
}
|
|
269
268
|
logInfo() {
|
|
270
269
|
if (this.IsPackaged) {
|
|
271
|
-
return profileApiMessages.getMessage('
|
|
270
|
+
return profileApiMessages.getMessage('addProfileToPackage', [this.ProfileName, this.ProfilePath]);
|
|
272
271
|
}
|
|
273
272
|
else {
|
|
274
|
-
return profileApiMessages.getMessage('
|
|
273
|
+
return profileApiMessages.getMessage('profileNotIncluded', [this.ProfileName]);
|
|
275
274
|
}
|
|
276
275
|
}
|
|
277
276
|
}
|
|
@@ -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) {
|
|
@@ -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");
|
|
@@ -114,7 +115,7 @@ class PackageVersion {
|
|
|
114
115
|
report = await this.getCreateVersionReport(createPackageVersionRequestId);
|
|
115
116
|
switch (report.Status) {
|
|
116
117
|
case 'Queued':
|
|
117
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
118
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.enqueued, { ...report, remainingWaitTime });
|
|
118
119
|
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds - polling.frequency.seconds);
|
|
119
120
|
return {
|
|
120
121
|
completed: false,
|
|
@@ -126,18 +127,21 @@ class PackageVersion {
|
|
|
126
127
|
case 'VerifyingDependencies':
|
|
127
128
|
case 'VerifyingMetadata':
|
|
128
129
|
case 'FinalizingPackageVersion':
|
|
129
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
130
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.progress, {
|
|
131
|
+
...report,
|
|
132
|
+
remainingWaitTime,
|
|
133
|
+
});
|
|
130
134
|
remainingWaitTime = kit_1.Duration.seconds(remainingWaitTime.seconds - polling.frequency.seconds);
|
|
131
135
|
return {
|
|
132
136
|
completed: false,
|
|
133
137
|
payload: report,
|
|
134
138
|
};
|
|
135
139
|
case 'Success':
|
|
136
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
140
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.success, report);
|
|
137
141
|
await this.updateProjectWithPackageVersion(this.project, report);
|
|
138
142
|
return { completed: true, payload: report };
|
|
139
143
|
case 'Error':
|
|
140
|
-
await core_1.Lifecycle.getInstance().emit(
|
|
144
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create.error, report);
|
|
141
145
|
return { completed: true, payload: report };
|
|
142
146
|
}
|
|
143
147
|
},
|
|
@@ -148,7 +152,7 @@ class PackageVersion {
|
|
|
148
152
|
return pollingClient.subscribe();
|
|
149
153
|
}
|
|
150
154
|
catch (err) {
|
|
151
|
-
await core_1.Lifecycle.getInstance().emit('timed-out', report);
|
|
155
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create['timed-out'], report);
|
|
152
156
|
throw (0, utils_1.applyErrorAction)(err);
|
|
153
157
|
}
|
|
154
158
|
}
|
|
@@ -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 {
|
|
@@ -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,7 @@ 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
|
-
pkgUtils.validateVersionNumber(dependency.versionNumber,
|
|
95
|
+
pkgUtils.validateVersionNumber(dependency.versionNumber, utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
|
|
95
96
|
// Validate that the Package2 id exists on the server
|
|
96
97
|
const query = `SELECT Id FROM Package2 WHERE Id = '${dependency.packageId}'`;
|
|
97
98
|
const result = await this.connection.tooling.query(query);
|
|
@@ -114,7 +115,7 @@ class PackageVersionCreate {
|
|
|
114
115
|
// if a 04t id is specified just use it.
|
|
115
116
|
return dependency;
|
|
116
117
|
}
|
|
117
|
-
const versionNumber =
|
|
118
|
+
const versionNumber = utils_1.VersionNumber.from(dependency.versionNumber);
|
|
118
119
|
const buildNumber = versionNumber.build;
|
|
119
120
|
// use the dependency.branch if present otherwise use the branch of the version being created
|
|
120
121
|
const branch = dependency.branch || dependency.branch === '' ? dependency.branch : this.options.branch;
|
|
@@ -124,7 +125,7 @@ class PackageVersionCreate {
|
|
|
124
125
|
// now that we have a full build number, query for the associated 04t.
|
|
125
126
|
// because the build number may not be unique across versions, add in conditionals for
|
|
126
127
|
// the branch or the RELEASED token (if used)
|
|
127
|
-
const branchOrReleasedCondition = buildNumber ===
|
|
128
|
+
const branchOrReleasedCondition = buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
|
|
128
129
|
? 'AND IsReleased = true'
|
|
129
130
|
: `AND Branch = ${branchString}`;
|
|
130
131
|
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 +143,7 @@ class PackageVersionCreate {
|
|
|
142
143
|
// warn user of the resolved build number when LATEST and RELEASED keywords are used
|
|
143
144
|
if (versionNumber.isbuildKeyword()) {
|
|
144
145
|
versionNumber.build = resolvedBuildNumber;
|
|
145
|
-
if (buildNumber ===
|
|
146
|
+
if (buildNumber === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
|
|
146
147
|
logger.info(messages.getMessage('buildNumberResolvedForLatest', [
|
|
147
148
|
dependency.package,
|
|
148
149
|
versionNumber.toString(),
|
|
@@ -150,7 +151,7 @@ class PackageVersionCreate {
|
|
|
150
151
|
dependency.subscriberPackageVersionId,
|
|
151
152
|
]));
|
|
152
153
|
}
|
|
153
|
-
else if (buildNumber ===
|
|
154
|
+
else if (buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
|
|
154
155
|
logger.info(messages.getMessage('buildNumberResolvedForReleased', [
|
|
155
156
|
dependency.package,
|
|
156
157
|
versionNumber.toString(),
|
|
@@ -172,18 +173,18 @@ class PackageVersionCreate {
|
|
|
172
173
|
// query for the LATEST or RELEASED build number (excluding deleted versions)
|
|
173
174
|
let branchCondition = '';
|
|
174
175
|
let releasedCondition = '';
|
|
175
|
-
if (versionNumber[3] ===
|
|
176
|
+
if (versionNumber[3] === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
|
|
176
177
|
// respect the branch when querying for LATEST
|
|
177
178
|
const branchString = !branch || branch === '' ? 'null' : `'${branch}'`;
|
|
178
179
|
branchCondition = `AND Branch = ${branchString}`;
|
|
179
180
|
}
|
|
180
|
-
else if (versionNumber[3] ===
|
|
181
|
+
else if (versionNumber[3] === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
|
|
181
182
|
releasedCondition = 'AND IsReleased = true';
|
|
182
183
|
}
|
|
183
184
|
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
185
|
const results = await this.connection.tooling.query(query);
|
|
185
186
|
if (results.records?.length === 0 || results.records[0].expr0 == null) {
|
|
186
|
-
if (versionNumber.build ===
|
|
187
|
+
if (versionNumber.build === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
|
|
187
188
|
throw messages.createError('noReleaseVersionFound', [packageId, versionNumber.toString()]);
|
|
188
189
|
}
|
|
189
190
|
else {
|
|
@@ -208,7 +209,7 @@ class PackageVersionCreate {
|
|
|
208
209
|
};
|
|
209
210
|
if (preserveFiles) {
|
|
210
211
|
const message = messages.getMessage('tempFileLocation', [packageVersTmpRoot]);
|
|
211
|
-
await core_1.Lifecycle.getInstance().emit('
|
|
212
|
+
await core_1.Lifecycle.getInstance().emit(interfaces_1.PackageVersionEvents.create['preserve-files'], {
|
|
212
213
|
location: packageVersTmpRoot,
|
|
213
214
|
message,
|
|
214
215
|
});
|
|
@@ -285,7 +286,7 @@ class PackageVersionCreate {
|
|
|
285
286
|
// branch can be set via options or descriptor; option takes precedence
|
|
286
287
|
this.options.branch = this.options.branch ?? packageDescriptorJson.branch;
|
|
287
288
|
const resultValues = await Promise.all(!dependencies ? [] : dependencies.map((dependency) => this.retrieveSubscriberPackageVersionId(dependency)));
|
|
288
|
-
const ancestorId = await (0,
|
|
289
|
+
const ancestorId = await (0, utils_2.getAncestorId)(packageDescriptorJson, this.options.project, this.options.connection, this.options.versionnumber ?? packageDescriptorJson.versionNumber, this.options.skipancestorcheck);
|
|
289
290
|
// If dependencies exist, the resultValues array will contain the dependencies populated with a resolved
|
|
290
291
|
// subscriber pkg version id.
|
|
291
292
|
if (resultValues.length > 0) {
|
|
@@ -351,19 +352,19 @@ class PackageVersionCreate {
|
|
|
351
352
|
});
|
|
352
353
|
await fs.promises.writeFile(path.join(packageVersMetadataFolder, 'package.xml'), xml, 'utf-8');
|
|
353
354
|
// Zip the packageVersMetadataFolder folder and put the zip in {packageVersBlobDirectory}/package.zip
|
|
354
|
-
await (0,
|
|
355
|
+
await (0, utils_2.zipDir)(packageVersMetadataFolder, metadataZipFile);
|
|
355
356
|
if (hasUnpackagedMetadata) {
|
|
356
357
|
// Zip the unpackagedMetadataFolder folder and put the zip in {packageVersBlobDirectory}/{unpackagedMetadataZipFile}
|
|
357
|
-
await (0,
|
|
358
|
+
await (0, utils_2.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
|
|
358
359
|
}
|
|
359
360
|
// Zip up the expanded settings (if present)
|
|
360
361
|
if (settingsGenerator.hasSettings()) {
|
|
361
362
|
await settingsGenerator.createDeploy();
|
|
362
363
|
await settingsGenerator.createDeployPackageContents(this.apiVersionFromPackageXml);
|
|
363
|
-
await (0,
|
|
364
|
+
await (0, utils_2.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
|
|
364
365
|
}
|
|
365
366
|
// Zip the Version Info and package.zip files into another zip
|
|
366
|
-
await (0,
|
|
367
|
+
await (0, utils_2.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
|
|
367
368
|
}
|
|
368
369
|
resolveApexTestPermissions(packageDescriptorJson) {
|
|
369
370
|
// Process permissionSet and permissionSetLicenses that should be enabled when running Apex tests
|
|
@@ -418,7 +419,7 @@ class PackageVersionCreate {
|
|
|
418
419
|
throw messages.createError('errorEmptyPackageDirs');
|
|
419
420
|
}
|
|
420
421
|
// 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,
|
|
422
|
+
this.packageAlias = (0, utils_2.getPackageAliasesFromId)(this.options.packageId, this.options.project).join();
|
|
422
423
|
this.packageId = this.options.packageId;
|
|
423
424
|
// set on the class, so we can access them in other methods without redoing this logic
|
|
424
425
|
this.packageObject = this.project
|
|
@@ -491,8 +492,8 @@ class PackageVersionCreate {
|
|
|
491
492
|
if (!packageDescriptorJson.versionName) {
|
|
492
493
|
const versionNumber = packageDescriptorJson.versionNumber;
|
|
493
494
|
packageDescriptorJson.versionName =
|
|
494
|
-
versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] ===
|
|
495
|
-
? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP +
|
|
495
|
+
versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] === utils_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN
|
|
496
|
+
? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP + utils_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN))
|
|
496
497
|
: versionNumber;
|
|
497
498
|
logger.warn(options, messages.getMessage('defaultVersionName', [packageDescriptorJson.versionName]));
|
|
498
499
|
}
|
|
@@ -11,7 +11,7 @@ const util = require("util");
|
|
|
11
11
|
const core_1 = require("@salesforce/core");
|
|
12
12
|
const packageUtils = require("../utils/packageUtils");
|
|
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
|
const STATUS_ERROR = 'Error';
|
|
16
16
|
const QUERY = 'SELECT Id, Status, Package2Id, Package2VersionId, Package2Version.SubscriberPackageVersionId, Tag, Branch, ' +
|
|
17
17
|
'CreatedDate, Package2Version.HasMetadataRemoved, CreatedById ' +
|
|
@@ -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, ' +
|
|
@@ -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) {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Connection, NamedPackageDir, PackageDir, SfdcUrl, SfError, SfProject } from '@salesforce/core';
|
|
2
|
-
import { Duration } from '@salesforce/kit';
|
|
3
2
|
import { Many, Nullable } from '@salesforce/ts-types';
|
|
4
3
|
import { SaveError } from 'jsforce';
|
|
5
|
-
import { PackageDescriptorJson, PackageType,
|
|
4
|
+
import { PackageDescriptorJson, PackageType, PackagingSObjects } from '../interfaces';
|
|
6
5
|
export declare const VERSION_NUMBER_SEP = ".";
|
|
7
6
|
export declare type IdRegistryValue = {
|
|
8
7
|
prefix: string;
|
|
@@ -136,7 +135,6 @@ export declare function convertCamelCaseStringToSentence(stringIn: string): stri
|
|
|
136
135
|
*/
|
|
137
136
|
export declare function getPackageAliasesFromId(packageId: string, project: SfProject): string[];
|
|
138
137
|
export declare function findOrCreatePackage2(seedPackage: string, connection: Connection): Promise<string>;
|
|
139
|
-
export declare function pollForStatusWithInterval(id: string, retries: number, packageId: string, branch: string, withProject: SfProject, connection: Connection, interval: Duration): Promise<PackageVersionCreateRequestResult>;
|
|
140
138
|
/**
|
|
141
139
|
* Generate package alias json entry for this package version that can be written to sfdx-project.json
|
|
142
140
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.combineSaveErrors = exports.formatDate = exports.generatePackageAliasEntry = exports.
|
|
3
|
+
exports.combineSaveErrors = exports.formatDate = exports.generatePackageAliasEntry = exports.findOrCreatePackage2 = exports.getPackageAliasesFromId = exports.convertCamelCaseStringToSentence = exports.getPackageIdFromAlias = exports.getConfigPackageDirectory = exports.getConfigPackageDirectories = exports.getPackageVersionNumber = exports.concatVersion = exports.getAncestorIdHighestRelease = exports.getAncestorId = exports.validateAncestorId = 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.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.
|
|
@@ -10,12 +10,9 @@ exports.combineSaveErrors = exports.formatDate = exports.generatePackageAliasEnt
|
|
|
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");
|
|
14
|
-
const pvcr = require("../package/packageVersionCreateRequest");
|
|
15
13
|
const versionNumber_1 = require("./versionNumber");
|
|
16
|
-
var Package2VersionStatus = interfaces_1.PackagingSObjects.Package2VersionStatus;
|
|
17
14
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
18
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
15
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'pkg_utils');
|
|
19
16
|
exports.VERSION_NUMBER_SEP = '.';
|
|
20
17
|
const INVALID_TYPE_REGEX = /[\w]*(sObject type '[A-Za-z]*Package[2]?[A-Za-z]*' is not supported)[\w]*/im;
|
|
21
18
|
const ID_REGISTRY = [
|
|
@@ -47,7 +44,6 @@ exports.DEFAULT_PACKAGE_DIR = {
|
|
|
47
44
|
versionNumber: '0.1.0.NEXT',
|
|
48
45
|
default: true,
|
|
49
46
|
};
|
|
50
|
-
const logger = core_1.Logger.childFromRoot('packageUtils');
|
|
51
47
|
exports.BY_PREFIX = (() => {
|
|
52
48
|
return Object.fromEntries(ID_REGISTRY.map((id) => [id.prefix, { prefix: id.prefix, label: id.label }]));
|
|
53
49
|
})();
|
|
@@ -643,73 +639,6 @@ async function findOrCreatePackage2(seedPackage, connection) {
|
|
|
643
639
|
return createResult.id;
|
|
644
640
|
}
|
|
645
641
|
exports.findOrCreatePackage2 = findOrCreatePackage2;
|
|
646
|
-
async function pollForStatusWithInterval(id, retries, packageId, branch, withProject, connection, interval) {
|
|
647
|
-
let remainingRetries = retries;
|
|
648
|
-
const pollingClient = await core_1.PollingClient.create({
|
|
649
|
-
poll: async () => {
|
|
650
|
-
const results = await pvcr.byId(id, connection);
|
|
651
|
-
if (_isStatusEqualTo(results, [Package2VersionStatus.success, Package2VersionStatus.error])) {
|
|
652
|
-
// complete
|
|
653
|
-
if (_isStatusEqualTo(results, [Package2VersionStatus.success])) {
|
|
654
|
-
// update sfdx-project.json
|
|
655
|
-
let projectUpdated = false;
|
|
656
|
-
if (withProject && !process.env.SFDX_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE) {
|
|
657
|
-
projectUpdated = true;
|
|
658
|
-
const query = `SELECT MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version WHERE Id = '${results[0].Package2VersionId}'`;
|
|
659
|
-
const packageVersionVersionString = await connection.tooling
|
|
660
|
-
.query(query)
|
|
661
|
-
.then((pkgQueryResult) => {
|
|
662
|
-
const record = pkgQueryResult.records[0];
|
|
663
|
-
return `${record.MajorVersion}.${record.MinorVersion}.${record.PatchVersion}-${record.BuildNumber}`;
|
|
664
|
-
});
|
|
665
|
-
const newConfig = await generatePackageAliasEntry(connection, withProject, results[0].SubscriberPackageVersionId, packageVersionVersionString, branch, packageId);
|
|
666
|
-
withProject.getSfProjectJson().set('packageAliases', newConfig);
|
|
667
|
-
await withProject.getSfProjectJson().write();
|
|
668
|
-
}
|
|
669
|
-
await core_1.Lifecycle.getInstance().emit(Package2VersionStatus.success, {
|
|
670
|
-
id,
|
|
671
|
-
packageVersionCreateRequestResult: results[0],
|
|
672
|
-
projectUpdated,
|
|
673
|
-
});
|
|
674
|
-
return { completed: true, payload: results[0] };
|
|
675
|
-
}
|
|
676
|
-
else {
|
|
677
|
-
let status = 'Unknown Error';
|
|
678
|
-
if (results?.length > 0 && results[0].Error.length > 0) {
|
|
679
|
-
const errors = [];
|
|
680
|
-
// for multiple errors, display one per line prefixed with (x)
|
|
681
|
-
if (results[0].Error.length > 1) {
|
|
682
|
-
results[0].Error.forEach((error) => {
|
|
683
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
684
|
-
errors.push(`(${errors.length + 1}) ${error}`);
|
|
685
|
-
});
|
|
686
|
-
errors.unshift(messages.getMessage('versionCreateFailedWithMultipleErrors'));
|
|
687
|
-
}
|
|
688
|
-
status = errors.length !== 0 ? errors.join('\n') : results[0].Error.join('\n');
|
|
689
|
-
}
|
|
690
|
-
await core_1.Lifecycle.getInstance().emit(Package2VersionStatus.error, { id, status });
|
|
691
|
-
throw new core_1.SfError(status);
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
else {
|
|
695
|
-
const remainingTime = kit_1.Duration.seconds(interval.seconds * remainingRetries);
|
|
696
|
-
await core_1.Lifecycle.getInstance().emit(Package2VersionStatus.inProgress, {
|
|
697
|
-
id,
|
|
698
|
-
packageVersionCreateRequestResult: results[0],
|
|
699
|
-
message: '',
|
|
700
|
-
timeRemaining: remainingTime,
|
|
701
|
-
});
|
|
702
|
-
logger.info(`Request in progress. Sleeping ${interval.seconds} seconds. Will wait a total of ${remainingTime.seconds} more seconds before timing out. Current Status='${convertCamelCaseStringToSentence(results[0]?.Status)}'`);
|
|
703
|
-
remainingRetries--;
|
|
704
|
-
return { completed: false, payload: results[0] };
|
|
705
|
-
}
|
|
706
|
-
},
|
|
707
|
-
frequency: kit_1.Duration.seconds(interval.seconds),
|
|
708
|
-
timeout: kit_1.Duration.seconds(interval.seconds * retries),
|
|
709
|
-
});
|
|
710
|
-
return pollingClient.subscribe();
|
|
711
|
-
}
|
|
712
|
-
exports.pollForStatusWithInterval = pollForStatusWithInterval;
|
|
713
642
|
/**
|
|
714
643
|
* Generate package alias json entry for this package version that can be written to sfdx-project.json
|
|
715
644
|
*
|
|
@@ -741,16 +670,6 @@ async function generatePackageAliasEntry(connection, project, packageVersionId,
|
|
|
741
670
|
return packageAliases;
|
|
742
671
|
}
|
|
743
672
|
exports.generatePackageAliasEntry = generatePackageAliasEntry;
|
|
744
|
-
/**
|
|
745
|
-
* Return true if the queryResult.records[0].Status is equal to one of the values in statuses.
|
|
746
|
-
*
|
|
747
|
-
* @param results to examine
|
|
748
|
-
* @param statuses array of statuses to look for
|
|
749
|
-
* @returns {boolean} if one of the values in status is found.
|
|
750
|
-
*/
|
|
751
|
-
function _isStatusEqualTo(results, statuses) {
|
|
752
|
-
return results?.length <= 0 ? false : statuses?.some((status) => results[0].Status === status);
|
|
753
|
-
}
|
|
754
673
|
function formatDate(date) {
|
|
755
674
|
const pad = (num) => {
|
|
756
675
|
return num < 10 ? `0${num}` : `${num}`;
|
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.VersionNumber = exports.BuildNumberToken = void 0;
|
|
10
10
|
const core_1 = require("@salesforce/core");
|
|
11
11
|
core_1.Messages.importMessagesDirectory(__dirname);
|
|
12
|
-
const messages = core_1.Messages.loadMessages('@salesforce/packaging', '
|
|
12
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'version_number');
|
|
13
13
|
var BuildNumberToken;
|
|
14
14
|
(function (BuildNumberToken) {
|
|
15
15
|
BuildNumberToken["LATEST_BUILD_NUMBER_TOKEN"] = "LATEST";
|
package/messages/messages.md
CHANGED
|
@@ -173,10 +173,6 @@ The requested resource does not exist
|
|
|
173
173
|
Only one package in a Dev Hub is allowed per converted from first-generation package, but the following were found:
|
|
174
174
|
%s
|
|
175
175
|
|
|
176
|
-
# versionCreateFailedWithMultipleErrors
|
|
177
|
-
|
|
178
|
-
Multiple errors occurred:
|
|
179
|
-
|
|
180
176
|
# errorScriptsNotApplicableToUnlockedPackage
|
|
181
177
|
|
|
182
178
|
We can’t create the package version. This parameter is available only for second-generation managed packages. Create the package version without the postinstallscript or uninstallscript parameters.,
|
|
@@ -267,3 +263,19 @@ No subscriber package was found for seed id: %s'
|
|
|
267
263
|
# idOrAliasNotFound
|
|
268
264
|
|
|
269
265
|
Can't find package with id or alias: %s
|
|
266
|
+
|
|
267
|
+
# unlockedPackageError
|
|
268
|
+
|
|
269
|
+
Can’t display package ancestry. Package ancestry is available only for second-generation managed packages. Retry this command and specify a second-generation managed package or package version.
|
|
270
|
+
|
|
271
|
+
# noVersionsError
|
|
272
|
+
|
|
273
|
+
Can’t display package ancestry. The specified package has no associated released package versions. Retry this command after you create and promote at least one package version.
|
|
274
|
+
|
|
275
|
+
# invalidId
|
|
276
|
+
|
|
277
|
+
Can’t display the ancestry tree for %s. Specify a valid package ID (starts with 0Ho) or package version ID (starts with 04t), and try creating the ancestry tree again.
|
|
278
|
+
|
|
279
|
+
# versionNotFound
|
|
280
|
+
|
|
281
|
+
Can’t display the ancestry tree for %s. Verify the package version number (starts with 04t) or the package version alias listed in the sfdx-project.json file, and try creating the ancestry tree again.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# idOrAliasNotFound
|
|
2
|
+
|
|
3
|
+
Can't find package with id or alias: %s
|
|
4
|
+
|
|
5
|
+
# unlockedPackageError
|
|
6
|
+
|
|
7
|
+
Can’t display package ancestry. Package ancestry is available only for second-generation managed packages. Retry this command and specify a second-generation managed package or package version.
|
|
8
|
+
|
|
9
|
+
# noVersionsError
|
|
10
|
+
|
|
11
|
+
Can’t display package ancestry. The specified package has no associated released package versions. Retry this command after you create and promote at least one package version.
|
|
12
|
+
|
|
13
|
+
# invalidId
|
|
14
|
+
|
|
15
|
+
Can’t display the ancestry tree for %s. Specify a valid package ID (starts with 0Ho) or package version ID (starts with 04t), and try creating the ancestry tree again.
|
|
16
|
+
|
|
17
|
+
# versionNotFound
|
|
18
|
+
|
|
19
|
+
Can’t display the ancestry tree for %s. Verify the package version number (starts with 04t) or the package version alias listed in the sfdx-project.json file, and try creating the ancestry tree again.
|
|
@@ -22,7 +22,3 @@ Waiting for the Subscriber Package Version ID to be published to the target org.
|
|
|
22
22
|
# subscriberPackageVersionNotPublished
|
|
23
23
|
|
|
24
24
|
The subscriber package version is not fully available.
|
|
25
|
-
|
|
26
|
-
# subscriberPackageVersionNotPublished.actions
|
|
27
|
-
|
|
28
|
-
If this is a recently created package version, try again in a few minutes or contact the package publisher.
|
|
@@ -62,10 +62,14 @@ Can’t create package version. Specifying an ancestor is available only for sec
|
|
|
62
62
|
|
|
63
63
|
versionName is blank in sfdx-project.json, so it will be set to this default value based on the versionNumber: %s
|
|
64
64
|
|
|
65
|
-
#
|
|
65
|
+
# malformedUrl
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
The %s value "%s" from the command line or sfdx-project.json is not in the correct format for a URL. It must be a valid URL in the format "http://salesforce.com". More information: https://nodejs.org/api/url.html#url_url_strings_and_url_objects
|
|
68
68
|
|
|
69
|
-
#
|
|
69
|
+
# versionCreateFailedWithMultipleErrors
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
Multiple errors occurred:
|
|
72
|
+
|
|
73
|
+
# invalidDaysNumber
|
|
74
|
+
|
|
75
|
+
Provide a valid positive number for %s.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# errorNoSubscriberPackageRecord
|
|
2
|
+
|
|
3
|
+
No subscriber package was found for seed id: %s'
|
|
4
|
+
|
|
5
|
+
# errorInvalidPackageId
|
|
6
|
+
|
|
7
|
+
The provided package ID '%s' is invalid.
|
|
8
|
+
|
|
9
|
+
# errorDuringSObjectCRUDOperation
|
|
10
|
+
|
|
11
|
+
An error occurred during CRUD operation %s on entity %s.
|
|
12
|
+
%s
|
|
13
|
+
|
|
14
|
+
# errorInvalidBuildNumberForKeywords
|
|
15
|
+
|
|
16
|
+
The provided VersionNumber '%s' is invalid. Provide an integer value or use the keyword '%s' or '%s' for the build number.
|
|
17
|
+
|
|
18
|
+
# errorInvalidPatchNumber
|
|
19
|
+
|
|
20
|
+
The provided VersionNumber '%s' is not supported. Provide a patch number of 0.
|
|
21
|
+
|
|
22
|
+
# errorInvalidAncestorVersionFormat
|
|
23
|
+
|
|
24
|
+
The ancestor versionNumber must be in the format major.minor.patch but the value found is [%s].
|
|
25
|
+
|
|
26
|
+
# errorNoMatchingMajorMinorForPatch
|
|
27
|
+
|
|
28
|
+
Can’t create patch version. The specified package ancestor [%s] either isn’t a promoted and released version, or can’t be found. Check the specified ancestor version, and then retry creating the patch version.
|
|
29
|
+
|
|
30
|
+
# errorNoMatchingAncestor
|
|
31
|
+
|
|
32
|
+
The ancestorId for ancestorVersion [%s] can't be found. Package ID [%s].
|
|
33
|
+
|
|
34
|
+
# errorAncestorNotReleased
|
|
35
|
+
|
|
36
|
+
The ancestor package version [%s] specified in the sfdx-project.json file hasn’t been promoted and released. Release the ancestor package version before specifying it as the ancestor in a new package or patch version.
|
|
37
|
+
|
|
38
|
+
# errorAncestorNotHighest
|
|
39
|
+
|
|
40
|
+
Can’t create package version. The ancestor version [%s] you specified isn’t the highest released package version. Set the ancestor version to %s, and try creating the package version again. You can also specify --skipancestorcheck to override the ancestry requirement.
|
|
41
|
+
|
|
42
|
+
# errorAncestorNoneNotAllowed
|
|
43
|
+
|
|
44
|
+
Can’t create package version because you didn’t specify a package ancestor. Set the ancestor version to %s, and try creating the package version. You can also specify --skipancestorcheck to override the ancestry requirement.
|
|
45
|
+
|
|
46
|
+
# errorAncestorIdVersionMismatch
|
|
47
|
+
|
|
48
|
+
Can’t create package version. The ancestorVersion listed in your sfdx-project.json file doesn’t map to this package. Ensure the ancestor ID is correct, or set the ID to ancestorID:HIGHEST to ensure the highest released package version is used as the ancestor. Then try creating the package version again.
|
|
49
|
+
|
|
50
|
+
# errorAncestorIdVersionHighestOrNoneMismatch
|
|
51
|
+
|
|
52
|
+
Can’t create package version. The ancestorId [%s] and ancestorVersion [%s] in your sfdx-project.json file don’t map to the same package version. Remove the incorrect entry, and try creating the package version again.
|
|
53
|
+
|
|
54
|
+
# errorInvalidIdNoMatchingVersionId
|
|
55
|
+
|
|
56
|
+
The %s %s is invalid, as a corresponding %s was not found
|
|
57
|
+
|
|
58
|
+
# invalidPackageTypeAction
|
|
59
|
+
|
|
60
|
+
Specify Unlocked or Managed for package type.
|
|
61
|
+
|
|
62
|
+
# invalidPackageTypeMessage
|
|
63
|
+
|
|
64
|
+
Invalid package type
|
|
65
|
+
|
|
66
|
+
# idNotFoundAction
|
|
67
|
+
|
|
68
|
+
It`s possible that this package was created on a different Dev Hub. Authenticate to the Dev Hub org that owns the package, and reference that Dev Hub when running the command.
|
|
69
|
+
|
|
70
|
+
# malformedPackageVersionIdAction
|
|
71
|
+
|
|
72
|
+
Use "sfdx force:package:version:list" to verify the 05i package version ID.
|
|
73
|
+
|
|
74
|
+
# malformedPackageVersionIdMessage
|
|
75
|
+
|
|
76
|
+
We can’t find this package version ID for this Dev Hub.
|
|
77
|
+
|
|
78
|
+
# malformedPackageIdAction
|
|
79
|
+
|
|
80
|
+
Use "sfdx force:package:list" to verify the 0Ho package version ID.
|
|
81
|
+
|
|
82
|
+
# malformedPackageIdMessage
|
|
83
|
+
|
|
84
|
+
We can’t find this package ID for this Dev Hub.
|
|
85
|
+
|
|
86
|
+
# notFoundMessage
|
|
87
|
+
|
|
88
|
+
The requested resource does not exist
|
|
89
|
+
|
|
90
|
+
# errorMoreThanOnePackage2WithSeed
|
|
91
|
+
|
|
92
|
+
Only one package in a Dev Hub is allowed per converted from first-generation package, but the following were found:
|
|
93
|
+
%s
|
|
94
|
+
|
|
95
|
+
# versionCreateFailedWithMultipleErrors
|
|
96
|
+
|
|
97
|
+
Multiple errors occurred:
|
|
98
|
+
|
|
99
|
+
# itemDoesNotFitWithinMaxLength
|
|
100
|
+
|
|
101
|
+
When calculating the number of items to be included in query "%s", when formatted, was too long.
|
|
102
|
+
The item was (truncated): %s with a length of %s. The maximum length of items, when formatted is %s.
|
|
103
|
+
|
|
104
|
+
# packageNotEnabledAction
|
|
105
|
+
|
|
106
|
+
Packaging is not enabled on this org. Verify that you are authenticated to the desired org and try again. Otherwise, contact Salesforce Customer Support for more information.
|
|
107
|
+
|
|
108
|
+
# packageInstanceNotEnabled
|
|
109
|
+
|
|
110
|
+
Your org does not have permission to specify a build instance for your package version. Verify that you are authenticated to the desired org and try again. Otherwise, contact Salesforce Customer Support for more information.
|
|
111
|
+
|
|
112
|
+
# packageSourceOrgNotEnabled
|
|
113
|
+
|
|
114
|
+
Your Dev Hub does not have permission to specify a source org for your build org. Verify that you are authenticated to the correct Dev Hub and try again. Otherwise, contact Salesforce Customer Support for assistance.
|
|
115
|
+
|
|
116
|
+
# invalidIdOrAlias
|
|
117
|
+
|
|
118
|
+
The %s: %s isn't defined in the sfdx-project.json. Add it to the packageDirectories section and add the alias to packageAliases with its %s ID.
|
|
119
|
+
|
|
120
|
+
# errorInvalidBuildNumber
|
|
121
|
+
|
|
122
|
+
The provided VersionNumber '%s' is invalid. Provide an integer value or use the keyword '%s' for the build number.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# addProfileToPackage
|
|
2
|
+
|
|
3
|
+
The profile "%s" from the "%s" directory was added to this package version.
|
|
4
|
+
|
|
5
|
+
# removeProfileSetting
|
|
6
|
+
|
|
7
|
+
The "%s" profile setting was removed from the "%s" profile.
|
|
8
|
+
|
|
9
|
+
# removeProfile
|
|
10
|
+
|
|
11
|
+
The "%s" profile has been removed from the package because its settings don't correspond with anything in the package version.
|
|
12
|
+
|
|
13
|
+
# profileNotIncluded
|
|
14
|
+
|
|
15
|
+
The "%s" profile was not added to the package because its settings don't correspond to anything in the package version."
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# errorInvalidBuildNumberToken
|
|
2
|
+
|
|
3
|
+
The provided VersionNumber '%s' is invalid. Build number token must be a number or one of these tokens '%s'.
|
|
4
|
+
|
|
5
|
+
# errorMissingVersionNumber
|
|
6
|
+
|
|
7
|
+
The VersionNumber property must be specified.
|
|
8
|
+
|
|
9
|
+
# errorInvalidMajorMinorPatchNumber
|
|
10
|
+
|
|
11
|
+
VersionNumber parts major, minor or patch must be a number but the value found is [%s].
|
|
12
|
+
|
|
13
|
+
# errorInvalidVersionNumber
|
|
14
|
+
|
|
15
|
+
VersionNumber must be in the format major.minor.patch.build but the value found is [%s].
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/packaging",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.36",
|
|
4
4
|
"description": "packing libraries to Salesforce packaging platform",
|
|
5
5
|
"main": "lib/exported",
|
|
6
6
|
"types": "lib/exported.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@oclif/core": "^1.14.2",
|
|
39
|
-
"@salesforce/core": "^3.
|
|
39
|
+
"@salesforce/core": "^3.30.0",
|
|
40
40
|
"@salesforce/kit": "^1.6.0",
|
|
41
41
|
"@salesforce/schemas": "^1.2.0",
|
|
42
42
|
"@salesforce/source-deploy-retrieve": "^6.2.0",
|