From 48ef6db4a56c6d6de85dd2f079e20ea60d5871f0 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Fri, 30 Jun 2023 10:22:47 +0100 Subject: [PATCH] Tools: Apply @typescript-eslint/ban-ts-comment rule --- .eslintrc.js | 2 +- .../app-desktop/gui/MainScreen/MainScreen.tsx | 2 -- .../ShareFolderDialog/ShareFolderDialog.tsx | 2 +- packages/app-desktop/gui/ShareNoteDialog.tsx | 2 +- packages/app-desktop/plugins/GotoAnything.tsx | 3 +- .../services/plugins/PluginRunner.ts | 17 +++++----- packages/app-mobile/root.tsx | 33 ++++++++----------- packages/fork-htmlparser2/.eslintrc.json | 4 +-- packages/fork-htmlparser2/package.json | 1 - .../fork-htmlparser2/src/CollectingHandler.ts | 6 ++-- packages/fork-htmlparser2/src/FeedHandler.ts | 3 +- packages/fork-htmlparser2/src/Parser.ts | 9 ++--- packages/fork-htmlparser2/src/Tokenizer.ts | 6 ++-- .../src/__fixtures__/test-helper.ts | 3 +- packages/lib/hooks/useEventListener.ts | 3 +- .../lib/services/ResourceEditWatcher/index.ts | 3 +- .../interop/InteropService_Exporter_Base.ts | 12 +++---- .../interop/InteropService_Importer_Base.ts | 3 +- packages/lib/services/share/reducer.ts | 2 +- packages/react-native-saf-x/src/index.ts | 3 +- packages/renderer/MdToHtml/rules/fence.ts | 3 +- yarn.lock | 3 +- 22 files changed, 47 insertions(+), 78 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 57d9742f60..dec4ec4e7d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -183,7 +183,7 @@ module.exports = { 'project': './tsconfig.eslint.json', }, 'rules': { - + '@typescript-eslint/ban-ts-comment': ['error'], '@typescript-eslint/explicit-member-accessibility': ['error'], '@typescript-eslint/type-annotation-spacing': ['error', { 'before': false, 'after': true }], '@typescript-eslint/array-type': 'error', diff --git a/packages/app-desktop/gui/MainScreen/MainScreen.tsx b/packages/app-desktop/gui/MainScreen/MainScreen.tsx index 55af1b9b74..f5bf87737c 100644 --- a/packages/app-desktop/gui/MainScreen/MainScreen.tsx +++ b/packages/app-desktop/gui/MainScreen/MainScreen.tsx @@ -846,9 +846,7 @@ class MainScreenComponent extends React.Component { {this.renderPluginDialogs()} {noteContentPropertiesDialogOptions.visible && } {notePropertiesDialogOptions.visible && } - {/* @ts-ignore */} {shareNoteDialogOptions.visible && } - {/* @ts-ignore */} {shareFolderDialogOptions.visible && } diff --git a/packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx b/packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx index 8bae02050e..d051463c86 100644 --- a/packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx +++ b/packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx @@ -366,4 +366,4 @@ const mapStateToProps = (state: State) => { }; }; -export default connect(mapStateToProps)(ShareFolderDialog as any); +export default connect(mapStateToProps)(ShareFolderDialog); diff --git a/packages/app-desktop/gui/ShareNoteDialog.tsx b/packages/app-desktop/gui/ShareNoteDialog.tsx index 3b5469afbe..ba78948ae7 100644 --- a/packages/app-desktop/gui/ShareNoteDialog.tsx +++ b/packages/app-desktop/gui/ShareNoteDialog.tsx @@ -234,4 +234,4 @@ const mapStateToProps = (state: AppState) => { }; }; -export default connect(mapStateToProps)(ShareNoteDialog as any); +export default connect(mapStateToProps)(ShareNoteDialog); diff --git a/packages/app-desktop/plugins/GotoAnything.tsx b/packages/app-desktop/plugins/GotoAnything.tsx index 4667630983..d031343825 100644 --- a/packages/app-desktop/plugins/GotoAnything.tsx +++ b/packages/app-desktop/plugins/GotoAnything.tsx @@ -320,8 +320,7 @@ class Dialog extends React.PureComponent { const searchKeywords = await this.keywords(searchQuery); const notes = await Note.byIds(results.map((result: any) => result.id).slice(0, limit), { fields: ['id', 'body', 'markup_language', 'is_todo', 'todo_completed'] }); // Can't make any sense of this code so... - // @ts-ignore - const notesById = notes.reduce((obj, { id, body, markup_language }) => ((obj[[id]] = { id, body, markup_language }), obj), {}); + const notesById = notes.reduce((obj, { id, body, markup_language }) => ((obj[[id] as any] = { id, body, markup_language }), obj), {}); // Filter out search results that are associated with non-existing notes. // https://github.com/laurent22/joplin/issues/5417 diff --git a/packages/app-desktop/services/plugins/PluginRunner.ts b/packages/app-desktop/services/plugins/PluginRunner.ts index 6112bd94e6..90ec40b526 100644 --- a/packages/app-desktop/services/plugins/PluginRunner.ts +++ b/packages/app-desktop/services/plugins/PluginRunner.ts @@ -7,7 +7,7 @@ import Setting from '@joplin/lib/models/Setting'; import { EventHandlers } from '@joplin/lib/services/plugins/utils/mapEventHandlersToIds'; import shim from '@joplin/lib/shim'; import Logger from '@joplin/lib/Logger'; -import BackOffHandler from './BackOffHandler'; +// import BackOffHandler from './BackOffHandler'; const ipcRenderer = require('electron').ipcRenderer; const logger = Logger.create('PluginRunner'); @@ -84,7 +84,7 @@ function mapEventIdsToHandlers(pluginId: string, arg: any) { export default class PluginRunner extends BasePluginRunner { protected eventHandlers_: EventHandlers = {}; - private backOffHandlers_: Record = {}; + // private backOffHandlers_: Record = {}; public constructor() { super(); @@ -97,13 +97,12 @@ export default class PluginRunner extends BasePluginRunner { return cb(...args); } - // @ts-ignore - private backOffHandler(pluginId: string): BackOffHandler { - if (!this.backOffHandlers_[pluginId]) { - this.backOffHandlers_[pluginId] = new BackOffHandler(pluginId); - } - return this.backOffHandlers_[pluginId]; - } + // private backOffHandler(pluginId: string): BackOffHandler { + // if (!this.backOffHandlers_[pluginId]) { + // this.backOffHandlers_[pluginId] = new BackOffHandler(pluginId); + // } + // return this.backOffHandlers_[pluginId]; + // } public async run(plugin: Plugin, pluginApi: Global) { const scriptPath = `${Setting.value('tempDir')}/plugin_${plugin.id}.js`; diff --git a/packages/app-mobile/root.tsx b/packages/app-mobile/root.tsx index e1fc3f52fe..b0ed0b302a 100644 --- a/packages/app-mobile/root.tsx +++ b/packages/app-mobile/root.tsx @@ -230,27 +230,23 @@ const appReducer = (state = appDefaultState, action: any) => { try { switch (action.type) { - // @ts-ignore case 'NAV_BACK': - - { - if (!navHistory.length) break; - - let newAction = null; - while (navHistory.length) { - newAction = navHistory.pop(); - if (newAction.routeName !== state.route.routeName) break; - } - - action = newAction ? newAction : navHistory.pop(); - - historyGoingBack = true; - } - - // Fall throught - case 'NAV_GO': + if (action.type === 'NAV_BACK') { + if (!navHistory.length) break; + + let newAction = null; + while (navHistory.length) { + newAction = navHistory.pop(); + if (newAction.routeName !== state.route.routeName) break; + } + + action = newAction ? newAction : navHistory.pop(); + + historyGoingBack = true; + } + { const currentRoute = state.route; @@ -426,7 +422,6 @@ async function initialize(dispatch: Function) { value: profileConfig, }); - // @ts-ignore Setting.setConstant('env', __DEV__ ? 'dev' : 'prod'); Setting.setConstant('appId', 'net.cozic.joplin-mobile'); Setting.setConstant('appType', 'mobile'); diff --git a/packages/fork-htmlparser2/.eslintrc.json b/packages/fork-htmlparser2/.eslintrc.json index 70fd13e7d5..67549aec03 100644 --- a/packages/fork-htmlparser2/.eslintrc.json +++ b/packages/fork-htmlparser2/.eslintrc.json @@ -2,9 +2,7 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "prettier", - "prettier/@typescript-eslint" + "plugin:@typescript-eslint/recommended" ], "env": { "node": true, diff --git a/packages/fork-htmlparser2/package.json b/packages/fork-htmlparser2/package.json index e57d34a5b4..b64101d098 100644 --- a/packages/fork-htmlparser2/package.json +++ b/packages/fork-htmlparser2/package.json @@ -51,7 +51,6 @@ "@typescript-eslint/parser": "5.59.0", "coveralls": "3.1.1", "eslint": "8.39.0", - "eslint-config-prettier": "8.8.0", "jest": "29.5.0", "prettier": "2.8.8", "ts-jest": "29.1.0", diff --git a/packages/fork-htmlparser2/src/CollectingHandler.ts b/packages/fork-htmlparser2/src/CollectingHandler.ts index 093dbed0d0..bd076086e7 100644 --- a/packages/fork-htmlparser2/src/CollectingHandler.ts +++ b/packages/fork-htmlparser2/src/CollectingHandler.ts @@ -8,8 +8,7 @@ export class CollectingHandler extends MultiplexHandler { constructor(cbs: Partial = {}) { super((name, ...args) => { this.events.push([name, ...args]); - // @ts-ignore - if (this._cbs[name]) this._cbs[name](...args); + if (this._cbs[name]) (this._cbs as any)[name](...args); }); this._cbs = cbs; @@ -31,8 +30,7 @@ export class CollectingHandler extends MultiplexHandler { continue; } - // @ts-ignore - this._cbs[name](...args); + (this._cbs as any)[name](...args); } } } diff --git a/packages/fork-htmlparser2/src/FeedHandler.ts b/packages/fork-htmlparser2/src/FeedHandler.ts index 0d40a199ef..c0a4248e78 100644 --- a/packages/fork-htmlparser2/src/FeedHandler.ts +++ b/packages/fork-htmlparser2/src/FeedHandler.ts @@ -179,8 +179,7 @@ function addConditionally( recurse = false ) { const tmp = fetch(what, where, recurse); - // @ts-ignore - if (tmp) obj[prop] = tmp; + if (tmp) (obj as any)[prop] = tmp; } function isValidFeed(value: string) { diff --git a/packages/fork-htmlparser2/src/Parser.ts b/packages/fork-htmlparser2/src/Parser.ts index 7b6830bffc..ca5a174c62 100644 --- a/packages/fork-htmlparser2/src/Parser.ts +++ b/packages/fork-htmlparser2/src/Parser.ts @@ -225,8 +225,7 @@ export class Parser extends EventEmitter { //Tokenizer event handlers ontext(data: string) { this._updatePosition(1); - // @ts-ignore - this.endIndex--; + this.endIndex = this.endIndex === null ? 0 : this.endIndex + 1; if (this._cbs.ontext) this._cbs.ontext(data); } @@ -241,8 +240,7 @@ export class Parser extends EventEmitter { ) { for ( let el; - // @ts-ignore - openImpliesClose[name].has( + (openImpliesClose as any)[name].has( (el = this._stack[this._stack.length - 1]) ); this.onclosetag(el) @@ -305,8 +303,7 @@ export class Parser extends EventEmitter { if (pos !== -1) { if (this._cbs.onclosetag) { pos = this._stack.length - pos; - // @ts-ignore - while (pos--) this._cbs.onclosetag(this._stack.pop()); + while (pos--) this._cbs.onclosetag((this._stack as any).pop()); } else this._stack.length = pos; } else if (name === "p" && !this._options.xmlMode) { this.onopentagname(name); diff --git a/packages/fork-htmlparser2/src/Tokenizer.ts b/packages/fork-htmlparser2/src/Tokenizer.ts index 3a5761898d..af44d85395 100644 --- a/packages/fork-htmlparser2/src/Tokenizer.ts +++ b/packages/fork-htmlparser2/src/Tokenizer.ts @@ -563,8 +563,7 @@ export default class Tokenizer { ), map = this._xmlMode ? xmlMap : entityMap; if (Object.prototype.hasOwnProperty.call(map, entity)) { - // @ts-ignore - this._emitPartial(map[entity]); + this._emitPartial((map as any)[entity]); this._sectionStart = this._index + 1; } } @@ -578,8 +577,7 @@ export default class Tokenizer { // The min length of legacy entities is 2 const entity = this._buffer.substr(start, limit); if (Object.prototype.hasOwnProperty.call(legacyMap, entity)) { - // @ts-ignore - this._emitPartial(legacyMap[entity]); + this._emitPartial((legacyMap as any)[entity]); this._sectionStart += limit + 1; return; } else { diff --git a/packages/fork-htmlparser2/src/__fixtures__/test-helper.ts b/packages/fork-htmlparser2/src/__fixtures__/test-helper.ts index 5f474471d4..d46412c5fc 100644 --- a/packages/fork-htmlparser2/src/__fixtures__/test-helper.ts +++ b/packages/fork-htmlparser2/src/__fixtures__/test-helper.ts @@ -51,8 +51,7 @@ function eventReducer(events: Event[], arr: [string, ...unknown[]]): Event[] { events[events.length - 1].event === "text" ) { // Combine text nodes - // @ts-ignore - events[events.length - 1].data[0] += arr[1]; + (events as any)[events.length - 1].data[0] += arr[1]; } else { events.push({ event: arr[0].substr(2), diff --git a/packages/lib/hooks/useEventListener.ts b/packages/lib/hooks/useEventListener.ts index f8f0420d7d..a6d4e577b6 100644 --- a/packages/lib/hooks/useEventListener.ts +++ b/packages/lib/hooks/useEventListener.ts @@ -7,7 +7,7 @@ function useEventListener( element?: any ) { // Create a ref that stores handler - const savedHandler = useRef(); + const savedHandler = useRef(); useEffect(() => { // Define the listening target @@ -25,7 +25,6 @@ function useEventListener( const eventListener = (event: Event) => { // eslint-disable-next-line no-extra-boolean-cast if (!!savedHandler?.current) { - // @ts-ignore savedHandler.current(event); } }; diff --git a/packages/lib/services/ResourceEditWatcher/index.ts b/packages/lib/services/ResourceEditWatcher/index.ts index da05535966..9971605fb4 100644 --- a/packages/lib/services/ResourceEditWatcher/index.ts +++ b/packages/lib/services/ResourceEditWatcher/index.ts @@ -192,8 +192,7 @@ export default class ResourceEditWatcher { // that event is not event triggered. // https://github.com/laurent22/joplin/issues/3407 // - // @ts-ignore Leave unused path variable - this.watcher_.on('raw', (event: string, path: string, options: any) => { + this.watcher_.on('raw', (event: string, _path: string, options: any) => { const watchedPath = options.watchedPath ? toSystemSlashes(options.watchedPath, 'linux') : ''; this.logger().debug(`ResourceEditWatcher: Raw event: ${event}: ${watchedPath}`); diff --git a/packages/lib/services/interop/InteropService_Exporter_Base.ts b/packages/lib/services/interop/InteropService_Exporter_Base.ts index 6702722ede..d82b5b7e0c 100644 --- a/packages/lib/services/interop/InteropService_Exporter_Base.ts +++ b/packages/lib/services/interop/InteropService_Exporter_Base.ts @@ -6,14 +6,10 @@ export default class InteropService_Exporter_Base { private context_: any = {}; private metadata_: any = {}; - // @ts-ignore - public async init(destDir: string, options: any = {}) {} - // @ts-ignore - public async prepareForProcessingItemType(itemType: number, itemsToExport: any[]) {} - // @ts-ignore - public async processItem(itemType: number, item: any) {} - // @ts-ignore - public async processResource(resource: any, filePath: string) {} + public async init(_destDir: string, _options: any = {}) {} + public async prepareForProcessingItemType(_itemType: number, _itemsToExport: any[]) {} + public async processItem(_itemType: number, _item: any) {} + public async processResource(_resource: any, _filePath: string) {} public async close() {} public setMetadata(md: any) { diff --git a/packages/lib/services/interop/InteropService_Importer_Base.ts b/packages/lib/services/interop/InteropService_Importer_Base.ts index c868ea3ae9..1f86543623 100644 --- a/packages/lib/services/interop/InteropService_Importer_Base.ts +++ b/packages/lib/services/interop/InteropService_Importer_Base.ts @@ -23,8 +23,7 @@ export default class InteropService_Importer_Base { this.options_ = options; } - // @ts-ignore - public async exec(result: ImportExportResult): Promise {} + public async exec(_result: ImportExportResult): Promise { return null; } protected async temporaryDirectory_(createIt: boolean) { const md5 = require('md5'); diff --git a/packages/lib/services/share/reducer.ts b/packages/lib/services/share/reducer.ts index e840d1f2f3..c10276f12d 100644 --- a/packages/lib/services/share/reducer.ts +++ b/packages/lib/services/share/reducer.ts @@ -39,7 +39,7 @@ export interface ShareInvitation { export interface State { shares: StateShare[]; - shareUsers: Record; + shareUsers: Record; shareInvitations: ShareInvitation[]; processingShareInvitationResponse: boolean; } diff --git a/packages/react-native-saf-x/src/index.ts b/packages/react-native-saf-x/src/index.ts index 1070397488..9c7edcb89a 100644 --- a/packages/react-native-saf-x/src/index.ts +++ b/packages/react-native-saf-x/src/index.ts @@ -22,8 +22,7 @@ if (Platform.OS === 'android') { ) ) as SafxInterface; } else { - // @ts-ignore - SafX = {}; + SafX = {} as any; } export type Encoding = 'utf8' | 'base64' | 'ascii'; diff --git a/packages/renderer/MdToHtml/rules/fence.ts b/packages/renderer/MdToHtml/rules/fence.ts index 5e58ad4693..0105d3027f 100644 --- a/packages/renderer/MdToHtml/rules/fence.ts +++ b/packages/renderer/MdToHtml/rules/fence.ts @@ -9,8 +9,7 @@ // the code. function plugin(markdownIt: any) { - // @ts-ignore: Keep the function signature as-is despite unusued arguments - markdownIt.renderer.rules.fence = function(tokens: any[], idx: number, options: any, env: any, slf: any) { + markdownIt.renderer.rules.fence = function(tokens: any[], idx: number, options: any, _env: any, slf: any) { let token = tokens[idx], info = token.info ? markdownIt.utils.unescapeAll(token.info).trim() : '', langName = '', diff --git a/yarn.lock b/yarn.lock index 33c5e1dc23..4e931e17ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4488,7 +4488,6 @@ __metadata: domutils: 3.1.0 entities: 2.2.0 eslint: 8.39.0 - eslint-config-prettier: 8.8.0 jest: 29.5.0 prettier: 2.8.8 ts-jest: 29.1.0 @@ -15365,7 +15364,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-prettier@npm:8.8.0, eslint-config-prettier@npm:>=8.0.0": +"eslint-config-prettier@npm:>=8.0.0": version: 8.8.0 resolution: "eslint-config-prettier@npm:8.8.0" peerDependencies: