@simplysf/simply-package 1.11.0 → 2.2.0

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 (39) hide show
  1. package/LICENSE.txt +200 -6
  2. package/README.md +62 -2
  3. package/lib/commands/simply/package/dependencies/install.d.ts +1 -1
  4. package/lib/commands/simply/package/dependencies/install.js +25 -18
  5. package/lib/commands/simply/package/dependencies/install.js.map +1 -1
  6. package/lib/commands/simply/package/dependencies/manage.d.ts +20 -0
  7. package/lib/commands/simply/package/dependencies/manage.js +191 -0
  8. package/lib/commands/simply/package/dependencies/manage.js.map +1 -0
  9. package/lib/commands/simply/package/version/cleanup.js +23 -11
  10. package/lib/commands/simply/package/version/cleanup.js.map +1 -1
  11. package/lib/common/packageUtils.d.ts +11 -3
  12. package/lib/common/packageUtils.js +13 -4
  13. package/lib/common/packageUtils.js.map +1 -1
  14. package/lib/common/packageVersionService.d.ts +22 -0
  15. package/lib/common/packageVersionService.js +279 -0
  16. package/lib/common/packageVersionService.js.map +1 -0
  17. package/lib/common/sfdxProjectService.d.ts +12 -0
  18. package/lib/common/sfdxProjectService.js +129 -0
  19. package/lib/common/sfdxProjectService.js.map +1 -0
  20. package/lib/index.js +13 -4
  21. package/lib/index.js.map +1 -1
  22. package/lib/schemas/manage/dependencyChange.d.ts +18 -0
  23. package/lib/schemas/manage/dependencyChange.js +17 -0
  24. package/lib/schemas/manage/dependencyChange.js.map +1 -0
  25. package/lib/schemas/manage/parsedDependency.d.ts +12 -0
  26. package/lib/schemas/manage/parsedDependency.js +39 -0
  27. package/lib/schemas/manage/parsedDependency.js.map +1 -0
  28. package/lib/schemas/sfdx-project/packageDirs.d.ts +19 -0
  29. package/lib/schemas/sfdx-project/packageDirs.js +43 -0
  30. package/lib/schemas/sfdx-project/packageDirs.js.map +1 -0
  31. package/messages/simply.package.dependencies.manage.md +86 -0
  32. package/npm-shrinkwrap.json +5884 -3253
  33. package/oclif.lock +3591 -2558
  34. package/oclif.manifest.json +121 -1
  35. package/package.json +21 -20
  36. package/CHANGELOG.md +0 -275
  37. package/lib/schemas/packageDirs.d.ts +0 -23
  38. package/lib/schemas/packageDirs.js +0 -8
  39. package/lib/schemas/packageDirs.js.map +0 -1
