Skip to content

Commit e22b358

Browse files
committed
chore: remove SSR functionality and LWR dependencies to resolve vulnerabilities @W-20203809@
1 parent 8edb88e commit e22b358

File tree

7 files changed

+108
-2770
lines changed

7 files changed

+108
-2770
lines changed

README.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,17 +256,13 @@ _See code: [src/commands/lightning/dev/component.ts](https://github.com/salesfor
256256

257257
```
258258
USAGE
259-
$ sf lightning dev site -o <value> [--flags-dir <value>] [-n <value>] [-l] [--guest] [--ssr]
259+
$ sf lightning dev site -o <value> [--flags-dir <value>] [-n <value>]
260260
261261
FLAGS
262-
-l, --get-latest Download the latest version of the specified site from your org, instead of using any local
263-
cache.
264262
-n, --name=<value> Name of the Experience Builder site to preview. It has to match a site name from the current
265263
org.
266264
-o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
267265
configuration variable is already set.
268-
--guest Preview the site as a guest user (rather than an authenticated user).
269-
--ssr Preview the SSR bundle
270266
271267
GLOBAL FLAGS
272268
--flags-dir=<value> Import flag values from a directory.

command-snapshot.json

Lines changed: 53 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,54 @@
11
[
2-
{
3-
"alias": [],
4-
"command": "lightning:dev:app",
5-
"flagAliases": [],
6-
"flagChars": ["i", "n", "o", "t"],
7-
"flags": ["device-id", "device-type", "flags-dir", "name", "target-org"],
8-
"plugin": "@salesforce/plugin-lightning-dev"
9-
},
10-
{
11-
"alias": [],
12-
"command": "lightning:dev:component",
13-
"flagAliases": [],
14-
"flagChars": ["c", "n", "o"],
15-
"flags": ["client-select", "flags-dir", "json", "name", "target-org"],
16-
"plugin": "@salesforce/plugin-lightning-dev"
17-
},
18-
{
19-
"alias": [],
20-
"command": "lightning:dev:site",
21-
"flagAliases": [],
22-
"flagChars": ["l", "n", "o"],
23-
"flags": ["flags-dir", "get-latest", "guest", "name", "target-org", "ssr"],
24-
"plugin": "@salesforce/plugin-lightning-dev"
25-
}
26-
]
2+
{
3+
"alias": [],
4+
"command": "lightning:dev:app",
5+
"flagAliases": [],
6+
"flagChars": [
7+
"i",
8+
"n",
9+
"o",
10+
"t"
11+
],
12+
"flags": [
13+
"device-id",
14+
"device-type",
15+
"flags-dir",
16+
"name",
17+
"target-org"
18+
],
19+
"plugin": "@salesforce/plugin-lightning-dev"
20+
},
21+
{
22+
"alias": [],
23+
"command": "lightning:dev:component",
24+
"flagAliases": [],
25+
"flagChars": [
26+
"c",
27+
"n",
28+
"o"
29+
],
30+
"flags": [
31+
"client-select",
32+
"flags-dir",
33+
"json",
34+
"name",
35+
"target-org"
36+
],
37+
"plugin": "@salesforce/plugin-lightning-dev"
38+
},
39+
{
40+
"alias": [],
41+
"command": "lightning:dev:site",
42+
"flagAliases": [],
43+
"flagChars": [
44+
"n",
45+
"o"
46+
],
47+
"flags": [
48+
"flags-dir",
49+
"name",
50+
"target-org"
51+
],
52+
"plugin": "@salesforce/plugin-lightning-dev"
53+
}
54+
]

messages/lightning.dev.site.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,9 @@ For more considerations and limitations, see the Lightning Web Components Develo
2121

2222
Name of the Experience Builder site to preview. It has to match a site name from the current org.
2323

24-
# flags.get-latest.summary
25-
26-
Download the latest version of the specified site from your org, instead of using any local cache.
27-
28-
# flags.guest.summary
29-
30-
Preview the site as a guest user (rather than an authenticated user).
31-
32-
# flags.ssr.summary
33-
34-
Preview the SSR bundle
35-
3624
# examples
3725

3826
- Select a site to preview from the org "myOrg":
3927
<%= config.bin %> <%= command.id %> --target-org myOrg
4028
- Preview the site "Partner Central" from the org "myOrg":
4129
<%= config.bin %> <%= command.id %> --name "Partner Central" --target-org myOrg
42-
- Get and preview the latest version of the "Partner Central" site from the org "myOrg"
43-
<%= config.bin %> <%= command.id %> --name "Partner Central" --target-org myOrg --get-latest

package.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@
99
"@inquirer/select": "^2.4.7",
1010
"@lwc/lwc-dev-server": "~13.2.19",
1111
"@lwc/sfdc-lwc-compiler": "~13.2.19",
12-
"@lwrjs/api": "0.18.3",
1312
"@oclif/core": "^4.5.6",
1413
"@salesforce/core": "^8.23.3",
1514
"@salesforce/kit": "^3.2.4",
1615
"@salesforce/lwc-dev-mobile-core": "4.0.0-alpha.14",
1716
"@salesforce/sf-plugins-core": "^11.2.4",
1817
"axios": "^1.13.2",
19-
"glob": "^10.4.5",
18+
"glob": "^10.5.0",
2019
"lwc": "~8.24.0",
2120
"node-fetch": "^3.3.2",
2221
"open": "^10.2.0",
@@ -96,15 +95,13 @@
9695
"fix-license": "eslint src test --fix --rule \"header/header: [2]\"",
9796
"format": "wireit",
9897
"link-check": "wireit",
99-
"link-lwr": "yarn link @lwrjs/api @lwrjs/app-service @lwrjs/asset-registry @lwrjs/asset-transformer @lwrjs/auth-middleware @lwrjs/base-view-provider @lwrjs/base-view-transformer @lwrjs/client-modules @lwrjs/config @lwrjs/core @lwrjs/dev-proxy-server @lwrjs/diagnostics @lwrjs/esbuild @lwrjs/everywhere @lwrjs/fs-asset-provider @lwrjs/fs-watch @lwrjs/html-view-provider @lwrjs/instrumentation @lwrjs/label-module-provider @lwrjs/lambda @lwrjs/legacy-npm-module-provider @lwrjs/loader @lwrjs/lwc-module-provider @lwrjs/lwc-ssr @lwrjs/markdown-view-provider @lwrjs/module-bundler @lwrjs/module-registry @lwrjs/npm-module-provider @lwrjs/nunjucks-view-provider @lwrjs/o11y @lwrjs/resource-registry @lwrjs/router @lwrjs/security @lwrjs/server @lwrjs/shared-utils @lwrjs/static @lwrjs/tools @lwrjs/types @lwrjs/view-registry lwr",
10098
"lint": "wireit",
10199
"postpack": "sf-clean --ignore-signing-artifacts",
102100
"prepack": "sf-prepack",
103101
"prepare": "sf-install",
104102
"test": "wireit",
105103
"test:nuts": "nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel",
106104
"test:only": "wireit",
107-
"unlink-lwr": "yarn unlink @lwrjs/api @lwrjs/app-service @lwrjs/asset-registry @lwrjs/asset-transformer @lwrjs/auth-middleware @lwrjs/base-view-provider @lwrjs/base-view-transformer @lwrjs/client-modules @lwrjs/config @lwrjs/core @lwrjs/dev-proxy-server @lwrjs/diagnostics @lwrjs/esbuild @lwrjs/everywhere @lwrjs/fs-asset-provider @lwrjs/fs-watch @lwrjs/html-view-provider @lwrjs/instrumentation @lwrjs/label-module-provider @lwrjs/lambda @lwrjs/legacy-npm-module-provider @lwrjs/loader @lwrjs/lwc-module-provider @lwrjs/lwc-ssr @lwrjs/markdown-view-provider @lwrjs/module-bundler @lwrjs/module-registry @lwrjs/npm-module-provider @lwrjs/nunjucks-view-provider @lwrjs/o11y @lwrjs/resource-registry @lwrjs/router @lwrjs/security @lwrjs/server @lwrjs/shared-utils @lwrjs/static @lwrjs/tools @lwrjs/types @lwrjs/view-registry lwr",
108105
"update-snapshots": "node --loader ts-node/esm --no-warnings=ExperimentalWarning \"./bin/dev.js\" snapshot:generate",
109106
"version": "oclif readme"
110107
},
@@ -265,7 +262,7 @@
265262
"exports": "./lib/index.js",
266263
"type": "module",
267264
"volta": {
268-
"node": "20.11.0",
265+
"node": "20.18.0",
269266
"yarn": "1.22.22"
270267
}
271268
}

src/commands/lightning/dev/site.ts

Lines changed: 1 addition & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
import fs from 'node:fs';
1716
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
1817
import { Connection, Logger, Messages, SfProject } from '@salesforce/core';
1918
import { Platform } from '@salesforce/lwc-dev-mobile-core';
20-
import { expDev, SitesLocalDevOptions, setupDev } from '@lwrjs/api';
2119
import open from 'open';
2220
import { OrgUtils } from '../../../shared/orgUtils.js';
2321
import { PromptUtils } from '../../../shared/promptUtils.js';
@@ -41,28 +39,13 @@ export default class LightningDevSite extends SfCommand<void> {
4139
char: 'n',
4240
}),
4341
'target-org': Flags.requiredOrg(),
44-
'get-latest': Flags.boolean({
45-
summary: messages.getMessage('flags.get-latest.summary'),
46-
char: 'l',
47-
}),
48-
guest: Flags.boolean({
49-
summary: messages.getMessage('flags.guest.summary'),
50-
default: false,
51-
}),
52-
ssr: Flags.boolean({
53-
summary: messages.getMessage('flags.ssr.summary'),
54-
default: false,
55-
}),
5642
};
5743

5844
public async run(): Promise<void> {
5945
const { flags } = await this.parse(LightningDevSite);
6046

6147
try {
6248
const org = flags['target-org'];
63-
const getLatest = flags['get-latest'];
64-
const guest = flags.guest;
65-
const ssr = flags.ssr;
6649
let siteName = flags.name;
6750

6851
const connection = org.getConnection(undefined);
@@ -82,76 +65,13 @@ export default class LightningDevSite extends SfCommand<void> {
8265

8366
const selectedSite = new ExperienceSite(org, siteName);
8467

85-
if (!ssr) {
86-
return await this.openPreviewUrl(selectedSite, connection);
87-
}
88-
await this.serveSSRSite(selectedSite, getLatest, siteName, guest);
68+
return await this.openPreviewUrl(selectedSite, connection);
8969
} catch (e) {
9070
this.spinner.stop('failed.');
9171
this.log('Local Development setup failed', e);
9272
}
9373
}
9474

95-
private async serveSSRSite(
96-
selectedSite: ExperienceSite,
97-
getLatest: boolean,
98-
siteName: string,
99-
guest: boolean
100-
): Promise<void> {
101-
let siteZip: string | undefined;
102-
103-
// If the site is not setup / is not based on the current release / or get-latest is requested ->
104-
// generate and download a new site bundle from the org based on latest builder metadata
105-
if (!selectedSite.isSiteSetup() || getLatest) {
106-
const startTime = Date.now();
107-
this.log(`[local-dev] Initializing: ${siteName}`);
108-
this.spinner.start('[local-dev] Downloading site (this may take a few minutes)');
109-
siteZip = await selectedSite.downloadSite();
110-
111-
// delete oldSitePath recursive
112-
const oldSitePath = selectedSite.getExtractDirectory();
113-
if (fs.existsSync(oldSitePath)) {
114-
fs.rmSync(oldSitePath, { recursive: true });
115-
}
116-
const endTime = Date.now();
117-
const duration = (endTime - startTime) / 1000; // Convert to seconds
118-
this.spinner.stop('done.');
119-
this.log(`[local-dev] Site setup completed in ${duration.toFixed(2)} seconds.`);
120-
}
121-
122-
this.log(`[local-dev] launching browser preview for: ${siteName}`);
123-
124-
// Establish a valid access token for this site
125-
const authToken = guest ? '' : await selectedSite.setupAuth();
126-
127-
// Start the dev server
128-
const port = parseInt(process.env.PORT ?? '3000', 10);
129-
130-
// Internal vs external mode
131-
const internalProject = !fs.existsSync('sfdx-project.json') && fs.existsSync('lwr.config.json');
132-
const logLevel = process.env.LOG_LEVEL ?? 'error';
133-
134-
const startupParams: SitesLocalDevOptions = {
135-
sfCLI: !internalProject,
136-
authToken,
137-
open: process.env.OPEN_BROWSER === 'false' ? false : true,
138-
port,
139-
logLevel,
140-
mode: 'dev',
141-
siteZip,
142-
siteDir: selectedSite.getSiteDirectory(),
143-
};
144-
145-
// Environment variable used to setup the site rather than setup & start server
146-
if (process.env.SETUP_ONLY === 'true') {
147-
await setupDev(startupParams);
148-
this.log('[local-dev] setup complete!');
149-
} else {
150-
await expDev(startupParams);
151-
this.log('[local-dev] watching for file changes... (CTRL-C to stop)');
152-
}
153-
}
154-
15575
private async openPreviewUrl(selectedSite: ExperienceSite, connection: Connection): Promise<void> {
15676
let sfdxProjectRootPath = '';
15777
try {

src/shared/experience/expSite.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,6 @@ export class ExperienceSite {
108108
return new Date(remoteMetadata.bundleLastModified) > new Date(localMetadata.bundleLastModified);
109109
}
110110

111-
// Is the site extracted locally
112-
public isSiteSetup(): boolean {
113-
if (fs.existsSync(path.join(this.getExtractDirectory(), 'ssr.js'))) {
114-
return this.getLocalMetadata()?.coreVersion === '254';
115-
}
116-
return false;
117-
}
118-
119111
// Is the static resource available on the server
120112
public async isSitePublished(): Promise<boolean> {
121113
const remoteMetadata = await this.getRemoteMetadata();

0 commit comments

Comments
 (0)