@salesforce/packaging 3.5.16 → 3.5.17

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.
@@ -1,5 +1,5 @@
1
1
  import { ConvertResult } from '@salesforce/source-deploy-retrieve';
2
- import { MDFolderForArtifactOptions, PackageVersionCreateOptions, PackageVersionCreateRequestResult, PackageXml, PackagingSObjects } from '../interfaces';
2
+ import { MDFolderForArtifactOptions, PackageDescriptorJson, PackageVersionCreateOptions, PackageVersionCreateRequestResult, PackageXml, PackagingSObjects } from '../interfaces';
3
3
  export declare class PackageVersionCreate {
4
4
  private options;
5
5
  private apiVersionFromPackageXml;
@@ -12,16 +12,17 @@ export declare class PackageVersionCreate {
12
12
  private metadataResolver;
13
13
  constructor(options: PackageVersionCreateOptions);
14
14
  createPackageVersion(): Promise<Partial<PackageVersionCreateRequestResult>>;
15
- private validateDependencyValues;
16
15
  /**
17
- * A dependency in the workspace config file may be specified using either a subscriber package version id (04t)
16
+ * A dependency in the project config file may be specified using either a subscriber package version id (04t)
18
17
  * or a package Id (0Ho) + a version number. Additionally, a build number may be the actual build number, or a
19
18
  * keyword: LATEST or RELEASED (meaning the latest or released build number for a given major.minor.patch).
20
19
  *
21
20
  * This method resolves a package Id + version number to a subscriber package version id (04t)
22
21
  * and adds it as a SubscriberPackageVersionId parameter in the dependency object.
23
22
  */
24
- private retrieveSubscriberPackageVersionId;
23
+ retrieveSubscriberPackageVersionId(dependency: PackageDescriptorJson): Promise<string>;
24
+ private resolveSubscriberPackageVersionId;
25
+ private validateDependencyValues;
25
26
  private resolveBuildNumber;
26
27
  private createRequestObject;
27
28
  /**
@@ -70,42 +70,8 @@ class PackageVersionCreate {
70
70
  throw err;
71
71
  }
72
72
  }
73
- async validateDependencyValues(dependency) {
74
- // If valid 04t package, just return it to be used straight away.
75
- if (dependency.subscriberPackageVersionId) {
76
- pkgUtils.validateId(pkgUtils.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, dependency.subscriberPackageVersionId);
77
- return;
78
- }
79
- if (dependency.packageId && dependency.package) {
80
- throw messages.createError('errorPackageAndPackageIdCollision', []);
81
- }
82
- const idOrPackage = dependency.packageId ?? dependency.package;
83
- if (!idOrPackage) {
84
- throw messages.createError('errorPackageOrPackageIdMissing', []);
85
- }
86
- const packageIdFromAlias = this.project.getPackageIdFromAlias(idOrPackage) ?? idOrPackage;
87
- // If valid 04t package, just return it to be used straight away.
88
- if (pkgUtils.validateIdNoThrow(pkgUtils.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, packageIdFromAlias)) {
89
- dependency.subscriberPackageVersionId = packageIdFromAlias;
90
- return;
91
- }
92
- if (!packageIdFromAlias || !dependency.versionNumber) {
93
- throw messages.createError('errorDependencyPair', [JSON.stringify(dependency)]);
94
- }
95
- // Just override dependency.packageId value to the resolved alias.
96
- dependency.packageId = packageIdFromAlias;
97
- pkgUtils.validateId(pkgUtils.BY_LABEL.PACKAGE_ID, dependency.packageId);
98
- (0, exports.validateVersionNumber)(dependency.versionNumber, versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
99
- await this.validatePatchVersion(dependency.versionNumber, dependency.packageId);
100
- // Validate that the Package2 id exists on the server
101
- const query = `SELECT Id FROM Package2 WHERE Id = '${dependency.packageId}'`;
102
- const result = await this.connection.tooling.query(query);
103
- if (!result.records || result.records.length !== 1) {
104
- throw messages.createError('errorNoIdInHub', [dependency.packageId]);
105
- }
106
- }
107
73
  /**
108
- * A dependency in the workspace config file may be specified using either a subscriber package version id (04t)
74
+ * A dependency in the project config file may be specified using either a subscriber package version id (04t)
109
75
  * or a package Id (0Ho) + a version number. Additionally, a build number may be the actual build number, or a
110
76
  * keyword: LATEST or RELEASED (meaning the latest or released build number for a given major.minor.patch).
111
77
  *
@@ -113,12 +79,6 @@ class PackageVersionCreate {
113
79
  * and adds it as a SubscriberPackageVersionId parameter in the dependency object.
114
80
  */
115
81
  async retrieveSubscriberPackageVersionId(dependency) {
116
- await this.validateDependencyValues(dependency);
117
- if (dependency.subscriberPackageVersionId) {
118
- delete dependency.package;
119
- // if a 04t id is specified just use it.
120
- return dependency;
121
- }
122
82
  if (!dependency.versionNumber) {
123
83
  throw messages.createError('errorDependencyPair', [JSON.stringify(dependency)]);
124
84
  }
@@ -129,7 +89,7 @@ class PackageVersionCreate {
129
89
  const buildNumber = versionNumber.build;
130
90
  // use the dependency.branch if present otherwise use the branch of the version being created
131
91
  const branch = dependency.branch ?? this.options.branch;
132
- const branchString = !branch || branch === '' ? 'null' : `'${branch}'`;
92
+ const branchString = !branch ? 'null' : `'${branch}'`;
133
93
  // resolve a build number keyword to an actual number, if needed
134
94
  const resolvedBuildNumber = await this.resolveBuildNumber(versionNumber, dependency.packageId, branch);
135
95
  // now that we have a full build number, query for the associated 04t.
@@ -149,9 +109,8 @@ class PackageVersionCreate {
149
109
  resolvedBuildNumber,
150
110
  ]);
151
111
  }
152
- dependency.subscriberPackageVersionId = pkgVerQueryResult.records[0].SubscriberPackageVersionId;
153
112
  // warn user of the resolved build number when LATEST and RELEASED keywords are used
154
- if (versionNumber.isbuildKeyword()) {
113
+ if (versionNumber.isBuildKeyword()) {
155
114
  versionNumber.build = resolvedBuildNumber;
156
115
  if (buildNumber === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
157
116
  this.logger.info(messages.getMessage('buildNumberResolvedForLatest', [
@@ -169,14 +128,58 @@ class PackageVersionCreate {
169
128
  ]));
170
129
  }
171
130
  }
131
+ return pkgVerQueryResult.records[0].SubscriberPackageVersionId;
132
+ }
133
+ async resolveSubscriberPackageVersionId(dependency) {
134
+ await this.validateDependencyValues(dependency);
135
+ if (dependency.subscriberPackageVersionId) {
136
+ delete dependency.package;
137
+ // if a 04t id is specified just use it.
138
+ return dependency;
139
+ }
140
+ dependency.subscriberPackageVersionId = await this.retrieveSubscriberPackageVersionId(dependency);
172
141
  delete dependency.packageId;
173
142
  delete dependency.package;
174
143
  delete dependency.versionNumber;
175
144
  delete dependency.branch;
176
145
  return dependency;
177
146
  }
147
+ async validateDependencyValues(dependency) {
148
+ // If valid 04t package, just return it to be used straight away.
149
+ if (dependency.subscriberPackageVersionId) {
150
+ pkgUtils.validateId(pkgUtils.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, dependency.subscriberPackageVersionId);
151
+ return;
152
+ }
153
+ if (dependency.packageId && dependency.package) {
154
+ throw messages.createError('errorPackageAndPackageIdCollision', []);
155
+ }
156
+ const idOrPackage = dependency.packageId ?? dependency.package;
157
+ if (!idOrPackage) {
158
+ throw messages.createError('errorPackageOrPackageIdMissing', []);
159
+ }
160
+ const packageIdFromAlias = this.project.getPackageIdFromAlias(idOrPackage) ?? idOrPackage;
161
+ // If valid 04t package, just return it to be used straight away.
162
+ if (pkgUtils.validateIdNoThrow(pkgUtils.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, packageIdFromAlias)) {
163
+ dependency.subscriberPackageVersionId = packageIdFromAlias;
164
+ return;
165
+ }
166
+ if (!packageIdFromAlias || !dependency.versionNumber) {
167
+ throw messages.createError('errorDependencyPair', [JSON.stringify(dependency)]);
168
+ }
169
+ // Just override dependency.packageId value to the resolved alias.
170
+ dependency.packageId = packageIdFromAlias;
171
+ pkgUtils.validateId(pkgUtils.BY_LABEL.PACKAGE_ID, dependency.packageId);
172
+ (0, exports.validateVersionNumber)(dependency.versionNumber, versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
173
+ await this.validatePatchVersion(dependency.versionNumber, dependency.packageId);
174
+ // Validate that the Package2 id exists on the server
175
+ const query = `SELECT Id FROM Package2 WHERE Id = '${dependency.packageId}'`;
176
+ const result = await this.connection.tooling.query(query);
177
+ if (!result.records || result.records.length !== 1) {
178
+ throw messages.createError('errorNoIdInHub', [dependency.packageId]);
179
+ }
180
+ }
178
181
  async resolveBuildNumber(versionNumber, packageId, branch) {
179
- if (!versionNumber.isbuildKeyword()) {
182
+ if (!versionNumber.isBuildKeyword()) {
180
183
  // The build number is already specified so just return it using the tooling query result obj structure
181
184
  return `${versionNumber.build}`;
182
185
  }
@@ -304,12 +307,12 @@ class PackageVersionCreate {
304
307
  }
305
308
  this.resolveBuildUserPermissions(packageDescriptorJson);
306
309
  // All dependencies for the packaging dir should be resolved to an 04t id to be passed to the server.
307
- // (see _retrieveSubscriberPackageVersionId for details)
310
+ // (see resolveSubscriberPackageVersionId() for details)
308
311
  const dependencies = packageDescriptorJson.dependencies;
309
312
  // branch and APV language can be set via options or packageDirectory; option takes precedence
310
313
  this.options.branch = this.options.branch ?? packageDescriptorJson.branch;
311
314
  this.options.language = this.options.language ?? apvLanguage;
312
- const resultValues = await Promise.all(!dependencies ? [] : dependencies.map((dependency) => this.retrieveSubscriberPackageVersionId(dependency)));
315
+ const resultValues = await Promise.all(!dependencies ? [] : dependencies.map((dependency) => this.resolveSubscriberPackageVersionId(dependency)));
313
316
  const versionNumber = this.options.versionnumber ?? packageDescriptorJson.versionNumber;
314
317
  if (!versionNumber) {
315
318
  throw messages.createError('versionNumberRequired');
@@ -1,7 +1,7 @@
1
1
  import { Connection } from '@salesforce/core';
2
2
  import { Duration } from '@salesforce/kit';
3
3
  import { Nullable, Optional } from '@salesforce/ts-types';
4
- import { InstalledPackages, PackageInstallCreateRequest, PackageInstallOptions, PackageType, PackagingSObjects, SubscriberPackageVersionOptions } from '../interfaces';
4
+ import { InstalledPackages, PackageDescriptorJson, PackageInstallCreateRequest, PackageInstallOptions, PackageType, PackagingSObjects, SubscriberPackageVersionOptions } from '../interfaces';
5
5
  import { VersionNumber } from './versionNumber';
6
6
  export declare const SubscriberPackageVersionFields: string[];
7
7
  /**
@@ -56,6 +56,18 @@ export declare class SubscriberPackageVersion {
56
56
  * @param connection
57
57
  */
58
58
  static getInstallRequest(installRequestId: string, connection: Connection): Promise<PackagingSObjects.PackageInstallRequest>;
59
+ /**
60
+ * Resolve fields from a packageDirectories entry to a SubscriberPackageVersionId (04t).
61
+ * Specifically uses the `versionNumber` and `packageId` fields, as well as an optional
62
+ * `branch` field.
63
+ *
64
+ * @param connection A connection object to the org
65
+ * @param pkgDescriptor Fields from a packageDirectories entry in sfdx-project.json.
66
+ * The `versionNumber` and `packageId` fields are required. Optionally, the `branch` and
67
+ * `package` fields can be passed.
68
+ * @returns the SubscriberPackageVersionId (04t)
69
+ */
70
+ static resolveId(connection: Connection, pkgDescriptor: Partial<PackageDescriptorJson>): Promise<string>;
59
71
  /**
60
72
  * Get the package version ID for this SubscriberPackageVersion.
61
73
  *
@@ -65,7 +77,7 @@ export declare class SubscriberPackageVersion {
65
77
  /**
66
78
  * Get the package type for this SubscriberPackageVersion.
67
79
  *
68
- * @returns {PackageType} The package type.
80
+ * @returns {PackageType} The package type ("Managed" or "Unlocked") for this SubscriberPackageVersion.
69
81
  */
70
82
  getPackageType(): Promise<PackageType>;
71
83
  /**
@@ -77,7 +89,7 @@ export declare class SubscriberPackageVersion {
77
89
  /**
78
90
  * Get the subscriber package Id (033) for this SubscriberPackageVersion.
79
91
  *
80
- * @returns {string} The subscriber package Id.
92
+ * @returns {string} The subscriber package Id (033).
81
93
  */
82
94
  getSubscriberPackageId(): Promise<string>;
83
95
  /**
@@ -12,6 +12,7 @@ const kit_1 = require("@salesforce/kit");
12
12
  const packageUtils_1 = require("../utils/packageUtils");
13
13
  const packageInstall_1 = require("./packageInstall");
14
14
  const packageUninstall_1 = require("./packageUninstall");
15
+ const packageVersionCreate_1 = require("./packageVersionCreate");
15
16
  const versionNumber_1 = require("./versionNumber");
16
17
  core_1.Messages.importMessagesDirectory(__dirname);
17
18
  const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'subscriber_package_version');
@@ -186,6 +187,21 @@ class SubscriberPackageVersion {
186
187
  }
187
188
  return installRequest;
188
189
  }
190
+ /**
191
+ * Resolve fields from a packageDirectories entry to a SubscriberPackageVersionId (04t).
192
+ * Specifically uses the `versionNumber` and `packageId` fields, as well as an optional
193
+ * `branch` field.
194
+ *
195
+ * @param connection A connection object to the org
196
+ * @param pkgDescriptor Fields from a packageDirectories entry in sfdx-project.json.
197
+ * The `versionNumber` and `packageId` fields are required. Optionally, the `branch` and
198
+ * `package` fields can be passed.
199
+ * @returns the SubscriberPackageVersionId (04t)
200
+ */
201
+ static async resolveId(connection, pkgDescriptor) {
202
+ const pvc = new packageVersionCreate_1.PackageVersionCreate({ connection, project: core_1.SfProject.getInstance() });
203
+ return pvc.retrieveSubscriberPackageVersionId(pkgDescriptor);
204
+ }
189
205
  /**
190
206
  * Get the package version ID for this SubscriberPackageVersion.
191
207
  *
@@ -197,7 +213,7 @@ class SubscriberPackageVersion {
197
213
  /**
198
214
  * Get the package type for this SubscriberPackageVersion.
199
215
  *
200
- * @returns {PackageType} The package type.
216
+ * @returns {PackageType} The package type ("Managed" or "Unlocked") for this SubscriberPackageVersion.
201
217
  */
202
218
  async getPackageType() {
203
219
  return this.getField('Package2ContainerOptions');
@@ -213,7 +229,7 @@ class SubscriberPackageVersion {
213
229
  /**
214
230
  * Get the subscriber package Id (033) for this SubscriberPackageVersion.
215
231
  *
216
- * @returns {string} The subscriber package Id.
232
+ * @returns {string} The subscriber package Id (033).
217
233
  */
218
234
  async getSubscriberPackageId() {
219
235
  return this.getField('SubscriberPackageId');
@@ -23,10 +23,6 @@ export declare class VersionNumber {
23
23
  static from(versionString: string | undefined): VersionNumber;
24
24
  static isABuildKeyword(token: string | number): boolean;
25
25
  toString(): string;
26
- /**
27
- * @deprecated use isBuildKeyword instead
28
- */
29
- isbuildKeyword(): boolean;
30
26
  isBuildKeyword(): boolean;
31
27
  compareTo(other: VersionNumber): number;
32
28
  }
@@ -77,12 +77,6 @@ class VersionNumber {
77
77
  return `${this.major || '0'}.${this.minor || '0'}.${this.patch || '0'}.${this.build ? `${this.build}` : '0'}`;
78
78
  }
79
79
  }
80
- /**
81
- * @deprecated use isBuildKeyword instead
82
- */
83
- isbuildKeyword() {
84
- return this.isBuildKeyword();
85
- }
86
80
  isBuildKeyword() {
87
81
  return VersionNumber.isABuildKeyword(this.build);
88
82
  }
@@ -100,10 +100,8 @@ export declare function numberToDuration(duration: number | Duration | undefined
100
100
  /**
101
101
  * Zips directory to given zipfile.
102
102
  *
103
- * https://github.com/archiverjs/node-archiver
104
- *
105
- * @param dir to zip
106
- * @param zipfile
103
+ * @param dir directory to zip
104
+ * @param zipfile path to the zip file to create
107
105
  */
108
106
  export declare function zipDir(dir: string, zipfile: string): Promise<void>;
109
107
  export declare function copyDir(src: string, dest: string): void;
@@ -380,10 +380,8 @@ const pipeline = (0, node_util_1.promisify)(node_stream_1.pipeline);
380
380
  /**
381
381
  * Zips directory to given zipfile.
382
382
  *
383
- * https://github.com/archiverjs/node-archiver
384
- *
385
- * @param dir to zip
386
- * @param zipfile
383
+ * @param dir directory to zip
384
+ * @param zipfile path to the zip file to create
387
385
  */
388
386
  async function zipDir(dir, zipfile) {
389
387
  const logger = core_1.Logger.childFromRoot('srcDevUtils#zipDir');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/packaging",
3
- "version": "3.5.16",
3
+ "version": "3.5.17",
4
4
  "description": "Packaging library for the Salesforce packaging platform",
5
5
  "main": "lib/exported",
6
6
  "types": "lib/exported.d.ts",
@@ -42,7 +42,7 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "@jsforce/jsforce-node": "^3.2.0",
45
- "@salesforce/core": "^7.3.6",
45
+ "@salesforce/core": "^7.3.8",
46
46
  "@salesforce/kit": "^3.1.1",
47
47
  "@salesforce/schemas": "^1.7.0",
48
48
  "@salesforce/source-deploy-retrieve": "^11.4.3",