@@ -0,0 +1,191 @@
1
+ /*
2
+ * Copyright (c) 2026, Clay Chipps; Copyright (c) 2026 Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /* eslint-disable no-await-in-loop */
17
+ import { select } from '@inquirer/prompts';
18
+ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
19
+ import { Messages } from '@salesforce/core';
20
+ import { buildVersionService } from '../../../../common/packageVersionService.js';
21
+ import { buildProjectService } from '../../../../common/sfdxProjectService.js';
22
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
23
+ const messages = Messages.loadMessages('@simplysf/simply-package', 'simply.package.dependencies.manage');
24
+ export default class PackageDependenciesManage extends SfCommand {
25
+ static summary = messages.getMessage('summary');
26
+ static description = messages.getMessage('description');
27
+ static examples = messages.getMessages('examples');
28
+ static requiresProject = true;
29
+ static flags = {
30
+ ...SfCommand.baseFlags,
31
+ branch: Flags.string({
32
+ summary: messages.getMessage('flags.branch.summary'),
33
+ description: messages.getMessage('flags.branch.description'),
34
+ char: 'b',
35
+ }),
36
+ 'update-to-released': Flags.boolean({
37
+ summary: messages.getMessage('flags.update-to-released.summary'),
38
+ description: messages.getMessage('flags.update-to-released.description'),
39
+ default: false,
40
+ exclusive: ['update-to-latest'],
41
+ }),
42
+ 'update-to-latest': Flags.boolean({
43
+ summary: messages.getMessage('flags.update-to-latest.summary'),
44
+ description: messages.getMessage('flags.update-to-latest.description'),
45
+ default: false,
46
+ exclusive: ['update-to-released'],
47
+ }),
48
+ 'api-version': Flags.orgApiVersion(),
49
+ 'target-dev-hub': Flags.requiredHub(),
50
+ };
51
+ // eslint-disable-next-line complexity
52
+ async run() {
53
+ const { flags } = await this.parse(PackageDependenciesManage);
54
+ const isInteractive = !flags['update-to-released'] && !flags['update-to-latest'];
55
+ const connection = flags['target-dev-hub'].getConnection(flags['api-version']);
56
+ this.spinner.start(messages.getMessage('info.loadingDevHubData'));
57
+ const versionService = await buildVersionService(connection, this.project);
58
+ this.spinner.stop();
59
+ this.spinner.start(messages.getMessage('info.analyzingDependencies'));
60
+ const projectService = await buildProjectService(this.project);
61
+ const dependenciesByDirectory = projectService.getDependenciesByDirectory();
62
+ const dependenciesToIgnore = projectService.getDependenciesToIgnore();
63
+ const branchesWithReleased = projectService.getBranchesWithReleasedVersions();
64
+ this.spinner.stop();
65
+ const changesByDirectory = new Map();
66
+ const results = [];
67
+ for (const [dirPath, dependencies] of dependenciesByDirectory) {
68
+ changesByDirectory.set(dirPath, []);
69
+ const dirResults = { packageDirectory: dirPath, changes: [] };
70
+ for (const rawDependency of dependencies) {
71
+ const dependency = versionService.enrichDependency(rawDependency);
72
+ const package2Id = dependency.package2Id;
73
+ const dependencyDisplayName = buildDisplayName(dependency, projectService.findAlias.bind(projectService));
74
+ this.info('');
75
+ if (!package2Id ||
76
+ (!versionService.knowsAboutPackage(package2Id) &&
77
+ !versionService.knowsAboutVersion(dependency.subscriberPackageVersionId ?? ''))) {
78
+ this.info(messages.getMessage('info.dependencyNotManagedByDevHub', [dependencyDisplayName]));
79
+ const oldAlias = projectService.findAlias(dependency.subscriberPackageVersionId ?? dependency.package2Id ?? '') ??
80
+ dependencyDisplayName;
81
+ changesByDirectory.get(dirPath).push({
82
+ oldAlias,
83
+ oldDependency: dependency,
84
+ newAlias: oldAlias,
85
+ newSubscriberPackageVersionId: dependency.subscriberPackageVersionId,
86
+ newPackage2Id: dependency.package2Id,
87
+ newVersionNumber: dependency.versionNumber,
88
+ isSameAsOld: true,
89
+ });
90
+ dirResults.changes.push({ oldAlias, newAlias: oldAlias, changed: false });
91
+ continue;
92
+ }
93
+ this.info(messages.getMessage('info.reviewingDependency', [dependencyDisplayName]));
94
+ const oldAlias = versionService.getVersionAlias(dependency.subscriberPackageVersionId ?? '') ??
95
+ projectService.findAlias(dependency.subscriberPackageVersionId ?? dependency.package2Id ?? '') ??
96
+ dependencyDisplayName;
97
+ const isIgnored = dependenciesToIgnore.includes(package2Id) ||
98
+ dependenciesToIgnore.includes(versionService.getPackageAlias(package2Id) ?? '');
99
+ let choices = [];
100
+ if (isIgnored) {
101
+ choices =
102
+ dependency.subscriberPackageVersionId &&
103
+ versionService.knowsAboutVersion(dependency.subscriberPackageVersionId)
104
+ ? [{ name: 'Current version specified', value: dependency.subscriberPackageVersionId, short: oldAlias }]
105
+ : [];
106
+ }
107
+ else if (isInteractive) {
108
+ choices = versionService.buildInteractiveChoices(dependency, flags.branch ?? '', branchesWithReleased);
109
+ }
110
+ else if (flags['update-to-released']) {
111
+ choices = versionService.buildReleasedChoices(dependency, branchesWithReleased);
112
+ }
113
+ else {
114
+ choices = versionService.buildLatestChoices(dependency);
115
+ }
116
+ this.info('');
117
+ if (choices.length === 0) {
118
+ this.info(messages.getMessage('info.noAlternatesFound', [dependencyDisplayName]));
119
+ dirResults.changes.push({ oldAlias, newAlias: oldAlias, changed: false });
120
+ continue;
121
+ }
122
+ let selectedValue;
123
+ if (isInteractive && !isIgnored) {
124
+ const packageDisplayName = versionService.getPackageAlias(package2Id) ?? package2Id;
125
+ selectedValue = await this.promptForVersion(messages.getMessage('prompt.selectVersion', [packageDisplayName]), choices);
126
+ }
127
+ else {
128
+ selectedValue = choices[0].value;
129
+ }
130
+ const change = buildChange(oldAlias, dependency, selectedValue, versionService.getVersionAlias.bind(versionService), versionService.getPackage2IdForVersion.bind(versionService));
131
+ changesByDirectory.get(dirPath).push(change);
132
+ if (isIgnored) {
133
+ this.info(messages.getMessage('info.versionIgnored', [dependencyDisplayName]));
134
+ }
135
+ else {
136
+ this.info(messages.getMessage('info.versionSelected', [dependencyDisplayName, change.newAlias]));
137
+ }
138
+ dirResults.changes.push({ oldAlias, newAlias: change.newAlias, changed: !change.isSameAsOld });
139
+ this.info('');
140
+ this.info('*'.repeat(88));
141
+ this.info('');
142
+ }
143
+ results.push(dirResults);
144
+ }
145
+ await projectService.applyChanges(changesByDirectory);
146
+ return results;
147
+ }
148
+ // eslint-disable-next-line class-methods-use-this
149
+ async promptForVersion(message, choices) {
150
+ return select({ message, choices, pageSize: 8 });
151
+ }
152
+ }
153
+ function buildDisplayName(dependency, findAlias) {
154
+ if (dependency.subscriberPackageVersionId) {
155
+ const alias = findAlias(dependency.subscriberPackageVersionId);
156
+ return alias ? `${alias} (${dependency.subscriberPackageVersionId})` : dependency.subscriberPackageVersionId;
157
+ }
158
+ if (dependency.package2Id && dependency.versionNumber) {
159
+ const alias = findAlias(dependency.package2Id);
160
+ const base = alias ? `${alias} (${dependency.package2Id})` : dependency.package2Id;
161
+ return `${base} version ${dependency.versionNumber}`;
162
+ }
163
+ return '<unknown dependency>';
164
+ }
165
+ function buildChange(oldAlias, oldDependency, selectedValue, getVersionAlias, getPackage2Id) {
166
+ // Pinned selection: value is a SubscriberPackageVersionId (04t)
167
+ if (selectedValue.startsWith('04t')) {
168
+ const newAlias = getVersionAlias(selectedValue) ?? selectedValue;
169
+ const newPackage2Id = getPackage2Id(selectedValue);
170
+ return {
171
+ oldAlias,
172
+ oldDependency,
173
+ newAlias,
174
+ newSubscriberPackageVersionId: selectedValue,
175
+ newPackage2Id,
176
+ isSameAsOld: selectedValue === oldDependency.subscriberPackageVersionId,
177
+ };
178
+ }
179
+ // Non-pinned selection: value is "package2Id|major.minor.patch.LATEST"
180
+ const [package2Id, versionNumber] = selectedValue.split('|');
181
+ const newAlias = (getVersionAlias(package2Id) ?? package2Id) + '@' + versionNumber;
182
+ return {
183
+ oldAlias,
184
+ oldDependency,
185
+ newAlias,
186
+ newPackage2Id: package2Id,
187
+ newVersionNumber: versionNumber,
188
+ isSameAsOld: package2Id === oldDependency.package2Id && versionNumber === oldDependency.versionNumber,
189
+ };
190
+ }
191
+ //# sourceMappingURL=manage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../../../../src/commands/simply/package/dependencies/manage.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,17 @@
1
1
  /*
2
- * Copyright (c) 2024, Clay Chipps; Copyright (c) 2024, Salesforce.com, Inc.
3
- * All rights reserved.
4
- * Licensed under the BSD 3-Clause license.
5
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
2
+ * Copyright (c) 2026, Clay Chipps; Copyright (c) 2026 Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
6
15
  */
