@salesforce/packaging 4.1.5 → 4.1.6

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.
@@ -55,6 +55,9 @@ exports.Package2Fields = [
55
55
  * `const pkgList = await Package.list(connection);`
56
56
  */
57
57
  class Package {
58
+ options;
59
+ packageId;
60
+ packageData;
58
61
  constructor(options) {
59
62
  this.options = options;
60
63
  let packageId = this.options.packageAliasOrId;
@@ -71,11 +71,13 @@ const sortAncestryNodeData = (a, b) => {
71
71
  * Given a package Id (0Ho) or a package version Id (04t), it will build a graph of the package's ancestors.
72
72
  */
73
73
  class PackageAncestry extends kit_1.AsyncCreatable {
74
+ options;
75
+ roots = [];
76
+ graph = new graphology_1.DirectedGraph();
77
+ packageId;
74
78
  constructor(options) {
75
79
  super(options);
76
80
  this.options = options;
77
- this.roots = [];
78
- this.graph = new graphology_1.DirectedGraph();
79
81
  this.packageId = options.packageId;
80
82
  }
81
83
  get requestedPackageId() {
@@ -283,7 +285,7 @@ class PackageAncestry extends kit_1.AsyncCreatable {
283
285
  // Check to see if the package is an unlocked package
284
286
  // if so, throw and error since ancestry only applies to managed packages
285
287
  await this.validatePackageType();
286
- const normalQuery = `${SELECT_PACKAGE_VERSION} WHERE AncestorId = NULL AND Package2Id = '${this.requestedPackageId}' ${releasedOnlyFilter}`;
288
+ const normalQuery = `${SELECT_PACKAGE_VERSION} WHERE AncestorId = NULL AND Package2Id = '${this.requestedPackageId ?? ''}' ${releasedOnlyFilter}`;
287
289
  const subscriberPackageVersions = (await this.options.connection.tooling.query(normalQuery)).records?.map((record) => new PackageAncestryNode(record));
288
290
  // The package exists, but there are no versions for the provided package
289
291
  if (subscriberPackageVersions.length === 0) {
@@ -329,9 +331,7 @@ class PackageAncestry extends kit_1.AsyncCreatable {
329
331
  }
330
332
  exports.PackageAncestry = PackageAncestry;
331
333
  class Tree {
332
- constructor() {
333
- this.nodes = {};
334
- }
334
+ nodes = {};
335
335
  // eslint-disable-next-line no-console
336
336
  display(logger = console.log) {
337
337
  const addNodes = function (nodes) {
@@ -361,6 +361,9 @@ class Tree {
361
361
  }
362
362
  }
363
363
  class AncestryTreeProducer extends Tree {
364
+ label;
365
+ options;
366
+ verbose;
364
367
  constructor(options) {
365
368
  super();
366
369
  this.options = options;
@@ -405,8 +408,11 @@ class AncestryTreeProducer extends Tree {
405
408
  }
406
409
  exports.AncestryTreeProducer = AncestryTreeProducer;
407
410
  class AncestryJsonProducer {
411
+ label;
412
+ options;
413
+ children = [];
414
+ data;
408
415
  constructor(options) {
409
- this.children = [];
410
416
  this.options = options;
411
417
  this.label = this.options?.packageNode?.getVersion() ?? 'root';
412
418
  this.data = {
@@ -440,8 +446,10 @@ class AncestryJsonProducer {
440
446
  }
441
447
  exports.AncestryJsonProducer = AncestryJsonProducer;
442
448
  class AncestryDotProducer {
449
+ label;
450
+ options;
451
+ children = [];
443
452
  constructor(options) {
444
- this.children = [];
445
453
  this.options = options;
446
454
  this.label = this.options?.packageNode?.getVersion() ?? 'root';
447
455
  }
@@ -497,10 +505,18 @@ class AncestryDotProducer {
497
505
  }
498
506
  exports.AncestryDotProducer = AncestryDotProducer;
499
507
  class PackageAncestryNode extends kit_1.AsyncCreatable {
508
+ options;
509
+ version;
510
+ MajorVersion;
511
+ MinorVersion;
512
+ PatchVersion;
513
+ BuildNumber;
514
+ AncestorId;
515
+ SubscriberPackageVersionId;
516
+ depthCounter = 0;
500
517
  constructor(options) {
501
518
  super(options);
502
519
  this.options = options;
503
- this.depthCounter = 0;
504
520
  this.version = new versionNumber_1.VersionNumber(this.options.MajorVersion, this.options.MinorVersion, this.options.PatchVersion, this.options.BuildNumber);
505
521
  this.AncestorId = this.options.AncestorId;
506
522
  this.SubscriberPackageVersionId = this.options.SubscriberPackageVersionId;
@@ -165,13 +165,13 @@ async function createPackageVersionCreateRequest(context, packageId, apiVersion)
165
165
  const hasSeedMetadata = await new packageVersionCreate_1.MetadataResolver().resolveMetadata(context.seedmetadata, seedMetadataFolder, 'seedMDDirectoryDoesNotExist', apiVersion);
166
166
  if (hasSeedMetadata) {
167
167
  // Zip the seedMetadataFolder folder and put the zip in {packageVersBlobDirectory}/{seedMetadataZipFile}
168
- core_1.Logger.childFromRoot('packageConvert:pollForStatusWithInterval').debug(`Including metadata found in '${context.seedmetadata}'.`);
168
+ core_1.Logger.childFromRoot('packageConvert:pollForStatusWithInterval').debug(`Including metadata found in '${context.seedmetadata ?? '<undefined seedmetadata>'}'.`);
169
169
  await pkgUtils.zipDir(seedMetadataFolder, seedMetadataZipFile);
170
170
  }
171
171
  await settingsGenerator.createDeploy();
172
172
  await settingsGenerator.createDeployPackageContents(apiVersion);
173
- await pkgUtils.zipDir(`${settingsGenerator.getDestinationPath()}${node_path_1.default.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
174
- const shapeDirectory = `${settingsGenerator.getDestinationPath()}${node_path_1.default.sep}${settingsGenerator.getShapeDirName()}`;
173
+ await pkgUtils.zipDir(`${settingsGenerator.getDestinationPath() ?? ''}${node_path_1.default.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
174
+ const shapeDirectory = `${settingsGenerator.getDestinationPath() ?? ''}${node_path_1.default.sep}${settingsGenerator.getShapeDirName()}`;
175
175
  const currentPackageXml = await node_fs_1.default.promises.readFile(node_path_1.default.join(shapeDirectory, 'package.xml'), 'utf8');
176
176
  await node_fs_1.default.promises.writeFile(node_path_1.default.join(packageVersMetadataFolder, 'package.xml'), currentPackageXml, 'utf-8');
177
177
  // Zip the packageVersMetadataFolder folder and put the zip in {packageVersBlobDirectory}/package.zip
@@ -25,9 +25,10 @@ const profileApiMessages = core_1.Messages.loadMessages('@salesforce/packaging',
25
25
  * profile that is relevant to the source in the package directory being packaged.
26
26
  */
27
27
  class PackageProfileApi extends kit_1.AsyncCreatable {
28
+ project;
29
+ includeUserLicenses = false;
28
30
  constructor(options) {
29
31
  super(options);
30
- this.includeUserLicenses = false;
31
32
  this.project = options.project;
32
33
  this.includeUserLicenses = options.includeUserLicenses ?? false;
33
34
  }
@@ -63,7 +63,7 @@ export declare class PackageVersion {
63
63
  static create(options: PackageVersionCreateOptions, polling?: {
64
64
  frequency: Duration;
65
65
  timeout: Duration;
66
- }): Promise<Partial<PackageVersionCreateRequestResult>>;
66
+ }): Promise<PackageVersionCreateRequestResult>;
67
67
  /**
68
68
  * Gets current state of a package version create request.
69
69
  *
@@ -71,6 +71,12 @@ exports.Package2VersionFields = [
71
71
  * `new PackageVersion({connection, project, idOrAlias}).promote();`
72
72
  */
73
73
  class PackageVersion {
74
+ options;
75
+ project;
76
+ connection;
77
+ data;
78
+ packageType;
79
+ id;
74
80
  constructor(options) {
75
81
  this.options = options;
76
82
  this.connection = this.options.connection;
@@ -323,8 +329,9 @@ class PackageVersion {
323
329
  return result.records ?? [];
324
330
  }
325
331
  static getPackage2VersionFields(connection) {
326
- const apiVersion = connection.getApiVersion();
327
- return exports.Package2VersionFields.filter((field) => (apiVersion > '60.0' ? true : field !== 'ValidatedAsync'));
332
+ return parseInt(connection.getApiVersion(), 10) > 60
333
+ ? exports.Package2VersionFields
334
+ : exports.Package2VersionFields.filter((field) => field !== 'ValidatedAsync');
328
335
  }
329
336
  /**
330
337
  * Get the package version ID for this PackageVersion.
@@ -366,7 +373,7 @@ class PackageVersion {
366
373
  */
367
374
  async getPackageType() {
368
375
  if (!this.packageType) {
369
- this.packageType = (await this.connection.singleRecordQuery(`select ContainerOptions from Package2 where Id = '${await this.getPackageId()}' limit 1`, { tooling: true })).ContainerOptions;
376
+ this.packageType = (await this.connection.singleRecordQuery(`select ContainerOptions from Package2 where Id = '${(await this.getPackageId()) ?? ''}' limit 1`, { tooling: true })).ContainerOptions;
370
377
  }
371
378
  return this.packageType;
372
379
  }
@@ -377,37 +384,30 @@ class PackageVersion {
377
384
  * @returns Package2Version
378
385
  */
379
386
  async getData(force = false) {
380
- let is05i = false;
381
387
  if (!this.data || force) {
382
388
  // validate ID
383
389
  if (this.id.startsWith('04t')) {
384
390
  (0, packageUtils_1.validateId)(packageUtils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, this.id);
385
- is05i = false;
386
391
  }
387
392
  else if (this.id.startsWith('05i')) {
388
393
  (0, packageUtils_1.validateId)(packageUtils_1.BY_LABEL.PACKAGE_VERSION_ID, this.id);
389
- is05i = true;
390
394
  }
391
395
  else {
392
396
  throw messages.createError('errorInvalidPackageVersionId', [this.options.idOrAlias]);
393
397
  }
394
- let queryConfig;
395
- if (is05i) {
396
- queryConfig = {
398
+ const queryConfig = this.id.startsWith('05i')
399
+ ? {
397
400
  id: this.id,
398
401
  clause: `Id = '${this.id}'`,
399
402
  label1: packageUtils_1.BY_LABEL.PACKAGE_VERSION_ID.label,
400
403
  label2: packageUtils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID.label,
401
- };
402
- }
403
- else {
404
- queryConfig = {
404
+ }
405
+ : {
405
406
  id: this.id,
406
407
  clause: `SubscriberPackageVersionId = '${this.id}'`,
407
408
  label1: packageUtils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID.label,
408
409
  label2: packageUtils_1.BY_LABEL.PACKAGE_VERSION_ID.label,
409
410
  };
410
- }
411
411
  const allFields = PackageVersion.getPackage2VersionFields(this.connection).toString();
412
412
  const query = `SELECT ${allFields} FROM Package2Version WHERE ${queryConfig.clause} LIMIT 1`;
413
413
  try {
@@ -512,7 +512,7 @@ class PackageVersion {
512
512
  async updateProjectWithPackageVersion(results) {
513
513
  if (!kit_1.env.getBoolean('SF_PROJECT_AUTOUPDATE_DISABLE_FOR_PACKAGE_VERSION_CREATE')) {
514
514
  // get the newly created package version from the server
515
- const versionResult = (await this.connection.tooling.query(`SELECT Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version WHERE SubscriberPackageVersionId='${results.SubscriberPackageVersionId}'`)).records[0];
515
+ const versionResult = (await this.connection.tooling.query(`SELECT Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber FROM Package2Version WHERE SubscriberPackageVersionId='${results.SubscriberPackageVersionId ?? ''}'`)).records[0];
516
516
  const aliases = this.project.getAliasesFromPackageId(results.Package2Id);
517
517
  if (aliases.length === 0) {
518
518
  throw messages.createError('packageAliasNotFound', [results.Package2Id]);
@@ -11,7 +11,7 @@ export declare class PackageVersionCreate {
11
11
  private readonly logger;
12
12
  private metadataResolver;
13
13
  constructor(options: PackageVersionCreateOptions);
14
- createPackageVersion(): Promise<Partial<PackageVersionCreateRequestResult>>;
14
+ createPackageVersion(): Promise<PackageVersionCreateRequestResult>;
15
15
  /**
16
16
  * A dependency in the project config file may be specified using either a subscriber package version id (04t)
17
17
  * or a package Id (0Ho) + a version number. Additionally, a build number may be the actual build number, or a
@@ -21,6 +21,7 @@ export declare class PackageVersionCreate {
21
21
  * and adds it as a SubscriberPackageVersionId parameter in the dependency object.
22
22
  */
23
23
  retrieveSubscriberPackageVersionId(dependency: PackageDescriptorJson): Promise<string>;
24
+ /** side effect: removes properties from the passed in dependency! */
24
25
  private resolveSubscriberPackageVersionId;
25
26
  private validateDependencyValues;
26
27
  private resolveBuildNumber;
@@ -34,6 +35,7 @@ export declare class PackageVersionCreate {
34
35
  private createPackageVersionCreateRequestFromOptions;
35
36
  private verifyHasSource;
36
37
  private cleanGeneratedPackage;
38
+ /** side effect: modifies the passed in parameter! */
37
39
  private resolveBuildUserPermissions;
38
40
  private packageVersionCreate;
39
41
  private getPackageDirFromId;
@@ -53,6 +53,15 @@ core_1.Messages.importMessagesDirectory(__dirname);
53
53
  const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
54
54
  const DESCRIPTOR_FILE = 'package2-descriptor.json';
55
55
  class PackageVersionCreate {
56
+ options;
57
+ apiVersionFromPackageXml;
58
+ project;
59
+ connection;
60
+ packageObject;
61
+ packageId;
62
+ pkg;
63
+ logger;
64
+ metadataResolver;
56
65
  constructor(options) {
57
66
  this.options = options;
58
67
  this.connection = this.options.connection;
@@ -131,6 +140,7 @@ class PackageVersionCreate {
131
140
  }
132
141
  return pkgVerQueryResult.records[0].SubscriberPackageVersionId;
133
142
  }
143
+ /** side effect: removes properties from the passed in dependency! */
134
144
  async resolveSubscriberPackageVersionId(dependency) {
135
145
  await this.validateDependencyValues(dependency);
136
146
  if (dependency.subscriberPackageVersionId) {
@@ -436,11 +446,12 @@ class PackageVersionCreate {
436
446
  if (settingsGenerator.hasSettings()) {
437
447
  await settingsGenerator.createDeploy();
438
448
  await settingsGenerator.createDeployPackageContents(this.apiVersionFromPackageXml);
439
- await (0, packageUtils_1.zipDir)(`${settingsGenerator.getDestinationPath()}${node_path_1.default.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
449
+ await (0, packageUtils_1.zipDir)(`${settingsGenerator.getDestinationPath() ?? ''}${node_path_1.default.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
440
450
  }
441
451
  // Zip the Version Info and package.zip files into another zip
442
452
  await (0, packageUtils_1.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
443
453
  }
454
+ /** side effect: modifies the passed in parameter! */
444
455
  resolveBuildUserPermissions(packageDescriptorJson) {
445
456
  // Process permissionSet and permissionSetLicenses that should be enabled when running Apex tests
446
457
  // This only applies if code coverage is enabled
@@ -671,7 +682,7 @@ class PackageVersionCreate {
671
682
  throw new Error(messages.getMessage('errorInvalidAncestorVersionFormat', [packageDescriptorJson.ancestorVersion]));
672
683
  }
673
684
  const query = 'SELECT Id, IsReleased FROM Package2Version ' +
674
- `WHERE Package2Id = '${packageId}' AND MajorVersion = ${versionNumberSplit[0]} AND MinorVersion = ${versionNumberSplit[1]} AND PatchVersion = ${versionNumberSplit[2]}`;
685
+ `WHERE Package2Id = '${packageId ?? ''}' AND MajorVersion = ${versionNumberSplit[0]} AND MinorVersion = ${versionNumberSplit[1]} AND PatchVersion = ${versionNumberSplit[2]}`;
675
686
  let queriedAncestorId;
676
687
  const ancestorVersionResult = await this.connection.tooling.query(query);
677
688
  if (!ancestorVersionResult.totalSize) {
@@ -91,6 +91,11 @@ const allZeroesInstallOptions = {
91
91
  * `const installStatus = await new SubscriberPackageVersion(options).install(request, options);`
92
92
  */
93
93
  class SubscriberPackageVersion {
94
+ options;
95
+ password;
96
+ connection;
97
+ id;
98
+ data;
94
99
  constructor(options) {
95
100
  this.options = options;
96
101
  this.connection = this.options.connection;
@@ -19,6 +19,10 @@ var BuildNumberToken;
19
19
  BuildNumberToken["NONE_VERSION_NUMBER_TOKEN"] = "NONE";
20
20
  })(BuildNumberToken || (exports.BuildNumberToken = BuildNumberToken = {}));
21
21
  class VersionNumber {
22
+ major;
23
+ minor;
24
+ patch;
25
+ build;
22
26
  constructor(major, minor, patch, build) {
23
27
  this.major = major;
24
28
  this.minor = minor;
@@ -32,6 +32,8 @@ const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package1
32
32
  * More implementation examples are in the plugin here: https://github.com/salesforcecli/plugin-packaging/tree/main/src/commands/force/package1/
33
33
  */
34
34
  class Package1Version {
35
+ connection;
36
+ id;
35
37
  /**
36
38
  * Package1Version Constructor - Class to be used with 1st generation package versions
37
39
  *
@@ -1,5 +1,5 @@
1
1
  import { Connection, ScratchOrgInfo, SfdcUrl, SfError, SfProject } from '@salesforce/core';
2
- import { Many, Nullable } from '@salesforce/ts-types';
2
+ import { Many } from '@salesforce/ts-types';
3
3
  import type { SaveError } from '@jsforce/jsforce-node';
4
4
  import { Duration } from '@salesforce/kit';
5
5
  import { PackageDescriptorJson, PackageType, PackagingSObjects } from '../interfaces';
@@ -40,7 +40,7 @@ export declare function massageErrorMessage(err: Error): Error;
40
40
  * @param connection For tooling query
41
41
  */
42
42
  export declare function getPackageVersionId(versionId: string, connection: Connection): Promise<string | undefined>;
43
- export declare function escapeInstallationKey(key?: string): Nullable<string>;
43
+ export declare function escapeInstallationKey(key: string): string;
44
44
  /**
45
45
  * Get the ContainerOptions for the specified Package2 (0Ho) IDs.
46
46
  *
@@ -208,7 +208,7 @@ async function getPackageVersionId(versionId, connection) {
208
208
  });
209
209
  }
210
210
  function escapeInstallationKey(key) {
211
- return key ? key.replace(/\\/g, '\\\\').replace(/'/g, "\\'") : null;
211
+ return key.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
212
212
  }
213
213
  /**
214
214
  * Get the ContainerOptions for the specified Package2 (0Ho) IDs.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/packaging",
3
- "version": "4.1.5",
3
+ "version": "4.1.6",
4
4
  "description": "Packaging library for the Salesforce packaging platform",
5
5
  "main": "lib/exported",
6
6
  "types": "lib/exported.d.ts",
@@ -42,13 +42,13 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "@jsforce/jsforce-node": "^3.2.0",
45
- "@salesforce/core": "^8.2.3",
45
+ "@salesforce/core": "^8.2.7",
46
46
  "@salesforce/kit": "^3.1.6",
47
47
  "@salesforce/schemas": "^1.9.0",
48
48
  "@salesforce/source-deploy-retrieve": "^12.1.8",
49
- "@salesforce/ts-types": "^2.0.10",
49
+ "@salesforce/ts-types": "^2.0.11",
50
50
  "@salesforce/types": "^1.2.0",
51
- "fast-xml-parser": "^4.4.0",
51
+ "fast-xml-parser": "^4.4.1",
52
52
  "globby": "^11",
53
53
  "graphology": "^0.25.4",
54
54
  "graphology-traversal": "^0.3.1",
@@ -57,14 +57,14 @@
57
57
  "object-treeify": "^2"
58
58
  },
59
59
  "devDependencies": {
60
- "@salesforce/cli-plugins-testkit": "^5.3.18",
61
- "@salesforce/dev-scripts": "^10.2.2",
60
+ "@salesforce/cli-plugins-testkit": "^5.3.20",
61
+ "@salesforce/dev-scripts": "^10.2.8",
62
62
  "@types/globby": "^9.1.0",
63
63
  "@types/jszip": "^3.4.1",
64
- "eslint-plugin-sf-plugin": "^1.18.11",
64
+ "eslint-plugin-sf-plugin": "^1.20.1",
65
65
  "shelljs": "0.8.5",
66
66
  "ts-node": "^10.9.2",
67
- "typescript": "^5.5.3"
67
+ "typescript": "^5.5.4"
68
68
  },
69
69
  "publishConfig": {
70
70
  "access": "public"