@salesforce/plugin-lightning-dev 1.2.1 → 1.4.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.
@@ -9,11 +9,10 @@
9
9
  // * consider moving most of these into PreviewUtils of lwc-dev-mobile-core instead. *
10
10
  // **********************************************************************************************
11
11
  import fs from 'node:fs';
12
- import https from 'node:https';
13
12
  import os from 'node:os';
14
13
  import path from 'node:path';
15
14
  import { Messages } from '@salesforce/core';
16
- import { AndroidUtils, CommonUtils, CryptoUtils, IOSUtils, PreviewUtils as LwcDevMobileCorePreviewUtils, Platform, } from '@salesforce/lwc-dev-mobile-core';
15
+ import { AndroidDeviceManager, AppleDeviceManager, CommonUtils, CryptoUtils, PreviewUtils as LwcDevMobileCorePreviewUtils, Platform, } from '@salesforce/lwc-dev-mobile-core';
17
16
  import fetch from 'node-fetch';
18
17
  import { ConfigUtils, LOCAL_DEV_SERVER_DEFAULT_HTTP_PORT } from './configUtils.js';
19
18
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
@@ -61,42 +60,20 @@ export class PreviewUtils {
61
60
  logger?.debug(`Attempting to get device ${deviceId}`);
62
61
  device =
63
62
  platform === Platform.ios
64
- ? (await IOSUtils.getSimulator(deviceId, logger)) ?? undefined
65
- : await AndroidUtils.fetchEmulator(deviceId, logger);
63
+ ? await new AppleDeviceManager(logger).getDevice(deviceId)
64
+ : await new AndroidDeviceManager(logger).getDevice(deviceId);
66
65
  }
67
66
  else {
68
67
  logger?.debug('No particular device was targeted by the user... fetching the first available device.');
69
68
  const devices = platform === Platform.ios
70
- ? await IOSUtils.getSupportedSimulators(logger)
71
- : await AndroidUtils.fetchEmulators(logger);
69
+ ? await new AppleDeviceManager(logger).enumerateDevices()
70
+ : await new AndroidDeviceManager(logger).enumerateDevices();
72
71
  if (devices && devices.length > 0) {
73
72
  device = devices[0];
74
73
  }
75
74
  }
76
75
  return Promise.resolve(device);
77
76
  }
78
- /**
79
- * Attempts to boot a device.
80
- *
81
- * @param platform A mobile platform (iOS or Android)
82
- * @param deviceId The identifier (such as name or UDID) of the target device
83
- * @param logger An optional logger to be used for logging
84
- * @returns For Android devices returns the emulator port number. For iOS devices returns `undefined`
85
- */
86
- static async bootMobileDevice(platform, deviceId, logger) {
87
- logger?.debug(`Booting device ${deviceId}`);
88
- let emulatorPort;
89
- if (platform === Platform.ios) {
90
- await IOSUtils.bootDevice(deviceId, true, logger); // will be no-op if already booted
91
- await IOSUtils.launchSimulatorApp(logger);
92
- logger?.debug('Device booted');
93
- }
94
- else {
95
- emulatorPort = await AndroidUtils.startEmulator(deviceId, false, true, logger); // will be no-op if already booted
96
- logger?.debug(`Device booted on port ${emulatorPort}`);
97
- }
98
- return Promise.resolve(emulatorPort);
99
- }
100
77
  /**
101
78
  * Generates the proper set of arguments to be used for launching desktop browser and navigating to the right location.
102
79
  *
@@ -148,80 +125,19 @@ export class PreviewUtils {
148
125
  return launchArguments;
149
126
  }
150
127
  /**
151
- * Generates a self-signed certificate and saves it to a file at the specified location.
128
+ * Checks the global cache to see if a self-signed certificate has previously been generated and cached.
129
+ * If so (and if the cached certificate is not expired) it will then return the cached certificate. Otherwise
130
+ * it will generate a self-signed certificate, cache it, and return it.
152
131
  *
153
- * @param platform A mobile platform (iOS or Android)
154
- * @param saveLocation Path to a folder where the generated certificated will be saved to (defaults to the current working directory)
155
- * @returns Path to the generated certificate file and the certificate data
132
+ * @returns A self-signed certificate.
156
133
  */
