Skip to content

Commit 9cde852

Browse files
Add prefer-const rule to tslint (#3090)
Enable `prefer-const` rule in tslint and fix the errors: The rule requires that variable declarations use const instead of let and var if possible. If a variable is only assigned to once when it is declared, it should be declared using `const` Add new npm script for automatic fix of tslint: `npm run tslint-fix`. NOTE: In case you have 3 errors that the script can fix, when you execute `npm run tslint-fix`, it will fix them, but will print them as errors again. Run the command again to verify everything is ok.
1 parent 164b687 commit 9cde852

File tree

96 files changed

+1445
-1443
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+1445
-1443
lines changed

lib/android-tools-info.ts

+28-28
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
2929
@cache()
3030
public getToolsInfo(): IAndroidToolsInfoData {
3131
if (!this.toolsInfo) {
32-
let infoData: IAndroidToolsInfoData = Object.create(null);
32+
const infoData: IAndroidToolsInfoData = Object.create(null);
3333
infoData.androidHomeEnvVar = this.androidHome;
3434
infoData.compileSdkVersion = this.getCompileSdkVersion();
3535
infoData.buildToolsVersion = this.getBuildToolsVersion();
@@ -46,17 +46,17 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
4646
public validateInfo(options?: { showWarningsAsErrors: boolean, validateTargetSdk: boolean }): boolean {
4747
let detectedErrors = false;
4848
this.showWarningsAsErrors = options && options.showWarningsAsErrors;
49-
let toolsInfoData = this.getToolsInfo();
50-
let isAndroidHomeValid = this.validateAndroidHomeEnvVariable();
49+
const toolsInfoData = this.getToolsInfo();
50+
const isAndroidHomeValid = this.validateAndroidHomeEnvVariable();
5151
if (!toolsInfoData.compileSdkVersion) {
5252
this.printMessage(`Cannot find a compatible Android SDK for compilation. To be able to build for Android, install Android SDK ${AndroidToolsInfo.MIN_REQUIRED_COMPILE_TARGET} or later.`,
5353
`Run \`\$ ${this.getPathToSdkManagementTool()}\` to manage your Android SDK versions.`);
5454
detectedErrors = true;
5555
}
5656

5757
if (!toolsInfoData.buildToolsVersion) {
58-
let buildToolsRange = this.getBuildToolsRange();
59-
let versionRangeMatches = buildToolsRange.match(/^.*?([\d\.]+)\s+.*?([\d\.]+)$/);
58+
const buildToolsRange = this.getBuildToolsRange();
59+
const versionRangeMatches = buildToolsRange.match(/^.*?([\d\.]+)\s+.*?([\d\.]+)$/);
6060
let message = `You can install any version in the following range: '${buildToolsRange}'.`;
6161

6262
// Improve message in case buildToolsRange is something like: ">=22.0.0 <=22.0.0" - same numbers on both sides
@@ -83,11 +83,11 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
8383
}
8484

8585
if (options && options.validateTargetSdk) {
86-
let targetSdk = toolsInfoData.targetSdkVersion;
87-
let newTarget = `${AndroidToolsInfo.ANDROID_TARGET_PREFIX}-${targetSdk}`;
86+
const targetSdk = toolsInfoData.targetSdkVersion;
87+
const newTarget = `${AndroidToolsInfo.ANDROID_TARGET_PREFIX}-${targetSdk}`;
8888
if (!_.includes(AndroidToolsInfo.SUPPORTED_TARGETS, newTarget)) {
89-
let supportedVersions = AndroidToolsInfo.SUPPORTED_TARGETS.sort();
90-
let minSupportedVersion = this.parseAndroidSdkString(_.first(supportedVersions));
89+
const supportedVersions = AndroidToolsInfo.SUPPORTED_TARGETS.sort();
90+
const minSupportedVersion = this.parseAndroidSdkString(_.first(supportedVersions));
9191

9292
if (targetSdk && (targetSdk < minSupportedVersion)) {
9393
this.printMessage(`The selected Android target SDK ${newTarget} is not supported. You must target ${minSupportedVersion} or later.`);
@@ -107,10 +107,10 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
107107
this.showWarningsAsErrors = options.showWarningsAsErrors;
108108
}
109109

110-
let additionalMessage = "You will not be able to build your projects for Android." + EOL
110+
const additionalMessage = "You will not be able to build your projects for Android." + EOL
111111
+ "To be able to build for Android, verify that you have installed The Java Development Kit (JDK) and configured it according to system requirements as" + EOL +
112112
" described in " + this.$staticConfig.SYS_REQUIREMENTS_LINK;
113-
let matchingVersion = (installedJavaVersion || "").match(AndroidToolsInfo.VERSION_REGEX);
113+
const matchingVersion = (installedJavaVersion || "").match(AndroidToolsInfo.VERSION_REGEX);
114114
if (matchingVersion && matchingVersion[1]) {
115115
if (semver.lt(matchingVersion[1], AndroidToolsInfo.MIN_JAVA_VERSION)) {
116116
hasProblemWithJavaVersion = true;
@@ -126,7 +126,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
126126

127127
public async getPathToAdbFromAndroidHome(): Promise<string> {
128128
if (this.androidHome) {
129-
let pathToAdb = path.join(this.androidHome, "platform-tools", "adb");
129+
const pathToAdb = path.join(this.androidHome, "platform-tools", "adb");
130130
try {
131131
await this.$childProcess.execFile(pathToAdb, ["help"]);
132132
return pathToAdb;
@@ -212,19 +212,19 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
212212

213213
private getCompileSdkVersion(): number {
214214
if (!this.selectedCompileSdk) {
215-
let userSpecifiedCompileSdk = this.$options.compileSdk;
215+
const userSpecifiedCompileSdk = this.$options.compileSdk;
216216
if (userSpecifiedCompileSdk) {
217-
let installedTargets = this.getInstalledTargets();
218-
let androidCompileSdk = `${AndroidToolsInfo.ANDROID_TARGET_PREFIX}-${userSpecifiedCompileSdk}`;
217+
const installedTargets = this.getInstalledTargets();
218+
const androidCompileSdk = `${AndroidToolsInfo.ANDROID_TARGET_PREFIX}-${userSpecifiedCompileSdk}`;
219219
if (!_.includes(installedTargets, androidCompileSdk)) {
220220
this.$errors.failWithoutHelp(`You have specified '${userSpecifiedCompileSdk}' for compile sdk, but it is not installed on your system.`);
221221
}
222222

223223
this.selectedCompileSdk = userSpecifiedCompileSdk;
224224
} else {
225-
let latestValidAndroidTarget = this.getLatestValidAndroidTarget();
225+
const latestValidAndroidTarget = this.getLatestValidAndroidTarget();
226226
if (latestValidAndroidTarget) {
227-
let integerVersion = this.parseAndroidSdkString(latestValidAndroidTarget);
227+
const integerVersion = this.parseAndroidSdkString(latestValidAndroidTarget);
228228

229229
if (integerVersion && integerVersion >= AndroidToolsInfo.MIN_REQUIRED_COMPILE_TARGET) {
230230
this.selectedCompileSdk = integerVersion;
@@ -237,20 +237,20 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
237237
}
238238

239239
private getTargetSdk(): number {
240-
let targetSdk = this.$options.sdk ? parseInt(this.$options.sdk) : this.getCompileSdkVersion();
240+
const targetSdk = this.$options.sdk ? parseInt(this.$options.sdk) : this.getCompileSdkVersion();
241241
this.$logger.trace(`Selected targetSdk is: ${targetSdk}`);
242242
return targetSdk;
243243
}
244244

245245
private getMatchingDir(pathToDir: string, versionRange: string): string {
246246
let selectedVersion: string;
247247
if (this.$fs.exists(pathToDir)) {
248-
let subDirs = this.$fs.readDirectory(pathToDir);
248+
const subDirs = this.$fs.readDirectory(pathToDir);
249249
this.$logger.trace(`Directories found in ${pathToDir} are ${subDirs.join(", ")}`);
250250

251-
let subDirsVersions = subDirs
251+
const subDirsVersions = subDirs
252252
.map(dirName => {
253-
let dirNameGroups = dirName.match(AndroidToolsInfo.VERSION_REGEX);
253+
const dirNameGroups = dirName.match(AndroidToolsInfo.VERSION_REGEX);
254254
if (dirNameGroups) {
255255
return dirNameGroups[1];
256256
}
@@ -259,7 +259,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
259259
})
260260
.filter(dirName => !!dirName);
261261
this.$logger.trace(`Versions found in ${pathToDir} are ${subDirsVersions.join(", ")}`);
262-
let version = semver.maxSatisfying(subDirsVersions, versionRange);
262+
const version = semver.maxSatisfying(subDirsVersions, versionRange);
263263
if (version) {
264264
selectedVersion = _.find(subDirs, dir => dir.indexOf(version) !== -1);
265265
}
@@ -275,16 +275,16 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
275275
private getBuildToolsVersion(): string {
276276
let buildToolsVersion: string;
277277
if (this.androidHome) {
278-
let pathToBuildTools = path.join(this.androidHome, "build-tools");
279-
let buildToolsRange = this.getBuildToolsRange();
278+
const pathToBuildTools = path.join(this.androidHome, "build-tools");
279+
const buildToolsRange = this.getBuildToolsRange();
280280
buildToolsVersion = this.getMatchingDir(pathToBuildTools, buildToolsRange);
281281
}
282282

283283
return buildToolsVersion;
284284
}
285285

286286
private getAppCompatRange(): string {
287-
let compileSdkVersion = this.getCompileSdkVersion();
287+
const compileSdkVersion = this.getCompileSdkVersion();
288288
let requiredAppCompatRange: string;
289289
if (compileSdkVersion) {
290290
requiredAppCompatRange = `>=${compileSdkVersion} <${compileSdkVersion + 1}`;
@@ -295,9 +295,9 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
295295

296296
private getAndroidSupportRepositoryVersion(): string {
297297
let selectedAppCompatVersion: string;
298-
let requiredAppCompatRange = this.getAppCompatRange();
298+
const requiredAppCompatRange = this.getAppCompatRange();
299299
if (this.androidHome && requiredAppCompatRange) {
300-
let pathToAppCompat = path.join(this.androidHome, "extras", "android", "m2repository", "com", "android", "support", "appcompat-v7");
300+
const pathToAppCompat = path.join(this.androidHome, "extras", "android", "m2repository", "com", "android", "support", "appcompat-v7");
301301
selectedAppCompatVersion = this.getMatchingDir(pathToAppCompat, requiredAppCompatRange);
302302
}
303303

@@ -306,7 +306,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
306306
}
307307

308308
private getLatestValidAndroidTarget(): string {
309-
let installedTargets = this.getInstalledTargets();
309+
const installedTargets = this.getInstalledTargets();
310310
return _.findLast(AndroidToolsInfo.SUPPORTED_TARGETS.sort(), supportedTarget => _.includes(installedTargets, supportedTarget));
311311
}
312312

lib/commands/add-platform.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class AddPlatformCommand implements ICommand {
1818
this.$errors.fail("No platform specified. Please specify a platform to add");
1919
}
2020

21-
for (let arg of args) {
21+
for (const arg of args) {
2222
this.$platformService.validatePlatform(arg, this.$projectData);
2323
const platformData = this.$platformsData.getPlatformData(arg, this.$projectData);
2424
const platformProjectService = platformData.platformProjectService;

lib/commands/appstore-list.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ export class ListiOSApps implements ICommand {
2020
this.$errors.fail(`Applications for platform ${this.$devicePlatformsConstants.iOS} can not be built on this OS`);
2121
}
2222

23-
let username = args[0],
24-
password = args[1];
23+
let username = args[0];
24+
let password = args[1];
2525

2626
if (!username) {
2727
username = await this.$prompter.getString("Apple ID", { allowEmpty: false });
@@ -31,12 +31,12 @@ export class ListiOSApps implements ICommand {
3131
password = await this.$prompter.getPassword("Apple ID password");
3232
}
3333

34-
let iOSApplications = await this.$itmsTransporterService.getiOSApplications({ username, password });
34+
const iOSApplications = await this.$itmsTransporterService.getiOSApplications({ username, password });
3535

3636
if (!iOSApplications || !iOSApplications.length) {
3737
this.$logger.out("Seems you don't have any applications yet.");
3838
} else {
39-
let table: any = createTable(["Application Name", "Bundle Identifier", "Version"], iOSApplications.map(element => {
39+
const table: any = createTable(["Application Name", "Bundle Identifier", "Version"], iOSApplications.map(element => {
4040
return [element.name, element.bundleId, element.version];
4141
}));
4242

lib/commands/appstore-upload.ts

+12-12
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ export class PublishIOS implements ICommand {
2828
}
2929

3030
public async execute(args: string[]): Promise<void> {
31-
let username = args[0],
32-
password = args[1],
33-
mobileProvisionIdentifier = args[2],
34-
codeSignIdentity = args[3],
35-
teamID = this.$options.teamId,
36-
ipaFilePath = this.$options.ipa ? path.resolve(this.$options.ipa) : null;
31+
let username = args[0];
32+
let password = args[1];
33+
const mobileProvisionIdentifier = args[2];
34+
const codeSignIdentity = args[3];
35+
const teamID = this.$options.teamId;
36+
let ipaFilePath = this.$options.ipa ? path.resolve(this.$options.ipa) : null;
3737

3838
if (!username) {
3939
username = await this.$prompter.getString("Apple ID", { allowEmpty: false });
@@ -54,11 +54,11 @@ export class PublishIOS implements ICommand {
5454
this.$options.release = true;
5555

5656
if (!ipaFilePath) {
57-
let platform = this.$devicePlatformsConstants.iOS;
57+
const platform = this.$devicePlatformsConstants.iOS;
5858
// No .ipa path provided, build .ipa on out own.
5959
const appFilesUpdaterOptions: IAppFilesUpdaterOptions = { bundle: this.$options.bundle, release: this.$options.release };
6060
if (mobileProvisionIdentifier || codeSignIdentity) {
61-
let iOSBuildConfig: IBuildConfig = {
61+
const iOSBuildConfig: IBuildConfig = {
6262
projectDir: this.$options.path,
6363
release: this.$options.release,
6464
device: this.$options.device,
@@ -77,13 +77,13 @@ export class PublishIOS implements ICommand {
7777
this.$logger.info("No .ipa, mobile provision or certificate set. Perfect! Now we'll build .xcarchive and let Xcode pick the distribution certificate and provisioning profile for you when exporting .ipa for AppStore submission.");
7878
await this.$platformService.preparePlatform(platform, appFilesUpdaterOptions, this.$options.platformTemplate, this.$projectData, this.$options);
7979

80-
let platformData = this.$platformsData.getPlatformData(platform, this.$projectData);
81-
let iOSProjectService = <IOSProjectService>platformData.platformProjectService;
80+
const platformData = this.$platformsData.getPlatformData(platform, this.$projectData);
81+
const iOSProjectService = <IOSProjectService>platformData.platformProjectService;
8282

83-
let archivePath = await iOSProjectService.archive(this.$projectData);
83+
const archivePath = await iOSProjectService.archive(this.$projectData);
8484
this.$logger.info("Archive at: " + archivePath);
8585

86-
let exportPath = await iOSProjectService.exportArchive(this.$projectData, { archivePath, teamID, provision: mobileProvisionIdentifier || this.$options.provision });
86+
const exportPath = await iOSProjectService.exportArchive(this.$projectData, { archivePath, teamID, provision: mobileProvisionIdentifier || this.$options.provision });
8787
this.$logger.info("Export at: " + exportPath);
8888

8989
ipaFilePath = exportPath;

lib/commands/build.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export class BuildCommandBase {
99
}
1010

1111
public async executeCore(args: string[]): Promise<void> {
12-
let platform = args[0].toLowerCase();
12+
const platform = args[0].toLowerCase();
1313
const appFilesUpdaterOptions: IAppFilesUpdaterOptions = { bundle: this.$options.bundle, release: this.$options.release };
1414
await this.$platformService.preparePlatform(platform, appFilesUpdaterOptions, this.$options.platformTemplate, this.$projectData, this.$options);
1515
this.$options.clean = true;

lib/commands/clean-app.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ export class CleanAppCommandBase implements ICommand {
2323
this.$errors.fail(`Applications for platform ${this.platform} can not be built on this OS`);
2424
}
2525

26-
let platformData = this.$platformsData.getPlatformData(this.platform, this.$projectData);
27-
let platformProjectService = platformData.platformProjectService;
26+
const platformData = this.$platformsData.getPlatformData(this.platform, this.$projectData);
27+
const platformProjectService = platformData.platformProjectService;
2828
await platformProjectService.validate(this.$projectData);
2929
return true;
3030
}

lib/commands/debug.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CONNECTED_STATUS } from "../common/constants";
1+
import { CONNECTED_STATUS } from "../common/constants";
22
import { isInteractive } from "../common/helpers";
33
import { cache } from "../common/decorators";
44
import { DebugCommandErrors } from "../constants";
@@ -24,7 +24,7 @@ export class DebugPlatformCommand implements ICommand {
2424
public async execute(args: string[]): Promise<void> {
2525
const debugOptions = <IDebugOptions>_.cloneDeep(this.$options.argv);
2626

27-
let debugData = this.$debugDataService.createDebugData(this.$projectData, this.$options);
27+
const debugData = this.$debugDataService.createDebugData(this.$projectData, this.$options);
2828

2929
await this.$platformService.trackProjectType(this.$projectData);
3030
const selectedDeviceForDebug = await this.getDeviceForDebug();

lib/commands/install.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ export class InstallCommand implements ICommand {
2626

2727
await this.$pluginsService.ensureAllDependenciesAreInstalled(this.$projectData);
2828

29-
for (let platform of this.$platformsData.platformsNames) {
30-
let platformData = this.$platformsData.getPlatformData(platform, this.$projectData);
29+
for (const platform of this.$platformsData.platformsNames) {
30+
const platformData = this.$platformsData.getPlatformData(platform, this.$projectData);
3131
const frameworkPackageData = this.$projectDataService.getNSValue(this.$projectData.projectDir, platformData.frameworkPackageName);
3232
if (frameworkPackageData && frameworkPackageData.version) {
3333
try {
@@ -47,9 +47,9 @@ export class InstallCommand implements ICommand {
4747
}
4848

4949
private async installModule(moduleName: string): Promise<void> {
50-
let projectDir = this.$projectData.projectDir;
50+
const projectDir = this.$projectData.projectDir;
5151

52-
let devPrefix = 'nativescript-dev-';
52+
const devPrefix = 'nativescript-dev-';
5353
if (!this.$fs.exists(moduleName) && moduleName.indexOf(devPrefix) !== 0) {
5454
moduleName = devPrefix + moduleName;
5555
}

lib/commands/list-platforms.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ export class ListPlatformsCommand implements ICommand {
1010
}
1111

1212
public async execute(args: string[]): Promise<void> {
13-
let installedPlatforms = this.$platformService.getInstalledPlatforms(this.$projectData);
13+
const installedPlatforms = this.$platformService.getInstalledPlatforms(this.$projectData);
1414

1515
if (installedPlatforms.length > 0) {
16-
let preparedPlatforms = this.$platformService.getPreparedPlatforms(this.$projectData);
16+
const preparedPlatforms = this.$platformService.getPreparedPlatforms(this.$projectData);
1717
if (preparedPlatforms.length > 0) {
1818
this.$logger.out("The project is prepared for: ", helpers.formatListOfNames(preparedPlatforms, "and"));
1919
} else {
@@ -22,7 +22,7 @@ export class ListPlatformsCommand implements ICommand {
2222

2323
this.$logger.out("Installed platforms: ", helpers.formatListOfNames(installedPlatforms, "and"));
2424
} else {
25-
let formattedPlatformsList = helpers.formatListOfNames(this.$platformService.getAvailablePlatforms(this.$projectData), "and");
25+
const formattedPlatformsList = helpers.formatListOfNames(this.$platformService.getAvailablePlatforms(this.$projectData), "and");
2626
this.$logger.out("Available platforms for this OS: ", formattedPlatformsList);
2727
this.$logger.out("No installed platforms found. Use $ tns platform add");
2828
}

lib/commands/platform-clean.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class CleanCommand implements ICommand {
1818
this.$errors.fail("No platform specified. Please specify a platform to clean");
1919
}
2020

21-
for (let platform of args) {
21+
for (const platform of args) {
2222
this.$platformService.validatePlatformInstalled(platform, this.$projectData);
2323

2424
const platformData = this.$platformsData.getPlatformData(platform, this.$projectData);

lib/commands/plugin/add-plugin.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ export class AddPluginCommand implements ICommand {
1616
this.$errors.fail("You must specify plugin name.");
1717
}
1818

19-
let installedPlugins = await this.$pluginsService.getAllInstalledPlugins(this.$projectData);
20-
let pluginName = args[0].toLowerCase();
19+
const installedPlugins = await this.$pluginsService.getAllInstalledPlugins(this.$projectData);
20+
const pluginName = args[0].toLowerCase();
2121
if (_.some(installedPlugins, (plugin: IPluginData) => plugin.name.toLowerCase() === pluginName)) {
2222
this.$errors.failWithoutHelp(`Plugin "${pluginName}" is already installed.`);
2323
}

0 commit comments

Comments
 (0)