Skip to content

Commit 6044d1a

Browse files
committed
refactor(eslint): fix issues with new eslint
1 parent da54e22 commit 6044d1a

Some content is hidden

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

52 files changed

+165
-129
lines changed

eslint.config.mjs

+1
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ export default defineConfig([
112112
"require-yield": ["error"],
113113
"use-isnan": "error",
114114
"valid-typeof": "off",
115+
"jsdoc/tag-lines": "off",
115116
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
116117
"@typescript-eslint/no-unnecessary-type-assertion": "off",
117118
"@typescript-eslint/prefer-string-starts-ends-with": "off",

src/__tests__/core/documents.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ describe('documents', () => {
110110
})
111111

112112
it('should convert filepath', () => {
113-
Object.assign((documents as any)._env, { isCygwin: true })
114-
let filepath = documents.fixUnixPrefix('C:\\Users\\Local', '/cygdrive/')
113+
Object.assign((documents as any)._env, { isCygwin: true, unixPrefix: '/cygdrive/' })
114+
let filepath = documents.fixUnixPrefix('C:\\Users\\Local')
115115
expect(filepath).toBe('/cygdrive/c/Users/Local')
116116
Object.assign((documents as any)._env, { isCygwin: false })
117117
})

src/__tests__/modules/extensionManager.test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,7 @@ describe('ExtensionManager', () => {
554554
}
555555
await expect(fn()).rejects.toThrow()
556556
fn = async () => {
557+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
557558
item.extension.exports
558559
}
559560
await expect(fn()).rejects.toThrow()
@@ -648,7 +649,7 @@ describe('ExtensionManager', () => {
648649
let res = await manager.loadExtension(extFolder)
649650
expect(res).toBe(true)
650651
let spy = jest.spyOn(workspace.fileSystemWatchers, 'getWatchmanPath').mockImplementation(() => {
651-
return Promise.reject('not found')
652+
return Promise.reject(new Error('not found'))
652653
})
653654
let fn = async () => {
654655
await manager.watchExtension('name')

src/__tests__/modules/fs.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ describe('fs', () => {
4747
describe('stat()', () => {
4848
it('fs statAsync', async () => {
4949
let res = await statAsync(__filename)
50-
expect(res).toBeDefined
50+
expect(res).toBeDefined()
5151
expect(res.isFile()).toBe(true)
5252
})
5353

5454
it('fs statAsync #1', async () => {
5555
let res = await statAsync(path.join(__dirname, 'file_not_exist'))
56-
expect(res).toBeNull
56+
expect(res).toBeNull()
5757
})
5858
})
5959

src/__tests__/modules/util.test.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ console.debug('debug')
110110
console.info('info')
111111
console.error('error')
112112
console.warn('warn')`, sandbox)
113-
expect(fn).toBeCalledTimes(5)
113+
expect(fn).toHaveBeenCalled()
114114
})
115115

116116
it('should create console', () => {
@@ -1224,7 +1224,7 @@ describe('utility', () => {
12241224
it('should resolve concurrent with empty task', async () => {
12251225
let fn = jest.fn()
12261226
await concurrent([], fn, 3)
1227-
expect(fn).toBeCalledTimes(0)
1227+
expect(fn).toHaveBeenCalledTimes(0)
12281228
})
12291229

12301230
it('should run concurrent', async () => {
@@ -1685,7 +1685,6 @@ describe('diff', () => {
16851685
function blockMilliseconds(ms: number): void {
16861686
let ts = Date.now()
16871687
let i = 0
1688-
// eslint-disable-next-line no-constant-condition
16891688
while (true) {
16901689
if (Date.now() - ts > ms) {
16911690
break
@@ -1728,7 +1727,6 @@ describe('diff', () => {
17281727
await filter([1, 2, 3, 4, 5, 6, 7, 8], i => {
17291728
if (i > 1) {
17301729
let ts = Date.now()
1731-
// eslint-disable-next-line no-constant-condition
17321730
while (true) {
17331731
if (Date.now() - ts > 40) break
17341732
}

src/__tests__/tree/treeView.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ describe('TreeView', () => {
176176
return new Promise((resolve, reject) => {
177177
let timer = setTimeout(() => {
178178
disposable.dispose()
179-
reject('event not fired after 2s')
179+
reject(new Error('event not fired after 2s'))
180180
}, 2000)
181181
let disposable = treeView.onDidChangeVisibility(e => {
182182
clearTimeout(timer)

src/__tests__/vim.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@ describe('client API', () => {
231231
})
232232

233233
it('should call dict function', async () => {
234-
// eslint-disable-next-line @typescript-eslint/await-thenable
235234
let res = await nvim.callDictFunction({ key: 1 }, 'DictAdd')
236235
expect(res).toBe(2)
237236
})

src/completion/complete.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ export default class Complete {
234234
this.results.delete(sourceName)
235235
}
236236
resolve()
237-
}, err => {
237+
}, (err: Error) => {
238238
reject(err)
239239
})
240240
})

src/completion/source-language.ts

+1
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export default class LanguageSource implements ISource<CompletionItem> {
108108
} catch (e) {
109109
invalid = true
110110
this.resolving.delete(item)
111+
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
111112
reject(e)
112113
}
113114
})

src/completion/sources.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export class Sources {
8383
selector: DocumentSelector | null,
8484
provider: CompletionItemProvider,
8585
triggerCharacters: string[],
86-
priority?: number | undefined,
86+
priority?: number,
8787
allCommitCharacters?: string[]
8888
): Disposable {
8989
let source = new LanguageSource(

src/completion/util.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export function getDetail(item: CompletionItem, filetype: string): { filetype: s
100100
return undefined
101101
}
102102

103-
export function toCompleteDoneItem(selected: DurationCompleteItem | undefined, item: CompleteItem | undefined): CompleteDoneItem | {} {
103+
export function toCompleteDoneItem(selected: DurationCompleteItem | undefined, item: CompleteItem | undefined): CompleteDoneItem | object {
104104
if (!item || !selected) return {}
105105
return Object.assign({
106106
word: selected.word,

src/core/documents.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -587,9 +587,9 @@ export default class Documents implements Disposable {
587587
}
588588
}
589589

590-
public fixUnixPrefix(filepath: string, prefix: string): string {
590+
public fixUnixPrefix(filepath: string): string {
591591
if (!this._env.isCygwin || !/^\w:/.test(filepath)) return filepath
592-
return prefix + filepath[0].toLowerCase() + filepath.slice(2).replace(/\\/g, '/')
592+
return this._env.unixPrefix + filepath[0].toLowerCase() + filepath.slice(2).replace(/\\/g, '/')
593593
}
594594

595595
/**
@@ -610,7 +610,7 @@ export default class Documents implements Disposable {
610610
let endLine = start.line == end.line ? text : await this.getLine(uri, end.line)
611611
let item: QuickfixItem = {
612612
uri,
613-
filename: u.scheme == 'file' ? this.fixUnixPrefix(u.fsPath, this._env.unixPrefix) : uri,
613+
filename: u.scheme == 'file' ? this.fixUnixPrefix(u.fsPath) : uri,
614614
lnum: start.line + 1,
615615
end_lnum: end.line + 1,
616616
col: text ? byteIndex(text, start.character) + 1 : start.character + 1,

src/core/files.ts

+44-28
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import EditInspect, { EditState, RecoverFunc } from '../model/editInspect'
1111
import { DocumentChange, Env, GlobPattern } from '../types'
1212
import * as errors from '../util/errors'
1313
import { isFile, isParentFolder, normalizeFilePath, statAsync } from '../util/fs'
14-
import { crypto, fs, glob, minimatch, os, path, promisify } from '../util/node'
14+
import { crypto, fs, glob, minimatch, os, path } from '../util/node'
1515
import { CancellationToken, CancellationTokenSource, Emitter, Event, TextDocumentSaveReason } from '../util/protocol'
1616
import { byteIndex } from '../util/string'
1717
import { createFilteredChanges, getConfirmAnnotations, toDocumentChanges } from '../util/textedit'
@@ -371,20 +371,26 @@ export default class Files {
371371
curr = path.dirname(curr)
372372
}
373373
fs.mkdirSync(dir, { recursive: true })
374-
recovers && recovers.push(() => {
375-
fs.rmSync(folder, { force: true, recursive: true })
376-
})
374+
if (Array.isArray(recovers)) {
375+
recovers.push(() => {
376+
fs.rmSync(folder, { force: true, recursive: true })
377+
})
378+
}
377379
}
378380
fs.writeFileSync(filepath, '', 'utf8')
379-
recovers && recovers.push(() => {
380-
fs.rmSync(filepath, { force: true, recursive: true })
381-
})
381+
if (Array.isArray(recovers)) {
382+
recovers.push(() => {
383+
fs.rmSync(filepath, { force: true, recursive: true })
384+
})
385+
}
382386
let doc = await this.loadResource(filepath)
383387
let bufnr = doc.bufnr
384-
recovers && recovers.push(() => {
385-
void events.fire('BufUnload', [bufnr])
386-
return nvim.command(`silent! bd! ${bufnr}`)
387-
})
388+
if (Array.isArray(recovers)) {
389+
recovers.push(() => {
390+
void events.fire('BufUnload', [bufnr])
391+
return nvim.command(`silent! bd! ${bufnr}`)
392+
})
393+
}
388394
this._onDidCreateFiles.fire({ files: [URI.file(filepath)] })
389395
}
390396
}
@@ -407,9 +413,11 @@ export default class Files {
407413
if (bufnr) {
408414
void events.fire('BufUnload', [bufnr])
409415
await this.nvim.command(`silent! bwipeout ${bufnr}`)
410-
recovers && recovers.push(() => {
411-
return this.loadResource(uri.toString())
412-
})
416+
if (Array.isArray(recovers)) {
417+
recovers.push(() => {
418+
return this.loadResource(uri.toString())
419+
})
420+
}
413421
}
414422
}
415423
let folder = path.join(os.tmpdir(), 'coc-' + process.pid)
@@ -419,23 +427,29 @@ export default class Files {
419427
let dest = path.join(folder, md5)
420428
let dir = path.dirname(filepath)
421429
fs.renameSync(filepath, dest)
422-
recovers && recovers.push(async () => {
423-
fs.mkdirSync(dir, { recursive: true })
424-
fs.renameSync(dest, filepath)
425-
})
430+
if (Array.isArray(recovers)) {
431+
recovers.push(async () => {
432+
fs.mkdirSync(dir, { recursive: true })
433+
fs.renameSync(dest, filepath)
434+
})
435+
}
426436
} else if (isDir) {
427437
fs.rmdirSync(filepath)
428-
recovers && recovers.push(() => {
429-
fs.mkdirSync(filepath)
430-
})
438+
if (Array.isArray(recovers)) {
439+
recovers.push(() => {
440+
fs.mkdirSync(filepath)
441+
})
442+
}
431443
} else {
432444
let dest = path.join(folder, md5)
433445
let dir = path.dirname(filepath)
434446
fs.renameSync(filepath, dest)
435-
recovers && recovers.push(() => {
436-
fs.mkdirSync(dir, { recursive: true })
437-
fs.renameSync(dest, filepath)
438-
})
447+
if (Array.isArray(recovers)) {
448+
recovers.push(() => {
449+
fs.mkdirSync(dir, { recursive: true })
450+
fs.renameSync(dest, filepath)
451+
})
452+
}
439453
}
440454
this._onDidDeleteFiles.fire({ files: [uri] })
441455
}
@@ -471,9 +485,11 @@ export default class Files {
471485
}
472486
fs.renameSync(oldPath, newPath)
473487
}
474-
recovers && recovers.push(() => {
475-
return this.renameFile(newPath, oldPath, { skipEvent: true })
476-
})
488+
if (Array.isArray(recovers)) {
489+
recovers.push(() => {
490+
return this.renameFile(newPath, oldPath, { skipEvent: true })
491+
})
492+
}
477493
if (!opts.skipEvent) this._onDidRenameFiles.fire({ files: [file] })
478494
}
479495

src/core/highlights.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ function isSame(item: HighlightItem, curr: HighlightItemResult): boolean {
2323
export class Highlights {
2424
public nvim: Neovim
2525

26-
public async diffHighlights(bufnr: number, ns: string, items: HighlightItem[], region?: [number, number] | undefined, token?: CancellationToken): Promise<HighlightDiff | null> {
26+
public async diffHighlights(bufnr: number, ns: string, items: HighlightItem[], region?: [number, number], token?: CancellationToken): Promise<HighlightDiff | null> {
2727
let args = [bufnr, ns, Array.isArray(region) ? region[0] : 0, Array.isArray(region) ? region[1] : -1]
2828
let curr = await this.nvim.call('coc#highlight#get_highlights', args) as HighlightItemResult[]
2929
if (!curr || token?.isCancellationRequested) return null

src/core/keymaps.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const logger = createLogger('core-keymaps')
99

1010
export type MapMode = 'n' | 'i' | 'v' | 'x' | 's' | 'o' | '!'
1111
export type LocalMode = 'n' | 'i' | 'v' | 's' | 'x'
12+
export type KeymapCallback = () => Promise<string> | string
1213

1314
export function getKeymapModifier(mode: MapMode): string {
1415
if (mode == 'n' || mode == 'o' || mode == 'x' || mode == 'v') return '<C-U>'
@@ -22,7 +23,7 @@ export function getBufnr(buffer: number | boolean): number {
2223
}
2324

2425
export default class Keymaps {
25-
private readonly keymaps: Map<string, [Function, boolean]> = new Map()
26+
private readonly keymaps: Map<string, [KeymapCallback, boolean]> = new Map()
2627
private nvim: Neovim
2728

2829
public attach(nvim: Neovim): void {
@@ -44,7 +45,7 @@ export default class Keymaps {
4445
/**
4546
* Register global <Plug>(coc-${key}) key mapping.
4647
*/
47-
public registerKeymap(modes: MapMode[], name: string, fn: Function, opts: Partial<KeymapOption> = {}): Disposable {
48+
public registerKeymap(modes: MapMode[], name: string, fn: KeymapCallback, opts: Partial<KeymapOption> = {}): Disposable {
4849
if (!name) throw new Error(`Invalid key ${name} of registerKeymap`)
4950
let key = `coc-${name}`
5051
if (this.keymaps.has(key)) throw new Error(`${name} already exists.`)
@@ -76,7 +77,7 @@ export default class Keymaps {
7677
})
7778
}
7879

79-
public registerExprKeymap(mode: MapMode, lhs: string, fn: Function, buffer: number | boolean = false, cancel = true): Disposable {
80+
public registerExprKeymap(mode: MapMode, lhs: string, fn: KeymapCallback, buffer: number | boolean = false, cancel = true): Disposable {
8081
let bufnr = getBufnr(buffer)
8182
let id = `${mode}-${toBase64(lhs)}${buffer ? `-${bufnr}` : ''}`
8283
let { nvim } = this
@@ -103,7 +104,7 @@ export default class Keymaps {
103104
})
104105
}
105106

106-
public registerLocalKeymap(bufnr: number, mode: LocalMode, lhs: string, fn: Function, notify: boolean): Disposable {
107+
public registerLocalKeymap(bufnr: number, mode: LocalMode, lhs: string, fn: KeymapCallback, notify: boolean): Disposable {
107108
let { nvim } = this
108109
let buffer = nvim.createBuffer(bufnr)
109110
let id = `local-${bufnr}-${mode}-${toBase64(lhs)}`

src/diagnostic/buffer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class DiagnosticBuffer implements SyncItem {
5959
private _dirties: Set<string> = new Set()
6060
private _refreshing = false
6161
private _config: DiagnosticConfig
62-
public refreshHighlights: Function & { clear(): void }
62+
public refreshHighlights: (() => void) & { clear(): void }
6363
private readonly _onDidRefresh = new Emitter<ReadonlyArray<Diagnostic>>()
6464
public readonly onDidRefresh: Event<ReadonlyArray<Diagnostic>> = this._onDidRefresh.event
6565
constructor(

src/events.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ class Events {
313313
public on(event: 'VimResized', handler: (columns: number, lines: number) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
314314
public on(event: 'Command', handler: (name: string) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
315315
public on(event: 'MenuPopupChanged', handler: (event: PopupChangeEvent, cursorline: number) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
316-
public on(event: 'CompleteDone', handler: (item: CompleteDoneItem | {}) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
316+
public on(event: 'CompleteDone', handler: (item: CompleteDoneItem | object) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
317317
public on(event: 'CompleteStop', handler: (kind: CompleteFinishKind) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
318318
public on(event: 'InsertCharPre', handler: (character: string, bufnr: number) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
319319
public on(event: 'FileType', handler: (filetype: string, bufnr: number) => Result, thisArg?: any, disposables?: Disposable[]): Disposable
@@ -350,13 +350,13 @@ class Events {
350350
Promise.resolve(handler.apply(thisArg ?? null, args)).then(() => {
351351
onFinish()
352352
resolve(undefined)
353-
}, e => {
353+
}, (e: Error) => {
354354
onFinish()
355355
reject(e)
356356
})
357357
} catch (e) {
358358
onFinish()
359-
reject(e)
359+
reject(e as Error)
360360
}
361361
})
362362
Error.captureStackTrace(wrappedhandler)

src/extension/manager.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ export class ExtensionManager {
468468
resolve(res)
469469
} catch (e) {
470470
logger.error(`Error on active extension ${id}:`, e)
471-
reject(e)
471+
reject(e as Error)
472472
}
473473
})
474474
return result

src/extension/stat.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export class ExtensionStat {
7474
}
7575
curr.disabled = Array.from(this.disabled)
7676
curr.locked = Array.from(this.locked)
77-
curr.lastUpdate - obj.lastUpdate
77+
curr.lastUpdate = obj.lastUpdate
7878
fs.unlinkSync(db)
7979
changed = true
8080
} else {

src/handler/colors/colorBuffer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const debounceTime = getConditionValue(200, 10)
3030
export default class ColorBuffer implements SyncItem {
3131
private _colors: ColorInformation[] = []
3232
private tokenSource: CancellationTokenSource | undefined
33-
public highlight: Function & { clear(): void }
33+
public highlight: (() => void) & { clear(): void }
3434
private _enable: boolean | undefined
3535
// last highlight version
3636
constructor(

src/handler/links.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class LinkBuffer implements SyncItem {
149149
private tokenSource: CancellationTokenSource | undefined
150150
private _config: LinkConfig | undefined
151151
public links: DocumentLink[] = []
152-
public fetchLinks: Function & { clear(): void }
152+
public fetchLinks: (() => void) & { clear(): void }
153153
// last highlight version
154154
constructor(public readonly doc: Document) {
155155
this.fetchLinks = debounce(() => {

0 commit comments

Comments
 (0)