@salesforce/packaging 0.1.20 → 1.0.1

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 (34) hide show
  1. package/lib/interfaces/packagingInterfacesAndType.d.ts +1 -1
  2. package/lib/package/index.d.ts +1 -5
  3. package/lib/package/index.js +3 -5
  4. package/lib/package/package.d.ts +9 -0
  5. package/lib/package/package.js +22 -6
  6. package/lib/package/packageAncestry.d.ts +1 -1
  7. package/lib/package/packageAncestry.js +5 -5
  8. package/lib/package/packageConvert.js +13 -16
  9. package/lib/package/packageDelete.js +3 -5
  10. package/lib/package/packageInstall.js +7 -8
  11. package/lib/package/packageUninstall.js +2 -2
  12. package/lib/package/packageVersion.js +17 -17
  13. package/lib/package/packageVersionCreate.js +38 -36
  14. package/lib/package/packageVersionCreateRequest.js +2 -2
  15. package/lib/package/packageVersionList.js +2 -2
  16. package/lib/package/subscriberPackageVersion.d.ts +8 -2
  17. package/lib/package/subscriberPackageVersion.js +21 -6
  18. package/lib/{utils → package}/versionNumber.d.ts +0 -0
  19. package/lib/{utils → package}/versionNumber.js +0 -0
  20. package/lib/package1/index.d.ts +1 -1
  21. package/lib/package1/index.js +3 -15
  22. package/lib/utils/index.d.ts +1 -3
  23. package/lib/utils/index.js +5 -17
  24. package/lib/utils/packageUtils.d.ts +25 -48
  25. package/lib/utils/packageUtils.js +82 -71
  26. package/package.json +2 -2
  27. package/lib/constants.d.ts +0 -26
  28. package/lib/constants.js +0 -45
  29. package/lib/package/packageInstalledList.d.ts +0 -3
  30. package/lib/package/packageInstalledList.js +0 -15
  31. package/lib/utils/srcDevUtils.d.ts +0 -11
  32. package/lib/utils/srcDevUtils.js +0 -65
  33. package/lib/utils/uniqid.d.ts +0 -14
  34. package/lib/utils/uniqid.js +0 -34
@@ -14,14 +14,13 @@ const core_1 = require("@salesforce/core");
14
14
  const source_deploy_retrieve_1 = require("@salesforce/source-deploy-retrieve");
15
15
  const scratchOrgSettingsGenerator_1 = require("@salesforce/core/lib/org/scratchOrgSettingsGenerator");
16
16
  const xml2js = require("xml2js");
17
- const uniqid_1 = require("../utils/uniqid");
18
17
  const pkgUtils = require("../utils/packageUtils");
19
- const utils_1 = require("../utils");
20
18
  const interfaces_1 = require("../interfaces");
21
- const utils_2 = require("../utils");
19
+ const packageUtils_1 = require("../utils/packageUtils");
22
20
  const packageProfileApi_1 = require("./packageProfileApi");
23
21
  const packageVersionCreateRequest_1 = require("./packageVersionCreateRequest");
24
22
  const package_1 = require("./package");
23
+ const versionNumber_1 = require("./versionNumber");
25
24
  core_1.Messages.importMessagesDirectory(__dirname);
26
25
  const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
27
26
  const DESCRIPTOR_FILE = 'package2-descriptor.json';
