diff --git a/.eslintrc.js b/.eslintrc.js index 8dd992a447..496c42c5c4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -108,6 +108,9 @@ module.exports = { 'semi': ['error', 'always'], 'eol-last': ['error', 'always'], 'quotes': ['error', 'single'], + + // Note that "indent" only applies to JavaScript files. See + // https://github.com/laurent22/joplin/issues/8360 'indent': ['error', 'tab'], 'comma-dangle': ['error', { 'arrays': 'always-multiline', @@ -184,6 +187,12 @@ module.exports = { 'project': './tsconfig.eslint.json', }, 'rules': { + '@typescript-eslint/indent': ['error', 'tab', { + 'ignoredNodes': [ + // See https://github.com/typescript-eslint/typescript-eslint/issues/1824 + 'TSUnionType', + ], + }], '@typescript-eslint/ban-ts-comment': ['error'], '@typescript-eslint/ban-types': 'error', '@typescript-eslint/explicit-member-accessibility': ['error'], diff --git a/packages/app-mobile/components/NoteEditor/SearchPanel.tsx b/packages/app-mobile/components/NoteEditor/SearchPanel.tsx index 5a73e6dfe4..f7c810eeb5 100644 --- a/packages/app-mobile/components/NoteEditor/SearchPanel.tsx +++ b/packages/app-mobile/components/NoteEditor/SearchPanel.tsx @@ -25,9 +25,9 @@ export const defaultSearchState: SearchState = { }; export interface SearchPanelProps { - searchControl: SearchControl; - searchState: SearchState; - editorSettings: EditorSettings; + searchControl: SearchControl; + searchState: SearchState; + editorSettings: EditorSettings; } interface ActionButtonProps { diff --git a/packages/app-mobile/components/NoteEditor/types.ts b/packages/app-mobile/components/NoteEditor/types.ts index 3bddcdf14d..5c62e4a242 100644 --- a/packages/app-mobile/components/NoteEditor/types.ts +++ b/packages/app-mobile/components/NoteEditor/types.ts @@ -15,9 +15,9 @@ export interface EditorSettings { // [themeStyle(themeId: number)] doesn't work. As such, we need both // the [themeId] and [themeData]. themeId: number; - themeData: Theme; + themeData: Theme; - katexEnabled: boolean; + katexEnabled: boolean; spellcheckEnabled: boolean; } @@ -41,14 +41,14 @@ export interface SelectionChangeEvent { } export interface SearchControl { - findNext(): void; - findPrevious(): void; - replaceCurrent(): void; - replaceAll(): void; + findNext(): void; + findPrevious(): void; + replaceCurrent(): void; + replaceAll(): void; setSearchState(state: SearchState): void; - showSearch(): void; - hideSearch(): void; + showSearch(): void; + hideSearch(): void; } export interface SearchState { @@ -57,7 +57,7 @@ export interface SearchState { searchText: string; replaceText: string; - dialogVisible: boolean; + dialogVisible: boolean; } // Possible types of lists in the editor diff --git a/packages/app-mobile/components/getResponsiveValue.ts b/packages/app-mobile/components/getResponsiveValue.ts index 55b77bee08..5a82307bbe 100644 --- a/packages/app-mobile/components/getResponsiveValue.ts +++ b/packages/app-mobile/components/getResponsiveValue.ts @@ -17,15 +17,15 @@ import { Dimensions } from 'react-native'; export interface ValueMap { // Value to use on small-width displays - sm?: number; + sm?: number; // Value to use on medium-width displays - md?: number; + md?: number; // Value to use on large-width displays - lg?: number; + lg?: number; // Value to use on extra-large width displays - xl?: number; + xl?: number; // Value to use on extra-extra-large width displays - xxl?: number; + xxl?: number; } export default function getResponsiveValue(valueMap: ValueMap): number { diff --git a/packages/app-mobile/utils/setupNotifications.ts b/packages/app-mobile/utils/setupNotifications.ts index 5c032b6413..73d72fb65d 100644 --- a/packages/app-mobile/utils/setupNotifications.ts +++ b/packages/app-mobile/utils/setupNotifications.ts @@ -3,8 +3,8 @@ import { Dispatch } from 'redux'; const { NativeEventEmitter, NativeModules, Platform } = require('react-native'); interface NotificationData { - joplinNotificationId: string; - noteId: string; + joplinNotificationId: string; + noteId: string; } export default async (dispatch: Dispatch) => { diff --git a/packages/lib/EventDispatcher.test.ts b/packages/lib/EventDispatcher.test.ts index 3e74f3ab24..26d289a350 100644 --- a/packages/lib/EventDispatcher.test.ts +++ b/packages/lib/EventDispatcher.test.ts @@ -1,9 +1,9 @@ import EventDispatcher from './EventDispatcher'; enum TestKey { - FooEvent, - BarEvent, - BazEvent, + FooEvent, + BarEvent, + BazEvent, } describe('EventDispatcher', () => { diff --git a/packages/lib/callbackUrlUtils.ts b/packages/lib/callbackUrlUtils.ts index f5eb3f9654..87347138e0 100644 --- a/packages/lib/callbackUrlUtils.ts +++ b/packages/lib/callbackUrlUtils.ts @@ -19,14 +19,14 @@ export function getTagCallbackUrl(tagId: string) { } export const enum CallbackUrlCommand { - OpenNote = 'openNote', - OpenFolder = 'openFolder', - OpenTag = 'openTag', + OpenNote = 'openNote', + OpenFolder = 'openFolder', + OpenTag = 'openTag', } export interface CallbackUrlInfo { - command: CallbackUrlCommand; - params: Record; + command: CallbackUrlCommand; + params: Record; } export function parseCallbackUrl(s: string): CallbackUrlInfo { diff --git a/packages/lib/hooks/useElementSize.ts b/packages/lib/hooks/useElementSize.ts index 5ec32b3bb9..6838331ef3 100644 --- a/packages/lib/hooks/useElementSize.ts +++ b/packages/lib/hooks/useElementSize.ts @@ -3,8 +3,8 @@ const { useCallback, useEffect, useState } = shim.react(); import useEventListener from './useEventListener'; interface Size { - width: number; - height: number; + width: number; + height: number; } function useElementSize(elementRef: any): Size { diff --git a/packages/lib/migrations/42.ts b/packages/lib/migrations/42.ts index 64c2795f4b..f752da5986 100644 --- a/packages/lib/migrations/42.ts +++ b/packages/lib/migrations/42.ts @@ -2,7 +2,7 @@ import Setting from '../models/Setting'; import checkProviderIsSupported from '../utils/webDAVUtils'; interface Script { - exec: ()=> Promise; + exec: ()=> Promise; } const script: Script =