@salesforce/packaging 0.1.20 → 1.0.2

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 +41 -38
  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,14 @@ 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");
17
+ const kit_1 = require("@salesforce/kit");
18
18
  const pkgUtils = require("../utils/packageUtils");
19
- const utils_1 = require("../utils");
20
19
  const interfaces_1 = require("../interfaces");
21
- const utils_2 = require("../utils");
20
+ const packageUtils_1 = require("../utils/packageUtils");
22
21
  const packageProfileApi_1 = require("./packageProfileApi");
23
22
  const packageVersionCreateRequest_1 = require("./packageVersionCreateRequest");
24
23
  const package_1 = require("./package");
24
+ const versionNumber_1 = require("./versionNumber");
25
25
  core_1.Messages.importMessagesDirectory(__dirname);
26
26
  const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
27
27
  const DESCRIPTOR_FILE = 'package2-descriptor.json';
@@ -59,7 +59,7 @@ class PackageVersionCreate {
59
59
  if (packageName) {
60
60
  // SDR will build an output path like /output/directory/packageName/package.xml
61
61
  // 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);
62
+ (0, packageUtils_1.copyDir)(convertResult.packagePath, outputDirectory);
63
63
  try {
64
64
  fs.rmSync(convertResult.packagePath, { recursive: true });
65
65
  }
@@ -81,7 +81,8 @@ class PackageVersionCreate {
81
81
  if (dependency.packageId && dependency.package) {
82
82
  throw messages.createError('errorPackageAndPackageIdCollision', []);
83
83
  }
84
- const packageIdFromAlias = pkgUtils.getPackageIdFromAlias(dependency.packageId || dependency.package, this.project);
84
+ const packageIdFromAlias = this.project.getPackageIdFromAlias(dependency.packageId || dependency.package) ??
85
+ (dependency.packageId || dependency.package);
85
86
  // If valid 04t package, just return it to be used straight away.
86
87
  if (pkgUtils.validateIdNoThrow(pkgUtils.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, packageIdFromAlias)) {
87
88
  dependency.subscriberPackageVersionId = packageIdFromAlias;
@@ -93,7 +94,7 @@ class PackageVersionCreate {
93
94
  // Just override dependency.packageId value to the resolved alias.
94
95
  dependency.packageId = packageIdFromAlias;
95
96
  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);
97
+ this.validateVersionNumber(dependency.versionNumber, versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN, versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN);
97
98
  await this.validatePatchVersion(dependency.versionNumber, dependency.packageId);
98
99
  // Validate that the Package2 id exists on the server
99
100
  const query = `SELECT Id FROM Package2 WHERE Id = '${dependency.packageId}'`;
@@ -117,7 +118,7 @@ class PackageVersionCreate {
117
118
  // if a 04t id is specified just use it.
118
119
  return dependency;
119
120
  }
120
- const versionNumber = utils_1.VersionNumber.from(dependency.versionNumber);
121
+ const versionNumber = versionNumber_1.VersionNumber.from(dependency.versionNumber);
121
122
  const buildNumber = versionNumber.build;
122
123
  // use the dependency.branch if present otherwise use the branch of the version being created
123
124
  const branch = dependency.branch || dependency.branch === '' ? dependency.branch : this.options.branch;
@@ -127,7 +128,7 @@ class PackageVersionCreate {
127
128
  // now that we have a full build number, query for the associated 04t.
128
129
  // because the build number may not be unique across versions, add in conditionals for
129
130
  // the branch or the RELEASED token (if used)
130
- const branchOrReleasedCondition = buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
131
+ const branchOrReleasedCondition = buildNumber === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN
131
132
  ? 'AND IsReleased = true'
132
133
  : `AND Branch = ${branchString}`;
133
134
  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 +146,7 @@ class PackageVersionCreate {
145
146
  // warn user of the resolved build number when LATEST and RELEASED keywords are used
146
147
  if (versionNumber.isbuildKeyword()) {
147
148
  versionNumber.build = resolvedBuildNumber;
148
- if (buildNumber === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
149
+ if (buildNumber === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
149
150
  this.logger.info(messages.getMessage('buildNumberResolvedForLatest', [
150
151
  dependency.package,
151
152
  versionNumber.toString(),
@@ -153,7 +154,7 @@ class PackageVersionCreate {
153
154
  dependency.subscriberPackageVersionId,
154
155
  ]));
155
156
  }
156
- else if (buildNumber === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
157
+ else if (buildNumber === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
157
158
  this.logger.info(messages.getMessage('buildNumberResolvedForReleased', [
158
159
  dependency.package,
159
160
  versionNumber.toString(),
@@ -175,18 +176,18 @@ class PackageVersionCreate {
175
176
  // query for the LATEST or RELEASED build number (excluding deleted versions)
176
177
  let branchCondition = '';
177
178
  let releasedCondition = '';
178
- if (versionNumber[3] === utils_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
179
+ if (versionNumber[3] === versionNumber_1.BuildNumberToken.LATEST_BUILD_NUMBER_TOKEN) {
179
180
  // respect the branch when querying for LATEST
180
181
  const branchString = !branch || branch === '' ? 'null' : `'${branch}'`;
181
182
  branchCondition = `AND Branch = ${branchString}`;
182
183
  }
183
- else if (versionNumber[3] === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
184
+ else if (versionNumber[3] === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
184
185
  releasedCondition = 'AND IsReleased = true';
185
186
  }
186
187
  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
188
  const results = await this.connection.tooling.query(query);
188
189
  if (results.records?.length === 0 || results.records[0].expr0 == null) {
189
- if (versionNumber.build === utils_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
190
+ if (versionNumber.build === versionNumber_1.BuildNumberToken.RELEASED_BUILD_NUMBER_TOKEN) {
190
191
  throw messages.createError('noReleaseVersionFound', [packageId, versionNumber.toString()]);
191
192
  }
192
193
  else {
@@ -230,7 +231,7 @@ class PackageVersionCreate {
230
231
  */
231
232
  async createPackageVersionCreateRequestFromOptions() {
232
233
  const preserveFiles = !!(this.options.preserve || process.env.SFDX_PACKAGE2_VERSION_CREATE_PRESERVE);
233
- const uniqueHash = (0, uniqid_1.uniqid)({ template: `${this.packageId}-%s` });
234
+ const uniqueHash = (0, packageUtils_1.uniqid)({ template: `${this.packageId}-%s` });
234
235
  const packageVersTmpRoot = path.join(os.tmpdir(), `${uniqueHash}`);
235
236
  const packageVersMetadataFolder = path.join(packageVersTmpRoot, 'md-files');
236
237
  const unpackagedMetadataFolder = path.join(packageVersTmpRoot, 'unpackaged-md-files');
@@ -252,7 +253,7 @@ class PackageVersionCreate {
252
253
  // Copy all the metadata from the workspace to a tmp folder
253
254
  const componentSet = await this.generateMDFolderForArtifact(mdOptions);
254
255
  this.verifyHasSource(componentSet);
255
- const packageDescriptorJson = this.packageObject;
256
+ const packageDescriptorJson = (0, kit_1.cloneJson)(this.packageObject);
256
257
  if (packageDescriptorJson.package) {
257
258
  delete packageDescriptorJson.package;
258
259
  packageDescriptorJson.id = this.packageId;
@@ -368,19 +369,19 @@ class PackageVersionCreate {
368
369
  });
369
370
  await fs.promises.writeFile(path.join(packageVersMetadataFolder, 'package.xml'), xml, 'utf-8');
370
371
  // Zip the packageVersMetadataFolder folder and put the zip in {packageVersBlobDirectory}/package.zip
371
- await (0, utils_2.zipDir)(packageVersMetadataFolder, metadataZipFile);
372
+ await (0, packageUtils_1.zipDir)(packageVersMetadataFolder, metadataZipFile);
372
373
  if (hasUnpackagedMetadata) {
373
374
  // Zip the unpackagedMetadataFolder folder and put the zip in {packageVersBlobDirectory}/{unpackagedMetadataZipFile}
374
- await (0, utils_2.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
375
+ await (0, packageUtils_1.zipDir)(unpackagedMetadataFolder, unpackagedMetadataZipFile);
375
376
  }
376
377
  // Zip up the expanded settings (if present)
377
378
  if (settingsGenerator.hasSettings()) {
378
379
  await settingsGenerator.createDeploy();
379
380
  await settingsGenerator.createDeployPackageContents(this.apiVersionFromPackageXml);
380
- await (0, utils_2.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
381
+ await (0, packageUtils_1.zipDir)(`${settingsGenerator.getDestinationPath()}${path.sep}${settingsGenerator.getShapeDirName()}`, settingsZipFile);
381
382
  }
382
383
  // Zip the Version Info and package.zip files into another zip
383
- await (0, utils_2.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
384
+ await (0, packageUtils_1.zipDir)(packageVersBlobDirectory, packageVersBlobZipFile);
384
385
  }
385
386
  resolveApexTestPermissions(packageDescriptorJson) {
386
387
  // Process permissionSet and permissionSetLicenses that should be enabled when running Apex tests
@@ -406,7 +407,7 @@ class PackageVersionCreate {
406
407
  }
407
408
  async resolveUnpackagedMetadata(packageDescriptorJson, unpackagedMetadataFolder, clientSideInfo, codeCoverage) {
408
409
  // Add the Unpackaged Metadata, if any, to the output directory, only when code coverage is specified
409
- if (codeCoverage && packageDescriptorJson.unpackagedMetadata && packageDescriptorJson.unpackagedMetadata.path) {
410
+ if (codeCoverage && packageDescriptorJson.unpackagedMetadata?.path) {
410
411
  const unpackagedPath = path.join(process.cwd(), packageDescriptorJson.unpackagedMetadata.path);
411
412
  if (!fs.existsSync(unpackagedPath)) {
412
413
  throw messages.createError('unpackagedMDDirectoryDoesNotExist', [
@@ -460,7 +461,7 @@ class PackageVersionCreate {
460
461
  this.options.packageId || this.options.path,
461
462
  ]);
462
463
  }
463
- this.packageId = this.project.getPackageIdFromAlias(packageName) || packageName;
464
+ this.packageId = this.project.getPackageIdFromAlias(packageName) ?? packageName;
464
465
  this.options.profileApi = await this.resolveUserLicenses(this.packageObject.includeProfileUserLicenses);
465
466
  // At this point, the packageIdFromAlias should have been resolved to an Id. Now, we
466
467
  // need to validate that the Id is correct.
@@ -549,8 +550,8 @@ class PackageVersionCreate {
549
550
  if (!packageDescriptorJson.versionName) {
550
551
  const versionNumber = packageDescriptorJson.versionNumber;
551
552
  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))
553
+ versionNumber.split(pkgUtils.VERSION_NUMBER_SEP)[3] === versionNumber_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN
554
+ ? versionNumber.substring(0, versionNumber.indexOf(pkgUtils.VERSION_NUMBER_SEP + versionNumber_1.BuildNumberToken.NEXT_BUILD_NUMBER_TOKEN))
554
555
  : versionNumber;
555
556
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
556
557
  const { connection: c, project: p, profileApi: a, ...warnOptions } = options;
@@ -577,7 +578,7 @@ class PackageVersionCreate {
577
578
  }
578
579
  // eslint-disable-next-line class-methods-use-this
579
580
  validateVersionNumber(versionNumberString, supportedBuildNumberToken, supportedBuildNumberToken2) {
580
- const versionNumber = utils_1.VersionNumber.from(versionNumberString);
581
+ const versionNumber = versionNumber_1.VersionNumber.from(versionNumberString);
581
582
  // build number can be a number or valid token
582
583
  if (Number.isNaN(parseInt(`${versionNumber.build}`, 10)) &&
583
584
  versionNumber.build !== supportedBuildNumberToken &&
@@ -603,7 +604,7 @@ class PackageVersionCreate {
603
604
  }
604
605
  // Enforce a patch version of zero (0) for Locked packages only
605
606
  if (queryResult.records[0].ContainerOptions === 'Locked') {
606
- const versionNumber = utils_1.VersionNumber.from(versionNumberString);
607
+ const versionNumber = versionNumber_1.VersionNumber.from(versionNumberString);
607
608
  if (versionNumber.patch !== '0') {
608
609
  throw messages.createError('errorInvalidPatchNumber', [versionNumberString]);
609
610
  }
@@ -612,7 +613,9 @@ class PackageVersionCreate {
612
613
  // eslint-disable-next-line complexity
613
614
  async getAncestorId(packageDescriptorJson, project, versionNumberString, skipAncestorCheck) {
614
615
  // 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);
616
+ const packageId = packageDescriptorJson.id ??
617
+ project.getPackageIdFromAlias(packageDescriptorJson.package) ??
618
+ packageDescriptorJson.package;
616
619
  // No need to proceed if Unlocked
617
620
  if ((await this.getPackageType()) === 'Unlocked') {
618
621
  return '';
@@ -620,13 +623,13 @@ class PackageVersionCreate {
620
623
  let ancestorId = '';
621
624
  // ancestorID can be alias, 05i, or 04t;
622
625
  // validate and convert to 05i, as needed
623
- const versionNumber = utils_1.VersionNumber.from(versionNumberString);
626
+ const versionNumber = versionNumber_1.VersionNumber.from(versionNumberString);
624
627
  let origSpecifiedAncestor = packageDescriptorJson.ancestorId;
625
628
  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;
629
+ const explicitUseHighestRelease = packageDescriptorJson.ancestorId === versionNumber_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN ||
630
+ packageDescriptorJson.ancestorVersion === versionNumber_1.BuildNumberToken.HIGHEST_VERSION_NUMBER_TOKEN;
631
+ const explicitUseNoAncestor = packageDescriptorJson.ancestorId === versionNumber_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN ||
632
+ packageDescriptorJson.ancestorVersion === versionNumber_1.BuildNumberToken.NONE_VERSION_NUMBER_TOKEN;
630
633
  if ((explicitUseHighestRelease || explicitUseNoAncestor) &&
631
634
  packageDescriptorJson.ancestorId &&
632
635
  packageDescriptorJson.ancestorVersion) {
@@ -651,13 +654,13 @@ class PackageVersionCreate {
651
654
  // at this point if explicitUseHighestRelease=true, we have returned the ancestorId or thrown an error
652
655
  // highestReleasedVersion should be null only if skipAncestorCheck or if there is no existing released package version
653
656
  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);
657
+ ancestorId = project.getPackageIdFromAlias(packageDescriptorJson.ancestorId) ?? packageDescriptorJson.ancestorId;
658
+ (0, packageUtils_1.validateId)([packageUtils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, packageUtils_1.BY_LABEL.PACKAGE_VERSION_ID], ancestorId);
659
+ ancestorId = await (0, packageUtils_1.getPackageVersionId)(ancestorId, this.connection);
657
660
  }
658
661
  if (!explicitUseNoAncestor && packageDescriptorJson.ancestorVersion) {
659
662
  const regNumbers = new RegExp('^[0-9]+$');
660
- const versionNumberSplit = packageDescriptorJson.ancestorVersion.split(utils_2.VERSION_NUMBER_SEP);
663
+ const versionNumberSplit = packageDescriptorJson.ancestorVersion.split(packageUtils_1.VERSION_NUMBER_SEP);
661
664
  if (versionNumberSplit.length < 3 ||
662
665
  versionNumberSplit.length > 4 ||
663
666
  !versionNumberSplit[0].match(regNumbers) ||
@@ -701,7 +704,7 @@ class PackageVersionCreate {
701
704
  }
702
705
  else {
703
706
  // the explicitUseNoAncestor && skipAncestorCheck case is handled above
704
- throw messages.createError('errorAncestorNoneNotAllowed', [(0, utils_2.getPackageVersionNumber)(highestReleasedVersion)]);
707
+ throw messages.createError('errorAncestorNoneNotAllowed', [(0, packageUtils_1.getPackageVersionNumber)(highestReleasedVersion)]);
705
708
  }
706
709
  }
707
710
  if (!isPatch && !skipAncestorCheck) {
@@ -709,7 +712,7 @@ class PackageVersionCreate {
709
712
  if (highestReleasedVersion.Id !== ancestorId) {
710
713
  throw messages.createError('errorAncestorNotHighest', [
711
714
  origSpecifiedAncestor,
712
- (0, utils_2.getPackageVersionNumber)(highestReleasedVersion),
715
+ (0, packageUtils_1.getPackageVersionNumber)(highestReleasedVersion),
713
716
  ]);
714
717
  }
715
718
  }
@@ -721,7 +724,7 @@ class PackageVersionCreate {
721
724
  return ancestorId;
722
725
  }
723
726
  async getAncestorIdHighestRelease(packageId, versionNumberString, explicitUseHighestRelease, skipAncestorCheck) {
724
- const versionNumber = versionNumberString.split(utils_2.VERSION_NUMBER_SEP);
727
+ const versionNumber = versionNumberString.split(packageUtils_1.VERSION_NUMBER_SEP);
725
728
  const isPatch = versionNumber[2] !== '0';
726
729
  const result = {
727
730
  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;