Skip to content

Commit c7f4ca2

Browse files
Enable Typescript noImplicitAny (#33322)
Enable `noImplicitAny` and fix all issues. --------- Co-authored-by: wxiaoguang <[email protected]>
1 parent 6fe4d1c commit c7f4ca2

Some content is hidden

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

63 files changed

+326
-270
lines changed

tests/e2e/utils_e2e.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import {expect} from '@playwright/test';
22
import {env} from 'node:process';
3+
import type {Browser, Page, WorkerInfo} from '@playwright/test';
34

45
const ARTIFACTS_PATH = `tests/e2e/test-artifacts`;
56
const LOGIN_PASSWORD = 'password';
67

78
// log in user and store session info. This should generally be
89
// run in test.beforeAll(), then the session can be loaded in tests.
9-
export async function login_user(browser, workerInfo, user) {
10+
export async function login_user(browser: Browser, workerInfo: WorkerInfo, user: string) {
1011
// Set up a new context
1112
const context = await browser.newContext();
1213
const page = await context.newPage();
@@ -17,8 +18,8 @@ export async function login_user(browser, workerInfo, user) {
1718
expect(response?.status()).toBe(200); // Status OK
1819

1920
// Fill out form
20-
await page.type('input[name=user_name]', user);
21-
await page.type('input[name=password]', LOGIN_PASSWORD);
21+
await page.locator('input[name=user_name]').fill(user);
22+
await page.locator('input[name=password]').fill(LOGIN_PASSWORD);
2223
await page.click('form button.ui.primary.button:visible');
2324

2425
await page.waitForLoadState('networkidle'); // eslint-disable-line playwright/no-networkidle
@@ -31,7 +32,7 @@ export async function login_user(browser, workerInfo, user) {
3132
return context;
3233
}
3334

34-
export async function load_logged_in_context(browser, workerInfo, user) {
35+
export async function load_logged_in_context(browser: Browser, workerInfo: WorkerInfo, user: string) {
3536
let context;
3637
try {
3738
context = await browser.newContext({storageState: `${ARTIFACTS_PATH}/state-${user}-${workerInfo.workerIndex}.json`});
@@ -43,7 +44,7 @@ export async function load_logged_in_context(browser, workerInfo, user) {
4344
return context;
4445
}
4546

46-
export async function save_visual(page) {
47+
export async function save_visual(page: Page) {
4748
// Optionally include visual testing
4849
if (env.VISUAL_TEST) {
4950
await page.waitForLoadState('networkidle'); // eslint-disable-line playwright/no-networkidle

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"stripInternal": true,
2424
"strict": false,
2525
"strictFunctionTypes": true,
26+
"noImplicitAny": true,
2627
"noImplicitThis": true,
2728
"noUnusedLocals": true,
2829
"noUnusedParameters": true,

web_src/js/components/DashboardRepoList.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,12 @@ export default defineComponent({
130130
},
131131
132132
methods: {
133-
changeTab(t) {
134-
this.tab = t;
133+
changeTab(tab: string) {
134+
this.tab = tab;
135135
this.updateHistory();
136136
},
137137
138-
changeReposFilter(filter) {
138+
changeReposFilter(filter: string) {
139139
this.reposFilter = filter;
140140
this.repos = [];
141141
this.page = 1;
@@ -218,7 +218,7 @@ export default defineComponent({
218218
this.searchRepos();
219219
},
220220
221-
changePage(page) {
221+
changePage(page: number) {
222222
this.page = page;
223223
if (this.page > this.finalPage) {
224224
this.page = this.finalPage;
@@ -256,15 +256,15 @@ export default defineComponent({
256256
}
257257
258258
if (searchedURL === this.searchURL) {
259-
this.repos = json.data.map((webSearchRepo) => {
259+
this.repos = json.data.map((webSearchRepo: any) => {
260260
return {
261261
...webSearchRepo.repository,
262262
latest_commit_status_state: webSearchRepo.latest_commit_status?.State, // if latest_commit_status is null, it means there is no commit status
263263
latest_commit_status_state_link: webSearchRepo.latest_commit_status?.TargetURL,
264264
locale_latest_commit_status_state: webSearchRepo.locale_latest_commit_status,
265265
};
266266
});
267-
const count = response.headers.get('X-Total-Count');
267+
const count = Number(response.headers.get('X-Total-Count'));
268268
if (searchedQuery === '' && searchedMode === '' && this.archivedFilter === 'both') {
269269
this.reposTotalCount = count;
270270
}
@@ -275,7 +275,7 @@ export default defineComponent({
275275
}
276276
},
277277
278-
repoIcon(repo) {
278+
repoIcon(repo: any) {
279279
if (repo.fork) {
280280
return 'octicon-repo-forked';
281281
} else if (repo.mirror) {
@@ -298,7 +298,7 @@ export default defineComponent({
298298
return commitStatus[status].color;
299299
},
300300
301-
reposFilterKeyControl(e) {
301+
reposFilterKeyControl(e: KeyboardEvent) {
302302
switch (e.key) {
303303
case 'Enter':
304304
document.querySelector<HTMLAnchorElement>('.repo-owner-name-list li.active a')?.click();

web_src/js/components/DiffCommitSelector.vue

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@ import {SvgIcon} from '../svg.ts';
44
import {GET} from '../modules/fetch.ts';
55
import {generateAriaId} from '../modules/fomantic/base.ts';
66
7+
type Commit = {
8+
id: string,
9+
hovered: boolean,
10+
selected: boolean,
11+
summary: string,
12+
committer_or_author_name: string,
13+
time: string,
14+
short_sha: string,
15+
}
16+
17+
type CommitListResult = {
18+
commits: Array<Commit>,
19+
last_review_commit_sha: string,
20+
locale: Record<string, string>,
21+
}
22+
723
export default defineComponent({
824
components: {SvgIcon},
925
data: () => {
@@ -16,9 +32,9 @@ export default defineComponent({
1632
locale: {
1733
filter_changes_by_commit: el.getAttribute('data-filter_changes_by_commit'),
1834
} as Record<string, string>,
19-
commits: [],
35+
commits: [] as Array<Commit>,
2036
hoverActivated: false,
21-
lastReviewCommitSha: null,
37+
lastReviewCommitSha: '',
2238
uniqueIdMenu: generateAriaId(),
2339
uniqueIdShowAll: generateAriaId(),
2440
};
@@ -71,7 +87,7 @@ export default defineComponent({
7187
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
7288
const item = document.activeElement; // try to highlight the selected commits
7389
const commitIdx = item?.matches('.item') ? item.getAttribute('data-commit-idx') : null;
74-
if (commitIdx) this.highlight(this.commits[commitIdx]);
90+
if (commitIdx) this.highlight(this.commits[Number(commitIdx)]);
7591
}
7692
},
7793
onKeyUp(event: KeyboardEvent) {
@@ -87,7 +103,7 @@ export default defineComponent({
87103
}
88104
}
89105
},
90-
highlight(commit) {
106+
highlight(commit: Commit) {
91107
if (!this.hoverActivated) return;
92108
const indexSelected = this.commits.findIndex((x) => x.selected);
93109
const indexCurrentElem = this.commits.findIndex((x) => x.id === commit.id);
@@ -125,10 +141,11 @@ export default defineComponent({
125141
}
126142
});
127143
},
144+
128145
/** Load the commits to show in this dropdown */
129146
async fetchCommits() {
130147
const resp = await GET(`${this.issueLink}/commits/list`);
131-
const results = await resp.json();
148+
const results = await resp.json() as CommitListResult;
132149
this.commits.push(...results.commits.map((x) => {
133150
x.hovered = false;
134151
return x;
@@ -166,7 +183,7 @@ export default defineComponent({
166183
* the diff from beginning of PR up to the second clicked commit is
167184
* opened
168185
*/
169-
commitClickedShift(commit) {
186+
commitClickedShift(commit: Commit) {
170187
this.hoverActivated = !this.hoverActivated;
171188
commit.selected = true;
172189
// Second click -> determine our range and open links accordingly

web_src/js/components/DiffFileList.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ function toggleFileList() {
1818
}
1919
2020
function diffTypeToString(pType: number) {
21-
const diffTypes = {
22-
1: 'add',
23-
2: 'modify',
24-
3: 'del',
25-
4: 'rename',
26-
5: 'copy',
21+
const diffTypes: Record<string, string> = {
22+
'1': 'add',
23+
'2': 'modify',
24+
'3': 'del',
25+
'4': 'rename',
26+
'5': 'copy',
2727
};
28-
return diffTypes[pType];
28+
return diffTypes[String(pType)];
2929
}
3030
3131
function diffStatsWidth(adds: number, dels: number) {

web_src/js/components/DiffFileTree.vue

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts" setup>
2-
import DiffFileTreeItem from './DiffFileTreeItem.vue';
2+
import DiffFileTreeItem, {type Item} from './DiffFileTreeItem.vue';
33
import {loadMoreFiles} from '../features/repo-diff.ts';
44
import {toggleElem} from '../utils/dom.ts';
55
import {diffTreeStore} from '../modules/stores.ts';
@@ -11,7 +11,7 @@ const LOCAL_STORAGE_KEY = 'diff_file_tree_visible';
1111
const store = diffTreeStore();
1212
1313
const fileTree = computed(() => {
14-
const result = [];
14+
const result: Array<Item> = [];
1515
for (const file of store.files) {
1616
// Split file into directories
1717
const splits = file.Name.split('/');
@@ -24,15 +24,10 @@ const fileTree = computed(() => {
2424
if (index === splits.length) {
2525
isFile = true;
2626
}
27-
let newParent = {
27+
let newParent: Item = {
2828
name: split,
2929
children: [],
3030
isFile,
31-
} as {
32-
name: string,
33-
children: any[],
34-
isFile: boolean,
35-
file?: any,
3631
};
3732
3833
if (isFile === true) {

web_src/js/components/DiffFileTreeItem.vue

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts" setup>
2-
import {SvgIcon} from '../svg.ts';
2+
import {SvgIcon, type SvgName} from '../svg.ts';
33
import {diffTreeStore} from '../modules/stores.ts';
44
import {ref} from 'vue';
55
@@ -11,7 +11,7 @@ type File = {
1111
IsSubmodule: boolean;
1212
}
1313
14-
type Item = {
14+
export type Item = {
1515
name: string;
1616
isFile: boolean;
1717
file?: File;
@@ -26,14 +26,14 @@ const store = diffTreeStore();
2626
const collapsed = ref(false);
2727
2828
function getIconForDiffType(pType: number) {
29-
const diffTypes = {
30-
1: {name: 'octicon-diff-added', classes: ['text', 'green']},
31-
2: {name: 'octicon-diff-modified', classes: ['text', 'yellow']},
32-
3: {name: 'octicon-diff-removed', classes: ['text', 'red']},
33-
4: {name: 'octicon-diff-renamed', classes: ['text', 'teal']},
34-
5: {name: 'octicon-diff-renamed', classes: ['text', 'green']}, // there is no octicon for copied, so renamed should be ok
29+
const diffTypes: Record<string, {name: SvgName, classes: Array<string>}> = {
30+
'1': {name: 'octicon-diff-added', classes: ['text', 'green']},
31+
'2': {name: 'octicon-diff-modified', classes: ['text', 'yellow']},
32+
'3': {name: 'octicon-diff-removed', classes: ['text', 'red']},
33+
'4': {name: 'octicon-diff-renamed', classes: ['text', 'teal']},
34+
'5': {name: 'octicon-diff-renamed', classes: ['text', 'green']}, // there is no octicon for copied, so renamed should be ok
3535
};
36-
return diffTypes[pType];
36+
return diffTypes[String(pType)];
3737
}
3838
3939
function fileIcon(file: File) {

web_src/js/components/PullRequestMergeForm.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,17 @@ const forceMerge = computed(() => {
3636
});
3737
3838
watch(mergeStyle, (val) => {
39-
mergeStyleDetail.value = mergeForm.value.mergeStyles.find((e) => e.name === val);
39+
mergeStyleDetail.value = mergeForm.value.mergeStyles.find((e: any) => e.name === val);
4040
for (const elem of document.querySelectorAll('[data-pull-merge-style]')) {
4141
toggleElem(elem, elem.getAttribute('data-pull-merge-style') === val);
4242
}
4343
});
4444
4545
onMounted(() => {
46-
mergeStyleAllowedCount.value = mergeForm.value.mergeStyles.reduce((v, msd) => v + (msd.allowed ? 1 : 0), 0);
46+
mergeStyleAllowedCount.value = mergeForm.value.mergeStyles.reduce((v: any, msd: any) => v + (msd.allowed ? 1 : 0), 0);
4747
48-
let mergeStyle = mergeForm.value.mergeStyles.find((e) => e.allowed && e.name === mergeForm.value.defaultMergeStyle)?.name;
49-
if (!mergeStyle) mergeStyle = mergeForm.value.mergeStyles.find((e) => e.allowed)?.name;
48+
let mergeStyle = mergeForm.value.mergeStyles.find((e: any) => e.allowed && e.name === mergeForm.value.defaultMergeStyle)?.name;
49+
if (!mergeStyle) mergeStyle = mergeForm.value.mergeStyles.find((e: any) => e.allowed)?.name;
5050
switchMergeStyle(mergeStyle, !mergeForm.value.canMergeNow);
5151
5252
document.addEventListener('mouseup', hideMergeStyleMenu);

0 commit comments

Comments
 (0)