@@ -59,7 +58,7 @@ class PackageVersionCreate {
59
58
  if (packageName) {
60
59
  // SDR will build an output path like /output/directory/packageName/package.xml
61
60
  // this was breaking from toolbelt, so to revert it we copy the directory up a level and delete the original
62
- (0, utils_2.copyDir)(convertResult.packagePath, outputDirectory);
61
+ (0, packageUtils_1.copyDir)(convertResult.packagePath, outputDirectory);
63
62
  try {
64
63
  fs.rmSync(convertResult.packagePath, { recursive: true });
65
64
  }
@@ -81,7 +80,8 @@ class PackageVersionCreate {
81
80
  if (dependency.packageId && dependency.package) {
82
81
  throw messages.createError('errorPackageAndPackageIdCollision', []);
83
82
  }
84
- const packageIdFromAlias = pkgUtils.getPackageIdFromAlias(dependency.packageId || dependency.package, this.project);
83
+ const packageIdFromAlias = this.project.getPackageIdFromAlias(dependency.packageId || dependency.package) ??
84
+ (dependency.packageId || dependency.package);
85
85
  // If valid 04t package, just return it to be used straight away.
86
86
  if (pkgUtils.validateIdNoThrow(pkgUtils.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, packageIdFromAlias)) {
87
87
  dependency.subscriberPackageVersionId = packageIdFromAlias;
@@ -93,7 +93,7 @@ class PackageVersionCreate {
93
93
  // Just override dependency.packageId value to the resolved alias.
94
94
  dependency.packageId = packageIdFromAlias;
95
95
  pkgUtils.validateId(pkgUtils.BY_LABEL.PACKAGE_ID, dependency.packageId);
96
- this.validateVersionNumber(dependency.versionNumber, utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
96
+ this.validateVersionNumber(dependency.versionNumber, versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
97
97
  await this.validatePatchVersion(dependency.versionNumber, dependency.packageId);
98
98
  // Validate that the Package2 id exists on the server
99
99
  const query = `SELECT Id FROM Package2 WHERE Id = '${dependency.packageId}'`;
@@ -117,7 +117,7 @@ class PackageVersionCreate {
117
117
  // if a 04t id is specified just use it.
118
118
  return dependency;
119
119
  }
120
- const versionNumber = utils_1.VersionNumber.from(dependency.versionNumber);
120
+ const versionNumber = versionNumber_1.VersionNumber.from(dependency.versionNumber);
121
121
  const buildNumber = versionNumber.build;
122
122
  // use the dependency.branch if present otherwise use the branch of the version being created
123
123
  const branch = dependency.branch || dependency.branch === '' ? dependency.branch : this.options.branch;
@@ -127,7 +127,7 @@ class PackageVersionCreate {
127
127
  // now that we have a full build number, query for the associated 04t.
128
128
  // because the build number may not be unique across versions, add in conditionals for
129
129
  // the branch or the RELEASED token (if used)
130
- const branchOrReleasedCondition = buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
130
+ const branchOrReleasedCondition = buildNumber === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
131
131
  ? 'AND IsReleased = true'
132
132
  : `AND Branch = ${branchString}`;
133
133
  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}`;
@@ -145,7 +145,7 @@ class PackageVersionCreate {
145
145
  // warn user of the resolved build number when LATEST and RELEASED keywords are used
146
146
  if (versionNumber.isbuildKeyword()) {
147
147
  versionNumber.build = resolvedBuildNumber;
148
- if (buildNumber === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
148
+ if (buildNumber === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
149
149
  this.logger.info(messages.getMessage('buildNumberResolvedForLatest', [
150
150
  dependency.package,
151
151
  versionNumber.toString(),
@@ -153,7 +153,7 @@ class PackageVersionCreate {
153
153
  dependency.subscriberPackageVersionId,
154
154
  ]));
155
155
  }
156
- else if (buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
156
+ else if (buildNumber === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
157
157
  this.logger.info(messages.getMessage('buildNumberResolvedForReleased', [
158
158
  dependency.package,
159
159
  versionNumber.toString(),
@@ -175,18 +175,18 @@ class PackageVersionCreate {
175
175
  // query for the LATEST or RELEASED build number (excluding deleted versions)
176
176
  let branchCondition = '';
177
177
  let releasedCondition = '';
178
- if (versionNumber[3] === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
178
+ if (versionNumber[3] === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
179
179
  // respect the branch when querying for LATEST
180
180
  const branchString = !branch || branch === '' ? 'null' : `'${branch}'`;
181
181
  branchCondition = `AND Branch = ${branchString}`;
182
182
  }
183
- else if (versionNumber[3] === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
183
+ else if (versionNumber[3] === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
184
184
  releasedCondition = 'AND IsReleased = true';
185
185
  }
186
186
  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}`;
187
187
  const results = await this.connection.tooling.query(query);
188
188
  if (results.records?.length === 0 || results.records[0].expr0 == null) {
189
- if (versionNumber.build === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
189
+ if (versionNumber.build === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
190
190
  throw messages.createError('noReleaseVersionFound', [packageId, versionNumber.toString()]);
191
191
  }
192
192
  else {
@@ -230,7 +230,7 @@ class PackageVersionCreate {
230
230
  */
231
231
  async createPackageVersionCreateRequestFromOptions() {
232
232
  const preserveFiles = !!(this.options.preserve || process.env.SFDX_PACKAGE2_VERSION_CREATE_PRESERVE);
233
- const uniqueHash = (0, uniqid_1.uniqid)({ template: `${this.packageId}-%s` });
233
+ const uniqueHash = (0, packageUtils_1.uniqid)({ template: `${this.packageId}-%s` });
234
234
  const packageVersTmpRoot = path.join(os.tmpdir(), `${uniqueHash}`);
235
235
  const packageVersMetadataFolder = path.join(packageVersTmpRoot, 'md-files');
236
236
  const unpackagedMetadataFolder = path.join(packageVersTmpRoot, 'unpackaged-md-files');
@@ -368,19 +368,19 @@ class PackageVersionCreate {
368
368
  });
369
369
  await fs.promises.writeFile(path.join(packageVersMetadataFolder, 'package.xml'), xml, 'utf-8');
370
370
  // Zip the packageVersMetadataFolder folder and put the zip in {packageVersBlobDirectory}/package.zip
371
- await (0, utils_2.zipDir)(packageVersMetadataFolder, metadataZipFile);
371
+ await (0, packageUtils_1.zipDir)(packageVersMetadataFolder, metadataZipFile);
372
372
  if (hasUnpackagedMetadata) {
373
373
  // Zip the unpackagedMetadataFolder folder and put the zip in {packageVersBlobDirectory}/{unpackagedMetadataZipFile}
374
- await (0, utils_2.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
374
+ await (0, packageUtils_1.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
375
375
  }
376
376
  // Zip up the expanded settings (if present)
377
377
  if (settingsGenerator.hasSettings()) {
378
378
  await settingsGenerator.createDeploy();
379
379
  await settingsGenerator.createDeployPackageContents(this.apiVersionFromPackageXml);
380
- await (0, utils_2.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
380
+ await (0, packageUtils_1.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
381
381
  }
382
382
  // Zip the Version Info and package.zip files into another zip
383
- await (0, utils_2.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
383
+ await (0, packageUtils_1.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
384
384
  }
385
385
  resolveApexTestPermissions(packageDescriptorJson) {
386
386
  // Process permissionSet and permissionSetLicenses that should be enabled when running Apex tests
@@ -460,7 +460,7 @@ class PackageVersionCreate {
460
460
  this.options.packageId || this.options.path,
461
461
  ]);
462
462
  }
463
- this.packageId = this.project.getPackageIdFromAlias(packageName) || packageName;
463
+ this.packageId = this.project.getPackageIdFromAlias(packageName) ?? packageName;
464
464
  this.options.profileApi = await this.resolveUserLicenses(this.packageObject.includeProfileUserLicenses);
465
465
  // At this point, the packageIdFromAlias should have been resolved to an Id. Now, we
466
466
  // need to validate that the Id is correct.
@@ -549,8 +549,8 @@ class PackageVersionCreate {
549
549
  if (!packageDescriptorJson.versionName) {
550
550
  const versionNumber = packageDescriptorJson.versionNumber;
551
551
  packageDescriptorJson.versionName =
552
- versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] === utils_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN
553
- ? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP + utils_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN))
552
+ versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] === versionNumber_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN
553
+ ? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP + versionNumber_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN))
554
554
  : versionNumber;
555
555
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
556
556
  const { connection: c, project: p, profileApi: a, ...warnOptions } = options;
@@ -577,7 +577,7 @@ class PackageVersionCreate {
577
577
  }
578
578
  // eslint-disable-next-line class-methods-use-this
579
579
  validateVersionNumber(versionNumberString, supportedBuildNumberToken, supportedBuildNumberToken2) {
580
- const versionNumber = utils_1.VersionNumber.from(versionNumberString);
580
+ const versionNumber = versionNumber_1.VersionNumber.from(versionNumberString);
581
581
  // build number can be a number or valid token
582
582
  if (Number.isNaN(parseInt(`${versionNumber.build}`, 10)) &&
583
583
  versionNumber.build !== supportedBuildNumberToken &&
@@ -603,7 +603,7 @@ class PackageVersionCreate {
603
603
  }
604
604
  // Enforce a patch version of zero (0) for Locked packages only
605
605
  if (queryResult.records[0].ContainerOptions === 'Locked') {
606
- const versionNumber = utils_1.VersionNumber.from(versionNumberString);
606
+ const versionNumber = versionNumber_1.VersionNumber.from(versionNumberString);
607
607
  if (versionNumber.patch !== '0') {
608
608
  throw messages.createError('errorInvalidPatchNumber', [versionNumberString]);
609
609
  }
@@ -612,7 +612,9 @@ class PackageVersionCreate {
612
612
  // eslint-disable-next-line complexity
613
613
  async getAncestorId(packageDescriptorJson, project, versionNumberString, skipAncestorCheck) {
614
614
  // If an id property is present, use it. Otherwise, look up the package id from the package property.
615
- const packageId = packageDescriptorJson.id ?? (0, utils_2.getPackageIdFromAlias)(packageDescriptorJson.package, project);
615
+ const packageId = packageDescriptorJson.id ??
616
+ project.getPackageIdFromAlias(packageDescriptorJson.package) ??
617
+ packageDescriptorJson.package;
616
618
  // No need to proceed if Unlocked
617
619
  if ((await this.getPackageType()) === 'Unlocked') {
618
620
  return '';
@@ -620,13 +622,13 @@ class PackageVersionCreate {
620
622
  let ancestorId = '';
621
623
  // ancestorID can be alias, 05i, or 04t;
622
624
  // validate and convert to 05i, as needed
623
- const versionNumber = utils_1.VersionNumber.from(versionNumberString);
625
+ const versionNumber = versionNumber_1.VersionNumber.from(versionNumberString);
624
626
  let origSpecifiedAncestor = packageDescriptorJson.ancestorId;
625
627
  let highestReleasedVersion = null;
626
- const explicitUseHighestRelease = packageDescriptorJson.ancestorId === utils_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN ||
627
- packageDescriptorJson.ancestorVersion === utils_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN;
628
- const explicitUseNoAncestor = packageDescriptorJson.ancestorId === utils_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN ||
629
- packageDescriptorJson.ancestorVersion === utils_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN;
628
+ const explicitUseHighestRelease = packageDescriptorJson.ancestorId === versionNumber_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN ||
629
+ packageDescriptorJson.ancestorVersion === versionNumber_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN;
630
+ const explicitUseNoAncestor = packageDescriptorJson.ancestorId === versionNumber_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN ||
631
+ packageDescriptorJson.ancestorVersion === versionNumber_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN;
630
632
  if ((explicitUseHighestRelease || explicitUseNoAncestor) &&
631
633
  packageDescriptorJson.ancestorId &&
632
634
  packageDescriptorJson.ancestorVersion) {
@@ -651,13 +653,13 @@ class PackageVersionCreate {
651
653
  // at this point if explicitUseHighestRelease=true, we have returned the ancestorId or thrown an error
652
654
  // highestReleasedVersion should be null only if skipAncestorCheck or if there is no existing released package version
653
655
  if (!explicitUseNoAncestor && packageDescriptorJson.ancestorId) {
654
- ancestorId = (0, utils_2.getPackageIdFromAlias)(packageDescriptorJson.ancestorId, project);
655
- (0, utils_2.validateId)([utils_2.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, utils_2.BY_LABEL.PACKAGE_VERSION_ID], ancestorId);
656
- ancestorId = await (0, utils_2.getPackageVersionId)(ancestorId, this.connection);
656
+ ancestorId = project.getPackageIdFromAlias(packageDescriptorJson.ancestorId) ?? packageDescriptorJson.ancestorId;
657
+ (0, packageUtils_1.validateId)([packageUtils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, packageUtils_1.BY_LABEL.PACKAGE_VERSION_ID], ancestorId);
658
+ ancestorId = await (0, packageUtils_1.getPackageVersionId)(ancestorId, this.connection);
657
659
  }
658
660
  if (!explicitUseNoAncestor && packageDescriptorJson.ancestorVersion) {
659
661
  const regNumbers = new RegExp('^[0-9]+$');
660
- const versionNumberSplit = packageDescriptorJson.ancestorVersion.split(utils_2.VERSION_NUMBER_SEP);
662
+ const versionNumberSplit = packageDescriptorJson.ancestorVersion.split(packageUtils_1.VERSION_NUMBER_SEP);
661
663
  if (versionNumberSplit.length < 3 ||
662
664
  versionNumberSplit.length > 4 ||
663
665
  !versionNumberSplit[0].match(regNumbers) ||
@@ -701,7 +703,7 @@ class PackageVersionCreate {
701
703
  }
702
704
  else {
703
705
  // the explicitUseNoAncestor && skipAncestorCheck case is handled above
704
- throw messages.createError('errorAncestorNoneNotAllowed', [(0, utils_2.getPackageVersionNumber)(highestReleasedVersion)]);
706
+ throw messages.createError('errorAncestorNoneNotAllowed', [(0, packageUtils_1.getPackageVersionNumber)(highestReleasedVersion)]);
705
707
  }
706
708
  }
707
709
  if (!isPatch && !skipAncestorCheck) {
@@ -709,7 +711,7 @@ class PackageVersionCreate {
709
711
  if (highestReleasedVersion.Id !== ancestorId) {
710
712
  throw messages.createError('errorAncestorNotHighest', [
711
713
  origSpecifiedAncestor,
712
- (0, utils_2.getPackageVersionNumber)(highestReleasedVersion),
714
+ (0, packageUtils_1.getPackageVersionNumber)(highestReleasedVersion),
713
715
  ]);
714
716
  }
715
717
  }
@@ -721,7 +723,7 @@ class PackageVersionCreate {
721
723
  return ancestorId;
722
724
  }
723
725
  async getAncestorIdHighestRelease(packageId, versionNumberString, explicitUseHighestRelease, skipAncestorCheck) {
724
- const versionNumber = versionNumberString.split(utils_2.VERSION_NUMBER_SEP);
726
+ const versionNumber = versionNumberString.split(packageUtils_1.VERSION_NUMBER_SEP);
725
727
  const isPatch = versionNumber[2] !== '0';
726
728
  const result = {
727
729
  finalAncestorId: null,
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.byId = exports.list = void 0;
10
10
  const util = require("util");
11
11
  const core_1 = require("@salesforce/core");
12
- const utils_1 = require("../utils");
12
+ const packageUtils_1 = require("../utils/packageUtils");
13
13
  core_1.Messages.importMessagesDirectory(__dirname);
14
14
  const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
15
15
  const STATUS_ERROR = 'Error';
@@ -28,7 +28,7 @@ async function list(options) {
28
28
  return await query(util.format(QUERY, whereClause), options.connection);
29
29
  }
30
30
  catch (err) {
31
- throw (0, utils_1.applyErrorAction)((0, utils_1.massageErrorMessage)(err));
31
+ throw (0, packageUtils_1.applyErrorAction)((0, packageUtils_1.massageErrorMessage)(err));
32
32
  }
33
33
  }
34
34
  exports.list = list;
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.validateDays = exports.constructWhere = exports.assembleQueryParts = exports.listPackageVersions = exports.DEFAULT_ORDER_BY_FIELDS = void 0;
10
10
  const core_1 = require("@salesforce/core");
11
11
  const ts_types_1 = require("@salesforce/ts-types");
12
- const utils_1 = require("../utils");
12
+ const packageUtils_1 = require("../utils/packageUtils");
13
13
  core_1.Messages.importMessagesDirectory(__dirname);
14
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
@@ -59,7 +59,7 @@ function constructWhere(packageIds, createdLastDays, lastModLastDays, isReleased
59
59
  const uniquePackageIds = [...new Set(packageIds)];
60
60
  // validate ids
61
61
  uniquePackageIds.forEach((packageId) => {
62
- (0, utils_1.validateId)(utils_1.BY_LABEL.PACKAGE_ID, packageId);
62
+ (0, packageUtils_1.validateId)(packageUtils_1.BY_LABEL.PACKAGE_ID, packageId);
63
63
  });
64
64
  // stash where part
65
65
  where.push(`Package2Id IN ('${uniquePackageIds.join("','")}')`);
@@ -1,8 +1,8 @@
1
1
  import { Connection } from '@salesforce/core';
2
2
  import { Duration } from '@salesforce/kit';
3
3
  import { Optional } from '@salesforce/ts-types';
4
- import { PackageInstallCreateRequest, PackageInstallOptions, PackageType, PackagingSObjects, SubscriberPackageVersionOptions } from '../interfaces';
5
- import { VersionNumber } from '../utils';
4
+ import { InstalledPackages, PackageInstallCreateRequest, PackageInstallOptions, PackageType, PackagingSObjects, SubscriberPackageVersionOptions } from '../interfaces';
5
+ import { VersionNumber } from './versionNumber';
6
6
  export declare const SubscriberPackageVersionFields: string[];
7
7
  /**
8
8
  * A class that represents a SubscriberPackageVersion
@@ -25,6 +25,12 @@ export declare class SubscriberPackageVersion {
25
25
  * @param options
26
26
  */
27
27
  static installStatus(connection: Connection, packageInstallRequestOrId: string | PackagingSObjects.PackageInstallRequest, installationKey?: string, options?: PackageInstallOptions): Promise<PackagingSObjects.PackageInstallRequest>;
28
+ /**
29
+ * list the packages installed in the org
30
+ *
31
+ * @param conn: Connection to the org
32
+ */
33
+ static installedList(conn: Connection): Promise<InstalledPackages[]>;
28
34
  /**
29
35
  * Reports on the progress of a package version uninstall.
30
36
  *
@@ -9,9 +9,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.SubscriberPackageVersion = exports.SubscriberPackageVersionFields = void 0;
10
10
  const core_1 = require("@salesforce/core");
11
11
  const kit_1 = require("@salesforce/kit");
12
- const utils_1 = require("../utils");
12
+ const packageUtils_1 = require("../utils/packageUtils");
13
13
  const packageInstall_1 = require("./packageInstall");
14
14
  const packageUninstall_1 = require("./packageUninstall");
15
+ const versionNumber_1 = require("./versionNumber");
15
16
  core_1.Messages.importMessagesDirectory(__dirname);
16
17
  const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'subscriber_package_version');
17
18
  // these fields have been identified as requiring additional serverside resources in order to calculate their values
@@ -85,7 +86,7 @@ class SubscriberPackageVersion {
85
86
  }
86
87
  try {
87
88
  const project = core_1.SfProject.getInstance();
88
- this.id = project.getPackageIdFromAlias(this.options.aliasOrId) || this.options.aliasOrId;
89
+ this.id = project.getPackageIdFromAlias(this.options.aliasOrId) ?? this.options.aliasOrId;
89
90
  }
90
91
  catch (error) {
91
92
  const err = error.message;
@@ -111,7 +112,7 @@ class SubscriberPackageVersion {
111
112
  static async installStatus(connection, packageInstallRequestOrId, installationKey, options) {
112
113
  const id = typeof packageInstallRequestOrId === 'string' ? packageInstallRequestOrId : packageInstallRequestOrId.Id;
113
114
  const packageInstallRequest = await (0, packageInstall_1.getStatus)(connection, id);
114
- const pollingTimeout = (0, utils_1.numberToDuration)(options.pollingTimeout) ?? kit_1.Duration.milliseconds(0);
115
+ const pollingTimeout = (0, packageUtils_1.numberToDuration)(options.pollingTimeout) ?? kit_1.Duration.milliseconds(0);
115
116
  if (pollingTimeout.milliseconds <= 0) {
116
117
  return packageInstallRequest;
117
118
  }
@@ -120,6 +121,20 @@ class SubscriberPackageVersion {
120
121
  return (0, packageInstall_1.pollStatus)(connection, id, options);
121
122
  }
122
123
  }
124
+ /**
125
+ * list the packages installed in the org
126
+ *
127
+ * @param conn: Connection to the org
128
+ */
129
+ static async installedList(conn) {
130
+ try {
131
+ const query = 'SELECT Id, SubscriberPackageId, SubscriberPackage.NamespacePrefix, SubscriberPackage.Name, SubscriberPackageVersion.Id, SubscriberPackageVersion.Name, SubscriberPackageVersion.MajorVersion, SubscriberPackageVersion.MinorVersion, SubscriberPackageVersion.PatchVersion, SubscriberPackageVersion.BuildNumber FROM InstalledSubscriberPackage ORDER BY SubscriberPackageId';
132
+ return (await conn.tooling.query(query)).records;
133
+ }
134
+ catch (err) {
135
+ throw (0, packageUtils_1.applyErrorAction)((0, packageUtils_1.massageErrorMessage)(err));
136
+ }
137
+ }
123
138
  /**
124
139
  * Reports on the progress of a package version uninstall.
125
140
  *
@@ -198,7 +213,7 @@ class SubscriberPackageVersion {
198
213
  const minorVersion = await this.getField('MinorVersion');
199
214
  const patchVersion = await this.getField('PatchVersion');
200
215
  const buildNumber = await this.getField('BuildNumber');
201
- return new utils_1.VersionNumber(majorVersion, minorVersion, patchVersion, buildNumber);
216
+ return new versionNumber_1.VersionNumber(majorVersion, minorVersion, patchVersion, buildNumber);
202
217
  }
203
218
  /**
204
219
  * Is the package a managed package?
@@ -268,7 +283,7 @@ class SubscriberPackageVersion {
268
283
  }
269
284
  try {
270
285
  const queryNoKey = `SELECT ${queryFields.toString()} FROM SubscriberPackageVersion WHERE Id ='${await this.getId()}'`;
271
- const escapedInstallationKey = this.password ? (0, utils_1.escapeInstallationKey)(this.password) : null;
286
+ const escapedInstallationKey = this.password ? (0, packageUtils_1.escapeInstallationKey)(this.password) : null;
272
287
  const queryWithKey = `${queryNoKey} AND InstallationKey ='${escapedInstallationKey}'`;
273
288
  this.data = await this.connection.singleRecordQuery(queryWithKey, {
274
289
  tooling: true,
@@ -300,7 +315,7 @@ class SubscriberPackageVersion {
300
315
  return await SubscriberPackageVersion.installStatus(this.connection, pkgVersionInstallRequest.Id, pkgInstallCreateRequest.Password, options);
301
316
  }
302
317
  catch (e) {
303
- throw (0, utils_1.applyErrorAction)((0, utils_1.massageErrorMessage)(e));
318
+ throw (0, packageUtils_1.applyErrorAction)((0, packageUtils_1.massageErrorMessage)(e));
304
319
  }
305
320
  }
306
321
  /**
File without changes
File without changes
@@ -1 +1 @@
1
- export * from './package1Version';
1
+ export { Package1Version } from './package1Version';
@@ -1,24 +1,12 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Package1Version = void 0;
17
4
  /*
18
5
  * Copyright (c) 2022, salesforce.com, inc.
19
6
  * All rights reserved.
20
7
  * Licensed under the BSD 3-Clause license.
21
8
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
22
9
  */
23
- __exportStar(require("./package1Version"), exports);
10
+ var package1Version_1 = require("./package1Version");
11
+ Object.defineProperty(exports, "Package1Version", { enumerable: true, get: function () { return package1Version_1.Package1Version; } });
24
12
  //# sourceMappingURL=index.js.map
@@ -1,3 +1 @@
1
- export * from './packageUtils';
2
- export * from './srcDevUtils';
3
- export * from './versionNumber';
1
+ export { INSTALL_URL_BASE, getContainerOptions, getPackageVersionStrings } from './packageUtils';
@@ -1,26 +1,14 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPackageVersionStrings = exports.getContainerOptions = exports.INSTALL_URL_BASE = void 0;
17
4
  /*
18
5
  * Copyright (c) 2022, salesforce.com, inc.
19
6
  * All rights reserved.
20
7
  * Licensed under the BSD 3-Clause license.
21
8
  * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
22
9
  */
23
- __exportStar(require("./packageUtils"), exports);
24
- __exportStar(require("./srcDevUtils"), exports);
25
- __exportStar(require("./versionNumber"), exports);
10
+ var packageUtils_1 = require("./packageUtils");
11
+ Object.defineProperty(exports, "INSTALL_URL_BASE", { enumerable: true, get: function () { return packageUtils_1.INSTALL_URL_BASE; } });
12
+ Object.defineProperty(exports, "getContainerOptions", { enumerable: true, get: function () { return packageUtils_1.getContainerOptions; } });
13
+ Object.defineProperty(exports, "getPackageVersionStrings", { enumerable: true, get: function () { return packageUtils_1.getPackageVersionStrings; } });
26
14
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { Connection, NamedPackageDir, PackageDir, SfdcUrl, SfError, SfProject } from '@salesforce/core';
1
+ import { Connection, SfdcUrl, SfError, SfProject } from '@salesforce/core';
2
2
  import { Many, Nullable } from '@salesforce/ts-types';
3
3
  import { SaveError } from 'jsforce';
4
4
  import { Duration } from '@salesforce/kit';
@@ -12,7 +12,6 @@ export declare type IdRegistry = {
12
12
  [key: string]: IdRegistryValue;
13
13
  };
14
14
  export declare const INSTALL_URL_BASE: SfdcUrl;
15
- export declare const SOQL_WHERE_CLAUSE_MAX_LENGTH = 4000;
16
15
  export declare const POLL_INTERVAL_SECONDS = 30;
17
16
  export declare const DEFAULT_PACKAGE_DIR: {
18
17
  path: string;
@@ -21,10 +20,22 @@ export declare const DEFAULT_PACKAGE_DIR: {
21
20
  versionNumber: string;
22
21
  default: boolean;
23
22
  };
24
- export declare const BY_PREFIX: IdRegistry;
25
23
  export declare const BY_LABEL: IdRegistry;
24
+ /**
25
+ * A function to generate a unique id and return it in the context of a template, if supplied.
26
+ *
27
+ * A template is a string that can contain `${%s}` to be replaced with a unique id.
28
+ * If the template contains the "%s" placeholder, it will be replaced with the unique id otherwise the id will be appended to the template.
29
+ *
30
+ * @param options an object with the following properties:
31
+ * - template: a template string.
32
+ * - length: the length of the unique id as presented in hexadecimal.
33
+ */
34
+ export declare function uniqid(options?: {
35
+ template?: string;
36
+ length?: number;
37
+ }): string;
26
38
  export declare function validateId(idObj: Many<IdRegistryValue>, value: string): void;
27
- export declare function getSourceApiVersion(project: SfProject): string;
28
39
  export declare function validateIdNoThrow(idObj: Many<IdRegistryValue>, value: string): IdRegistryValue | boolean;
29
40
  export declare function applyErrorAction(err: Error): Error;
30
41
  export declare function massageErrorMessage(err: Error): Error;
@@ -44,13 +55,6 @@ export declare function escapeInstallationKey(key?: string): Nullable<string>;
44
55
  * @param connection For tooling query
45
56
  */
46
57
  export declare function getContainerOptions(packageIds: string[], connection: Connection): Promise<Map<string, PackageType>>;
47
- /**
48
- * Return the Package2Version.HasMetadataRemoved field value for the given Id (05i)
49
- *
50
- * @param packageVersionId package version ID (05i)
51
- * @param connection For tooling query
52
- */
53
- export declare function getHasMetadataRemoved(packageVersionId: string, connection: Connection): Promise<boolean>;
54
58
  /**
55
59
  * Given a list of subscriber package version IDs (04t), return the associated version strings (e.g., Major.Minor.Patch.Build)
56
60
  *
@@ -59,43 +63,7 @@ export declare function getHasMetadataRemoved(packageVersionId: string, connecti
59
63
  * @param connection For tooling query
60
64
  */
61
65
  export declare function getPackageVersionStrings(subscriberPackageVersionIds: string[], connection: Connection): Promise<Map<string, string>>;
62
- /**
63
- * For queries with an IN condition, determine if the WHERE clause will exceed
64
- * SOQL's 4000 character limit. Perform multiple queries as needed to stay below the limit.
65
- *
66
- * @return concatenated array of records returned from the resulting query(ies)
67
- * @param query The full query to execute containing the replaceToken param in its IN clause
68
- * @param items The IN clause items. A length-appropriate single-quoted comma-separated string chunk will be made from the items.
69
- * @param replaceToken A placeholder in the query's IN condition that will be replaced with the chunked items
70
- * @param connection For tooling query
71
- */
72
- export declare function queryWithInConditionChunking<T = Record<string, unknown>>(query: string, items: string[], replaceToken: string, connection: Connection): Promise<T[]>;
73
- /**
74
- * Returns the number of items that can be included in a quoted comma-separated string (e.g., "'item1','item2'") not exceeding maxLength
75
- */
76
- export declare function getInClauseItemsCount(items: string[], startIndex: number, maxLength: number): number;
77
- /**
78
- * Return a version string in Major.Minor.Patch.Build format, using 0 for any empty part
79
- */
80
- export declare function concatVersion(major: string | number, minor: string | number, patch: string | number, build: string | number): string;
81
66
  export declare function getPackageVersionNumber(package2VersionObj: PackagingSObjects.Package2Version): string;
82
- export declare function getConfigPackageDirectory(packageDirs: NamedPackageDir[] | PackageDir[], lookupProperty: string, lookupValue: unknown): NamedPackageDir | PackageDir | undefined;
83
- /**
84
- * Given a packageAlias, attempt to return the associated id from the config
85
- *
86
- * @param packageAlias string representing a package alias
87
- * @param project for obtaining the project config
88
- * @returns the associated id or the arg given.
89
- */
90
- export declare function getPackageIdFromAlias(packageAlias: string, project: SfProject): string;
91
- /**
92
- * Given a package id, attempt to return the associated aliases from the config
93
- *
94
- * @param packageId string representing a package id
95
- * @param project for obtaining the project config
96
- * @returns an array of alias for the given id.
97
- */
98
- export declare function getPackageAliasesFromId(packageId: string, project: SfProject): string[];
99
67
  /**
100
68
  * Generate package alias json entry for this package version that can be written to sfdx-project.json
101
69
  *
@@ -108,7 +76,6 @@ export declare function getPackageAliasesFromId(packageId: string, project: SfPr
108
76
  * @private
109
77
  */
110
78
  export declare function generatePackageAliasEntry(connection: Connection, project: SfProject, packageVersionId: string, packageVersionNumber: string, branch: string, packageId: string): Promise<[string, string]>;
111
- export declare function formatDate(date: Date): string;
112
79
  export declare function combineSaveErrors(sObject: string, crudOperation: string, errors: SaveError[]): SfError;
113
80
  /**
114
81
  * Returns a Duration object from param duration when it is a number, otherwise return itself
@@ -117,3 +84,13 @@ export declare function combineSaveErrors(sObject: string, crudOperation: string
117
84
  * @param unit = (Default Duration.Unit.MILLISECONDS) Duration unit of number - See @link {Duration.Unit} for valid values
118
85
  */
119
86
  export declare function numberToDuration(duration: number | Duration, unit?: Duration.Unit): Duration;
87
+ /**
88
+ * Zips directory to given zipfile.
89
+ *
90
+ * https://github.com/archiverjs/node-archiver
91
+ *
92
+ * @param dir to zip
93
+ * @param zipfile
94
+ */
95
+ export declare function zipDir(dir: string, zipfile: string): Promise<void>;
96
+ export declare function copyDir(src: string, dest: string): void;