From 9d2739f050f23880d125489669c36bca97ec686c Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Mon, 9 Mar 2020 19:45:00 -0700 Subject: [PATCH] js: Declare 'use strict' on all scripts and no modules. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And enable the import/unambiguous ESLint rule as a check on our partition between scripts and modules. After this commit, if you add a new file and get this error: ✖ 1:1 This module could be parsed as a valid script. import/unambiguous * For a module, add an `import` or `export` declaration to make the file unambiguously a module (the empty `export {};` declaration suffices). * For a script, add the file to the xo overrides section of package.json that marks it "sourceType": "script", and add a 'use strict' declaration. Signed-off-by: Anders Kaseorg --- app/main/autoupdater.ts | 1 - app/main/index.ts | 1 - app/main/menu.ts | 1 - app/main/startup.ts | 1 - app/renderer/js/components/base.ts | 2 -- app/renderer/js/components/functional-tab.ts | 2 -- app/renderer/js/components/server-tab.ts | 2 -- app/renderer/js/components/tab.ts | 2 -- app/renderer/js/components/webview.ts | 1 - app/renderer/js/main.ts | 2 -- .../js/notification/darwin-notifications.ts | 1 - .../js/notification/default-notification.ts | 2 -- app/renderer/js/notification/index.ts | 2 -- app/renderer/js/pages/network.ts | 2 -- .../js/pages/preference/badge-settings.ts | 1 - app/renderer/js/pages/preference/base-section.ts | 2 -- .../js/pages/preference/connected-org-section.ts | 2 -- .../js/pages/preference/general-section.ts | 1 - app/renderer/js/pages/preference/nav.ts | 2 -- .../js/pages/preference/network-section.ts | 2 -- .../js/pages/preference/new-server-form.ts | 2 -- app/renderer/js/pages/preference/preference.ts | 2 -- .../js/pages/preference/server-info-form.ts | 2 -- .../js/pages/preference/servers-section.ts | 2 -- .../js/pages/preference/shortcuts-section.ts | 2 -- app/renderer/js/preload.ts | 2 -- app/renderer/js/spellchecker.ts | 2 -- app/renderer/js/tray.ts | 1 - app/renderer/js/utils/certificate-util.ts | 2 -- app/renderer/js/utils/common-util.ts | 2 -- app/renderer/js/utils/config-util.ts | 1 - app/renderer/js/utils/dnd-util.ts | 2 -- app/renderer/js/utils/domain-util.ts | 1 - app/renderer/js/utils/link-util.ts | 2 -- app/renderer/js/utils/linux-update-util.ts | 1 - app/renderer/js/utils/proxy-util.ts | 2 -- app/renderer/js/utils/system-util.ts | 1 - app/renderer/js/utils/translation-util.ts | 2 -- package.json | 16 ++++++++++++++++ scripts/notarize.js | 1 + tools/locale-helper/index.js | 1 + tools/reinstall-node-modules.js | 1 + typings.d.ts | 1 + 43 files changed, 20 insertions(+), 63 deletions(-) diff --git a/app/main/autoupdater.ts b/app/main/autoupdater.ts index 3e2635e1..b416e44e 100644 --- a/app/main/autoupdater.ts +++ b/app/main/autoupdater.ts @@ -1,4 +1,3 @@ -'use strict'; import { app, dialog, shell } from 'electron'; import { autoUpdater } from 'electron-updater'; import { linuxUpdateNotification } from './linuxupdater'; // Required only in case of linux diff --git a/app/main/index.ts b/app/main/index.ts index d79b1eeb..791e16db 100644 --- a/app/main/index.ts +++ b/app/main/index.ts @@ -1,4 +1,3 @@ -'use strict'; import { sentryInit } from '../renderer/js/utils/sentry-util'; import { appUpdater } from './autoupdater'; import { setAutoLaunch } from './startup'; diff --git a/app/main/menu.ts b/app/main/menu.ts index 09bacdc2..dfed267b 100644 --- a/app/main/menu.ts +++ b/app/main/menu.ts @@ -1,4 +1,3 @@ -'use strict'; import { app, shell, BrowserWindow, Menu, dialog } from 'electron'; import { appUpdater } from './autoupdater'; diff --git a/app/main/startup.ts b/app/main/startup.ts index 10889c45..c60c3cec 100644 --- a/app/main/startup.ts +++ b/app/main/startup.ts @@ -1,4 +1,3 @@ -'use strict'; import { app } from 'electron'; import AutoLaunch from 'auto-launch'; diff --git a/app/renderer/js/components/base.ts b/app/renderer/js/components/base.ts index bd8ee16b..abe796e0 100644 --- a/app/renderer/js/components/base.ts +++ b/app/renderer/js/components/base.ts @@ -1,5 +1,3 @@ -'use strict'; - export default class BaseComponent { generateNodeFromTemplate(template: string): Element | null { const wrapper = document.createElement('div'); diff --git a/app/renderer/js/components/functional-tab.ts b/app/renderer/js/components/functional-tab.ts index c35e8203..ca64c1cd 100644 --- a/app/renderer/js/components/functional-tab.ts +++ b/app/renderer/js/components/functional-tab.ts @@ -1,5 +1,3 @@ -'use strict'; - import Tab from './tab'; export default class FunctionalTab extends Tab { diff --git a/app/renderer/js/components/server-tab.ts b/app/renderer/js/components/server-tab.ts index 2d75df11..f74b42ca 100644 --- a/app/renderer/js/components/server-tab.ts +++ b/app/renderer/js/components/server-tab.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; import Tab from './tab'; diff --git a/app/renderer/js/components/tab.ts b/app/renderer/js/components/tab.ts index 84d8a9ab..932f1200 100644 --- a/app/renderer/js/components/tab.ts +++ b/app/renderer/js/components/tab.ts @@ -1,5 +1,3 @@ -'use strict'; - import WebView from './webview'; import BaseComponent from './base'; diff --git a/app/renderer/js/components/webview.ts b/app/renderer/js/components/webview.ts index 878d2abf..56ec92b8 100644 --- a/app/renderer/js/components/webview.ts +++ b/app/renderer/js/components/webview.ts @@ -1,4 +1,3 @@ -'use strict'; import { remote } from 'electron'; import path from 'path'; diff --git a/app/renderer/js/main.ts b/app/renderer/js/main.ts index 07abc2d3..1fa19b38 100644 --- a/app/renderer/js/main.ts +++ b/app/renderer/js/main.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer, remote, clipboard, shell } from 'electron'; import { feedbackHolder } from './feedback'; diff --git a/app/renderer/js/notification/darwin-notifications.ts b/app/renderer/js/notification/darwin-notifications.ts index 2244fc15..e9686b7f 100644 --- a/app/renderer/js/notification/darwin-notifications.ts +++ b/app/renderer/js/notification/darwin-notifications.ts @@ -1,4 +1,3 @@ -'use strict'; import { ipcRenderer } from 'electron'; import { appId, customReply, focusCurrentServer, parseReply, setupReply diff --git a/app/renderer/js/notification/default-notification.ts b/app/renderer/js/notification/default-notification.ts index 4cde54a7..5ac32d89 100644 --- a/app/renderer/js/notification/default-notification.ts +++ b/app/renderer/js/notification/default-notification.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; import { focusCurrentServer } from './helpers'; diff --git a/app/renderer/js/notification/index.ts b/app/renderer/js/notification/index.ts index 549063cf..ed2e059a 100644 --- a/app/renderer/js/notification/index.ts +++ b/app/renderer/js/notification/index.ts @@ -1,5 +1,3 @@ -'use strict'; - import { remote } from 'electron'; import * as params from '../utils/params-util'; import { appId, loadBots } from './helpers'; diff --git a/app/renderer/js/pages/network.ts b/app/renderer/js/pages/network.ts index 9a548115..8f5a408a 100644 --- a/app/renderer/js/pages/network.ts +++ b/app/renderer/js/pages/network.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; export function init($reconnectButton: Element, $settingsButton: Element): void { diff --git a/app/renderer/js/pages/preference/badge-settings.ts b/app/renderer/js/pages/preference/badge-settings.ts index c131c76f..43e1445f 100644 --- a/app/renderer/js/pages/preference/badge-settings.ts +++ b/app/renderer/js/pages/preference/badge-settings.ts @@ -1,4 +1,3 @@ -'use strict'; import electron, { app } from 'electron'; import * as ConfigUtil from '../../utils/config-util'; diff --git a/app/renderer/js/pages/preference/base-section.ts b/app/renderer/js/pages/preference/base-section.ts index 115c6bde..2f82cbcf 100644 --- a/app/renderer/js/pages/preference/base-section.ts +++ b/app/renderer/js/pages/preference/base-section.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; import BaseComponent from '../../components/base'; diff --git a/app/renderer/js/pages/preference/connected-org-section.ts b/app/renderer/js/pages/preference/connected-org-section.ts index fd11c0a4..719d577c 100644 --- a/app/renderer/js/pages/preference/connected-org-section.ts +++ b/app/renderer/js/pages/preference/connected-org-section.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; import BaseSection from './base-section'; diff --git a/app/renderer/js/pages/preference/general-section.ts b/app/renderer/js/pages/preference/general-section.ts index 8fc2cb3f..0eb9b4be 100644 --- a/app/renderer/js/pages/preference/general-section.ts +++ b/app/renderer/js/pages/preference/general-section.ts @@ -1,4 +1,3 @@ -'use strict'; import { ipcRenderer, remote, OpenDialogOptions } from 'electron'; import path from 'path'; diff --git a/app/renderer/js/pages/preference/nav.ts b/app/renderer/js/pages/preference/nav.ts index e3edc41e..0ebff90a 100644 --- a/app/renderer/js/pages/preference/nav.ts +++ b/app/renderer/js/pages/preference/nav.ts @@ -1,5 +1,3 @@ -'use strict'; - import BaseComponent from '../../components/base'; import * as t from '../../utils/translation-util'; diff --git a/app/renderer/js/pages/preference/network-section.ts b/app/renderer/js/pages/preference/network-section.ts index cd09392b..2ab23ca0 100644 --- a/app/renderer/js/pages/preference/network-section.ts +++ b/app/renderer/js/pages/preference/network-section.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; import BaseSection from './base-section'; diff --git a/app/renderer/js/pages/preference/new-server-form.ts b/app/renderer/js/pages/preference/new-server-form.ts index db971bfb..1ea9d4f8 100644 --- a/app/renderer/js/pages/preference/new-server-form.ts +++ b/app/renderer/js/pages/preference/new-server-form.ts @@ -1,5 +1,3 @@ -'use strict'; - import { shell, ipcRenderer } from 'electron'; import BaseComponent from '../../components/base'; diff --git a/app/renderer/js/pages/preference/preference.ts b/app/renderer/js/pages/preference/preference.ts index a463e52c..023e6cbd 100644 --- a/app/renderer/js/pages/preference/preference.ts +++ b/app/renderer/js/pages/preference/preference.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer } from 'electron'; import BaseComponent from '../../components/base'; diff --git a/app/renderer/js/pages/preference/server-info-form.ts b/app/renderer/js/pages/preference/server-info-form.ts index b5f6d907..94564d5f 100644 --- a/app/renderer/js/pages/preference/server-info-form.ts +++ b/app/renderer/js/pages/preference/server-info-form.ts @@ -1,5 +1,3 @@ -'use strict'; - import { remote, ipcRenderer } from 'electron'; import BaseComponent from '../../components/base'; diff --git a/app/renderer/js/pages/preference/servers-section.ts b/app/renderer/js/pages/preference/servers-section.ts index 640740df..22a5209d 100644 --- a/app/renderer/js/pages/preference/servers-section.ts +++ b/app/renderer/js/pages/preference/servers-section.ts @@ -1,5 +1,3 @@ -'use strict'; - import BaseSection from './base-section'; import NewServerForm from './new-server-form'; import * as t from '../../utils/translation-util'; diff --git a/app/renderer/js/pages/preference/shortcuts-section.ts b/app/renderer/js/pages/preference/shortcuts-section.ts index 15e37add..7876dcd6 100644 --- a/app/renderer/js/pages/preference/shortcuts-section.ts +++ b/app/renderer/js/pages/preference/shortcuts-section.ts @@ -1,5 +1,3 @@ -'use strict'; - import { shell } from 'electron'; import BaseSection from './base-section'; diff --git a/app/renderer/js/preload.ts b/app/renderer/js/preload.ts index 470bff1b..a8f4d2d5 100644 --- a/app/renderer/js/preload.ts +++ b/app/renderer/js/preload.ts @@ -1,5 +1,3 @@ -'use strict'; - import { ipcRenderer, shell } from 'electron'; import * as SetupSpellChecker from './spellchecker'; diff --git a/app/renderer/js/spellchecker.ts b/app/renderer/js/spellchecker.ts index 6b629a76..2c4e9224 100644 --- a/app/renderer/js/spellchecker.ts +++ b/app/renderer/js/spellchecker.ts @@ -1,5 +1,3 @@ -'use strict'; - import type { Subject } from 'rxjs'; import { SpellCheckHandler, ContextMenuListener, ContextMenuBuilder } from 'electron-spellchecker'; diff --git a/app/renderer/js/tray.ts b/app/renderer/js/tray.ts index f335fc96..db9ed050 100644 --- a/app/renderer/js/tray.ts +++ b/app/renderer/js/tray.ts @@ -1,4 +1,3 @@ -'use strict'; import { ipcRenderer, remote, WebviewTag, NativeImage } from 'electron'; import path from 'path'; diff --git a/app/renderer/js/utils/certificate-util.ts b/app/renderer/js/utils/certificate-util.ts index 97392eb5..fabf35eb 100644 --- a/app/renderer/js/utils/certificate-util.ts +++ b/app/renderer/js/utils/certificate-util.ts @@ -1,5 +1,3 @@ -'use strict'; - import { remote } from 'electron'; import { JsonDB } from 'node-json-db'; import { initSetUp } from './default-util'; diff --git a/app/renderer/js/utils/common-util.ts b/app/renderer/js/utils/common-util.ts index 2330f632..c2c965f7 100644 --- a/app/renderer/js/utils/common-util.ts +++ b/app/renderer/js/utils/common-util.ts @@ -1,5 +1,3 @@ -'use strict'; - // unescape already encoded/escaped strings export function decodeString(stringInput: string): string { const parser = new DOMParser(); diff --git a/app/renderer/js/utils/config-util.ts b/app/renderer/js/utils/config-util.ts index 1b6f64e9..502f9fcc 100644 --- a/app/renderer/js/utils/config-util.ts +++ b/app/renderer/js/utils/config-util.ts @@ -1,4 +1,3 @@ -'use strict'; import { JsonDB } from 'node-json-db'; import fs from 'fs'; diff --git a/app/renderer/js/utils/dnd-util.ts b/app/renderer/js/utils/dnd-util.ts index d421fc6b..4293a2ba 100644 --- a/app/renderer/js/utils/dnd-util.ts +++ b/app/renderer/js/utils/dnd-util.ts @@ -1,5 +1,3 @@ -'use strict'; - import * as ConfigUtil from './config-util'; // TODO: TypeScript - add to Setting interface diff --git a/app/renderer/js/utils/domain-util.ts b/app/renderer/js/utils/domain-util.ts index 7a6ae72d..1a020f42 100644 --- a/app/renderer/js/utils/domain-util.ts +++ b/app/renderer/js/utils/domain-util.ts @@ -1,4 +1,3 @@ -'use strict'; import { JsonDB } from 'node-json-db'; import escape from 'escape-html'; diff --git a/app/renderer/js/utils/link-util.ts b/app/renderer/js/utils/link-util.ts index 56b1bb86..c4280310 100644 --- a/app/renderer/js/utils/link-util.ts +++ b/app/renderer/js/utils/link-util.ts @@ -1,5 +1,3 @@ -'use strict'; - // TODO: TypeScript - Add @types/ import wurl from 'wurl'; diff --git a/app/renderer/js/utils/linux-update-util.ts b/app/renderer/js/utils/linux-update-util.ts index 8e9e15e1..71972b46 100644 --- a/app/renderer/js/utils/linux-update-util.ts +++ b/app/renderer/js/utils/linux-update-util.ts @@ -1,4 +1,3 @@ -'use strict'; import { JsonDB } from 'node-json-db'; import fs from 'fs'; diff --git a/app/renderer/js/utils/proxy-util.ts b/app/renderer/js/utils/proxy-util.ts index 4014dcd6..5beadff1 100644 --- a/app/renderer/js/utils/proxy-util.ts +++ b/app/renderer/js/utils/proxy-util.ts @@ -1,5 +1,3 @@ -'use strict'; - import * as ConfigUtil from './config-util'; export interface ProxyRule { diff --git a/app/renderer/js/utils/system-util.ts b/app/renderer/js/utils/system-util.ts index 56fc09e6..5b32bca8 100644 --- a/app/renderer/js/utils/system-util.ts +++ b/app/renderer/js/utils/system-util.ts @@ -1,4 +1,3 @@ -'use strict'; import { remote } from 'electron'; import os from 'os'; diff --git a/app/renderer/js/utils/translation-util.ts b/app/renderer/js/utils/translation-util.ts index 68dcf79c..dce8b0bb 100644 --- a/app/renderer/js/utils/translation-util.ts +++ b/app/renderer/js/utils/translation-util.ts @@ -1,5 +1,3 @@ -'use strict'; - import path from 'path'; import electron from 'electron'; import i18n from 'i18n'; diff --git a/package.json b/package.json index 0ba9c2d1..aa4e19ba 100644 --- a/package.json +++ b/package.json @@ -219,6 +219,7 @@ "@typescript-eslint/restrict-template-expressions": "off", "capitalized-comments": "off", "import/no-mutable-exports": "off", + "import/unambiguous": "error", "max-lines": [ "warn", { @@ -232,11 +233,26 @@ "no-warning-comments": "off", "object-curly-spacing": "off", "padding-line-between-statements": "off", + "strict": "error", "unicorn/catch-error-name": "off" }, "envs": [ "node", "browser" + ], + "overrides": [ + { + "files": [ + "gulpfile.js", + "scripts/notarize.js", + "tools/locale-helper/index.js", + "tools/reinstall-node-modules.js", + "typings.d.ts" + ], + "parserOptions": { + "sourceType": "script" + } + } ] } } diff --git a/scripts/notarize.js b/scripts/notarize.js index 08e5ba1f..1827b798 100644 --- a/scripts/notarize.js +++ b/scripts/notarize.js @@ -1,3 +1,4 @@ +'use strict'; const path = require('path'); const dotenv = require('dotenv'); diff --git a/tools/locale-helper/index.js b/tools/locale-helper/index.js index 720087fb..94c4d5bc 100644 --- a/tools/locale-helper/index.js +++ b/tools/locale-helper/index.js @@ -1,3 +1,4 @@ +'use strict'; const translate = require('@vitalets/google-translate-api'); const path = require('path'); const fs = require('fs'); diff --git a/tools/reinstall-node-modules.js b/tools/reinstall-node-modules.js index a176eb21..41e6c065 100644 --- a/tools/reinstall-node-modules.js +++ b/tools/reinstall-node-modules.js @@ -1,4 +1,5 @@ #!/usr/bin/env node +'use strict'; const {exec} = require('child_process'); const path = require('path'); diff --git a/typings.d.ts b/typings.d.ts index 6334a099..47b6e40b 100644 --- a/typings.d.ts +++ b/typings.d.ts @@ -1,3 +1,4 @@ +'use strict'; declare module '@electron-elements/send-feedback'; declare module 'node-mac-notifier'; declare module 'wurl';