@salesforce/packaging 0.0.35 → 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.
Files changed (32) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/interfaces/packagingInterfacesAndType.d.ts +31 -1
  3. package/lib/interfaces/packagingInterfacesAndType.js +31 -1
  4. package/lib/package/package.d.ts +1 -1
  5. package/lib/package/package.js +3 -2
  6. package/lib/package/packageAncestry.d.ts +1 -1
  7. package/lib/package/packageAncestry.js +5 -5
  8. package/lib/package/packageConvert.js +83 -2
  9. package/lib/package/packageCreate.js +1 -1
  10. package/lib/package/packageInstall.d.ts +1 -2
  11. package/lib/package/packageInstall.js +17 -16
  12. package/lib/package/packageProfileApi.js +1 -1
  13. package/lib/package/packageUninstall.js +5 -3
  14. package/lib/package/packageVersion.js +9 -5
  15. package/lib/package/packageVersionCreate.js +21 -20
  16. package/lib/package/packageVersionCreateRequest.js +1 -1
  17. package/lib/package/packageVersionList.js +1 -1
  18. package/lib/package1/package1VersionCreate.js +3 -2
  19. package/lib/utils/packageUtils.d.ts +1 -3
  20. package/lib/utils/packageUtils.js +2 -83
  21. package/lib/utils/versionNumber.js +1 -1
  22. package/messages/messages.md +0 -4
  23. package/messages/package1_version_create.md +8 -0
  24. package/messages/package_ancestry.md +19 -0
  25. package/messages/package_create.md +3 -0
  26. package/messages/{package-install.md → package_install.md} +0 -4
  27. package/messages/package_uninstall.md +3 -0
  28. package/messages/{packageVersionCreate.md → package_version_create.md} +6 -6
  29. package/messages/pkg_utils.md +122 -0
  30. package/messages/{profile-api.md → profile_api.md} +0 -0
  31. package/messages/version_number.md +15 -0
  32. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
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
+
5
11
  ### [0.0.35](https://github.com/forcedotcom/packaging/compare/v0.0.34...v0.0.35) (2022-09-09)
6
12
 
7
13
  ### 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<void>;
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
@@ -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<void>;
35
+ uninstall(id: string, wait: Duration): Promise<PackagingSObjects.SubscriberPackageVersionUninstallRequest>;
36
36
  /**
37
37
  * Reports on the uninstall progress of a package.
38
38
  *
@@ -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 Promise.resolve(undefined);
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/versionNumber';
6
+ import { VersionNumber } from '../utils';
7
7
  /**
8
8
  * A class that represents the package ancestry graph.
9
9
  */
@@ -26,17 +26,17 @@ 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 versionNumber_1 = require("../utils/versionNumber");
29
+ const utils_1 = require("../utils");
30
30
  core_1.Messages.importMessagesDirectory(__dirname);
31
- const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'messages');
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
37
  const sortAncestryNodeData = (a, b) => {
38
- const aVersion = new versionNumber_1.VersionNumber(a.options.node.MajorVersion, a.options.node.MinorVersion, a.options.node.PatchVersion, a.options.node.BuildNumber);
39
- const bVersion = new versionNumber_1.VersionNumber(b.options.node.MajorVersion, b.options.node.MinorVersion, b.options.node.PatchVersion, b.options.node.BuildNumber);
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
40
  return aVersion.compareTo(bVersion);
41
41
  };