7
16
  import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
8
17
  import { Messages, Logger } from '@salesforce/core';
@@ -48,9 +57,9 @@ export default class PackageVersionCleanup extends SfCommand {
48
57
  throw messages.createError('errors.matcherFormatMismatch');
49
58
  }
50
59
  const matcherSplit = matcher.split('.');
51
- const majorMatcher = matcherSplit.at(0);
52
- const minorMatcher = matcherSplit.at(1);
53
- const patchMatcher = matcherSplit.at(2);
60
+ const majorMatcher = matcherSplit[0];
61
+ const minorMatcher = matcherSplit[1];
62
+ const patchMatcher = matcherSplit[2];
54
63
  log.info(`Major Matcher ${majorMatcher} Minor Matcher ${minorMatcher} Patch Matcher ${patchMatcher}`);
55
64
  const packageVersionListOptions = {
56
65
  concise: false,
@@ -103,10 +112,13 @@ export default class PackageVersionCleanup extends SfCommand {
103
112
  }
104
113
  displayDeletionResults(packageCleanupResults) {
105
114
  this.styledHeader('Package Version Cleanup Results');
106
- this.table(packageCleanupResults, {
107
- SubscriberPackageVersionId: { header: 'PACKAGE VERSION ID' },
108
- Success: { header: 'SUCCESS' },
109
- Error: { header: 'ERROR' },
115
+ this.table({
116
+ data: packageCleanupResults,
117
+ columns: [
118
+ { key: 'SubscriberPackageVersionId', name: 'PACKAGE VERSION ID' },
119
+ { key: 'Success', name: 'SUCCESS' },
120
+ { key: 'Error', name: 'ERROR' },
121
+ ],
110
122
  });
111
123
  }
112
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../src/commands/simply/package/version/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../src/commands/simply/package/version/cleanup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { PackageDir } from '@salesforce/schemas';
1
+ import { NamedPackageDir } from '@salesforce/core';
2
2
  import { InstalledPackages, PackagingSObjects } from '@salesforce/packaging';
3
- import { BasePackageDirWithDependencies } from '../schemas/packageDirs.js';
4
3
  type PackageInstallRequest = PackagingSObjects.PackageInstallRequest;
5
4
  export declare const PACKAGE_PREFIX_PACKAGE2 = "0Ho";
6
5
  export declare const PACKAGE_PREFIX_PACKAGE2_VERSION = "05i";
@@ -12,5 +11,14 @@ export declare const isSubscriberPackageId: (inputToEvaluate: string) => boolean
12
11
  export declare const isSubscriberPackageVersionId: (inputToEvaluate: string) => boolean;
13
12
  export declare const isSubscriberPackageVersionInstalled: (installedPackages: InstalledPackages[], subscriberPackageVersionId: string) => boolean;
14
13
  export declare const reducePackageInstallRequestErrors: (request: PackageInstallRequest) => string;
15
- export declare const isDependenciesPackagingDirectory: (packageDir: PackageDir) => packageDir is BasePackageDirWithDependencies;
14
+ export declare const isDependenciesPackagingDirectory: (packageDir: NamedPackageDir) => packageDir is NamedPackageDir & {
15
+ path: string;
16
+ default?: boolean | undefined;
17
+ dependencies?: {
18
+ [x: string]: unknown;
19
+ package: string;
20
+ versionNumber?: string | undefined;
21
+ branch?: string | undefined;
22
+ }[] | undefined;
23
+ };
16
24
  export {};
@@ -1,8 +1,17 @@
1
1
  /*
2
- * Copyright (c) 2024, Clay Chipps; Copyright (c) 2024, Salesforce.com, Inc.
3
- * All rights reserved.
4
- * Licensed under the BSD 3-Clause license.
5
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
2
+ * Copyright (c) 2026, Clay Chipps; Copyright (c) 2026 Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
6
15
  */
7
16
  export const PACKAGE_PREFIX_PACKAGE2 = '0Ho';
8
17
  export const PACKAGE_PREFIX_PACKAGE2_VERSION = '05i';
@@ -1 +1 @@
1
- {"version":3,"file":"packageUtils.js","sourceRoot":"","sources":["../../src/common/packageUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC;AACvD,MAAM,CAAC,MAAM,yCAAyC,GAAG,KAAK,CAAC;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,eAAuB,EAAW,EAAE,CAC/D,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAuB,EAAW,EAAE,CACtE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAExF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,eAAuB,EAAW,EAAE,CACxE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAE1F,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,eAAuB,EAAW,EAAE,CAC/E,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAElG,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,iBAAsC,EACtC,0BAAkC,EACzB,EAAE,CACX,iBAAiB,CAAC,IAAI,CACpB,CAAC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,EAAE,KAAK,0BAA0B,CACpG,CAAC;AAEJ,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,OAA8B,EAAU,EAAE;IAC1F,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;IACvC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,GAAG,uBAAuB,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,UAAsB,EACwB,EAAE,CAChD,cAAc,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"packageUtils.js","sourceRoot":"","sources":["../../src/common/packageUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC;AACvD,MAAM,CAAC,MAAM,yCAAyC,GAAG,KAAK,CAAC;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,eAAuB,EAAW,EAAE,CAC/D,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAuB,EAAW,EAAE,CACtE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAExF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,eAAuB,EAAW,EAAE,CACxE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAE1F,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,eAAuB,EAAW,EAAE,CAC/E,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAElG,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,iBAAsC,EACtC,0BAAkC,EACzB,EAAE,CACX,iBAAiB,CAAC,IAAI,CACpB,CAAC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,EAAE,KAAK,0BAA0B,CACpG,CAAC;AAEJ,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,OAA8B,EAAU,EAAE;IAC1F,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;IACvC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,GAAG,uBAAuB,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,UAA2B,EACqC,EAAE,CAClE,cAAc,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Connection } from '@salesforce/core';
2
+ import { SfProject } from '@salesforce/core';
3
+ import { PackageVersionListResult } from '@salesforce/packaging';
4
+ import { ParsedDependency } from '../schemas/manage/parsedDependency.js';
5
+ export type VersionChoice = {
6
+ name: string;
7
+ value: string;
8
+ short: string;
9
+ };
10
+ export type PackageVersionService = {
11
+ knowsAboutVersion(subscriberPackageVersionId: string): boolean;
12
+ knowsAboutPackage(package2Id: string): boolean;
13
+ getPackage2IdForVersion(subscriberPackageVersionId: string): string | undefined;
14
+ getVersionAlias(subscriberPackageVersionId: string): string | undefined;
15
+ getPackageAlias(package2Id: string): string | undefined;
16
+ enrichDependency(dependency: ParsedDependency): ParsedDependency;
17
+ buildInteractiveChoices(dependency: ParsedDependency, branch: string, branchesWithReleased: string[]): VersionChoice[];
18
+ buildReleasedChoices(dependency: ParsedDependency, branchesWithReleased: string[]): VersionChoice[];
19
+ buildLatestChoices(dependency: ParsedDependency): VersionChoice[];
20
+ findVersionById(subscriberPackageVersionId: string): PackageVersionListResult | undefined;
21
+ };
22
+ export declare function buildVersionService(connection: Connection, project: SfProject): Promise<PackageVersionService>;
@@ -0,0 +1,279 @@
1
+ /*
2
+ * Copyright (c) 2026, Clay Chipps; Copyright (c) 2026 Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Package } from '@salesforce/packaging';
17
+ export async function buildVersionService(connection, project) {
18
+ const packages = await Package.list(connection);
19
+ const versions = await Package.listVersions(connection, project, {
20
+ concise: false,
21
+ createdLastDays: undefined,
22
+ modifiedLastDays: undefined,
23
+ orderBy: 'Package2Id, Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber',
24
+ isReleased: undefined,
25
+ verbose: true,
26
+ });
27
+ const versionsBySubscriberId = new Map();
28
+ const packageAliasById = new Map();
29
+ const versionsByPackageAndBranch = new Map();
30
+ const releasedVersionsByPackageAndBranch = new Map();
31
+ for (const pkg of packages) {
32
+ packageAliasById.set(pkg.Id, computePackageAlias(pkg));
33
+ }
34
+ for (const version of versions) {
35
+ versionsBySubscriberId.set(version.SubscriberPackageVersionId, version);
36
+ sortVersionIntoMap(versionsByPackageAndBranch, version);
37
+ if (version.IsReleased) {
38
+ sortVersionIntoMap(releasedVersionsByPackageAndBranch, version);
39
+ }
40
+ }
41
+ function computePackageAlias(pkg) {
42
+ return (pkg.NamespacePrefix ? pkg.NamespacePrefix + '.' : '') + pkg.Name;
43
+ }
44
+ function computeVersionAlias(v, branch) {
45
+ const seg = `${v.MajorVersion}.${v.MinorVersion}.${v.PatchVersion}-${v.BuildNumber}` + (branch ? '-' + branch : '');
46
+ const pkgAlias = packageAliasById.get(v.Package2Id) ?? v.Package2Id;
47
+ return pkgAlias + '@' + seg;
48
+ }
49
+ function sortVersionIntoMap(map, v) {
50
+ const branch = v.Branch ?? '';
51
+ const major = parseInt(v.MajorVersion, 10);
52
+ const minor = parseInt(v.MinorVersion, 10);
53
+ const patch = parseInt(v.PatchVersion, 10);
54
+ const build = parseInt(v.BuildNumber, 10);
55
+ if (!map.has(v.Package2Id))
56
+ map.set(v.Package2Id, new Map());
57
+ const byBranch = map.get(v.Package2Id);
58
+ if (!byBranch.has(branch))
59
+ byBranch.set(branch, new Map());
60
+ const byMajor = byBranch.get(branch);
61
+ if (!byMajor.has(major))
62
+ byMajor.set(major, new Map());
63
+ const byMinor = byMajor.get(major);
64
+ if (!byMinor.has(minor))
65
+ byMinor.set(minor, new Map());
66
+ const byPatch = byMinor.get(minor);
67
+ if (!byPatch.has(patch))
68
+ byPatch.set(patch, new Map());
69
+ const byBuild = byPatch.get(patch);
70
+ if (!byBuild.has(build))
71
+ byBuild.set(build, v);
72
+ }
73
+ // Walks a version map block to the latest (highest-key) entry at any depth
74
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+ function findLatestFromBlock(block) {
76
+ const keys = [...block.keys()];
77
+ const maxKey = keys.reduce((max, k) => (k > max ? k : max), keys[0]);
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
79
+ const entry = block.get(maxKey);
80
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
81
+ return entry instanceof Map ? findLatestFromBlock(entry) : entry;
82
+ }
83
+ let ChunkLevel;
84
+ (function (ChunkLevel) {
85
+ ChunkLevel[ChunkLevel["Major"] = 1] = "Major";
86
+ ChunkLevel[ChunkLevel["Minor"] = 2] = "Minor";
87
+ ChunkLevel[ChunkLevel["Patch"] = 3] = "Patch";
88
+ })(ChunkLevel || (ChunkLevel = {}));
89
+ function findBlock(map, package2Id, branch, dependency, level
90
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
+ ) {
92
+ const resolvedBranch = branch ?? '';
93
+ const byBranch = map.get(package2Id);
94
+ if (!byBranch?.has(resolvedBranch))
95
+ return undefined;
96
+ const byMajor = byBranch.get(resolvedBranch);
97
+ if (level === ChunkLevel.Major)
98
+ return byMajor;
99
+ const byMinor = byMajor?.get(dependency.majorVersion);
100
+ if (level === ChunkLevel.Minor || byMinor === undefined)
101
+ return byMinor;
102
+ return byMinor.get(dependency.minorVersion);
103
+ }
104
+ function makeVersionChoice(v, label, branch) {
105
+ const seg = `${v.MajorVersion}.${v.MinorVersion}.${v.PatchVersion}-${v.BuildNumber}` + (branch ? '-' + branch : '');
106
+ return {
107
+ name: `${label}: ${seg}`,
108
+ value: v.SubscriberPackageVersionId,
109
+ short: seg,
110
+ };
111
+ }
112
+ function makeLatestChoice(v, label) {
113
+ const seg = `${v.MajorVersion}.${v.MinorVersion}.${v.PatchVersion}.LATEST`;
114
+ return {
115
+ name: label,
116
+ value: `${v.Package2Id}|${seg}`,
117
+ short: seg,
118
+ };
119
+ }
120
+ function findLatestReleasedForBranch(package2Id, branch, dependency, seen) {
121
+ const block = findBlock(releasedVersionsByPackageAndBranch, package2Id, branch, dependency, ChunkLevel.Major);
122
+ if (!block)
123
+ return undefined;
124
+ const v = findLatestFromBlock(block);
125
+ if (seen.has(v.SubscriberPackageVersionId))
126
+ return undefined;
127
+ seen.add(v.SubscriberPackageVersionId);
128
+ const label = branch
129
+ ? `Latest released version on build branch - ${branch}`
130
+ : 'Latest released version on main build branch';
131
+ return makeVersionChoice(v, label, branch || undefined);
132
+ }
133
+ function findLatestForBranch(package2Id, branch, dependency, level, label, seen) {
134
+ const block = findBlock(versionsByPackageAndBranch, package2Id, branch, dependency, level);
135
+ if (!block)
136
+ return undefined;
137
+ const v = findLatestFromBlock(block);
138
+ if (seen.has(v.SubscriberPackageVersionId))
139
+ return undefined;
140
+ seen.add(v.SubscriberPackageVersionId);
141
+ return makeVersionChoice(v, label, branch || undefined);
142
+ }
143
+ return {
144
+ knowsAboutVersion(id) {
145
+ return versionsBySubscriberId.has(id);
146
+ },
147
+ knowsAboutPackage(package2Id) {
148
+ return packageAliasById.has(package2Id);
149
+ },
150
+ getPackage2IdForVersion(subscriberPackageVersionId) {
151
+ return versionsBySubscriberId.get(subscriberPackageVersionId)?.Package2Id;
152
+ },
153
+ getVersionAlias(subscriberPackageVersionId) {
154
+ const v = versionsBySubscriberId.get(subscriberPackageVersionId);
155
+ if (!v)
156
+ return undefined;
157
+ return computeVersionAlias(v, v.Branch || undefined);
158
+ },
159
+ getPackageAlias(package2Id) {
160
+ return packageAliasById.get(package2Id);
161
+ },
162
+ findVersionById(subscriberPackageVersionId) {
163
+ return versionsBySubscriberId.get(subscriberPackageVersionId);
164
+ },
165
+ enrichDependency(dependency) {
166
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
167
+ if (dependency.package2Id || !dependency.subscriberPackageVersionId)
168
+ return dependency;
169
+ const v = versionsBySubscriberId.get(dependency.subscriberPackageVersionId);
170
+ if (!v)
171
+ return dependency;
172
+ const parts = `${v.MajorVersion}.${v.MinorVersion}.${v.PatchVersion}.${v.BuildNumber}`.split('.');
173
+ return {
174
+ ...dependency,
175
+ package2Id: v.Package2Id,
176
+ versionNumber: `${v.MajorVersion}.${v.MinorVersion}.${v.PatchVersion}.${v.BuildNumber}`,
177
+ majorVersion: parseInt(parts[0], 10),
178
+ minorVersion: parseInt(parts[1], 10),
179
+ patchVersion: parseInt(parts[2], 10),
180
+ buildVersion: parseInt(parts[3], 10),
181
+ };
182
+ },
183
+ // eslint-disable-next-line complexity
184
+ buildInteractiveChoices(dependency, branch, branchesWithReleased) {
185
+ const package2Id = dependency.package2Id;
186
+ const maj = dependency.majorVersion ?? '';
187
+ const min = dependency.minorVersion ?? '';
188
+ const pat = dependency.patchVersion ?? '';
189
+ const choices = [];
190
+ const releasedChoices = [];
191
+ const seen = new Set();
192
+ // Latest released on null/main branch and named release branches
193
+ const releasedMain = findLatestReleasedForBranch(package2Id, '', dependency, seen);
194
+ if (releasedMain)
195
+ releasedChoices.push(releasedMain);
196
+ for (const b of branchesWithReleased ?? []) {
197
+ const rc = findLatestReleasedForBranch(package2Id, b, dependency, seen);
198
+ if (rc)
199
+ releasedChoices.push(rc);
200
+ }
201
+ // Latest version on the specified feature branch
202
+ if (branch) {
203
+ const c = findLatestForBranch(package2Id, branch, dependency, ChunkLevel.Patch, `Latest version on '${branch}' branch`, seen);
204
+ if (c)
205
+ choices.push(c);
206
+ }
207
+ // Latest build with same Major.Minor.Patch on main branch and release branches
208
+ const patchMain = findLatestForBranch(package2Id, '', dependency, ChunkLevel.Patch, `Latest ${maj}.${min}.${pat} version on main build branch`, seen);
209
+ if (patchMain)
210
+ choices.push(patchMain);
211
+ for (const b of branchesWithReleased ?? []) {
212
+ const c = findLatestForBranch(package2Id, b, dependency, ChunkLevel.Patch, `Latest ${maj}.${min}.${pat} version on build branch - ${b}`, seen);
213
+ if (c)
214
+ choices.push(c);
215
+ }
216
+ // Latest build with same Major.Minor on main branch and release branches
217
+ const minorMain = findLatestForBranch(package2Id, '', dependency, ChunkLevel.Minor, `Latest ${maj}.${min} version on main build branch`, seen);
218
+ if (minorMain)
219
+ choices.push(minorMain);
220
+ for (const b of branchesWithReleased ?? []) {
221
+ const c = findLatestForBranch(package2Id, b, dependency, ChunkLevel.Minor, `Latest ${maj}.${min} version on build branch - ${b}`, seen);
222
+ if (c)
223
+ choices.push(c);
224
+ }
225
+ // Latest build overall on main branch and release branches
226
+ const majorMain = findLatestForBranch(package2Id, '', dependency, ChunkLevel.Major, 'Latest version on main build branch', seen);
227
+ if (majorMain)
228
+ choices.push(majorMain);
229
+ for (const b of branchesWithReleased ?? []) {
230
+ const c = findLatestForBranch(package2Id, b, dependency, ChunkLevel.Major, `Latest version on build branch - ${b}`, seen);
231
+ if (c)
232
+ choices.push(c);
233
+ }
234
+ // Released choices go after so they appear clearly
235
+ choices.push(...releasedChoices);
236
+ // Non-pinned latest for current Major.Minor.Patch
237
+ const block = findBlock(versionsByPackageAndBranch, package2Id, branch, dependency, ChunkLevel.Patch) ??
238
+ findBlock(versionsByPackageAndBranch, package2Id, '', dependency, ChunkLevel.Patch) ??
239
+ findBlock(versionsByPackageAndBranch, package2Id, '', dependency, ChunkLevel.Minor);
240
+ if (block) {
241
+ const v = findLatestFromBlock(block);
242
+ choices.push(makeLatestChoice(v, `Non-pinned latest ${maj}.${min}.${pat} build`));
243
+ }
244
+ // Keep the current version as last option
245
+ if (dependency.subscriberPackageVersionId && versionsBySubscriberId.has(dependency.subscriberPackageVersionId)) {
246
+ const v = versionsBySubscriberId.get(dependency.subscriberPackageVersionId);
247
+ choices.push(makeVersionChoice(v, 'Current version specified', v.Branch || undefined));
248
+ }
249
+ return choices;
250
+ },
251
+ buildReleasedChoices(dependency, branchesWithReleased) {
252
+ const package2Id = dependency.package2Id;
253
+ const choices = [];
254
+ const seen = new Set();
255
+ const main = findLatestReleasedForBranch(package2Id, '', dependency, seen);
256
+ if (main)
257
+ choices.push(main);
258
+ for (const b of branchesWithReleased ?? []) {
259
+ const c = findLatestReleasedForBranch(package2Id, b, dependency, seen);
260
+ if (c)
261
+ choices.push(c);
262
+ }
263
+ return choices;
264
+ },
265
+ buildLatestChoices(dependency) {
266
+ const package2Id = dependency.package2Id;
267
+ const block = findBlock(versionsByPackageAndBranch, package2Id, '', dependency, ChunkLevel.Patch) ??
268
+ findBlock(versionsByPackageAndBranch, package2Id, '', dependency, ChunkLevel.Minor);
269
+ if (!block)
270
+ return [];
271
+ const v = findLatestFromBlock(block);
272
+ const maj = dependency.majorVersion ?? '';
273
+ const min = dependency.minorVersion ?? '';
274
+ const pat = dependency.patchVersion ?? '';
275
+ return [makeLatestChoice(v, `Non-pinned latest ${maj}.${min}.${pat} build`)];
276
+ },
277
+ };
278
+ }
279
+ //# sourceMappingURL=packageVersionService.js.map