@salesforce/plugin-lightning-dev 4.1.7 → 4.3.0
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/README.md +8 -6
- package/lib/commands/lightning/dev/app.js +4 -38
- package/lib/commands/lightning/dev/app.js.map +1 -1
- package/lib/commands/lightning/dev/component.js +39 -28
- package/lib/commands/lightning/dev/component.js.map +1 -1
- package/lib/commands/lightning/dev/site.d.ts +3 -0
- package/lib/commands/lightning/dev/site.js +94 -45
- package/lib/commands/lightning/dev/site.js.map +1 -1
- package/lib/lwc-dev-server/index.js.map +1 -1
- package/lib/shared/experience/expSite.d.ts +1 -0
- package/lib/shared/experience/expSite.js +39 -0
- package/lib/shared/experience/expSite.js.map +1 -1
- package/lib/shared/previewUtils.d.ts +39 -1
- package/lib/shared/previewUtils.js +76 -2
- package/lib/shared/previewUtils.js.map +1 -1
- package/messages/lightning.dev.app.md +0 -16
- package/messages/lightning.dev.site.md +4 -0
- package/messages/shared.utils.md +16 -0
- package/npm-shrinkwrap.json +136 -2
- package/oclif.lock +59 -0
- package/oclif.manifest.json +9 -2
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -201,7 +201,7 @@ EXAMPLES
|
|
|
201
201
|
$ sf lightning dev app --target-org myOrg --device-type ios --device-id "iPhone 15 Pro Max"
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
_See code: [src/commands/lightning/dev/app.ts](https://github.com/salesforcecli/plugin-lightning-dev/blob/4.
|
|
204
|
+
_See code: [src/commands/lightning/dev/app.ts](https://github.com/salesforcecli/plugin-lightning-dev/blob/4.3.0/src/commands/lightning/dev/app.ts)_
|
|
205
205
|
|
|
206
206
|
## `sf lightning dev component`
|
|
207
207
|
|
|
@@ -209,12 +209,13 @@ _See code: [src/commands/lightning/dev/app.ts](https://github.com/salesforcecli/
|
|
|
209
209
|
|
|
210
210
|
```
|
|
211
211
|
USAGE
|
|
212
|
-
$ sf lightning dev component [--json] [--flags-dir <value>] [-n <value>] [-c]
|
|
212
|
+
$ sf lightning dev component -o <value> [--json] [--flags-dir <value>] [-n <value>] [-c]
|
|
213
213
|
|
|
214
214
|
FLAGS
|
|
215
215
|
-c, --client-select Launch component preview without selecting a component
|
|
216
216
|
-n, --name=<value> Name of a component to preview.
|
|
217
|
-
-o, --target-org=<value> Username or alias of the target org.
|
|
217
|
+
-o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
|
|
218
|
+
configuration variable is already set.
|
|
218
219
|
|
|
219
220
|
GLOBAL FLAGS
|
|
220
221
|
--flags-dir=<value> Import flag values from a directory.
|
|
@@ -247,7 +248,7 @@ EXAMPLES
|
|
|
247
248
|
$ sf lightning dev component --name myComponent
|
|
248
249
|
```
|
|
249
250
|
|
|
250
|
-
_See code: [src/commands/lightning/dev/component.ts](https://github.com/salesforcecli/plugin-lightning-dev/blob/4.
|
|
251
|
+
_See code: [src/commands/lightning/dev/component.ts](https://github.com/salesforcecli/plugin-lightning-dev/blob/4.3.0/src/commands/lightning/dev/component.ts)_
|
|
251
252
|
|
|
252
253
|
## `sf lightning dev site`
|
|
253
254
|
|
|
@@ -255,7 +256,7 @@ _See code: [src/commands/lightning/dev/component.ts](https://github.com/salesfor
|
|
|
255
256
|
|
|
256
257
|
```
|
|
257
258
|
USAGE
|
|
258
|
-
$ sf lightning dev site -o <value> [--flags-dir <value>] [-n <value>] [-l] [--guest]
|
|
259
|
+
$ sf lightning dev site -o <value> [--flags-dir <value>] [-n <value>] [-l] [--guest] [--ssr]
|
|
259
260
|
|
|
260
261
|
FLAGS
|
|
261
262
|
-l, --get-latest Download the latest version of the specified site from your org, instead of using any local
|
|
@@ -265,6 +266,7 @@ FLAGS
|
|
|
265
266
|
-o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
|
|
266
267
|
configuration variable is already set.
|
|
267
268
|
--guest Preview the site as a guest user (rather than an authenticated user).
|
|
269
|
+
--ssr Preview the SSR bundle
|
|
268
270
|
|
|
269
271
|
GLOBAL FLAGS
|
|
270
272
|
--flags-dir=<value> Import flag values from a directory.
|
|
@@ -302,6 +304,6 @@ EXAMPLES
|
|
|
302
304
|
$ sf lightning dev site --name "Partner Central" --target-org myOrg --get-latest
|
|
303
305
|
```
|
|
304
306
|
|
|
305
|
-
_See code: [src/commands/lightning/dev/site.ts](https://github.com/salesforcecli/plugin-lightning-dev/blob/4.
|
|
307
|
+
_See code: [src/commands/lightning/dev/site.ts](https://github.com/salesforcecli/plugin-lightning-dev/blob/4.3.0/src/commands/lightning/dev/site.ts)_
|
|
306
308
|
|
|
307
309
|
<!-- commandsstop -->
|
|
@@ -8,7 +8,6 @@ import path from 'node:path';
|
|
|
8
8
|
import { Logger, Messages, SfProject } from '@salesforce/core';
|
|
9
9
|
import { BootMode, CommonUtils, Setup as LwcDevMobileCoreSetup, Platform, } from '@salesforce/lwc-dev-mobile-core';
|
|
10
10
|
import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
|
|
11
|
-
import { OrgUtils } from '../../../shared/orgUtils.js';
|
|
12
11
|
import { startLWCServer } from '../../../lwc-dev-server/index.js';
|
|
13
12
|
import { PreviewUtils } from '../../../shared/previewUtils.js';
|
|
14
13
|
import { PromptUtils } from '../../../shared/promptUtils.js';
|
|
@@ -57,26 +56,11 @@ export default class LightningDevApp extends SfCommand {
|
|
|
57
56
|
sfdxProjectRootPath = await SfProject.resolveProjectPath();
|
|
58
57
|
}
|
|
59
58
|
catch (error) {
|
|
60
|
-
|
|
59
|
+
throw new Error(sharedMessages.getMessage('error.no-project', [error?.message ?? '']));
|
|
61
60
|
}
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
if (!username) {
|
|
65
|
-
return Promise.reject(new Error(messages.getMessage('error.username')));
|
|
66
|
-
}
|
|
67
|
-
const localDevEnabled = await OrgUtils.isLocalDevEnabled(connection);
|
|
68
|
-
if (!localDevEnabled) {
|
|
69
|
-
return Promise.reject(new Error(sharedMessages.getMessage('error.localdev.not.enabled')));
|
|
70
|
-
}
|
|
71
|
-
OrgUtils.ensureMatchingAPIVersion(connection);
|
|
61
|
+
logger.debug('Initalizing preview connection and configuring local web server identity');
|
|
62
|
+
const { connection, ldpServerId, ldpServerToken } = await PreviewUtils.initializePreviewConnection(targetOrg);
|
|
72
63
|
const platform = flags['device-type'] ?? (await PromptUtils.promptUserToSelectPlatform());
|
|
73
|
-
logger.debug('Configuring local web server identity');
|
|
74
|
-
const appServerIdentity = await PreviewUtils.getOrCreateAppServerIdentity(connection);
|
|
75
|
-
const ldpServerToken = appServerIdentity.identityToken;
|
|
76
|
-
const ldpServerId = appServerIdentity.usernameToServerEntityIdMap[username];
|
|
77
|
-
if (!ldpServerId) {
|
|
78
|
-
return Promise.reject(new Error(messages.getMessage('error.identitydata.entityid')));
|
|
79
|
-
}
|
|
80
64
|
const appId = await PreviewUtils.getLightningExperienceAppId(connection, appName, logger);
|
|
81
65
|
logger.debug('Determining the next available port for Local Dev Server');
|
|
82
66
|
const serverPorts = await PreviewUtils.getNextAvailablePorts();
|
|
@@ -95,25 +79,7 @@ export default class LightningDevApp extends SfCommand {
|
|
|
95
79
|
if (!appId) {
|
|
96
80
|
logger.debug('No Lightning Experience application name provided.... using the default app instead.');
|
|
97
81
|
}
|
|
98
|
-
|
|
99
|
-
// We could have LightningPreviewApp parse its --target-org flag which will be resolved
|
|
100
|
-
// to an Org object (see https://github.com/forcedotcom/sfdx-core/blob/main/src/org/org.ts)
|
|
101
|
-
// then write a bunch of code to look at this Org object to try to determine whether
|
|
102
|
-
// it was initialized using Alias, Username, etc. and get a string representation of the
|
|
103
|
-
// org to be forwarded to OrgOpenCommand.
|
|
104
|
-
//
|
|
105
|
-
// Or we could simply look at the raw arguments passed to the LightningPreviewApp command,
|
|
106
|
-
// find the raw value for --target-org flag and forward that raw value to OrgOpenCommand.
|
|
107
|
-
// The OrgOpenCommand will then parse the raw value automatically. If the value is
|
|
108
|
-
// valid then OrgOpenCommand will consume it and continue. And if the value is invalid then
|
|
109
|
-
// OrgOpenCommand simply throws an error which will get bubbled up to LightningPreviewApp.
|
|
110
|
-
//
|
|
111
|
-
// Here we've chosen the second approach
|
|
112
|
-
const idx = this.argv.findIndex((item) => item.toLowerCase() === '-o' || item.toLowerCase() === '--target-org');
|
|
113
|
-
let targetOrg;
|
|
114
|
-
if (idx >= 0 && idx < this.argv.length - 1) {
|
|
115
|
-
targetOrg = this.argv[idx + 1];
|
|
116
|
-
}
|
|
82
|
+
const targetOrg = PreviewUtils.getTargetOrgFromArguments(this.argv);
|
|
117
83
|
if (ldpServerUrl.startsWith('wss')) {
|
|
118
84
|
this.log(`\n${messages.getMessage('trust.local.dev.server')}`);
|
|
119
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/commands/lightning/dev/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAGL,QAAQ,EACR,WAAW,EAEX,KAAK,IAAI,qBAAqB,EAC9B,QAAQ,GACT,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/commands/lightning/dev/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
6
|
*/
|
|
7
7
|
import path from 'node:path';
|
|
8
|
-
import url from 'node:url';
|
|
9
8
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
10
|
-
import { Messages, SfProject } from '@salesforce/core';
|
|
11
|
-
import {
|
|
9
|
+
import { Messages, SfProject, Logger } from '@salesforce/core';
|
|
10
|
+
import { Platform } from '@salesforce/lwc-dev-mobile-core';
|
|
12
11
|
import { ComponentUtils } from '../../../shared/componentUtils.js';
|
|
13
12
|
import { PromptUtils } from '../../../shared/promptUtils.js';
|
|
13
|
+
import { PreviewUtils } from '../../../shared/previewUtils.js';
|
|
14
|
+
import { startLWCServer } from '../../../lwc-dev-server/index.js';
|
|
14
15
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
15
16
|
const messages = Messages.loadMessages('@salesforce/plugin-lightning-dev', 'lightning.dev.component');
|
|
17
|
+
const sharedMessages = Messages.loadMessages('@salesforce/plugin-lightning-dev', 'shared.utils');
|
|
16
18
|
export default class LightningDevComponent extends SfCommand {
|
|
17
19
|
static summary = messages.getMessage('summary');
|
|
18
20
|
static description = messages.getMessage('description');
|
|
@@ -28,13 +30,29 @@ export default class LightningDevComponent extends SfCommand {
|
|
|
28
30
|
char: 'c',
|
|
29
31
|
default: false,
|
|
30
32
|
}),
|
|
31
|
-
|
|
32
|
-
// We don't technically need this if your components are simple / don't need any data from your org
|
|
33
|
-
'target-org': Flags.optionalOrg(),
|
|
33
|
+
'target-org': Flags.requiredOrg(),
|
|
34
34
|
};
|
|
35
35
|
async run() {
|
|
36
36
|
const { flags } = await this.parse(LightningDevComponent);
|
|
37
|
+
const logger = await Logger.child(this.ctor.name);
|
|
37
38
|
const project = await SfProject.resolve();
|
|
39
|
+
let sfdxProjectRootPath = '';
|
|
40
|
+
try {
|
|
41
|
+
sfdxProjectRootPath = await SfProject.resolveProjectPath();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return Promise.reject(new Error(sharedMessages.getMessage('error.no-project', [error?.message ?? ''])));
|
|
45
|
+
}
|
|
46
|
+
let componentName = flags['name'];
|
|
47
|
+
const clientSelect = flags['client-select'];
|
|
48
|
+
const targetOrg = flags['target-org'];
|
|
49
|
+
const { ldpServerId, ldpServerToken } = await PreviewUtils.initializePreviewConnection(targetOrg);
|
|
50
|
+
logger.debug('Determining the next available port for Local Dev Server');
|
|
51
|
+
const serverPorts = await PreviewUtils.getNextAvailablePorts();
|
|
52
|
+
logger.debug(`Next available ports are http=${serverPorts.httpPort} , https=${serverPorts.httpsPort}`);
|
|
53
|
+
logger.debug('Determining Local Dev Server url');
|
|
54
|
+
const ldpServerUrl = PreviewUtils.generateWebSocketUrlForLocalDevServer(Platform.desktop, serverPorts, logger);
|
|
55
|
+
logger.debug(`Local Dev Server url is ${ldpServerUrl}`);
|
|
38
56
|
const namespacePaths = await ComponentUtils.getNamespacePaths(project);
|
|
39
57
|
const componentPaths = await ComponentUtils.getAllComponentPaths(namespacePaths);
|
|
40
58
|
if (!componentPaths) {
|
|
@@ -52,43 +70,36 @@ export default class LightningDevComponent extends SfCommand {
|
|
|
52
70
|
if (!xml) {
|
|
53
71
|
return undefined;
|
|
54
72
|
}
|
|
55
|
-
const
|
|
56
|
-
const label = ComponentUtils.componentNameToTitleCase(
|
|
73
|
+
const name = path.basename(componentPath);
|
|
74
|
+
const label = ComponentUtils.componentNameToTitleCase(name);
|
|
57
75
|
return {
|
|
58
|
-
name
|
|
76
|
+
name,
|
|
59
77
|
label: xml.LightningComponentBundle.masterLabel ?? label,
|
|
60
78
|
description: xml.LightningComponentBundle.description ?? '',
|
|
61
79
|
};
|
|
62
80
|
}))).filter((component) => !!component);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (name) {
|
|
81
|
+
if (!clientSelect) {
|
|
82
|
+
if (componentName) {
|
|
66
83
|
// validate that the component exists before launching the server
|
|
67
|
-
const match = components.find((component) =>
|
|
84
|
+
const match = components.find((component) => componentName === component.name || componentName === component.label);
|
|
68
85
|
if (!match) {
|
|
69
|
-
throw new Error(messages.getMessage('error.component-not-found', [
|
|
86
|
+
throw new Error(messages.getMessage('error.component-not-found', [componentName]));
|
|
70
87
|
}
|
|
71
|
-
|
|
88
|
+
componentName = match.name;
|
|
72
89
|
}
|
|
73
90
|
else {
|
|
74
91
|
// prompt the user for a name if one was not provided
|
|
75
|
-
|
|
76
|
-
if (!
|
|
92
|
+
componentName = await PromptUtils.promptUserToSelectComponent(components);
|
|
93
|
+
if (!componentName) {
|
|
77
94
|
throw new Error(messages.getMessage('error.component'));
|
|
78
95
|
}
|
|
79
96
|
}
|
|
80
97
|
}
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
mode: 'dev',
|
|
87
|
-
port,
|
|
88
|
-
name: name ? `c/${name}` : undefined,
|
|
89
|
-
namespacePaths,
|
|
90
|
-
open: process.env.OPEN_BROWSER === 'false' ? false : true,
|
|
91
|
-
});
|
|
98
|
+
await startLWCServer(logger, sfdxProjectRootPath, ldpServerToken, Platform.desktop, serverPorts);
|
|
99
|
+
const targetOrgArg = PreviewUtils.getTargetOrgFromArguments(this.argv);
|
|
100
|
+
const launchArguments = PreviewUtils.generateComponentPreviewLaunchArguments(ldpServerUrl, ldpServerId, componentName, targetOrgArg);
|
|
101
|
+
// Open the browser and navigate to the right page
|
|
102
|
+
await this.config.runCommand('org:open', launchArguments);
|
|
92
103
|
}
|
|
93
104
|
}
|
|
94
105
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/commands/lightning/dev/component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/commands/lightning/dev/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ export default class LightningDevSite extends SfCommand<void> {
|
|
|
9
9
|
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
'get-latest': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
11
11
|
guest: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
ssr: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
};
|
|
13
14
|
run(): Promise<void>;
|
|
15
|
+
private serveSSRSite;
|
|
16
|
+
private openPreviewUrl;
|
|
14
17
|
}
|
|
@@ -6,11 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
9
|
-
import { Messages } from '@salesforce/core';
|
|
9
|
+
import { Logger, Messages, SfProject } from '@salesforce/core';
|
|
10
|
+
import { Platform } from '@salesforce/lwc-dev-mobile-core';
|
|
10
11
|
import { expDev, setupDev } from '@lwrjs/api';
|
|
12
|
+
import open from 'open';
|
|
11
13
|
import { OrgUtils } from '../../../shared/orgUtils.js';
|
|
12
14
|
import { PromptUtils } from '../../../shared/promptUtils.js';
|
|
13
15
|
import { ExperienceSite } from '../../../shared/experience/expSite.js';
|
|
16
|
+
import { PreviewUtils } from '../../../shared/previewUtils.js';
|
|
17
|
+
import { startLWCServer } from '../../../lwc-dev-server/index.js';
|
|
14
18
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
15
19
|
const messages = Messages.loadMessages('@salesforce/plugin-lightning-dev', 'lightning.dev.site');
|
|
16
20
|
const sharedMessages = Messages.loadMessages('@salesforce/plugin-lightning-dev', 'shared.utils');
|
|
@@ -33,6 +37,10 @@ export default class LightningDevSite extends SfCommand {
|
|
|
33
37
|
summary: messages.getMessage('flags.guest.summary'),
|
|
34
38
|
default: false,
|
|
35
39
|
}),
|
|
40
|
+
ssr: Flags.boolean({
|
|
41
|
+
summary: messages.getMessage('flags.ssr.summary'),
|
|
42
|
+
default: false,
|
|
43
|
+
}),
|
|
36
44
|
};
|
|
37
45
|
async run() {
|
|
38
46
|
const { flags } = await this.parse(LightningDevSite);
|
|
@@ -40,6 +48,7 @@ export default class LightningDevSite extends SfCommand {
|
|
|
40
48
|
const org = flags['target-org'];
|
|
41
49
|
const getLatest = flags['get-latest'];
|
|
42
50
|
const guest = flags.guest;
|
|
51
|
+
const ssr = flags.ssr;
|
|
43
52
|
let siteName = flags.name;
|
|
44
53
|
const connection = org.getConnection(undefined);
|
|
45
54
|
const localDevEnabled = await OrgUtils.isLocalDevEnabled(connection);
|
|
@@ -53,56 +62,96 @@ export default class LightningDevSite extends SfCommand {
|
|
|
53
62
|
siteName = await PromptUtils.promptUserToSelectSite(allSites);
|
|
54
63
|
}
|
|
55
64
|
const selectedSite = new ExperienceSite(org, siteName);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// generate and download a new site bundle from the org based on latest builder metadata
|
|
59
|
-
if (!selectedSite.isSiteSetup() || getLatest) {
|
|
60
|
-
const startTime = Date.now();
|
|
61
|
-
this.log(`[local-dev] Initializing: ${siteName}`);
|
|
62
|
-
this.spinner.start('[local-dev] Downloading site (this may take a few minutes)');
|
|
63
|
-
siteZip = await selectedSite.downloadSite();
|
|
64
|
-
// delete oldSitePath recursive
|
|
65
|
-
const oldSitePath = selectedSite.getExtractDirectory();
|
|
66
|
-
if (fs.existsSync(oldSitePath)) {
|
|
67
|
-
fs.rmSync(oldSitePath, { recursive: true });
|
|
68
|
-
}
|
|
69
|
-
const endTime = Date.now();
|
|
70
|
-
const duration = (endTime - startTime) / 1000; // Convert to seconds
|
|
71
|
-
this.spinner.stop('done.');
|
|
72
|
-
this.log(`[local-dev] Site setup completed in ${duration.toFixed(2)} seconds.`);
|
|
73
|
-
}
|
|
74
|
-
this.log(`[local-dev] launching browser preview for: ${siteName}`);
|
|
75
|
-
// Establish a valid access token for this site
|
|
76
|
-
const authToken = guest ? '' : await selectedSite.setupAuth();
|
|
77
|
-
// Start the dev server
|
|
78
|
-
const port = parseInt(process.env.PORT ?? '3000', 10);
|
|
79
|
-
// Internal vs external mode
|
|
80
|
-
const internalProject = !fs.existsSync('sfdx-project.json') && fs.existsSync('lwr.config.json');
|
|
81
|
-
const logLevel = process.env.LOG_LEVEL ?? 'error';
|
|
82
|
-
const startupParams = {
|
|
83
|
-
sfCLI: !internalProject,
|
|
84
|
-
authToken,
|
|
85
|
-
open: process.env.OPEN_BROWSER === 'false' ? false : true,
|
|
86
|
-
port,
|
|
87
|
-
logLevel,
|
|
88
|
-
mode: 'dev',
|
|
89
|
-
siteZip,
|
|
90
|
-
siteDir: selectedSite.getSiteDirectory(),
|
|
91
|
-
};
|
|
92
|
-
// Environment variable used to setup the site rather than setup & start server
|
|
93
|
-
if (process.env.SETUP_ONLY === 'true') {
|
|
94
|
-
await setupDev(startupParams);
|
|
95
|
-
this.log('[local-dev] setup complete!');
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
await expDev(startupParams);
|
|
99
|
-
this.log('[local-dev] watching for file changes... (CTRL-C to stop)');
|
|
65
|
+
if (!ssr) {
|
|
66
|
+
return await this.openPreviewUrl(selectedSite, connection);
|
|
100
67
|
}
|
|
68
|
+
await this.serveSSRSite(selectedSite, getLatest, siteName, guest);
|
|
101
69
|
}
|
|
102
70
|
catch (e) {
|
|
103
71
|
this.spinner.stop('failed.');
|
|
104
72
|
this.log('Local Development setup failed', e);
|
|
105
73
|
}
|
|
106
74
|
}
|
|
75
|
+
async serveSSRSite(selectedSite, getLatest, siteName, guest) {
|
|
76
|
+
let siteZip;
|
|
77
|
+
// If the site is not setup / is not based on the current release / or get-latest is requested ->
|
|
78
|
+
// generate and download a new site bundle from the org based on latest builder metadata
|
|
79
|
+
if (!selectedSite.isSiteSetup() || getLatest) {
|
|
80
|
+
const startTime = Date.now();
|
|
81
|
+
this.log(`[local-dev] Initializing: ${siteName}`);
|
|
82
|
+
this.spinner.start('[local-dev] Downloading site (this may take a few minutes)');
|
|
83
|
+
siteZip = await selectedSite.downloadSite();
|
|
84
|
+
// delete oldSitePath recursive
|
|
85
|
+
const oldSitePath = selectedSite.getExtractDirectory();
|
|
86
|
+
if (fs.existsSync(oldSitePath)) {
|
|
87
|
+
fs.rmSync(oldSitePath, { recursive: true });
|
|
88
|
+
}
|
|
89
|
+
const endTime = Date.now();
|
|
90
|
+
const duration = (endTime - startTime) / 1000; // Convert to seconds
|
|
91
|
+
this.spinner.stop('done.');
|
|
92
|
+
this.log(`[local-dev] Site setup completed in ${duration.toFixed(2)} seconds.`);
|
|
93
|
+
}
|
|
94
|
+
this.log(`[local-dev] launching browser preview for: ${siteName}`);
|
|
95
|
+
// Establish a valid access token for this site
|
|
96
|
+
const authToken = guest ? '' : await selectedSite.setupAuth();
|
|
97
|
+
// Start the dev server
|
|
98
|
+
const port = parseInt(process.env.PORT ?? '3000', 10);
|
|
99
|
+
// Internal vs external mode
|
|
100
|
+
const internalProject = !fs.existsSync('sfdx-project.json') && fs.existsSync('lwr.config.json');
|
|
101
|
+
const logLevel = process.env.LOG_LEVEL ?? 'error';
|
|
102
|
+
const startupParams = {
|
|
103
|
+
sfCLI: !internalProject,
|
|
104
|
+
authToken,
|
|
105
|
+
open: process.env.OPEN_BROWSER === 'false' ? false : true,
|
|
106
|
+
port,
|
|
107
|
+
logLevel,
|
|
108
|
+
mode: 'dev',
|
|
109
|
+
siteZip,
|
|
110
|
+
siteDir: selectedSite.getSiteDirectory(),
|
|
111
|
+
};
|
|
112
|
+
// Environment variable used to setup the site rather than setup & start server
|
|
113
|
+
if (process.env.SETUP_ONLY === 'true') {
|
|
114
|
+
await setupDev(startupParams);
|
|
115
|
+
this.log('[local-dev] setup complete!');
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
await expDev(startupParams);
|
|
119
|
+
this.log('[local-dev] watching for file changes... (CTRL-C to stop)');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async openPreviewUrl(selectedSite, connection) {
|
|
123
|
+
let sfdxProjectRootPath = '';
|
|
124
|
+
try {
|
|
125
|
+
sfdxProjectRootPath = await SfProject.resolveProjectPath();
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
throw new Error(sharedMessages.getMessage('error.no-project', [error?.message ?? '']));
|
|
129
|
+
}
|
|
130
|
+
const previewUrl = await selectedSite.getPreviewUrl();
|
|
131
|
+
const username = connection.getUsername();
|
|
132
|
+
if (!username) {
|
|
133
|
+
throw new Error(sharedMessages.getMessage('error.username'));
|
|
134
|
+
}
|
|
135
|
+
this.log('Configuring local web server identity');
|
|
136
|
+
const appServerIdentity = await PreviewUtils.getOrCreateAppServerIdentity(connection);
|
|
137
|
+
const ldpServerToken = appServerIdentity.identityToken;
|
|
138
|
+
const ldpServerId = appServerIdentity.usernameToServerEntityIdMap[username];
|
|
139
|
+
if (!ldpServerId) {
|
|
140
|
+
throw new Error(sharedMessages.getMessage('error.identitydata.entityid'));
|
|
141
|
+
}
|
|
142
|
+
this.log('Determining the next available port for Local Dev Server');
|
|
143
|
+
const serverPorts = await PreviewUtils.getNextAvailablePorts();
|
|
144
|
+
this.log(`Next available ports are http=${serverPorts.httpPort} , https=${serverPorts.httpsPort}`);
|
|
145
|
+
this.log('Determining Local Dev Server url');
|
|
146
|
+
const ldpServerUrl = PreviewUtils.generateWebSocketUrlForLocalDevServer(Platform.desktop, serverPorts);
|
|
147
|
+
this.log(`Local Dev Server url is ${ldpServerUrl}`);
|
|
148
|
+
const logger = await Logger.child(this.ctor.name);
|
|
149
|
+
await startLWCServer(logger, sfdxProjectRootPath, ldpServerToken, Platform.desktop, serverPorts);
|
|
150
|
+
const url = new URL(previewUrl);
|
|
151
|
+
url.searchParams.set('aura.lwcDevServerUrl', ldpServerUrl);
|
|
152
|
+
url.searchParams.set('aura.lwcDevServerId', ldpServerId);
|
|
153
|
+
url.searchParams.set('lwc.mode', 'dev');
|
|
154
|
+
await open(url.toString());
|
|
155
|
+
}
|
|
107
156
|
}
|
|
108
157
|
//# sourceMappingURL=site.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site.js","sourceRoot":"","sources":["../../../../src/commands/lightning/dev/site.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"site.js","sourceRoot":"","sources":["../../../../src/commands/lightning/dev/site.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lwc-dev-server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAA2B,iBAAiB,EAAa,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAElC,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,KAAa,EACb,UAAkB,EAClB,WAAqD,EACrD,QAA6B,EAC7B,SAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IACpD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;IAElC,kEAAkE;IAClE,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lwc-dev-server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -173,6 +173,45 @@ export class ExperienceSite {
|
|
|
173
173
|
}
|
|
174
174
|
return retVal;
|
|
175
175
|
}
|
|
176
|
+
async getPreviewUrl() {
|
|
177
|
+
// Get the community ID
|
|
178
|
+
const communityId = await this.getNetworkId();
|
|
179
|
+
const conn = this.org.getConnection();
|
|
180
|
+
const accessToken = conn.accessToken;
|
|
181
|
+
const instanceUrl = conn.instanceUrl;
|
|
182
|
+
if (!accessToken) {
|
|
183
|
+
throw new SfError(`Invalid access token, unable to get preview URL for: ${this.siteDisplayName}`);
|
|
184
|
+
}
|
|
185
|
+
try {
|
|
186
|
+
// Call the communities API to get the preview URL
|
|
187
|
+
const apiUrl = `${instanceUrl}/services/data/v64.0/connect/communities/${communityId}/preview-url/pages/Home`;
|
|
188
|
+
const response = await axios.get(apiUrl, {
|
|
189
|
+
headers: {
|
|
190
|
+
Authorization: `Bearer ${accessToken}`,
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
if (response.data?.previewUrl) {
|
|
194
|
+
return response.data.previewUrl;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
throw new SfError(`Invalid response from communities API for site: ${this.siteDisplayName}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
// Handle axios errors
|
|
202
|
+
if (axios.isAxiosError(error)) {
|
|
203
|
+
if (error.response) {
|
|
204
|
+
// Server responded with non-200 status
|
|
205
|
+
throw new SfError(`Failed to get preview URL: Server responded with status ${error.response.status} - ${error.response.statusText}`);
|
|
206
|
+
}
|
|
207
|
+
else if (error.request) {
|
|
208
|
+
// Request was made but no response received
|
|
209
|
+
throw new SfError('Failed to get preview URL: No response received from server');
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
throw new SfError(`Failed to get preview URL for site: ${this.siteDisplayName}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
176
215
|
/**
|
|
177
216
|
* Generate a site bundle on demand and download it
|
|
178
217
|
*
|