42
42
  /**
@@ -384,7 +384,7 @@ class PackageAncestryNode extends kit_1.AsyncCreatable {
384
384
  _PackageAncestryNode_AncestorId.set(this, void 0);
385
385
  _PackageAncestryNode_SubscriberPackageVersionId.set(this, void 0);
386
386
  _PackageAncestryNode_depthCounter.set(this, void 0);
387
- __classPrivateFieldSet(this, _PackageAncestryNode_version, new versionNumber_1.VersionNumber(this.options.MajorVersion, this.options.MinorVersion, this.options.PatchVersion, this.options.BuildNumber), "f");
387
+ __classPrivateFieldSet(this, _PackageAncestryNode_version, new utils_1.VersionNumber(this.options.MajorVersion, this.options.MinorVersion, this.options.PatchVersion, this.options.BuildNumber), "f");
388
388
  __classPrivateFieldSet(this, _PackageAncestryNode_AncestorId, this.options.AncestorId, "f");
389
389
  __classPrivateFieldSet(this, _PackageAncestryNode_SubscriberPackageVersionId, this.options.SubscriberPackageVersionId, "f");
390
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', 'packageVersionCreate');
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 pkgUtils.pollForStatusWithInterval(createResult.id, maxRetries, packageId, branch, project, connection, new kit_1.Duration(pkgUtils.POLL_INTERVAL_SECONDS, kit_1.Duration.Unit.SECONDS));
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', 'messages');
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 packageUtils_1 = require("../utils/packageUtils");
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', 'package-install');
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, packageUtils_1.escapeInstallationKey)(request.Password);
36
+ request.Password = (0, utils_1.escapeInstallationKey)(request.Password);
36
37
  }
37
- const pkgType = await (0, packageUtils_1.getPackageTypeBy04t)(request.SubscriberPackageVersionKey, connection, request.Password);
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('PackageInstallRequest:warning', msg);
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('PackageInstallRequest:warning', msg);
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('PackageInstallRequest:presend', request);
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('PackageInstallRequest:postsend', result);
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, packageUtils_1.escapeInstallationKey)(installationKey) : null;
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, packageUtils_1.isErrorFromSPVQueryRestriction)(e)) {
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('PackageInstallRequest:status', packageInstallRequest);
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, packageUtils_1.escapeInstallationKey)(installationKey) : null;
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, packageUtils_1.isErrorFromSPVQueryRestriction)(e)) {
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, packageUtils_1.isErrorPackageNotAvailable)(e)) {
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('SubscriberPackageVersion:status', installValidationStatus);
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('SubscriberPackageVersion:status', installValidationStatus);
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,7 +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
- const profileApiMessages = core_1.Messages.loadMessages('@salesforce/packaging', 'profile-api');
17
+ const profileApiMessages = core_1.Messages.loadMessages('@salesforce/packaging', 'profile_api');
18
18
  /*
19
19
  * This class provides functions used to re-write .profiles in the workspace when creating a package2 version.
20
20
  * All profiles found in the workspaces are extracted out and then re-written to only include metadata in the profile
@@ -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', 'messages');
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('packageUninstall', {
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 = messages.getMessage('defaultErrorMessage', [id, uninstallRequest.Id]);
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('enqueued', { ...report, remainingWaitTime });
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('in-progress', { ...report, remainingWaitTime });
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('success', report);
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('error', report);
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', 'packageVersionCreate');
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, utils_1.copyDir)(convertResult.packagePath, outputDirectory);
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, versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
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 = versionNumber_1.VersionNumber.from(dependency.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 === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
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 === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
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 === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
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] === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
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] === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
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 === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
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('packageVersionCreate:preserveFiles', {
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, utils_1.getAncestorId)(packageDescriptorJson, this.options.project, this.options.connection, this.options.versionnumber ?? packageDescriptorJson.versionNumber, this.options.skipancestorcheck);
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, utils_1.zipDir)(packageVersMetadataFolder, metadataZipFile);
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, utils_1.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
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, utils_1.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
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, utils_1.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
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, utils_1.getPackageAliasesFromId)(this.options.packageId, this.options.project).join();
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] === versionNumber_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN
495
- ? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP + versionNumber_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN))
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', 'messages');
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', 'messages');
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', 'messages');
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('package1VersionCreate:progress', { timeout, pollingResult });
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, PackageVersionCreateRequestResult, PackagingSObjects } from '../interfaces';
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.pollForStatusWithInterval = 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;
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', 'messages');
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', 'messages');
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";
@@ -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.,
@@ -0,0 +1,8 @@
1
+ # package1VersionCreateCommandUploadFailureDefault
2
+
3
+ Package version creation failed with unknown error
4
+
5
+ # package1VersionCreateCommandUploadFailure
6
+
7
+ Package upload failed.
8
+ %s
@@ -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.
@@ -0,0 +1,3 @@
1
+ # unableToFindPackageWithId
2
+
3
+ Unable to find Package with Id: "%s"
@@ -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.
@@ -0,0 +1,3 @@
1
+ # uninstallErrorAction
2
+
3
+ Verify installed package ID and resolve errors, then try again.
@@ -62,14 +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
- # releaseNotesUrl
65
+ # malformedUrl
66
66
 
67
- release notes URL
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
- # postInstallUrl
69
+ # versionCreateFailedWithMultipleErrors
70
70
 
71
- post-install URL
71
+ Multiple errors occurred:
72
72
 
73
- # malformedUrl
73
+ # invalidDaysNumber
74
74
 
75
- 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
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.
File without changes
@@ -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.35",
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.26.2",
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",