157
- static async generateSelfSignedCert(platform, saveLocation = '.') {
158
- // See if we have previously generated cert data which is stored in the global config.
159
- // If so then use that data otherwise generate new cert data and store it in the global config.
134
+ static async generateSelfSignedCert() {
160
135
  let data = await ConfigUtils.getCertData();
161
- if (!data) {
136
+ if (!data || CryptoUtils.isExpired(data)) {
162
137
  data = CryptoUtils.generateSelfSignedCert('localhost', 2048, 820);
163
138
  await ConfigUtils.writeCertData(data);
164
139
  }
165
- const basePath = path.resolve(CommonUtils.resolveUserHomePath(saveLocation));
166
- const targetFile = platform === Platform.ios ? path.join(basePath, 'localhost.der') : path.join(basePath, 'localhost.pem');
167
- // save to file
168
- if (platform === Platform.ios) {
169
- fs.writeFileSync(targetFile, data.derCertificate);
170
- }
171
- else {
172
- fs.writeFileSync(targetFile, data.pemCertificate);
173
- }
174
- return { certData: data, certFilePath: targetFile };
175
- }
176
- /**
177
- * Launches the specified mobile app on the specified device.
178
- *
179
- * @param platform A mobile platform (iOS or Android)
180
- * @param deviceId The identifier (such as name or UDID) of the target device
181
- * @param appConfig The app configuration containing info about the mobile app to be launched
182
- * @param emulatorPort Optional - only needed when platform is Android and specifies the ADB port of the booted Android virtual device
183
- * @param logger An optional logger to be used for logging
184
- */
185
- static async launchMobileApp(platform, appConfig, deviceId, emulatorPort, appBundlePath, logger) {
186
- logger?.debug(`Attempting to launch mobile app ${appConfig.name}`);
187
- // If appBundlePath is provided then the app will be installed from
188
- // the bundle first then will be launched. Otherwise the assumption
189
- // is that app is already installed.
190
- if (platform === Platform.ios) {
191
- await IOSUtils.launchAppInBootedSimulator(deviceId, appBundlePath, appConfig.id, appConfig.launch_arguments ?? [], logger);
192
- }
193
- else if (emulatorPort) {
194
- // for Android, emulatorPort is required
195
- await AndroidUtils.launchAppInBootedEmulator(appBundlePath, appConfig.id, appConfig.launch_arguments ?? [], appConfig.activity, emulatorPort, logger);
196
- }
197
- }
198
- /**
199
- * Verifies whether a particular app is installed on a mobile device.
200
- *
201
- * @param platform A mobile platform (iOS or Android)
202
- * @param appConfig The app configuration containing info about the mobile app such as name and bundle/package id
203
- * @param deviceId The identifier (such as name or UDID) of the target device
204
- * @param emulatorPort Optional - only needed when platform is Android and specifies the ADB port of the booted Android virtual device
205
- * @param logger An optional logger to be used for logging
206
- * @returns `true` if app is installed, `false` otherwise
207
- */
208
- static async verifyMobileAppInstalled(platform, appConfig, deviceId, emulatorPort, logger) {
209
- logger?.debug(`Checking if ${appConfig.id} is installed on device ${deviceId}`);
210
- let result = '';
211
- try {
212
- if (platform === Platform.ios) {
213
- result = CommonUtils.executeCommandSync(`xcrun simctl listapps ${deviceId} | grep "${appConfig.id}"`, undefined, logger);
214
- }
215
- else {
216
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
217
- const resolvedEmulatorPort = emulatorPort;
218
- result = await AndroidUtils.executeAdbCommand(`shell pm list packages | grep "${appConfig.id}"`, resolvedEmulatorPort, logger);
219
- }
220
- }
221
- catch {
222
- /* ignore and continue */
223
- }
224
- return Promise.resolve(result ? true : false);
140
+ return data;
225
141
  }
226
142
  /**
227
143
  * Downloads the Salesforce Mobile App into a temp folder and returns the path to downloaded file.
@@ -240,7 +156,7 @@ export class PreviewUtils {
240
156
  try {
241
157
  spinner?.start(messages.getMessage('spinner.download.preparing'));
242
158
  logger?.debug(`Attempting to resolve full url from ${sfdcUrl}`);
243
- fullUrl = await this.fetchFullUrlFromSfdc(sfdcUrl);
159
+ fullUrl = await CommonUtils.fetchFullUrlFromSfdcShortenedUrl(sfdcUrl);
244
160
  logger?.debug(`Full url is ${fullUrl}`);
245
161
  }
246
162
  finally {
@@ -303,59 +219,6 @@ export class PreviewUtils {
303
219
  });
304
220
  });
305
221
  }
306
- /**
307
- * Given an sfdc.co shortened url it returns the actual/full url that this will redirect to.
308
- *
309
- * @param httpsUrl The sfdc.co shortened url
310
- * @returns The actual/full url
311
- */
312
- static async fetchFullUrlFromSfdc(httpsUrl) {
313
- return new Promise((resolve, reject) => {
314
- https
315
- .get(httpsUrl, (response) => {
316
- let data = '';
317
- response.on('data', (chunk) => {
318
- data += chunk;
319
- });
320
- response.on('end', () => {
321
- // sfdc.co urls will lead to an html page where, among other elements, there would be
322
- // an element with id='full-url' and whose value would be the url to redirect to, eg:
323
- // <h2 class="home-heading" style="word-wrap:break-word;" id="full-url">
324
- // https://developer.salesforce.com/files/sfmobiletools/SalesforceApp-Simulator-248.061-iOS.zip
325
- // </h2>
326
- const regex = /<[^>]*id\s*=\s*["']full-url["'][^>]*>(.*?)<\/[^>]*>/i;
327
- const match = data.match(regex);
328
- if (match?.[1]) {
329
- resolve(match[1]);
330
- }
331
- else {
332
- resolve('');
333
- }
334
- });
335
- })
336
- .on('error)', (error) => {
337
- reject(error);
338
- });
339
- });
340
- }
341
- /**
342
- * Extracts a ZIP archive to an output directory.
343
- *
344
- * @param zipFilePath The path to the ZIP archive
345
- * @param outputDir An optional output directory - if omitted then defaults to the same directory as the ZIP file
346
- * @param logger An optional logger to be used for logging
347
- */
348
- static async extractZIPArchive(zipFilePath, outputDir, logger) {
349
- let archive = path.resolve(CommonUtils.resolveUserHomePath(zipFilePath));
350
- let outDir = outputDir ? path.resolve(CommonUtils.resolveUserHomePath(outputDir)) : path.dirname(archive);
351
- archive = CommonUtils.convertToUnixPath(archive);
352
- outDir = CommonUtils.convertToUnixPath(outDir);
353
- const cmd = process.platform === 'win32'
354
- ? `powershell -Command "$ProgressPreference = 'SilentlyContinue'; Expand-Archive -Path \\"${archive}\\" -DestinationPath \\"${outDir}\\" -Force"`
355
- : `unzip -o -qq ${archive} -d ${outDir}`;
356
- logger?.debug(`Extracting archive ${zipFilePath}`);
357
- await CommonUtils.executeCommandAsync(cmd, logger);
358
- }
359
222
  static async getEntityId(username) {
360
223
  const identityData = await ConfigUtils.getIdentityData();
361
224
  let entityId;
@@ -1 +1 @@
1
- {"version":3,"file":"previewUtils.js","sourceRoot":"","sources":["../../src/shared/previewUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"previewUtils.js","sourceRoot":"","sources":["../../src/shared/previewUtils.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,10 @@ Unable to determine App Id for %s
55
55
 
56
56
  Unable to find device %s
57
57
 
58
+ # error.device.google.play
59
+
60
+ Google Play devices are not supported. %s is a Google Play device. Please use a Google APIs device instead.
61
+
58
62
  # spinner.device.boot
59
63
 
60
64
  Booting device %s
@@ -63,6 +67,14 @@ Booting device %s
63
67
 
64
68
  Generating self-signed certificate
65
69
 
70
+ # spinner.cert.install
71
+
72
+ Installing self-signed certificate
73
+
74
+ # spinner.app.install
75
+
76
+ Installing app %s
77
+
66
78
  # spinner.extract.archive
67
79
 
68
80
  Extracting archive
@@ -79,76 +91,6 @@ Downloading
79
91
 
80
92
  Note: Your desktop browser requires additional configuration to trust the local development server. See the documentation for more details.
81
93
 
82
- # certificate.installation.notice
83
-
84
- To use local preview on your device, you have to install a self-signed certificate on it. If you previously set up a certificate for your device, you can skip this step.
85
-
86
- # certificate.installation.skip.message
87
-
88
- Do you want to skip this step
89
-
90
- # certificate.installation.description
91
-
92
- Before proceeding, install the self-signed certificate on your device. The certificate file is located at
93
-
94
- `%s`
95
-
96
- To install the certificate, follow these steps:
97
-
98
- %s
99
-
100
- # certificate.installation.steps.ios
101
-
102
- 1. Drag and drop the file onto your booted simulator.
103
- 2. Click `Allow` to proceed with downloading the configuration file.
104
- 3. Click `Close` and navigate to `Settings > General > VPN & Device Management > localhost`.
105
- 4. Click `Install` in the title bar, in the warning window, and on the install button.
106
- 5. In the `Profile Installed` view, confirm that the profile displays `Verified` and then click `Done`.
107
- 6. Navigate to `Settings > General > About > Certificate Trust Settings`.
108
- 7. Enable full trust for `localhost`.
109
- 8. In the resulting warning pop-up, click `Continue`.
110
-
111
- # certificate.installation.steps.android
112
-
113
- 1. Drag and drop the file onto your booted emulator.
114
- 2. %s
115
- 3. Navigate to the certificate file from step 1. (It's usually located in `/sdcard/download`).
116
- 4. Follow the on-screen instructions to install it.
117
- 5. Click `User credentials` under `Credential storage` and verify that your certificate is listed there.
118
- 6. Click `Trusted credentials` under `Credential storage`. Then click `USER` and verify that page lists your certificate.
119
-
120
- # certificate.installation.steps.android.nav-target-api-24-25
121
-
122
- Navigate to `Settings > Security` and click `Install from SD card` under `Credential storage`.
123
-
124
- # certificate.installation.steps.android.nav-target-api-26-27
125
-
126
- Navigate to `Settings > Security & Location > Encryption & credentials` and click `Install from SD card` under `Credential storage`.
127
-
128
- # certificate.installation.steps.android.nav-target-api-28
129
-
130
- Navigate to `Settings > Security & Location > Advanced > Encryption & credentials` and click `Install from SD card` under `Credential storage`.
131
-
132
- # certificate.installation.steps.android.nav-target-api-29
133
-
134
- Navigate to `Settings > Security > Encryption & credentials` and click `Install from SD card` under `Credential storage`.
135
-
136
- # certificate.installation.steps.android.nav-target-api-30-32
137
-
138
- Navigate to `Settings > Security > Encryption & credentials` and click `Install a certificate` under `Credential storage`. Click `CA certificate`, and then click `Install anyway`.
139
-
140
- # certificate.installation.steps.android.nav-target-api-33
141
-
142
- Navigate to `Settings > Security > More security settings > Encryption & credentials` and click `Install a certificate` under `Credential storage`. Click `CA certificate`, and then click `Install anyway`.
143
-
144
- # certificate.installation.steps.android.nav-target-api-34-up
145
-
146
- Navigate to `Settings > Security & Privacy > More security & privacy > Encryption & credentials` and click `Install a certificate` under `Credential storage`. Click `CA certificate`, and then click `Install anyway`.
147
-
148
- # certificate.waiting
149
-
150
- After you install the certificate, press any key to continue...
151
-
152
94
  # mobileapp.notfound
153
95
 
154
96
  %s isn't installed on your device.