@simplysf/simply-package 2.1.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.
package/README.md CHANGED
@@ -57,6 +57,7 @@ sf plugins
57
57
 
58
58
  <!-- commands -->
59
59
  * [`sf simply package dependencies install`](#sf-simply-package-dependencies-install)
60
+ * [`sf simply package dependencies manage`](#sf-simply-package-dependencies-manage)
60
61
  * [`sf simply package version cleanup`](#sf-simply-package-version-cleanup)
61
62
 
62
63
  ## `sf simply package dependencies install`
@@ -153,7 +154,66 @@ FLAG DESCRIPTIONS
153
154
  from by entering the branch build name. If not specified, the builds from NULL branch will be considered.
154
155
  ```
155
156
 
156
- _See code: [lib/commands/simply/package/dependencies/install.js](https://github.com/SimplySF/simply-package/blob/1.12.0/lib/commands/simply/package/dependencies/install.js)_
157
+ _See code: [lib/commands/simply/package/dependencies/install.js](https://github.com/SimplySF/simply-package/blob/2.2.0/lib/commands/simply/package/dependencies/install.js)_
158
+
159
+ ## `sf simply package dependencies manage`
160
+
161
+ Manage package dependency versions for a Salesforce project.
162
+
163
+ ```
164
+ USAGE
165
+ $ sf simply package dependencies manage -v <value> [--json] [--flags-dir <value>] [-b <value>] [--update-to-released |
166
+ --update-to-latest] [--api-version <value>]
167
+
168
+ FLAGS
169
+ -b, --branch=<value> Package branch to consider when evaluating version options.
170
+ -v, --target-dev-hub=<value> (required) Username or alias of the Dev Hub org. Not required if the `target-dev-hub`
171
+ configuration variable is already set.
172
+ --api-version=<value> Override the api version used for api requests made by this command
173
+ --update-to-latest Automatically set all dependencies to the latest non-pinned build.
174
+ --update-to-released Automatically update all dependencies to the latest released version.
175
+
176
+ GLOBAL FLAGS
177
+ --flags-dir=<value> Import flag values from a directory.
178
+ --json Format output as json.
179
+
180
+ DESCRIPTION
181
+ Manage package dependency versions for a Salesforce project.
182
+
183
+ Interactively updates package dependency versions in sfdx-project.json by querying the Dev Hub for available versions.
184
+ Supports interactive selection or automatic update to the latest released or latest build version.
185
+
186
+ Project-level configuration (in sfdx-project.json) is read from the following keys:
187
+
188
+ - plugins.simply.dependencies.ignore — array of Package2Ids or aliases to leave unchanged
189
+ - plugins.simply.package.brancheswithreleasedversions — array of branch names that contain released versions
190
+
191
+ EXAMPLES
192
+ $ sf simply package dependencies manage --target-dev-hub myDevHub
193
+
194
+ $ sf simply package dependencies manage --target-dev-hub myDevHub --branch my-feature-branch
195
+
196
+ $ sf simply package dependencies manage --target-dev-hub myDevHub --update-to-released
197
+
198
+ $ sf simply package dependencies manage --target-dev-hub myDevHub --update-to-latest
199
+
200
+ FLAG DESCRIPTIONS
201
+ -b, --branch=<value> Package branch to consider when evaluating version options.
202
+
203
+ When specified, the command will include the latest build on this branch as a selectable option for each dependency.
204
+
205
+ --update-to-latest Automatically set all dependencies to the latest non-pinned build.
206
+
207
+ When specified, all dependencies managed by the Dev Hub are automatically set to a non-pinned X.Y.Z.LATEST version
208
+ number without interactive prompts. Mutually exclusive with --update-to-released.
209
+
210
+ --update-to-released Automatically update all dependencies to the latest released version.
211
+
212
+ When specified, all dependencies managed by the Dev Hub are automatically updated to the latest released package
213
+ version without interactive prompts. Mutually exclusive with --update-to-latest.
214
+ ```
215
+
216
+ _See code: [lib/commands/simply/package/dependencies/manage.js](https://github.com/SimplySF/simply-package/blob/2.2.0/lib/commands/simply/package/dependencies/manage.js)_
157
217
 
158
218
  ## `sf simply package version cleanup`
159
219
 
@@ -194,5 +254,5 @@ FLAG DESCRIPTIONS
194
254
  The MAJOR.MINOR.PATCH matcher that should be used to find package versions to delete.
195
255
  ```
196
256
 
197
- _See code: [lib/commands/simply/package/version/cleanup.js](https://github.com/SimplySF/simply-package/blob/1.12.0/lib/commands/simply/package/version/cleanup.js)_
257
+ _See code: [lib/commands/simply/package/version/cleanup.js](https://github.com/SimplySF/simply-package/blob/2.2.0/lib/commands/simply/package/version/cleanup.js)_
198
258
  <!-- commandsstop -->
@@ -0,0 +1,20 @@
1
+ import { SfCommand } from '@salesforce/sf-plugins-core';
2
+ import { PackageDependenciesManageResult } from '../../../../schemas/manage/dependencyChange.js';
3
+ import { VersionChoice } from '../../../../common/packageVersionService.js';
4
+ export type { PackageDependenciesManageResult };
5
+ export default class PackageDependenciesManage extends SfCommand<PackageDependenciesManageResult[]> {
6
+ static readonly summary: string;
7
+ static readonly description: string;
8
+ static readonly examples: string[];
9
+ static readonly requiresProject = true;
10
+ static readonly flags: {
11
+ branch: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'update-to-released': import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ 'update-to-latest': import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ 'api-version': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'target-dev-hub': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
16
+ 'flags-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ run(): Promise<PackageDependenciesManageResult[]>;
19
+ protected promptForVersion(message: string, choices: VersionChoice[]): Promise<string>;
20
+ }
@@ -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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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageVersionService.js","sourceRoot":"","sources":["../../src/common/packageVersionService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { SfProject } from '@salesforce/core';
2
+ import { DependencyChange } from '../schemas/manage/dependencyChange.js';
3
+ import { ParsedDependency } from '../schemas/manage/parsedDependency.js';
4
+ export type SfdxProjectService = {
5
+ getDependenciesByDirectory(): Map<string, ParsedDependency[]>;
6
+ getDependenciesToIgnore(): string[];
7
+ getBranchesWithReleasedVersions(): string[];
8
+ findAlias(id: string): string | undefined;
9
+ resolveAlias(alias: string): string;
10
+ applyChanges(changesByDirectory: Map<string, DependencyChange[]>): Promise<void>;
11
+ };
12
+ export declare function buildProjectService(project: SfProject): Promise<SfdxProjectService>;