Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions messages/package.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,13 @@ Can't retrieve package version metadata. The specified directory must be relativ

Can't retrieve package metadata. To use this feature, you must first assign yourself the DownloadPackageVersionZips user permission. Then retry retrieving your package metadata.

# downloadDeveloperPackageZipHasNoData
# downloadDeveloperPackageZipHasNoDataNative2GP

Can't retrieve package metadata. Package metadata is only generated for converted 2GP package versions and versions created with the --generate-pkg-zip flag. To resolve, create a new package version and retry. For native 2GP packages, include the --generate-pkg-zip flag when creating the version. For 1GP packages, first convert them to 2GP.
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.

# downloadDeveloperPackageZipHasNoDataConverted2GP

Can't retrieve package metadata. The developer package zip for this converted 2GP package version is unretrievable. To resolve, retry conversion to produce a new converted package version. Then retry retrieving your package metadata.

# packagingNotEnabledOnOrg

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
],
"dependencies": {
"@jsforce/jsforce-node": "^3.10.14",
"@salesforce/core": "^8.29.0",
"@salesforce/core": "^8.31.0",
"@salesforce/kit": "^3.2.6",
"@salesforce/schemas": "^1.10.3",
"@salesforce/source-deploy-retrieve": "^12.35.0",
Expand Down
5 changes: 4 additions & 1 deletion src/package/packageVersionRetrieve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,10 @@ export async function retrievePackageVersionMetadata(
tree = await ZipTreeContainer.create(buffer);
} catch (e) {
if (e instanceof Error && e.message.includes('data length = 0')) {
throw messages.createError('downloadDeveloperPackageZipHasNoData');
const messageKey = versionInfo.ConvertedFromVersionId
? 'downloadDeveloperPackageZipHasNoDataConverted2GP'
: 'downloadDeveloperPackageZipHasNoDataNative2GP';
throw messages.createError(messageKey);
}
throw e;
}
Expand Down
37 changes: 37 additions & 0 deletions test/package/packageVersionMetadataRetrieve.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import * as sinon from 'sinon';
import { instantiateContext, MockTestOrgData, restoreContext, stubContext } from '@salesforce/core/testSetup';
import { assert, expect } from 'chai';
import { Connection, SfProject, SfError } from '@salesforce/core';
import { ZipTreeContainer } from '@salesforce/source-deploy-retrieve';
import * as packageUtils from '../../src/utils/packageUtils';
import { Package } from '../../src/package/package';
import { PackageVersion } from '../../src/package/packageVersion';
Expand Down Expand Up @@ -321,6 +322,42 @@ describe('Package Version Retrieve', () => {
}
});

it('should throw the native-2GP "unretrievable dev zip" error when ZipTreeContainer is empty and ConvertedFromVersionId is unset', async () => {
$$.SANDBOX.stub(ZipTreeContainer, 'create').rejects(new Error('data length = 0'));
queryPackage2VersionStub
.withArgs(connection, { whereClause: `WHERE SubscriberPackageVersionId = '${packageVersionId2GP}'` })
.resolves([{ ...mockPackage2Version, ConvertedFromVersionId: '' }]);

try {
await Package.downloadPackageVersionMetadata(project, downloadOptions2GP, connection);
assert.fail('Expected test execution to raise an error');
} catch (e) {
const error = e as SfError;
expect(error.message).to.include('native 2GP package version is unretrievable');
expect(error.message).to.include('--generate-pkg-zip');
expect(error.message).to.include('Then retry retrieving your package metadata');
expect(error.message).to.not.include('converted');
}
});

it('should throw the converted-2GP "unretrievable dev zip" error when ZipTreeContainer is empty and ConvertedFromVersionId is set', async () => {
$$.SANDBOX.stub(ZipTreeContainer, 'create').rejects(new Error('data length = 0'));
queryPackage2VersionStub
.withArgs(connection, { whereClause: `WHERE SubscriberPackageVersionId = '${packageVersionId2GP}'` })
.resolves([{ ...mockPackage2Version, ConvertedFromVersionId: '04txx0000004HwAAAU' }]);

try {
await Package.downloadPackageVersionMetadata(project, downloadOptions2GP, connection);
assert.fail('Expected test execution to raise an error');
} catch (e) {
const error = e as SfError;
expect(error.message).to.include('converted 2GP package version is unretrievable');
expect(error.message).to.include('retry conversion to produce a new converted package version');
expect(error.message).to.not.include('--generate-pkg-zip');
expect(error.message).to.not.include('native');
}
});

it('should fail if the DeveloperUsePkgZip field is inaccessible to the user', async () => {
// Mock Package2Version without DeveloperUsePkgZip field to simulate field access issue
queryPackage2VersionStub
Expand Down
43 changes: 42 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@
strip-ansi "6.0.1"
ts-retry-promise "^0.8.1"

"@salesforce/core@^8.23.1", "@salesforce/core@^8.28.4", "@salesforce/core@^8.29.0", "@salesforce/core@^8.29.1":
"@salesforce/core@^8.23.1", "@salesforce/core@^8.28.4", "@salesforce/core@^8.29.1":
version "8.30.1"
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.30.1.tgz#870f81cd46967614f3842314eb51ce46548eb6a0"
integrity sha512-2TBt9r7Ci5bc/cq3MbS9NssvdsnXOF76d/6EElimgdqTcgFnsHdD8u5j+TVE+ivGaFnpIGAWZ7Xvmes2qys2cw==
Expand All @@ -576,6 +576,31 @@
ts-retry-promise "^0.8.1"
zod "^4.1.12"

"@salesforce/core@^8.31.0":
version "8.31.0"
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-8.31.0.tgz#153beb193af8fce73d31cc39afee794c4c1ee1c0"
integrity sha512-TXQoR7Bs0Dk5AuNY8eaNRhMeLDLcpJ8su7LVxn7VVfnRxITrRh4gkSuOAXdBKAqx0WcjRONDs1twedaOE7Xu4Q==
dependencies:
"@jsforce/jsforce-node" "^3.10.13"
"@salesforce/kit" "^3.2.4"
"@salesforce/ts-types" "^2.0.12"
ajv "^8.18.0"
change-case "^4.1.2"
fast-levenshtein "^3.0.0"
faye "^1.4.1"
form-data "^4.0.5"
js2xmlparser "^4.0.1"
jsonwebtoken "9.0.3"
jszip "3.10.1"
memfs "4.38.1"
pino "^9.7.0"
pino-abstract-transport "^1.2.0"
pino-pretty "^11.3.0"
proper-lockfile "^4.1.2"
semver "^7.8.0"
ts-retry-promise "^0.8.1"
zod "^4.1.12"

"@salesforce/dev-config@^4.3.1":
version "4.3.2"
resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-4.3.2.tgz#10047e2b8d289c93f157ab4243a1b1de57f2d6a2"
Expand Down Expand Up @@ -2712,6 +2737,17 @@ form-data@^4.0.4:
hasown "^2.0.2"
mime-types "^2.1.12"

form-data@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053"
integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
es-set-tostringtag "^2.1.0"
hasown "^2.0.2"
mime-types "^2.1.12"

fromentries@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
Expand Down Expand Up @@ -5235,6 +5271,11 @@ semver@^7.3.4, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.3:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==

semver@^7.8.0:
version "7.8.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.1.tgz#bf4970b5e70fda0686363cc18bfe8805d5ed957e"
integrity sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==

sentence-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f"
Expand Down
Loading