@salesforce/packaging 5.0.9-spi.5 → 5.0.9-spi.7
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/lib/interfaces/packagingInterfacesAndType.d.ts +17 -0
- package/lib/interfaces/packagingInterfacesAndType.js +5 -1
- package/lib/interfaces/packagingSObjects.d.ts +2 -1
- package/lib/package/package.js +8 -1
- package/lib/package/packageCreate.d.ts +10 -2
- package/lib/package/packageCreate.js +26 -0
- package/messages/package.md +8 -0
- package/package.json +1 -1
|
@@ -37,6 +37,7 @@ export type PackageUpdateOptions = {
|
|
|
37
37
|
PackageErrorUsername?: string;
|
|
38
38
|
AppAnalyticsEnabled?: boolean;
|
|
39
39
|
RecommendedVersionId?: string;
|
|
40
|
+
DistributionType?: SettableDistributionType;
|
|
40
41
|
};
|
|
41
42
|
export type PackageAuthorizationOptions = {
|
|
42
43
|
connection: Connection;
|
|
@@ -240,6 +241,21 @@ export type Package1Display = {
|
|
|
240
241
|
BuildNumber: number;
|
|
241
242
|
};
|
|
242
243
|
export type PackageType = 'Managed' | 'Unlocked';
|
|
244
|
+
/**
|
|
245
|
+
* The distribution type of a package, controlling install-time security.
|
|
246
|
+
*
|
|
247
|
+
* The Tooling API `Package2.DistributionType` field can hold any of these values, but only
|
|
248
|
+
* `PublicSecure` and `Limited` may be set from the CLI on create/update — `Public` is a backend-only
|
|
249
|
+
* state (the legacy default the backend assigns). See {@link SettableDistributionType} for the
|
|
250
|
+
* CLI-settable subset.
|
|
251
|
+
*/
|
|
252
|
+
export type DistributionType = 'Public' | 'PublicSecure' | 'Limited';
|
|
253
|
+
/** The subset of {@link DistributionType} values a user may set via the CLI on create and update. */
|
|
254
|
+
export type SettableDistributionType = Extract<DistributionType, 'PublicSecure' | 'Limited'>;
|
|
255
|
+
/** The distribution type values a user may set via the CLI on create and update. */
|
|
256
|
+
export declare const SETTABLE_DISTRIBUTION_TYPES: readonly SettableDistributionType[];
|
|
257
|
+
/** Minimum Tooling API version that supports the `Package2.DistributionType` field. */
|
|
258
|
+
export declare const DISTRIBUTION_TYPE_MIN_API_VERSION = "68.0";
|
|
243
259
|
export type PackageCreateOptions = {
|
|
244
260
|
name: string;
|
|
245
261
|
description: string;
|
|
@@ -248,6 +264,7 @@ export type PackageCreateOptions = {
|
|
|
248
264
|
packageType: PackageType;
|
|
249
265
|
errorNotificationUsername: string;
|
|
250
266
|
path: string;
|
|
267
|
+
distributionType?: SettableDistributionType;
|
|
251
268
|
};
|
|
252
269
|
export type PackageDescriptorJson = Partial<NamedPackagingDir> & Partial<{
|
|
253
270
|
id: string;
|
|
@@ -15,10 +15,14 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.Package1VersionEvents = exports.PackageVersionEvents = exports.PackageEvents = exports.PackageVersionCreateRequestResultInProgressStatuses = void 0;
|
|
18
|
+
exports.Package1VersionEvents = exports.PackageVersionEvents = exports.PackageEvents = exports.DISTRIBUTION_TYPE_MIN_API_VERSION = exports.SETTABLE_DISTRIBUTION_TYPES = exports.PackageVersionCreateRequestResultInProgressStatuses = void 0;
|
|
19
19
|
const packagingSObjects_1 = require("./packagingSObjects");
|
|
20
20
|
var Package2VersionStatus = packagingSObjects_1.PackagingSObjects.Package2VersionStatus;
|
|
21
21
|
exports.PackageVersionCreateRequestResultInProgressStatuses = Object.values(Package2VersionStatus).filter((status) => !['Queued', 'Success', 'Error'].includes(status));
|
|
22
|
+
/** The distribution type values a user may set via the CLI on create and update. */
|
|
23
|
+
exports.SETTABLE_DISTRIBUTION_TYPES = ['PublicSecure', 'Limited'];
|
|
24
|
+
/** Minimum Tooling API version that supports the `Package2.DistributionType` field. */
|
|
25
|
+
exports.DISTRIBUTION_TYPE_MIN_API_VERSION = '68.0';
|
|
22
26
|
exports.PackageEvents = {
|
|
23
27
|
convert: {
|
|
24
28
|
success: 'Package/convert-success',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Nullable } from '@salesforce/ts-types';
|
|
2
|
-
import { CodeCoverage, CodeCoveragePercentages, PackageType } from './packagingInterfacesAndType';
|
|
2
|
+
import { CodeCoverage, CodeCoveragePercentages, DistributionType, PackageType } from './packagingInterfacesAndType';
|
|
3
3
|
export declare namespace PackagingSObjects {
|
|
4
4
|
type Package2 = {
|
|
5
5
|
Id: string;
|
|
@@ -20,6 +20,7 @@ export declare namespace PackagingSObjects {
|
|
|
20
20
|
PackageErrorUsername: string;
|
|
21
21
|
AppAnalyticsEnabled?: boolean;
|
|
22
22
|
RecommendedVersionId?: string;
|
|
23
|
+
DistributionType?: DistributionType;
|
|
23
24
|
};
|
|
24
25
|
type Package2Version = {
|
|
25
26
|
Id: string;
|
package/lib/package/package.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Package = exports.Package2Fields = void 0;
|
|
4
4
|
const core_1 = require("@salesforce/core");
|
|
5
5
|
const graphology_1 = require("graphology");
|
|
6
|
+
const interfaces_1 = require("../interfaces");
|
|
6
7
|
const packageUtils_1 = require("../utils/packageUtils");
|
|
7
8
|
const packageCreate_1 = require("./packageCreate");
|
|
8
9
|
const packageConvert_1 = require("./packageConvert");
|
|
@@ -40,6 +41,7 @@ exports.Package2Fields = [
|
|
|
40
41
|
'PackageErrorUsername',
|
|
41
42
|
'AppAnalyticsEnabled',
|
|
42
43
|
'RecommendedVersionId',
|
|
44
|
+
'DistributionType',
|
|
43
45
|
];
|
|
44
46
|
/**
|
|
45
47
|
* Provides the ability to list, create, update, delete, convert, and get version
|
|
@@ -184,7 +186,9 @@ class Package {
|
|
|
184
186
|
}
|
|
185
187
|
static getPackage2Fields(connection) {
|
|
186
188
|
const apiVersion = connection.getApiVersion();
|
|
187
|
-
return exports.Package2Fields.filter((field) => (apiVersion >= '59.0' ? true : field !== 'AppAnalyticsEnabled'))
|
|
189
|
+
return exports.Package2Fields.filter((field) => (apiVersion >= '59.0' ? true : field !== 'AppAnalyticsEnabled'))
|
|
190
|
+
.filter((field) => (apiVersion >= '66.0' ? true : field !== 'RecommendedVersionId'))
|
|
191
|
+
.filter((field) => apiVersion >= interfaces_1.DISTRIBUTION_TYPE_MIN_API_VERSION ? true : field !== 'DistributionType');
|
|
188
192
|
}
|
|
189
193
|
/**
|
|
190
194
|
* Returns the package ID of the package.
|
|
@@ -260,6 +264,9 @@ class Package {
|
|
|
260
264
|
if (opts.RecommendedVersionId !== undefined && this.options.connection.getApiVersion() < '66.0') {
|
|
261
265
|
throw messages.createError('recommendedVersionIdApiPriorTo66Error');
|
|
262
266
|
}
|
|
267
|
+
// Validates the API version and that the value is CLI-settable (PublicSecure/Limited).
|
|
268
|
+
// The backend enforces the allowed state transitions between distribution types on update.
|
|
269
|
+
(0, packageCreate_1.validateDistributionType)(this.options.connection, opts.DistributionType);
|
|
263
270
|
if (opts.RecommendedVersionId !== undefined) {
|
|
264
271
|
const trimmedId = opts.RecommendedVersionId.trim();
|
|
265
272
|
if (trimmedId === '' || !trimmedId.startsWith('04t') || (trimmedId.length !== 15 && trimmedId.length !== 18)) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Connection, SfProject } from '@salesforce/core';
|
|
2
2
|
import { PackagePackageDir } from '@salesforce/schemas';
|
|
3
|
-
import { PackageCreateOptions, PackagingSObjects } from '../interfaces';
|
|
4
|
-
type Package2Request = Pick<PackagingSObjects.Package2, 'Name' | 'Description' | 'NamespacePrefix' | 'ContainerOptions' | 'IsOrgDependent' | 'PackageErrorUsername'>;
|
|
3
|
+
import { PackageCreateOptions, PackagingSObjects, SettableDistributionType } from '../interfaces';
|
|
4
|
+
type Package2Request = Pick<PackagingSObjects.Package2, 'Name' | 'Description' | 'NamespacePrefix' | 'ContainerOptions' | 'IsOrgDependent' | 'PackageErrorUsername' | 'DistributionType'>;
|
|
5
5
|
export declare function createPackageRequestFromContext(project: SfProject, options: PackageCreateOptions): Package2Request;
|
|
6
6
|
/**
|
|
7
7
|
* Create packageDirectory json entry for this package that can be written to sfdx-project.json
|
|
@@ -11,6 +11,14 @@ export declare function createPackageRequestFromContext(project: SfProject, opti
|
|
|
11
11
|
* @private
|
|
12
12
|
*/
|
|
13
13
|
export declare function createPackageDirEntry(project: SfProject, options: PackageCreateOptions): PackagePackageDir;
|
|
14
|
+
/**
|
|
15
|
+
* Validate a user-supplied distribution type: it requires a minimum API version and must be one of
|
|
16
|
+
* the CLI-settable values (`PublicSecure` or `Limited`). `Public` and `Private` are backend-only.
|
|
17
|
+
* A no-op when `distributionType` is undefined (the backend then defaults it by package type).
|
|
18
|
+
*
|
|
19
|
+
* Shared by both create and update so the CLI surfaces the same errors before hitting the API.
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateDistributionType(connection: Connection, distributionType: SettableDistributionType | undefined): void;
|
|
14
22
|
export declare function createPackage(connection: Connection, project: SfProject, options: PackageCreateOptions): Promise<{
|
|
15
23
|
Id: string;
|
|
16
24
|
}>;
|
|
@@ -50,12 +50,16 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
51
|
exports.createPackageRequestFromContext = createPackageRequestFromContext;
|
|
52
52
|
exports.createPackageDirEntry = createPackageDirEntry;
|
|
53
|
+
exports.validateDistributionType = validateDistributionType;
|
|
53
54
|
exports.createPackage = createPackage;
|
|
54
55
|
const core_1 = require("@salesforce/core");
|
|
55
56
|
const kit_1 = require("@salesforce/kit");
|
|
56
57
|
const project_1 = require("@salesforce/core/project");
|
|
57
58
|
const pkgUtils = __importStar(require("../utils/packageUtils"));
|
|
58
59
|
const packageUtils_1 = require("../utils/packageUtils");
|
|
60
|
+
const interfaces_1 = require("../interfaces");
|
|
61
|
+
core_1.Messages.importMessagesDirectory(__dirname);
|
|
62
|
+
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package');
|
|
59
63
|
function createPackageRequestFromContext(project, options) {
|
|
60
64
|
const namespace = options.noNamespace ? '' : project.getSfProjectJson().getContents().namespace ?? '';
|
|
61
65
|
return {
|
|
@@ -65,6 +69,9 @@ function createPackageRequestFromContext(project, options) {
|
|
|
65
69
|
ContainerOptions: options.packageType,
|
|
66
70
|
IsOrgDependent: options.orgDependent,
|
|
67
71
|
PackageErrorUsername: options.errorNotificationUsername,
|
|
72
|
+
// Only send DistributionType when the user provided one; otherwise the backend defaults it
|
|
73
|
+
// based on the package type (Managed -> PublicSecure, Unlocked -> Limited).
|
|
74
|
+
...(options.distributionType ? { DistributionType: options.distributionType } : {}),
|
|
68
75
|
};
|
|
69
76
|
}
|
|
70
77
|
/**
|
|
@@ -90,7 +97,26 @@ function createPackageDirEntry(project, options) {
|
|
|
90
97
|
versionDescription: options.description,
|
|
91
98
|
};
|
|
92
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Validate a user-supplied distribution type: it requires a minimum API version and must be one of
|
|
102
|
+
* the CLI-settable values (`PublicSecure` or `Limited`). `Public` and `Private` are backend-only.
|
|
103
|
+
* A no-op when `distributionType` is undefined (the backend then defaults it by package type).
|
|
104
|
+
*
|
|
105
|
+
* Shared by both create and update so the CLI surfaces the same errors before hitting the API.
|
|
106
|
+
*/
|
|
107
|
+
function validateDistributionType(connection, distributionType) {
|
|
108
|
+
if (distributionType === undefined) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (connection.getApiVersion() < interfaces_1.DISTRIBUTION_TYPE_MIN_API_VERSION) {
|
|
112
|
+
throw messages.createError('distributionTypeApiPriorTo68Error');
|
|
113
|
+
}
|
|
114
|
+
if (!interfaces_1.SETTABLE_DISTRIBUTION_TYPES.includes(distributionType)) {
|
|
115
|
+
throw messages.createError('invalidDistributionTypeError', [distributionType]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
93
118
|
async function createPackage(connection, project, options) {
|
|
119
|
+
validateDistributionType(connection, options.distributionType);
|
|
94
120
|
const cleanOptions = sanitizePackageCreateOptions(options);
|
|
95
121
|
const request = createPackageRequestFromContext(project, cleanOptions);
|
|
96
122
|
const createResult = await connection.tooling
|
package/messages/package.md
CHANGED
|
@@ -85,3 +85,11 @@ Provide a valid subscriber package version (04t) for the recommended version.
|
|
|
85
85
|
# unassociatedRecommendedVersionError
|
|
86
86
|
|
|
87
87
|
The provided recommended version isn't associated with this package.
|
|
88
|
+
|
|
89
|
+
# distributionTypeApiPriorTo68Error
|
|
90
|
+
|
|
91
|
+
Setting a distribution type is only possible with API version 68.0 or higher.
|
|
92
|
+
|
|
93
|
+
# invalidDistributionTypeError
|
|
94
|
+
|
|
95
|
+
Invalid distribution type "%s". When setting a distribution type from the CLI, the value must be either "PublicSecure" or "Limited".
|