@salesforce/plugin-lightning-dev 5.0.25-alpha.0 → 5.0.26

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.
@@ -117,13 +117,6 @@
117
117
  "multiple": false,
118
118
  "type": "option"
119
119
  },
120
- "api-version": {
121
- "description": "Override the api version used for api requests made by this command",
122
- "name": "api-version",
123
- "hasDynamicHelp": false,
124
- "multiple": false,
125
- "type": "option"
126
- },
127
120
  "client-select": {
128
121
  "char": "c",
129
122
  "name": "client-select",
@@ -253,5 +246,5 @@
253
246
  ]
254
247
  }
255
248
  },
256
- "version": "5.0.25-alpha.0"
249
+ "version": "5.0.26"
257
250
  }
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@salesforce/plugin-lightning-dev",
3
3
  "description": "Lightning development tools for LEX, Mobile, and Experience Sites",
4
- "version": "5.0.25-alpha.0",
4
+ "version": "5.0.26",
5
5
  "author": "Salesforce",
6
6
  "bugs": "https://github.com/forcedotcom/cli/issues",
7
7
  "dependencies": {
8
8
  "@inquirer/prompts": "^5.3.8",
9
9
  "@inquirer/select": "^2.4.7",
10
- "@lwc/lwc-dev-server": "~13.2.19",
11
- "@lwc/sfdc-lwc-compiler": "~13.2.19",
10
+ "@lwc/lwc-dev-server": "~13.2.18",
11
+ "@lwc/sfdc-lwc-compiler": "~13.2.7",
12
12
  "@lwrjs/api": "0.18.3",
13
13
  "@oclif/core": "^4.5.6",
14
14
  "@salesforce/core": "^8.23.3",
15
15
  "@salesforce/kit": "^3.2.4",
16
- "@salesforce/lwc-dev-mobile-core": "4.0.0-alpha.13",
16
+ "@salesforce/lwc-dev-mobile-core": "4.0.0-alpha.14",
17
17
  "@salesforce/sf-plugins-core": "^11.2.4",
18
- "axios": "^1.13.1",
18
+ "axios": "^1.13.2",
19
19
  "glob": "^10.4.5",
20
- "lwc": "~8.24.0",
20
+ "lwc": "~8.23.0",
21
21
  "node-fetch": "^3.3.2",
22
22
  "open": "^10.2.0",
23
23
  "xml2js": "^0.6.2"
@@ -265,11 +265,11 @@
265
265
  "exports": "./lib/index.js",
266
266
  "type": "module",
267
267
  "volta": {
268
- "node": "20.12.0",
268
+ "node": "20.11.0",
269
269
  "yarn": "1.22.22"
270
270
  },
271
271
  "sfdx": {
272
- "publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-lightning-dev/5.0.25-alpha.0.crt",
273
- "signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-lightning-dev/5.0.25-alpha.0.sig"
272
+ "publicKeyUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-lightning-dev/5.0.26.crt",
273
+ "signatureUrl": "https://developer.salesforce.com/media/salesforce-cli/security/@salesforce/plugin-lightning-dev/5.0.26.sig"
274
274
  }
275
275
  }
