Skip to content

Commit 239a175

Browse files
peternhalemshanemc
andauthored
fix: add ts strict null checks (#677)
* fix: add strict null checks @W-12220467@ * chore: remove unneeded dev dep * chore: dep cleanup --------- Co-authored-by: mshanemc <shane.mclaughlin@salesforce.com>
1 parent d8fe80f commit 239a175

12 files changed

+184
-226
lines changed

.eslintrc.js

+3
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@
66
*/
77
module.exports = {
88
extends: ['eslint-config-salesforce-typescript', 'eslint-config-salesforce-license', 'plugin:sf-plugin/recommended'],
9+
rules: {
10+
'jsdoc/newline-after-description': 'off',
11+
},
912
};

package.json

+11-15
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
"bugs": "https://github.com/forcedotcom/cli/issues",
77
"main": "lib/index.js",
88
"dependencies": {
9-
"@oclif/core": "^2.6.4",
10-
"@salesforce/core": "^3.34.1",
9+
"@oclif/core": "^2.8.2",
10+
"@salesforce/core": "^3.34.7",
1111
"@salesforce/kit": "^1.9.2",
12-
"@salesforce/sf-plugins-core": "^2.2.5",
12+
"@salesforce/sf-plugins-core": "^2.2.9",
1313
"chalk": "^4.1.2",
14-
"fs-extra": "^10.0.1",
1514
"inquirer": "^8.2.5",
1615
"open": "^8.2.1",
1716
"tslib": "^2"
@@ -21,27 +20,24 @@
2120
"@salesforce/cli-plugins-testkit": "^3.3.3",
2221
"@salesforce/dev-config": "^3.1.0",
2322
"@salesforce/dev-scripts": "^4.3.0",
24-
"@salesforce/plugin-command-reference": "^2",
23+
"@salesforce/plugin-command-reference": "^2.2.9",
2524
"@salesforce/plugin-settings": "^1.4.4",
2625
"@salesforce/prettier-config": "^0.0.2",
27-
"@salesforce/ts-sinon": "^1.4.4",
28-
"@swc/core": "1.3.30",
29-
"@types/fs-extra": "^9.0.13",
30-
"@types/graceful-fs": "^4.1.6",
26+
"@salesforce/ts-sinon": "^1.4.6",
27+
"@swc/core": "1.3.39",
3128
"@types/inquirer": "^8.2.0",
32-
"@types/mkdirp": "^1.0.1",
3329
"@typescript-eslint/eslint-plugin": "^5.59.0",
34-
"@typescript-eslint/parser": "^5.58.0",
30+
"@typescript-eslint/parser": "^5.59.0",
3531
"chai": "^4.3.7",
3632
"eslint": "^8.39.0",
3733
"eslint-config-prettier": "^8.8.0",
3834
"eslint-config-salesforce": "^1.2.0",
3935
"eslint-config-salesforce-license": "^0.2.0",
4036
"eslint-config-salesforce-typescript": "^1.1.1",
41-
"eslint-plugin-header": "^3.0.0",
37+
"eslint-plugin-header": "^3.1.1",
4238
"eslint-plugin-import": "2.27.5",
43-
"eslint-plugin-jsdoc": "^39.9.1",
44-
"eslint-plugin-sf-plugin": "^1.14.0",
39+
"eslint-plugin-jsdoc": "^43.0.7",
40+
"eslint-plugin-sf-plugin": "^1.15.1",
4541
"husky": "^7.0.4",
4642
"mocha": "^9.1.3",
4743
"nyc": "^15.1.0",
@@ -51,7 +47,7 @@
5147
"shx": "0.3.4",
5248
"sinon": "10.0.0",
5349
"ts-node": "^10.0.0",
54-
"typescript": "^4.9.4",
50+
"typescript": "^4.9.5",
5551
"wireit": "^0.9.5"
5652
},
5753
"engines": {

src/commands/org/list/auth.ts

+5-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export default class ListAuth extends SfCommand<AuthListResults> {
1717
public static readonly description = messages.getMessage('description');
1818
public static readonly examples = messages.getMessages('examples');
1919
public static readonly deprecateAliases = true;
20-
public static aliases = ['force:auth:list', 'auth:list'];
20+
public static readonly aliases = ['force:auth:list', 'auth:list'];
2121

2222
public static readonly flags = {
2323
loglevel,
@@ -31,13 +31,12 @@ export default class ListAuth extends SfCommand<AuthListResults> {
3131
this.log(messages.getMessage('noResultsFound'));
3232
return [];
3333
}
34-
const mappedAuths = auths.map((auth: OrgAuthorization & { alias: string }) => {
34+
const mappedAuths: AuthListResults = auths.map((auth: OrgAuthorization) => {
35+
const { aliases, ...rest } = auth;
3536
// core3 moved to aliases as a string[], revert to alias as a string
36-
auth.alias = auth.aliases ? auth.aliases.join(',') : '';
37-
38-
delete auth.aliases;
39-
return auth;
37+
return { ...rest, alias: aliases ? aliases.join(',') : '' };
4038
});
39+
4140
const hasErrors = auths.filter((auth) => !!auth.error).length > 0;
4241
let columns = {
4342
alias: { header: 'ALIAS' },

src/commands/org/login/access-token.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default class LoginAccessToken extends AuthBaseCommand<AuthFields> {
6464
loglevel,
6565
};
6666

67-
private flags: Interfaces.InferredFlags<typeof LoginAccessToken.flags>;
67+
private flags!: Interfaces.InferredFlags<typeof LoginAccessToken.flags>;
6868

6969
public async run(): Promise<AuthFields> {
7070
const { flags } = await this.parse(LoginAccessToken);

src/commands/org/login/jwt.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export default class LoginJwt extends AuthBaseCommand<AuthFields> {
7979
}),
8080
loglevel,
8181
};
82-
private flags: Interfaces.InferredFlags<typeof LoginJwt.flags>;
82+
private flags!: Interfaces.InferredFlags<typeof LoginJwt.flags>;
8383
private logger = Logger.childFromRoot(this.constructor.name);
8484

8585
public async run(): Promise<AuthFields> {

src/commands/org/login/web.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export default class LoginWeb extends AuthBaseCommand<AuthFields> {
8282
loglevel,
8383
};
8484

85-
private flags: Interfaces.InferredFlags<typeof LoginWeb.flags>;
85+
private flags!: Interfaces.InferredFlags<typeof LoginWeb.flags>;
8686

8787
public async run(): Promise<AuthFields> {
8888
const { flags } = await this.parse(LoginWeb);
@@ -130,9 +130,9 @@ export default class LoginWeb extends AuthBaseCommand<AuthFields> {
130130
private async executeLoginFlow(oauthConfig: OAuth2Config): Promise<AuthInfo> {
131131
const oauthServer = await WebOAuthServer.create({ oauthConfig });
132132
await oauthServer.start();
133-
const openOptions = this.flags.browser
134-
? { app: { name: open.apps[this.flags.browser] as open.AppName }, wait: false }
135-
: { wait: false };
133+
const app =
134+
this.flags.browser && this.flags.browser in open.apps ? (this.flags.browser as open.AppName) : undefined;
135+
const openOptions = app ? { app: { name: open.apps[app] }, wait: false } : { wait: false };
136136
await open(oauthServer.getAuthorizationUrl(), openOptions);
137137
return oauthServer.authorizeAndSave();
138138
}

src/commands/org/logout.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export default class Logout extends AuthBaseCommand<AuthLogoutResults> {
6262
loglevel,
6363
};
6464

65-
private flags: Interfaces.InferredFlags<typeof Logout.flags>;
65+
private flags!: Interfaces.InferredFlags<typeof Logout.flags>;
6666

6767
private static buildChoices(orgAuths: OrgAuthorization[], all: boolean): Array<choice | Separator> {
6868
const maxUsernameLength = Math.max('Username'.length, ...orgAuths.map((orgAuth) => orgAuth.username.length));

test/commands/scratch-identify.nut.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Licensed under the BSD 3-Clause license.
55
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
66
*/
7+
78
import * as path from 'path';
89
import { expect } from 'chai';
910

test/common.test.ts

+26-25
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Licensed under the BSD 3-Clause license.
55
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
66
*/
7+
78
import { ConfigContents, SfdcUrl, SfError } from '@salesforce/core';
89
import { expect } from 'chai';
910
import { TestContext, uniqid } from '@salesforce/core/lib/testSetup';
@@ -38,10 +39,10 @@ describe('common unit tests', () => {
3839
packageDirectories: [
3940
{
4041
path: 'force-app',
41-
default: true
42-
}
42+
default: true,
43+
},
4344
],
44-
sourceApiVersion: '50.0'
45+
sourceApiVersion: '50.0',
4546
});
4647
const loginUrl = await Common.resolveLoginUrl(undefined);
4748
expect(loginUrl).to.equal(SfdcUrl.PRODUCTION);
@@ -51,11 +52,11 @@ describe('common unit tests', () => {
5152
packageDirectories: [
5253
{
5354
path: 'force-app',
54-
default: true
55-
}
55+
default: true,
56+
},
5657
],
5758
sfdcLoginUrl: 'https://login.salesforce.com',
58-
sourceApiVersion: '50.0'
59+
sourceApiVersion: '50.0',
5960
});
6061
const loginUrl = await Common.resolveLoginUrl(undefined);
6162
expect(loginUrl).to.equal(SfdcUrl.PRODUCTION);
@@ -65,11 +66,11 @@ describe('common unit tests', () => {
6566
packageDirectories: [
6667
{
6768
path: 'force-app',
68-
default: true
69-
}
69+
default: true,
70+
},
7071
],
7172
sfdcLoginUrl: 'https://shanedevhub.lightning.force.com',
72-
sourceApiVersion: '50.0'
73+
sourceApiVersion: '50.0',
7374
});
7475
try {
7576
await Common.resolveLoginUrl(undefined);
@@ -105,25 +106,25 @@ describe('common unit tests', () => {
105106
packageDirectories: [
106107
{
107108
path: 'force-app',
108-
default: true
109-
}
109+
default: true,
110+
},
110111
],
111-
sourceApiVersion: '50.0'
112-
}
112+
sourceApiVersion: '50.0',
113+
},
113114
});
114115
const loginUrl = await Common.resolveLoginUrl(INSTANCE_URL_1);
115116
expect(loginUrl).to.equal(INSTANCE_URL_1);
116117
});
117118
it('should return custom login URL if project with property sfdcLoginUrl present and not equal to production URL', async () => {
118119
await projectSetup($$, true, {
119-
packageDirectories: [
120-
{
121-
path: 'force-app',
122-
default: true
123-
}
124-
],
125-
sfdcLoginUrl: INSTANCE_URL_2,
126-
sourceApiVersion: '50.0'
120+
packageDirectories: [
121+
{
122+
path: 'force-app',
123+
default: true,
124+
},
125+
],
126+
sfdcLoginUrl: INSTANCE_URL_2,
127+
sourceApiVersion: '50.0',
127128
});
128129
const loginUrl = await Common.resolveLoginUrl(undefined);
129130
expect(loginUrl).to.equal(INSTANCE_URL_2);
@@ -134,12 +135,12 @@ describe('common unit tests', () => {
134135
packageDirectories: [
135136
{
136137
path: 'force-app',
137-
default: true
138-
}
138+
default: true,
139+
},
139140
],
140141
sfdcLoginUrl: INSTANCE_URL_2,
141-
sourceApiVersion: '50.0'
142-
}
142+
sourceApiVersion: '50.0',
143+
},
143144
});
144145
const loginUrl = await Common.resolveLoginUrl(INSTANCE_URL_1);
145146
expect(loginUrl).to.equal(INSTANCE_URL_1);

test/tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": "@salesforce/dev-config/tsconfig-test",
2+
"extends": "@salesforce/dev-config/tsconfig-test-strict",
33
"include": ["./**/*.ts"],
44
"compilerOptions": {
55
"skipLibCheck": true,

tsconfig.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": "@salesforce/dev-config/tsconfig",
2+
"extends": "@salesforce/dev-config/tsconfig-strict",
33
"compilerOptions": {
44
"outDir": "lib",
55
"rootDir": "src",

0 commit comments

Comments
 (0)