@salesforce/packaging 4.27.0 → 4.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -51,30 +51,12 @@ async function retrievePackageVersionMetadata(project, options, connection) {
|
|
|
51
51
|
if (!(0, packageUtils_1.isPackageDirectoryEffectivelyEmpty)(destinationPath)) {
|
|
52
52
|
throw messages.createError('sourcesDownloadDirectoryNotEmpty');
|
|
53
53
|
}
|
|
54
|
-
//
|
|
54
|
+
// Resolve an alias to the underlying 04t if one was passed.
|
|
55
55
|
const subscriberPackageVersionId = project.getPackageIdFromAlias(options.subscriberPackageVersionId) ?? options.subscriberPackageVersionId;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
let versionInfo;
|
|
61
|
-
try {
|
|
62
|
-
[versionInfo] = await packageVersion_1.PackageVersion.queryPackage2Version(connection, queryOptions);
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
66
|
-
if (msg.includes("No such column 'DeveloperUsePkgZip' on entity 'Package2Version'")) {
|
|
67
|
-
throw messages.createError('developerUsePkgZipFieldUnavailable');
|
|
68
|
-
}
|
|
69
|
-
if (msg.includes("sObject type 'Package2Version' is not supported.")) {
|
|
70
|
-
throw messages.createError('packagingNotEnabledOnOrg');
|
|
71
|
-
}
|
|
72
|
-
throw e;
|
|
73
|
-
}
|
|
74
|
-
if (!versionInfo?.DeveloperUsePkgZip) {
|
|
75
|
-
throw messages.createError('developerUsePkgZipFieldUnavailable');
|
|
76
|
-
}
|
|
77
|
-
const responseBase64 = await connection.tooling.request(versionInfo.DeveloperUsePkgZip, {
|
|
56
|
+
const versionInfo = await resolvePackage2Version(connection, subscriberPackageVersionId);
|
|
57
|
+
// The package version exists in this Dev Hub, so now we fetch the download URL.
|
|
58
|
+
const developerUsePkgZipUrl = await fetchDeveloperUsePkgZipUrl(connection, subscriberPackageVersionId);
|
|
59
|
+
const responseBase64 = await connection.tooling.request(developerUsePkgZipUrl, {
|
|
78
60
|
encoding: 'base64',
|
|
79
61
|
});
|
|
80
62
|
const buffer = Buffer.from(responseBase64, 'base64');
|
|
@@ -180,4 +162,84 @@ async function attemptToUpdateProjectJson(project, connection, packageId, subscr
|
|
|
180
162
|
logger.error(`Encountered error trying to update sfdx-project.json after retrieving package version metadata: ${msg}`);
|
|
181
163
|
}
|
|
182
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Query the Package2Version record for the given 04t, mapping a missing row to the right error: no
|
|
167
|
+
* packaging support on the org, not found anywhere, or found but not in this Dev Hub. Selects only
|
|
168
|
+
* columns any authenticated user can read, so the query always succeeds; selecting DeveloperUsePkgZip
|
|
169
|
+
* here (which requires the DownloadPackageVersionZips permission) would throw "No such column" for a
|
|
170
|
+
* user without that permission and mask those cases as a permission problem.
|
|
171
|
+
*
|
|
172
|
+
* Rejects a syntactically invalid 04t up front so it maps to packageVersionNotFound rather than
|
|
173
|
+
* leaking a raw "invalid ID field" SOQL error from the interpolated where clause.
|
|
174
|
+
*/
|
|
175
|
+
async function resolvePackage2Version(connection, subscriberPackageVersionId) {
|
|
176
|
+
if (!(0, packageUtils_1.validateIdNoThrow)(packageUtils_1.BY_LABEL.SUBSCRIBER_PACKAGE_VERSION_ID, subscriberPackageVersionId)) {
|
|
177
|
+
throw messages.createError('packageVersionNotFound', [subscriberPackageVersionId]);
|
|
178
|
+
}
|
|
179
|
+
const queryOptions = {
|
|
180
|
+
whereClause: `WHERE SubscriberPackageVersionId = '${subscriberPackageVersionId}'`,
|
|
181
|
+
fields: ['Package2Id', 'ConvertedFromVersionId'],
|
|
182
|
+
};
|
|
183
|
+
let versionInfo;
|
|
184
|
+
try {
|
|
185
|
+
[versionInfo] = await packageVersion_1.PackageVersion.queryPackage2Version(connection, queryOptions);
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
189
|
+
if (msg.includes("sObject type 'Package2Version' is not supported.")) {
|
|
190
|
+
throw messages.createError('packagingNotEnabledOnOrg');
|
|
191
|
+
}
|
|
192
|
+
throw e;
|
|
193
|
+
}
|
|
194
|
+
// No Package2Version row in this Dev Hub. Use SubscriberPackageVersion, a global view any
|
|
195
|
+
// authenticated user can query, to tell "doesn't exist anywhere" from "exists but not here".
|
|
196
|
+
if (!versionInfo) {
|
|
197
|
+
const exists = await subscriberPackageVersionExists(connection, subscriberPackageVersionId);
|
|
198
|
+
throw messages.createError(exists ? 'packageVersionNotInDevHub' : 'packageVersionNotFound', [
|
|
199
|
+
subscriberPackageVersionId,
|
|
200
|
+
]);
|
|
201
|
+
}
|
|
202
|
+
return versionInfo;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Fetch the DeveloperUsePkgZip download URL for a Package2Version row already confirmed to exist in
|
|
206
|
+
* this Dev Hub. Reading this column requires the DownloadPackageVersionZips permission, so once the
|
|
207
|
+
* row is known to exist, both a "No such column" error and a null value reliably mean the user lacks
|
|
208
|
+
* that permission.
|
|
209
|
+
*/
|
|
210
|
+
async function fetchDeveloperUsePkgZipUrl(connection, subscriberPackageVersionId) {
|
|
211
|
+
const queryOptions = {
|
|
212
|
+
whereClause: `WHERE SubscriberPackageVersionId = '${subscriberPackageVersionId}'`,
|
|
213
|
+
fields: ['DeveloperUsePkgZip'],
|
|
214
|
+
};
|
|
215
|
+
let versionInfo;
|
|
216
|
+
try {
|
|
217
|
+
[versionInfo] = await packageVersion_1.PackageVersion.queryPackage2Version(connection, queryOptions);
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
221
|
+
if (msg.includes("No such column 'DeveloperUsePkgZip' on entity 'Package2Version'")) {
|
|
222
|
+
throw messages.createError('developerUsePkgZipFieldUnavailable');
|
|
223
|
+
}
|
|
224
|
+
throw e;
|
|
225
|
+
}
|
|
226
|
+
if (!versionInfo?.DeveloperUsePkgZip) {
|
|
227
|
+
throw messages.createError('developerUsePkgZipFieldUnavailable');
|
|
228
|
+
}
|
|
229
|
+
return versionInfo.DeveloperUsePkgZip;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* True if a SubscriberPackageVersion with this 04t ID exists anywhere. That global view is
|
|
233
|
+
* queryable by any authenticated user, so it tells "not found" apart from "not in this Dev Hub".
|
|
234
|
+
*/
|
|
235
|
+
async function subscriberPackageVersionExists(connection, subscriberPackageVersionId) {
|
|
236
|
+
try {
|
|
237
|
+
const result = await connection.tooling.query(`SELECT Id FROM SubscriberPackageVersion WHERE Id = '${subscriberPackageVersionId}' LIMIT 1`);
|
|
238
|
+
return (result.records?.length ?? 0) > 0;
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
// If even the existence probe fails (malformed ID, etc.), fall back to "not found".
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
183
245
|
//# sourceMappingURL=packageVersionRetrieve.js.map
|
package/messages/package.md
CHANGED
|
@@ -38,6 +38,14 @@ Can't retrieve package version metadata. The specified directory must be relativ
|
|
|
38
38
|
|
|
39
39
|
Can't retrieve package metadata. To use this feature, you must first assign yourself the DownloadPackageVersionZips user permission. Then retry retrieving your package metadata.
|
|
40
40
|
|
|
41
|
+
# packageVersionNotFound
|
|
42
|
+
|
|
43
|
+
Can't retrieve package metadata. We can't find the package version %s. Verify that the 04t ID is correct and that the package version exists.
|
|
44
|
+
|
|
45
|
+
# packageVersionNotInDevHub
|
|
46
|
+
|
|
47
|
+
Can't retrieve package metadata. Package version %s isn't accessible from this Dev Hub org. You can only retrieve package metadata from the Dev Hub that created the package version. Verify that you specified the correct target Dev Hub.
|
|
48
|
+
|
|
41
49
|
# downloadDeveloperPackageZipHasNoDataNative2GP
|
|
42
50
|
|
|
43
51
|
Can't retrieve package metadata. The developer package zip for this native 2GP package version is unretrievable. To resolve, create a new package version with the --generate-pkg-zip flag. Then retry retrieving your package metadata.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/packaging",
|
|
3
|
-
"version": "4.27.
|
|
3
|
+
"version": "4.27.1",
|
|
4
4
|
"description": "Packaging library for the Salesforce packaging platform",
|
|
5
5
|
"main": "lib/exported",
|
|
6
6
|
"types": "lib/exported.d.ts",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"object-treeify": "^2"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@salesforce/cli-plugins-testkit": "^5.3.
|
|
61
|
+
"@salesforce/cli-plugins-testkit": "^5.3.62",
|
|
62
62
|
"@salesforce/dev-scripts": "^11.0.4",
|
|
63
63
|
"@types/globby": "^9.1.0",
|
|
64
64
|
"@types/jszip": "^3.4.1",
|