@@ -1,78 +0,0 @@
1
- import { Connection } from '@salesforce/core';
2
- type LightningExperienceSettingsMetadata = {
3
- [key: string]: unknown;
4
- fullName?: string;
5
- enableLightningPreviewPref?: string | boolean;
6
- };
7
- type MyDomainSettingsMetadata = {
8
- [key: string]: unknown;
9
- fullName?: string;
10
- isFirstPartyCookieUseRequired?: string | boolean;
11
- };
12
- /**
13
- * Utility class for managing Salesforce metadata settings related to Lightning Development.
14
- */
15
- export declare class MetaUtils {
16
- private static logger;
17
- /**
18
- * Retrieves the Lightning Experience Settings metadata from the org.
19
- *
20
- * @param connection the connection to the org
21
- * @returns LightningExperienceSettingsMetadata object containing the settings
22
- * @throws Error if unable to retrieve the metadata
23
- */
24
- static getLightningExperienceSettings(connection: Connection): Promise<LightningExperienceSettingsMetadata>;
25
- /**
26
- * Checks if Lightning Preview (Local Dev) is enabled for the org.
27
- *
28
- * @param connection the connection to the org
29
- * @returns boolean indicating whether Lightning Preview is enabled
30
- */
31
- static isLightningPreviewEnabled(connection: Connection): Promise<boolean>;
32
- /**
33
- * Enables or disables Lightning Preview (Local Dev) for the org by updating the metadata.
34
- *
35
- * @param connection the connection to the org
36
- * @param enable boolean indicating whether to enable (true) or disable (false) Lightning Preview
37
- * @throws Error if the metadata update fails
38
- */
39
- static setLightningPreviewEnabled(connection: Connection, enable: boolean): Promise<void>;
40
- /**
41
- * Retrieves the My Domain Settings metadata from the org.
42
- *
43
- * @param connection the connection to the org
44
- * @returns MyDomainSettingsMetadata object containing the settings
45
- * @throws Error if unable to retrieve the metadata
46
- */
47
- static getMyDomainSettings(connection: Connection): Promise<MyDomainSettingsMetadata>;
48
- /**
49
- * Checks if first-party cookies are required for the org.
50
- *
51
- * @param connection the connection to the org
52
- * @returns boolean indicating whether first-party cookies are required
53
- */
54
- static isFirstPartyCookieRequired(connection: Connection): Promise<boolean>;
55
- /**
56
- * Updates the My Domain setting that controls whether first-party cookies are required.
57
- *
58
- * @param connection the connection to the org
59
- * @param requireFirstPartyCookies boolean indicating whether to require first-party cookies
60
- * @throws Error if the metadata update fails
61
- */
62
- static setMyDomainFirstPartyCookieRequirement(connection: Connection, requireFirstPartyCookies: boolean): Promise<void>;
63
- /**
64
- * Ensures Lightning Preview is enabled for the org. If it's not enabled, this method will enable it.
65
- *
66
- * @param connection the connection to the org
67
- * @returns boolean indicating whether Lightning Preview was already enabled (true) or had to be enabled (false)
68
- */
69
- static ensureLightningPreviewEnabled(connection: Connection): Promise<boolean>;
70
- /**
71
- * Ensures first-party cookies are not required for the org. If they are required, this method will disable the requirement.
72
- *
73
- * @param connection the connection to the org
74
- * @returns boolean indicating whether first-party cookies were already not required (true) or had to be disabled (false)
75
- */
76
- static ensureFirstPartyCookiesNotRequired(connection: Connection): Promise<boolean>;
77
- }
78
- export {};
@@ -1,187 +0,0 @@
1
- /*
2
- * Copyright 2025, 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 { Logger } from '@salesforce/core';
17
- /**
18
- * Utility class for managing Salesforce metadata settings related to Lightning Development.
19
- */
20
- export class MetaUtils {
21
- static logger = Logger.childFromRoot('metaUtils');
22
- /**
23
- * Retrieves the Lightning Experience Settings metadata from the org.
24
- *
25
- * @param connection the connection to the org
26
- * @returns LightningExperienceSettingsMetadata object containing the settings
27
- * @throws Error if unable to retrieve the metadata
28
- */
29
- static async getLightningExperienceSettings(connection) {
30
- this.logger.debug('Retrieving Lightning Experience Settings metadata');
31
- const metadata = await connection.metadata.read('LightningExperienceSettings', 'enableLightningPreviewPref');
32
- if (!metadata) {
33
- throw new Error('Unable to retrieve Lightning Experience Settings metadata.');
34
- }
35
- if (Array.isArray(metadata)) {
36
- if (metadata.length === 0) {
37
- throw new Error('Lightning Experience Settings metadata response was empty.');
38
- }
39
- return metadata[0];
40
- }
41
- return metadata;
42
- }
43
- /**
44
- * Checks if Lightning Preview (Local Dev) is enabled for the org.
45
- *
46
- * @param connection the connection to the org
47
- * @returns boolean indicating whether Lightning Preview is enabled
48
- */
49
- static async isLightningPreviewEnabled(connection) {
50
- try {
51
- const settings = await this.getLightningExperienceSettings(connection);
52
- const flagValue = settings.enableLightningPreviewPref ?? 'false';
53
- const enabled = String(flagValue).toLowerCase().trim() === 'true';
54
- this.logger.debug(`Lightning Preview enabled: ${enabled}`);
55
- return enabled;
56
- }
57
- catch (error) {
58
- this.logger.warn('Error checking Lightning Preview status, assuming disabled:', error);
59
- return false;
60
- }
61
- }
62
- /**
63
- * Enables or disables Lightning Preview (Local Dev) for the org by updating the metadata.
64
- *
65
- * @param connection the connection to the org
66
- * @param enable boolean indicating whether to enable (true) or disable (false) Lightning Preview
67
- * @throws Error if the metadata update fails
68
- */
69
- static async setLightningPreviewEnabled(connection, enable) {
70
- this.logger.debug(`Setting Lightning Preview enabled to: ${enable}`);
71
- const updateResult = await connection.metadata.update('LightningExperienceSettings', {
72
- fullName: 'enableLightningPreviewPref',
73
- enableLightningPreviewPref: enable ? 'true' : 'false',
74
- });
75
- const results = Array.isArray(updateResult) ? updateResult : [updateResult];
76
- const typedResults = results;
77
- const errors = typedResults.filter((result) => !result.success);
78
- if (errors.length > 0) {
79
- const message = errors
80
- .flatMap((result) => (Array.isArray(result.errors) ? result.errors : result.errors ? [result.errors] : []))
81
- .filter((error) => Boolean(error))
82
- .map((error) => error.message)
83
- .join(' ');
84
- throw new Error(message || 'Failed to update Lightning Preview setting.');
85
- }
86
- this.logger.debug('Successfully updated Lightning Preview setting');
87
- }
88
- /**
89
- * Retrieves the My Domain Settings metadata from the org.
90
- *
91
- * @param connection the connection to the org
92
- * @returns MyDomainSettingsMetadata object containing the settings
93
- * @throws Error if unable to retrieve the metadata
94
- */
95
- static async getMyDomainSettings(connection) {
96
- this.logger.debug('Retrieving My Domain Settings metadata');
97
- const metadata = await connection.metadata.read('MyDomainSettings', 'MyDomain');
98
- if (!metadata) {
99
- throw new Error('Unable to retrieve My Domain settings metadata.');
100
- }
101
- if (Array.isArray(metadata)) {
102
- if (metadata.length === 0) {
103
- throw new Error('My Domain settings metadata response was empty.');
104
- }
105
- return metadata[0];
106
- }
107
- return metadata;
108
- }
109
- /**
110
- * Checks if first-party cookies are required for the org.
111
- *
112
- * @param connection the connection to the org
113
- * @returns boolean indicating whether first-party cookies are required
114
- */
115
- static async isFirstPartyCookieRequired(connection) {
116
- try {
117
- const settings = await this.getMyDomainSettings(connection);
118
- const flagValue = settings.isFirstPartyCookieUseRequired ?? 'false';
119
- const required = String(flagValue).toLowerCase().trim() === 'true';
120
- this.logger.debug(`First-party cookie required: ${required}`);
121
- return required;
122
- }
123
- catch (error) {
124
- this.logger.warn('Error checking first-party cookie requirement, assuming not required:', error);
125
- return false;
126
- }
127
- }
128
- /**
129
- * Updates the My Domain setting that controls whether first-party cookies are required.
130
- *
131
- * @param connection the connection to the org
132
- * @param requireFirstPartyCookies boolean indicating whether to require first-party cookies
133
- * @throws Error if the metadata update fails
134
- */
135
- static async setMyDomainFirstPartyCookieRequirement(connection, requireFirstPartyCookies) {
136
- this.logger.debug(`Setting first-party cookie requirement to: ${requireFirstPartyCookies}`);
137
- const updateResult = await connection.metadata.update('MyDomainSettings', {
138
- fullName: 'MyDomain',
139
- isFirstPartyCookieUseRequired: requireFirstPartyCookies ? 'true' : 'false',
140
- });
141
- const results = Array.isArray(updateResult) ? updateResult : [updateResult];
142
- const typedResults = results;
143
- const errors = typedResults.filter((result) => !result.success);
144
- if (errors.length > 0) {
145
- const message = errors
146
- .flatMap((result) => (Array.isArray(result.errors) ? result.errors : result.errors ? [result.errors] : []))
147
- .filter((error) => Boolean(error))
148
- .map((error) => error.message)
149
- .join(' ');
150
- throw new Error(message || 'Failed to update My Domain first-party cookie requirement.');
151
- }
152
- this.logger.debug('Successfully updated first-party cookie requirement');
153
- }
154
- /**
155
- * Ensures Lightning Preview is enabled for the org. If it's not enabled, this method will enable it.
156
- *
157
- * @param connection the connection to the org
158
- * @returns boolean indicating whether Lightning Preview was already enabled (true) or had to be enabled (false)
159
- */
160
- static async ensureLightningPreviewEnabled(connection) {
161
- const isEnabled = await this.isLightningPreviewEnabled(connection);
162
- if (!isEnabled) {
163
- this.logger.info('Lightning Preview is not enabled. Enabling it now...');
164
- await this.setLightningPreviewEnabled(connection, true);
165
- return false;
166
- }
167
- this.logger.debug('Lightning Preview is already enabled');
168
- return true;
169
- }
170
- /**
171
- * Ensures first-party cookies are not required for the org. If they are required, this method will disable the requirement.
172
- *
173
- * @param connection the connection to the org
174
- * @returns boolean indicating whether first-party cookies were already not required (true) or had to be disabled (false)
175
- */
176
- static async ensureFirstPartyCookiesNotRequired(connection) {
177
- const isRequired = await this.isFirstPartyCookieRequired(connection);
178
- if (isRequired) {
179
- this.logger.info('First-party cookies are required. Disabling requirement...');
180
- await this.setMyDomainFirstPartyCookieRequirement(connection, false);
181
- return false;
182
- }
183
- this.logger.debug('First-party cookies are not required');
184
- return true;
185
- }
186
- }
187
- //# sourceMappingURL=metaUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metaUtils.js","sourceRoot":"","sources":["../../src/shared/metaUtils.ts"],"names":[],"mappings":"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"}