@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.
@@ -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;
@@ -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')).filter((field) => (apiVersion >= '66.0' ? true : field !== 'RecommendedVersionId'));
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
@@ -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".
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforce/packaging",
3
- "version": "5.0.9-spi.5",
3
+ "version": "5.0.9-spi.7",
4
4
  "description": "Packaging library for the Salesforce packaging platform",
5
5
  "main": "lib/exported",
6
6
  "types": "lib/exported.d.ts",