From b87b5011615d17e0dcec5c71832d7b3d1d2ebc72 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Fri, 20 Mar 2020 08:12:18 -0700 Subject: [PATCH] build: update eslint + eslint plugins (#22777) * build: run eslint --fix * chore: manually fix all hasOwnProperty errors * chore: manually fix all void 0 vs undefined errors * chore: manually fix all async-in-promise errors * chore: manually fix lexical declaration in case block --- .../api/auto-updater/squirrel-update-win.js | 2 +- lib/browser/api/menu-item-roles.js | 10 +- lib/browser/api/menu.js | 8 +- lib/browser/api/net-log.js | 2 +- lib/browser/api/net.js | 4 +- lib/browser/api/protocol.ts | 2 +- lib/browser/api/touch-bar.js | 2 +- lib/browser/api/web-contents.js | 6 +- lib/browser/message-port-main.ts | 3 + lib/browser/remote/server.ts | 5 +- lib/common/reset-search-paths.ts | 2 +- lib/content_script/init.js | 2 +- lib/renderer/api/remote.js | 4 +- lib/renderer/extensions/i18n.ts | 2 +- lib/renderer/ipc-renderer-internal-utils.ts | 2 +- lib/renderer/security-warnings.ts | 2 +- lib/renderer/web-view/guest-view-internal.ts | 6 +- lib/renderer/web-view/web-view-impl.ts | 4 +- lib/renderer/window-setup.ts | 1 + lib/sandboxed_renderer/init.js | 2 +- script/download-circleci-artifacts.js | 2 +- script/gn-check.js | 2 +- script/lint.js | 6 +- script/release/ci-release-build.js | 6 +- script/release/notes/index.js | 4 +- script/release/notes/notes.js | 53 +++++----- script/release/prepare-release.js | 28 +++--- script/release/publish-to-npm.js | 2 +- script/release/release.js | 18 ++-- script/release/uploaders/upload-to-github.js | 10 +- script/release/version-bumper.js | 6 +- spec-main/api-app-spec.ts | 16 ++-- spec-main/api-browser-window-spec.ts | 38 ++++---- spec-main/api-context-bridge-spec.ts | 6 +- spec-main/api-crash-reporter-spec.ts | 4 +- spec-main/api-debugger-spec.ts | 4 +- spec-main/api-deprecate-spec.ts | 4 +- spec-main/api-menu-spec.ts | 9 +- spec-main/api-net-spec.ts | 4 +- spec-main/api-notification-dbus-spec.ts | 4 +- spec-main/api-power-monitor-spec.ts | 2 +- spec-main/api-protocol-spec.ts | 6 +- spec-main/api-remote-spec.ts | 10 +- spec-main/api-session-spec.ts | 6 +- spec-main/api-subframe-spec.ts | 2 +- spec-main/api-system-preferences-spec.ts | 4 +- spec-main/api-web-contents-spec.ts | 16 ++-- spec-main/api-web-contents-view-spec.ts | 2 +- spec-main/api-web-frame-spec.ts | 4 +- spec-main/api-web-request-spec.ts | 30 +++--- spec-main/chromium-spec.ts | 96 +++++++++---------- spec-main/extensions-spec.ts | 16 ++-- spec-main/modules-spec.ts | 2 +- spec-main/security-warnings-spec.ts | 2 +- spec-main/version-bump-spec.ts | 4 +- spec-main/webview-spec.ts | 2 +- spec/chromium-spec.js | 4 +- spec/fixtures/api/cookie-app/main.js | 13 +-- spec/fixtures/module/inspector-binding.js | 36 +++---- spec/node-spec.js | 2 +- spec/static/main.js | 2 +- spec/webview-spec.js | 2 +- 62 files changed, 280 insertions(+), 280 deletions(-) diff --git a/lib/browser/api/auto-updater/squirrel-update-win.js b/lib/browser/api/auto-updater/squirrel-update-win.js index ddb29f8df6f8..b25f8eb64deb 100644 --- a/lib/browser/api/auto-updater/squirrel-update-win.js +++ b/lib/browser/api/auto-updater/squirrel-update-win.js @@ -93,7 +93,7 @@ exports.checkForUpdate = function (updateURL, callback) { try { // Last line of output is the JSON details about the releases const json = stdout.trim().split('\n').pop() - update = (ref = JSON.parse(json)) != null ? (ref1 = ref.releasesToApply) != null ? typeof ref1.pop === 'function' ? ref1.pop() : void 0 : void 0 : void 0 + update = (ref = JSON.parse(json)) != null ? (ref1 = ref.releasesToApply) != null ? typeof ref1.pop === 'function' ? ref1.pop() : undefined : undefined : undefined } catch { // Disabled for backwards compatibility: // eslint-disable-next-line standard/no-callback-literal diff --git a/lib/browser/api/menu-item-roles.js b/lib/browser/api/menu-item-roles.js index 53bb332e64ba..07b0e9d06eb1 100644 --- a/lib/browser/api/menu-item-roles.js +++ b/lib/browser/api/menu-item-roles.js @@ -254,7 +254,7 @@ const roles = { exports.roleList = roles const canExecuteRole = (role) => { - if (!roles.hasOwnProperty(role)) return false + if (!Object.prototype.hasOwnProperty.call(roles, role)) return false if (!isMac) return true // macOS handles all roles natively except for a few @@ -262,20 +262,20 @@ const canExecuteRole = (role) => { } exports.getDefaultLabel = (role) => { - return roles.hasOwnProperty(role) ? roles[role].label : '' + return Object.prototype.hasOwnProperty.call(roles, role) ? roles[role].label : '' } exports.getDefaultAccelerator = (role) => { - if (roles.hasOwnProperty(role)) return roles[role].accelerator + if (Object.prototype.hasOwnProperty.call(roles, role)) return roles[role].accelerator } exports.shouldRegisterAccelerator = (role) => { - const hasRoleRegister = roles.hasOwnProperty(role) && roles[role].registerAccelerator !== undefined + const hasRoleRegister = Object.prototype.hasOwnProperty.call(roles, role) && roles[role].registerAccelerator !== undefined return hasRoleRegister ? roles[role].registerAccelerator : true } exports.getDefaultSubmenu = (role) => { - if (!roles.hasOwnProperty(role)) return + if (!Object.prototype.hasOwnProperty.call(roles, role)) return let { submenu } = roles[role] diff --git a/lib/browser/api/menu.js b/lib/browser/api/menu.js index 50254424237e..c36b76799b57 100644 --- a/lib/browser/api/menu.js +++ b/lib/browser/api/menu.js @@ -71,7 +71,7 @@ Menu.prototype.popup = function (options = {}) { window = wins[0] } if (!window) { - throw new Error(`Cannot open Menu without a TopLevelWindow present`) + throw new Error('Cannot open Menu without a TopLevelWindow present') } } @@ -106,7 +106,7 @@ Menu.prototype.append = function (item) { } Menu.prototype.insert = function (pos, item) { - if ((item ? item.constructor : void 0) !== MenuItem) { + if ((item ? item.constructor : undefined) !== MenuItem) { throw new TypeError('Invalid item') } @@ -194,8 +194,8 @@ function areValidTemplateItems (template) { return template.every(item => item != null && typeof item === 'object' && - (item.hasOwnProperty('label') || - item.hasOwnProperty('role') || + (Object.prototype.hasOwnProperty.call(item, 'label') || + Object.prototype.hasOwnProperty.call(item, 'role') || item.type === 'separator')) } diff --git a/lib/browser/api/net-log.js b/lib/browser/api/net-log.js index 0807f571834e..b333223f8c85 100644 --- a/lib/browser/api/net-log.js +++ b/lib/browser/api/net-log.js @@ -11,7 +11,7 @@ Object.setPrototypeOf(module.exports, new Proxy({}, { const netLog = session.defaultSession.netLog - if (!Object.getPrototypeOf(netLog).hasOwnProperty(property)) return + if (!Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(netLog), property)) return // check for properties on the prototype chain that aren't functions if (typeof netLog[property] !== 'function') return netLog[property] diff --git a/lib/browser/api/net.js b/lib/browser/api/net.js index a6d11a604bcb..314b1610eaae 100644 --- a/lib/browser/api/net.js +++ b/lib/browser/api/net.js @@ -124,10 +124,12 @@ class SlurpStream extends Writable { super() this._data = Buffer.alloc(0) } + _write (chunk, encoding, callback) { this._data = Buffer.concat([this._data, chunk]) callback() } + data () { return this._data } } @@ -399,7 +401,7 @@ class ClientRequest extends Writable { this._urlLoader.on('redirect', (event, redirectInfo, headers) => { const { statusCode, newMethod, newUrl } = redirectInfo if (this._redirectPolicy === 'error') { - this._die(new Error(`Attempted to redirect, but redirect policy was 'error'`)) + this._die(new Error('Attempted to redirect, but redirect policy was \'error\'')) } else if (this._redirectPolicy === 'manual') { let _followRedirect = false this._followRedirectCb = () => { _followRedirect = true } diff --git a/lib/browser/api/protocol.ts b/lib/browser/api/protocol.ts index 18387d172f47..91780c3c7340 100644 --- a/lib/browser/api/protocol.ts +++ b/lib/browser/api/protocol.ts @@ -9,7 +9,7 @@ Object.setPrototypeOf(protocol, new Proxy({}, { if (!app.isReady()) return const protocol = session.defaultSession!.protocol - if (!Object.getPrototypeOf(protocol).hasOwnProperty(property)) return + if (!Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(protocol), property)) return // Returning a native function directly would throw error. return (...args: any[]) => (protocol[property as keyof Electron.Protocol] as Function)(...args) diff --git a/lib/browser/api/touch-bar.js b/lib/browser/api/touch-bar.js index 55228d89313d..c7200a636168 100644 --- a/lib/browser/api/touch-bar.js +++ b/lib/browser/api/touch-bar.js @@ -103,7 +103,7 @@ class TouchBar extends EventEmitter { const { id } = window // Already added to window - if (this.windowListeners.hasOwnProperty(id)) return + if (Object.prototype.hasOwnProperty.call(this.windowListeners, id)) return window._touchBar = this diff --git a/lib/browser/api/web-contents.js b/lib/browser/api/web-contents.js index 5dc0f887218a..3e9b352a0a6f 100644 --- a/lib/browser/api/web-contents.js +++ b/lib/browser/api/web-contents.js @@ -263,8 +263,8 @@ WebContents.prototype.printToPDF = function (options) { if (options.pageRanges !== undefined) { const pageRanges = options.pageRanges - if (!pageRanges.hasOwnProperty('from') || !pageRanges.hasOwnProperty('to')) { - const error = new Error(`pageRanges must be an Object with 'from' and 'to' properties`) + if (!Object.prototype.hasOwnProperty.call(pageRanges, 'from') || !Object.prototype.hasOwnProperty.call(pageRanges, 'to')) { + const error = new Error('pageRanges must be an Object with \'from\' and \'to\' properties') return Promise.reject(error) } @@ -333,7 +333,7 @@ WebContents.prototype.printToPDF = function (options) { return Promise.reject(error) } } else { - printSettings.mediaSize = PDFPageSizes['A4'] + printSettings.mediaSize = PDFPageSizes.A4 } // Chromium expects this in a 0-100 range number, not as float diff --git a/lib/browser/message-port-main.ts b/lib/browser/message-port-main.ts index c3d02c5d52d5..0034677fa545 100644 --- a/lib/browser/message-port-main.ts +++ b/lib/browser/message-port-main.ts @@ -10,12 +10,15 @@ export class MessagePortMain extends EventEmitter { this.emit(channel, event) } } + start () { return this._internalPort.start() } + close () { return this._internalPort.close() } + postMessage (...args: any[]) { if (Array.isArray(args[1])) { args[1] = args[1].map((o: any) => o instanceof MessagePortMain ? o._internalPort : o) diff --git a/lib/browser/remote/server.ts b/lib/browser/remote/server.ts index e6c471ecafaf..0d01aca3ec99 100644 --- a/lib/browser/remote/server.ts +++ b/lib/browser/remote/server.ts @@ -196,7 +196,7 @@ const throwRPCError = function (message: string) { const removeRemoteListenersAndLogWarning = (sender: any, callIntoRenderer: (...args: any[]) => void) => { const location = v8Util.getHiddenValue(callIntoRenderer, 'location') - let message = `Attempting to call a function in a renderer window that has been closed or released.` + + let message = 'Attempting to call a function in a renderer window that has been closed or released.' + `\nFunction provided here: ${location}` if (sender instanceof EventEmitter) { @@ -281,11 +281,12 @@ const unwrapArgs = function (sender: electron.WebContents, frameId: number, cont } return ret } - case 'function-with-return-value': + case 'function-with-return-value': { const returnValue = metaToValue(meta.value) return function () { return returnValue } + } case 'function': { // Merge contextId and meta.id, since meta.id can be the same in // different webContents. diff --git a/lib/common/reset-search-paths.ts b/lib/common/reset-search-paths.ts index 30937d5a0dc5..c1ffabe8f693 100644 --- a/lib/common/reset-search-paths.ts +++ b/lib/common/reset-search-paths.ts @@ -30,7 +30,7 @@ Object.defineProperty(electronModule, 'exports', { get: () => require('electron') }) -Module._cache['electron'] = electronModule +Module._cache.electron = electronModule const originalResolveFilename = Module._resolveFilename Module._resolveFilename = function (request: string, parent: NodeModule, isMain: boolean) { diff --git a/lib/content_script/init.js b/lib/content_script/init.js index fe13580b4c82..c8a1373b8a09 100644 --- a/lib/content_script/init.js +++ b/lib/content_script/init.js @@ -15,7 +15,7 @@ v8Util.setHiddenValue(global, 'ipc-internal', v8Util.getHiddenValue(isolatedWorl // The process object created by webpack is not an event emitter, fix it so // the API is more compatible with non-sandboxed renderers. for (const prop of Object.keys(EventEmitter.prototype)) { - if (process.hasOwnProperty(prop)) { + if (Object.prototype.hasOwnProperty.call(process, prop)) { delete process[prop] } } diff --git a/lib/renderer/api/remote.js b/lib/renderer/api/remote.js index 3c630db088b3..884c54486a5a 100644 --- a/lib/renderer/api/remote.js +++ b/lib/renderer/api/remote.js @@ -109,7 +109,7 @@ function setObjectMembers (ref, object, metaId, members) { if (!Array.isArray(members)) return for (const member of members) { - if (object.hasOwnProperty(member.name)) continue + if (Object.prototype.hasOwnProperty.call(object, member.name)) continue const descriptor = { enumerable: member.enumerable } if (member.type === 'method') { @@ -188,7 +188,7 @@ function proxyFunctionProperties (remoteMemberFunction, metaId, name) { return true }, get: (target, property, receiver) => { - if (!target.hasOwnProperty(property)) loadRemoteProperties() + if (!Object.prototype.hasOwnProperty.call(target, property)) loadRemoteProperties() const value = target[property] if (property === 'toString' && typeof value === 'function') { return value.bind(target) diff --git a/lib/renderer/extensions/i18n.ts b/lib/renderer/extensions/i18n.ts index 7d3c71843498..8e3c7edaa118 100644 --- a/lib/renderer/extensions/i18n.ts +++ b/lib/renderer/extensions/i18n.ts @@ -45,7 +45,7 @@ const replacePlaceholders = (message: string, placeholders: Record { const messages = getMessages(extensionId) - if (messages.hasOwnProperty(messageName)) { + if (Object.prototype.hasOwnProperty.call(messages, messageName)) { const { message, placeholders } = messages[messageName] return replacePlaceholders(message, placeholders, substitutions) } diff --git a/lib/renderer/ipc-renderer-internal-utils.ts b/lib/renderer/ipc-renderer-internal-utils.ts index 2a954c0f179b..8c34140148c6 100644 --- a/lib/renderer/ipc-renderer-internal-utils.ts +++ b/lib/renderer/ipc-renderer-internal-utils.ts @@ -14,7 +14,7 @@ export const handle = function (channel: string, handler: } export function invokeSync (command: string, ...args: any[]): T { - const [ error, result ] = ipcRendererInternal.sendSync(command, ...args) + const [error, result] = ipcRendererInternal.sendSync(command, ...args) if (error) { throw error diff --git a/lib/renderer/security-warnings.ts b/lib/renderer/security-warnings.ts index 0eee4ad7dbfc..4e78a304fcef 100644 --- a/lib/renderer/security-warnings.ts +++ b/lib/renderer/security-warnings.ts @@ -222,7 +222,7 @@ const warnAboutExperimentalFeatures = function (webPreferences?: Electron.WebPre */ const warnAboutEnableBlinkFeatures = function (webPreferences?: Electron.WebPreferences) { if (!webPreferences || - !webPreferences.hasOwnProperty('enableBlinkFeatures') || + !Object.prototype.hasOwnProperty.call(webPreferences, 'enableBlinkFeatures') || (webPreferences.enableBlinkFeatures && webPreferences.enableBlinkFeatures.length === 0)) { return } diff --git a/lib/renderer/web-view/guest-view-internal.ts b/lib/renderer/web-view/guest-view-internal.ts index 28f95ece46b6..cbb2798283bf 100644 --- a/lib/renderer/web-view/guest-view-internal.ts +++ b/lib/renderer/web-view/guest-view-internal.ts @@ -24,10 +24,10 @@ const WEB_VIEW_EVENTS: Record> = { 'did-frame-navigate': ['url', 'httpResponseCode', 'httpStatusText', 'isMainFrame', 'frameProcessId', 'frameRoutingId'], 'did-navigate-in-page': ['url', 'isMainFrame', 'frameProcessId', 'frameRoutingId'], 'focus-change': ['focus', 'guestInstanceId'], - 'close': [], - 'crashed': [], + close: [], + crashed: [], 'plugin-crashed': ['name', 'version'], - 'destroyed': [], + destroyed: [], 'page-title-updated': ['title', 'explicitSet'], 'page-favicon-updated': ['favicons'], 'enter-html-full-screen': [], diff --git a/lib/renderer/web-view/web-view-impl.ts b/lib/renderer/web-view/web-view-impl.ts index 5edc5e168ff2..e614578278de 100644 --- a/lib/renderer/web-view/web-view-impl.ts +++ b/lib/renderer/web-view/web-view-impl.ts @@ -72,7 +72,7 @@ export class WebViewImpl { // heard back from createGuest yet. We will not reset the flag in this case so // that we don't end up allocating a second guest. if (this.guestInstanceId) { - this.guestInstanceId = void 0 + this.guestInstanceId = undefined } this.beforeFirstNavigation = true @@ -173,7 +173,7 @@ export class WebViewImpl { } for (const attributeName in this.attributes) { - if (this.attributes.hasOwnProperty(attributeName)) { + if (Object.prototype.hasOwnProperty.call(this.attributes, attributeName)) { params[attributeName] = this.attributes[attributeName].getValue() } } diff --git a/lib/renderer/window-setup.ts b/lib/renderer/window-setup.ts index 798a49b2df05..184d6263946e 100644 --- a/lib/renderer/window-setup.ts +++ b/lib/renderer/window-setup.ts @@ -126,6 +126,7 @@ class BrowserWindowProxy { public get location (): LocationProxy | any { return this._location } + public set location (url: string | any) { url = resolveURL(url, this.location.href) this._invokeWebContentsMethod('loadURL', url) diff --git a/lib/sandboxed_renderer/init.js b/lib/sandboxed_renderer/init.js index 37f39723a3e6..b49831a64ce2 100644 --- a/lib/sandboxed_renderer/init.js +++ b/lib/sandboxed_renderer/init.js @@ -20,7 +20,7 @@ v8Util.setHiddenValue(global, 'ipc-internal', new EventEmitter()) // The process object created by webpack is not an event emitter, fix it so // the API is more compatible with non-sandboxed renderers. for (const prop of Object.keys(EventEmitter.prototype)) { - if (process.hasOwnProperty(prop)) { + if (Object.prototype.hasOwnProperty.call(process, prop)) { delete process[prop] } } diff --git a/script/download-circleci-artifacts.js b/script/download-circleci-artifacts.js index 8fb63030cbb6..2266bfd2e6c8 100644 --- a/script/download-circleci-artifacts.js +++ b/script/download-circleci-artifacts.js @@ -38,7 +38,7 @@ async function downloadArtifact (name, buildNum, dest) { url: circleArtifactUrl, headers: { 'Content-Type': 'application/json', - 'Accept': 'application/json' + Accept: 'application/json' } }, true).catch(err => { if (args.verbose) { diff --git a/script/gn-check.js b/script/gn-check.js index f3291531c0de..899e728f0065 100644 --- a/script/gn-check.js +++ b/script/gn-check.js @@ -15,7 +15,7 @@ const DEPOT_TOOLS = path.resolve(SOURCE_ROOT, '..', 'third_party', 'depot_tools' const OUT_DIR = getOutDir({ outDir: args.outDir }) if (!OUT_DIR) { - throw new Error(`No viable out dir: one of Debug, Testing, or Release must exist.`) + throw new Error('No viable out dir: one of Debug, Testing, or Release must exist.') } const env = Object.assign({ diff --git a/script/lint.js b/script/lint.js index 456666f76189..3a86d8f23dc7 100755 --- a/script/lint.js +++ b/script/lint.js @@ -57,7 +57,7 @@ function isObjCHeader (filename) { return /\/(mac|cocoa)\//.test(filename) } -const LINTERS = [ { +const LINTERS = [{ key: 'c++', roots: ['shell'], test: filename => filename.endsWith('.cc') || (filename.endsWith('.h') && !isObjCHeader(filename)), @@ -104,7 +104,7 @@ const LINTERS = [ { test: filename => filename.endsWith('.js') || filename.endsWith('.ts'), run: (opts, filenames) => { const cmd = path.join(SOURCE_ROOT, 'node_modules', '.bin', 'eslint') - const args = [ '--cache', '--ext', '.js,.ts', ...filenames ] + const args = ['--cache', '--ext', '.js,.ts', ...filenames] if (opts.fix) args.unshift('--fix') spawnAndCheckExitCode(cmd, args, { cwd: SOURCE_ROOT }) } @@ -202,7 +202,7 @@ const LINTERS = [ { function parseCommandLine () { let help const opts = minimist(process.argv.slice(2), { - boolean: [ 'c++', 'objc', 'javascript', 'python', 'gn', 'patches', 'help', 'changed', 'fix', 'verbose', 'only' ], + boolean: ['c++', 'objc', 'javascript', 'python', 'gn', 'patches', 'help', 'changed', 'fix', 'verbose', 'only'], alias: { 'c++': ['cc', 'cpp', 'cxx'], javascript: ['js', 'es'], python: 'py', changed: 'c', help: 'h', verbose: 'v' }, unknown: arg => { help = true } }) diff --git a/script/release/ci-release-build.js b/script/release/ci-release-build.js index 82d63edc9855..6c2b36f26fa2 100644 --- a/script/release/ci-release-build.js +++ b/script/release/ci-release-build.js @@ -66,8 +66,8 @@ async function makeRequest (requestOptions, parseResponse) { async function circleCIcall (targetBranch, job, options) { console.log(`Triggering CircleCI to run build job: ${job} on branch: ${targetBranch} with release flag.`) const buildRequest = { - 'branch': targetBranch, - 'parameters': { + branch: targetBranch, + parameters: { 'run-lint': false, 'run-build-linux': false, 'run-build-mac': false @@ -185,7 +185,7 @@ async function circleCIRequest (url, method, requestBody) { url, headers: { 'Content-Type': 'application/json', - 'Accept': 'application/json' + Accept: 'application/json' }, body: requestBody ? JSON.stringify(requestBody) : null }, true).catch(err => { diff --git a/script/release/notes/index.js b/script/release/notes/index.js index 8de0101dcf65..0d43ff69975b 100755 --- a/script/release/notes/index.js +++ b/script/release/notes/index.js @@ -144,8 +144,8 @@ async function getReleaseNotes (range, newVersion, explicitLinks) { async function main () { const opts = minimist(process.argv.slice(2), { - boolean: [ 'explicit-links', 'help' ], - string: [ 'version' ] + boolean: ['explicit-links', 'help'], + string: ['version'] }) opts.range = opts._.shift() if (opts.help || !opts.range) { diff --git a/script/release/notes/notes.js b/script/release/notes/notes.js index c497aa73bde6..014c184bb0d5 100644 --- a/script/release/notes/notes.js +++ b/script/release/notes/notes.js @@ -18,7 +18,7 @@ const CHECK_INTERVAL = 5000 const CACHE_DIR = path.resolve(__dirname, '.cache') const NO_NOTES = 'No notes' -const FOLLOW_REPOS = [ 'electron/electron', 'electron/node' ] +const FOLLOW_REPOS = ['electron/electron', 'electron/node'] const breakTypes = new Set(['breaking-change']) const docTypes = new Set(['doc', 'docs']) @@ -222,7 +222,7 @@ const parseCommitMessage = (commitMessage, owner, repo, commit = {}) => { // Edge case: manual backport where commit has `owner/repo#pull` notation if (commitMessage.toLowerCase().includes('backport') && ((match = commitMessage.match(/\b(\w+)\/(\w+)#(\d+)\b/)))) { - const [ , owner, repo, number ] = match + const [, owner, repo, number] = match if (FOLLOW_REPOS.includes(`${owner}/${repo}`)) { setPullRequest(commit, owner, repo, number) } @@ -231,7 +231,7 @@ const parseCommitMessage = (commitMessage, owner, repo, commit = {}) => { // Edge case: manual backport where commit has a link to the backport PR if (commitMessage.includes('ackport') && ((match = commitMessage.match(/https:\/\/github\.com\/(\w+)\/(\w+)\/pull\/(\d+)/)))) { - const [ , owner, repo, number ] = match + const [, owner, repo, number] = match if (FOLLOW_REPOS.includes(`${owner}/${repo}`)) { setPullRequest(commit, owner, repo, number) } @@ -257,8 +257,8 @@ const parseCommitMessage = (commitMessage, owner, repo, commit = {}) => { } const getLocalCommitHashes = async (dir, ref) => { - const args = ['log', '-z', `--format=%H`, ref] - return (await runGit(dir, args)).split(`\0`).map(hash => hash.trim()) + const args = ['log', '-z', '--format=%H', ref] + return (await runGit(dir, args)).split('\0').map(hash => hash.trim()) } /* @@ -272,13 +272,13 @@ const getLocalCommitDetails = async (module, point1, point2) => { const fieldSep = '||' const format = ['%H', '%P', '%aE', '%B'].join(fieldSep) const args = ['log', '-z', '--cherry-pick', '--right-only', '--first-parent', `--format=${format}`, `${point1}..${point2}`] - const commits = (await runGit(dir, args)).split(`\0`).map(field => field.trim()) + const commits = (await runGit(dir, args)).split('\0').map(field => field.trim()) const details = [] for (const commit of commits) { if (!commit) { continue } - const [ hash, parentHashes, email, commitMessage ] = commit.split(fieldSep, 4).map(field => field.trim()) + const [hash, parentHashes, email, commitMessage] = commit.split(fieldSep, 4).map(field => field.trim()) details.push(parseCommitMessage(commitMessage, owner, repo, { email, hash, @@ -496,7 +496,7 @@ const getNotes = async (fromRef, toRef, newVersion) => { if (!shouldIncludeMultibranchChanges(newVersion)) { // load all the prDatas await Promise.all( - pool.commits.map(commit => new Promise(async (resolve) => { + pool.commits.map(commit => (async () => { const { pr } = commit if (typeof pr === 'object') { const prData = await getPullRequest(pr.number, pr.owner, pr.repo) @@ -504,8 +504,7 @@ const getNotes = async (fromRef, toRef, newVersion) => { commit.prData = prData } } - resolve() - })) + })()) ) // remove items that already landed in a previous major/minor series @@ -616,22 +615,22 @@ const renderCommit = (commit, explicitLinks) => { } const commonVerbs = { - 'Added': [ 'Add' ], - 'Backported': [ 'Backport' ], - 'Cleaned': [ 'Clean' ], - 'Disabled': [ 'Disable' ], - 'Ensured': [ 'Ensure' ], - 'Exported': [ 'Export' ], - 'Fixed': [ 'Fix', 'Fixes' ], - 'Handled': [ 'Handle' ], - 'Improved': [ 'Improve' ], - 'Made': [ 'Make' ], - 'Removed': [ 'Remove' ], - 'Repaired': [ 'Repair' ], - 'Reverted': [ 'Revert' ], - 'Stopped': [ 'Stop' ], - 'Updated': [ 'Update' ], - 'Upgraded': [ 'Upgrade' ] + Added: ['Add'], + Backported: ['Backport'], + Cleaned: ['Clean'], + Disabled: ['Disable'], + Ensured: ['Ensure'], + Exported: ['Export'], + Fixed: ['Fix', 'Fixes'], + Handled: ['Handle'], + Improved: ['Improve'], + Made: ['Make'], + Removed: ['Remove'], + Repaired: ['Repair'], + Reverted: ['Revert'], + Stopped: ['Stop'], + Updated: ['Update'], + Upgraded: ['Upgrade'] } for (const [key, values] of Object.entries(commonVerbs)) { for (const value of values) { @@ -649,7 +648,7 @@ const renderCommit = (commit, explicitLinks) => { } const renderNotes = (notes, explicitLinks) => { - const rendered = [ `# Release Notes for ${notes.name}\n\n` ] + const rendered = [`# Release Notes for ${notes.name}\n\n`] const renderSection = (title, commits) => { if (commits.length === 0) { diff --git a/script/release/prepare-release.js b/script/release/prepare-release.js index e720240a673a..0831d6d99273 100755 --- a/script/release/prepare-release.js +++ b/script/release/prepare-release.js @@ -23,8 +23,8 @@ const pass = '✓'.green const fail = '✗'.red if (!bumpType && !args.notesOnly) { - console.log(`Usage: prepare-release [stable | minor | beta | nightly]` + - ` (--stable) (--notesOnly) (--automaticRelease) (--branch)`) + console.log('Usage: prepare-release [stable | minor | beta | nightly]' + + ' (--stable) (--notesOnly) (--automaticRelease) (--branch)') process.exit(1) } @@ -66,7 +66,7 @@ async function createRelease (branchToTarget, isBeta) { const releaseNotes = await getReleaseNotes(branchToTarget, newVersion) await tagRelease(newVersion) - console.log(`Checking for existing draft release.`) + console.log('Checking for existing draft release.') const releases = await octokit.repos.listReleases({ owner: 'electron', repo: targetRepo @@ -87,14 +87,14 @@ async function createRelease (branchToTarget, isBeta) { let releaseIsPrelease = false if (isBeta) { if (newVersion.indexOf('nightly') > 0) { - releaseBody = `Note: This is a nightly release. Please file new issues ` + - `for any bugs you find in it.\n \n This release is published to npm ` + - `under the nightly tag and can be installed via npm install electron@nightly, ` + + releaseBody = 'Note: This is a nightly release. Please file new issues ' + + 'for any bugs you find in it.\n \n This release is published to npm ' + + 'under the nightly tag and can be installed via npm install electron@nightly, ' + `or npm i electron-nightly@${newVersion.substr(1)}.\n \n ${releaseNotes.text}` } else { - releaseBody = `Note: This is a beta release. Please file new issues ` + - `for any bugs you find in it.\n \n This release is published to npm ` + - `under the beta tag and can be installed via npm install electron@beta, ` + + releaseBody = 'Note: This is a beta release. Please file new issues ' + + 'for any bugs you find in it.\n \n This release is published to npm ' + + 'under the beta tag and can be installed via npm install electron@beta, ' + `or npm i electron@${newVersion.substr(1)}.\n \n ${releaseNotes.text}` } releaseIsPrelease = true @@ -124,7 +124,7 @@ async function pushRelease (branch) { const pushDetails = await GitProcess.exec(['push', 'origin', `HEAD:${branch}`, '--follow-tags'], ELECTRON_DIR) if (pushDetails.exitCode === 0) { console.log(`${pass} Successfully pushed the release. Wait for ` + - `release builds to finish before running "npm run release".`) + 'release builds to finish before running "npm run release".') } else { console.log(`${fail} Error pushing the release: ${pushDetails.stderr}`) process.exit(1) @@ -140,7 +140,7 @@ async function runReleaseBuilds (branch) { async function tagRelease (version) { console.log(`Tagging release ${version}.`) - const checkoutDetails = await GitProcess.exec([ 'tag', '-a', '-m', version, version ], ELECTRON_DIR) + const checkoutDetails = await GitProcess.exec(['tag', '-a', '-m', version, version], ELECTRON_DIR) if (checkoutDetails.exitCode === 0) { console.log(`${pass} Successfully tagged ${version}.`) } else { @@ -181,8 +181,8 @@ async function promptForVersion (version) { // function to determine if there have been commits to master since the last release async function changesToRelease () { - const lastCommitWasRelease = new RegExp(`^Bump v[0-9.]*(-beta[0-9.]*)?(-nightly[0-9.]*)?$`, 'g') - const lastCommit = await GitProcess.exec(['log', '-n', '1', `--pretty=format:'%s'`], ELECTRON_DIR) + const lastCommitWasRelease = new RegExp('^Bump v[0-9.]*(-beta[0-9.]*)?(-nightly[0-9.]*)?$', 'g') + const lastCommit = await GitProcess.exec(['log', '-n', '1', '--pretty=format:\'%s\''], ELECTRON_DIR) return !lastCommitWasRelease.test(lastCommit.stdout) } @@ -204,7 +204,7 @@ async function prepareRelease (isBeta, notesOnly) { await pushRelease(currentBranch) await runReleaseBuilds(currentBranch) } else { - console.log(`There are no new changes to this branch since the last release, aborting release.`) + console.log('There are no new changes to this branch since the last release, aborting release.') process.exit(1) } } diff --git a/script/release/publish-to-npm.js b/script/release/publish-to-npm.js index 007823e2a50d..d884241550f3 100644 --- a/script/release/publish-to-npm.js +++ b/script/release/publish-to-npm.js @@ -92,7 +92,7 @@ new Promise((resolve, reject) => { request.get({ url: tsdAsset.url, headers: { - 'accept': 'application/octet-stream', + accept: 'application/octet-stream', 'user-agent': 'electron-npm-publisher' } }, (err, response, body) => { diff --git a/script/release/release.js b/script/release/release.js index 93ff3ae935fe..c5577e306280 100755 --- a/script/release/release.js +++ b/script/release/release.js @@ -9,7 +9,7 @@ const args = require('minimist')(process.argv.slice(2), { 'automaticRelease', 'verboseNugget' ], - default: { 'verboseNugget': false } + default: { verboseNugget: false } }) const fs = require('fs') const { execSync } = require('child_process') @@ -54,7 +54,7 @@ async function getDraftRelease (version, skipValidation) { check(draft.prerelease, 'draft is a prerelease') } check(draft.body.length > 50 && !draft.body.includes('(placeholder)'), 'draft has release notes') - check((failureCount === 0), `Draft release looks good to go.`, true) + check((failureCount === 0), 'Draft release looks good to go.', true) } return draft } @@ -68,7 +68,7 @@ async function validateReleaseAssets (release, validatingRelease) { requiredAssets.forEach(asset => { check(extantAssets.includes(asset), asset) }) - check((failureCount === 0), `All required GitHub assets exist for release`, true) + check((failureCount === 0), 'All required GitHub assets exist for release', true) if (!validatingRelease || !release.draft) { if (release.draft) { @@ -129,9 +129,9 @@ function assetsForVersion (version, validatingRelease) { `electron-${version}-win32-arm64-pdb.zip`, `electron-${version}-win32-arm64-symbols.zip`, `electron-${version}-win32-arm64.zip`, - `electron-api.json`, - `electron.d.ts`, - `hunspell_dictionaries.zip`, + 'electron-api.json', + 'electron.d.ts', + 'hunspell_dictionaries.zip', `ffmpeg-${version}-darwin-x64.zip`, `ffmpeg-${version}-linux-arm64.zip`, `ffmpeg-${version}-linux-armv7l.zip`, @@ -161,7 +161,7 @@ function assetsForVersion (version, validatingRelease) { } function s3UrlsForVersion (version) { - const bucket = `https://gh-contractor-zcbenz.s3.amazonaws.com/` + const bucket = 'https://gh-contractor-zcbenz.s3.amazonaws.com/' const patterns = [ `${bucket}atom-shell/dist/${version}/iojs-${version}-headers.tar.gz`, `${bucket}atom-shell/dist/${version}/iojs-${version}.tar.gz`, @@ -302,7 +302,7 @@ async function makeRelease (releaseToValidate) { await validateReleaseAssets(draftRelease) await publishRelease(draftRelease) console.log(`${pass} SUCCESS!!! Release has been published. Please run ` + - `"npm run publish-to-npm" to publish release to npm.`) + '"npm run publish-to-npm" to publish release to npm.') } } @@ -321,7 +321,7 @@ async function makeTempDir () { async function verifyAssets (release) { const downloadDir = await makeTempDir() - console.log(`Downloading files from GitHub to verify shasums`) + console.log('Downloading files from GitHub to verify shasums') const shaSumFile = 'SHASUMS256.txt' let filesToCheck = await Promise.all(release.assets.map(async asset => { diff --git a/script/release/uploaders/upload-to-github.js b/script/release/uploaders/upload-to-github.js index f53646b4884b..fb7fa36fa5b8 100644 --- a/script/release/uploaders/upload-to-github.js +++ b/script/release/uploaders/upload-to-github.js @@ -20,10 +20,10 @@ const getHeaders = (filePath, fileName) => { const extension = fileName.split('.').pop() const size = fs.statSync(filePath).size const options = { - 'json': 'text/json', - 'zip': 'application/zip', - 'txt': 'text/plain', - 'ts': 'application/typescript' + json: 'text/json', + zip: 'application/zip', + txt: 'text/plain', + ts: 'application/typescript' } return { @@ -74,7 +74,7 @@ function uploadToGitHub () { uploadToGitHub() } }).catch((getReleaseErr) => { - console.log(`Fatal: Unable to get current release assets via getRelease! Error was:`, getReleaseErr) + console.log('Fatal: Unable to get current release assets via getRelease! Error was:', getReleaseErr) }) } else { console.log(`Error retrying uploading ${fileName} to GitHub:`, err) diff --git a/script/release/version-bumper.js b/script/release/version-bumper.js index 96ef9c3dadc4..1efa1997cbb1 100644 --- a/script/release/version-bumper.js +++ b/script/release/version-bumper.js @@ -16,9 +16,9 @@ const readFile = promisify(fs.readFile) function parseCommandLine () { let help const opts = minimist(process.argv.slice(2), { - string: [ 'bump', 'version' ], - boolean: [ 'dryRun', 'help' ], - alias: { 'version': ['v'] }, + string: ['bump', 'version'], + boolean: ['dryRun', 'help'], + alias: { version: ['v'] }, unknown: arg => { help = true } }) if (help || opts.help || !opts.bump) { diff --git a/spec-main/api-app-spec.ts b/spec-main/api-app-spec.ts index 8d5ddac22c04..797720c8a8da 100644 --- a/spec-main/api-app-spec.ts +++ b/spec-main/api-app-spec.ts @@ -443,7 +443,7 @@ describe('app module', () => { await w.loadURL('about:blank') const promise = emittedOnce(app, 'desktop-capturer-get-sources') - w.webContents.executeJavaScript(`require('electron').desktopCapturer.getSources({ types: ['screen'] })`) + w.webContents.executeJavaScript('require(\'electron\').desktopCapturer.getSources({ types: [\'screen\'] })') const [, webContents] = await promise expect(webContents).to.equal(w.webContents) @@ -462,7 +462,7 @@ describe('app module', () => { await w.loadURL('about:blank') const promise = emittedOnce(app, 'remote-require') - w.webContents.executeJavaScript(`require('electron').remote.require('test')`) + w.webContents.executeJavaScript('require(\'electron\').remote.require(\'test\')') const [, webContents, moduleName] = await promise expect(webContents).to.equal(w.webContents) @@ -480,7 +480,7 @@ describe('app module', () => { await w.loadURL('about:blank') const promise = emittedOnce(app, 'remote-get-global') - w.webContents.executeJavaScript(`require('electron').remote.getGlobal('test')`) + w.webContents.executeJavaScript('require(\'electron\').remote.getGlobal(\'test\')') const [, webContents, globalName] = await promise expect(webContents).to.equal(w.webContents) @@ -498,7 +498,7 @@ describe('app module', () => { await w.loadURL('about:blank') const promise = emittedOnce(app, 'remote-get-builtin') - w.webContents.executeJavaScript(`require('electron').remote.app`) + w.webContents.executeJavaScript('require(\'electron\').remote.app') const [, webContents, moduleName] = await promise expect(webContents).to.equal(w.webContents) @@ -516,7 +516,7 @@ describe('app module', () => { await w.loadURL('about:blank') const promise = emittedOnce(app, 'remote-get-current-window') - w.webContents.executeJavaScript(`{ require('electron').remote.getCurrentWindow() }`) + w.webContents.executeJavaScript('{ require(\'electron\').remote.getCurrentWindow() }') const [, webContents] = await promise expect(webContents).to.equal(w.webContents) @@ -533,7 +533,7 @@ describe('app module', () => { await w.loadURL('about:blank') const promise = emittedOnce(app, 'remote-get-current-web-contents') - w.webContents.executeJavaScript(`{ require('electron').remote.getCurrentWebContents() }`) + w.webContents.executeJavaScript('{ require(\'electron\').remote.getCurrentWebContents() }') const [, webContents] = await promise expect(webContents).to.equal(w.webContents) @@ -596,7 +596,7 @@ describe('app module', () => { const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe') const processStartArgs = [ '--processStart', `"${path.basename(process.execPath)}"`, - '--process-start-args', `"--hidden"` + '--process-start-args', '"--hidden"' ] before(function () { @@ -809,7 +809,7 @@ describe('app module', () => { const updateExe = path.resolve(path.dirname(process.execPath), '..', 'Update.exe') const processStartArgs = [ '--processStart', `"${path.basename(process.execPath)}"`, - '--process-start-args', `"--hidden"` + '--process-start-args', '"--hidden"' ] let Winreg: any diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index 333d8e043484..80c9bdacb039 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -45,7 +45,7 @@ describe('BrowserWindow module', () => { show: false, // apparently void 0 had different behaviour from undefined in the // issue that this test is supposed to catch. - webContents: void 0 + webContents: void 0 // eslint-disable-line no-void } as any) w.destroy() }).not.to.throw() @@ -940,9 +940,9 @@ describe('BrowserWindow module', () => { }) }) - describe(`BrowserWindow.getNormalBounds()`, () => { - describe(`Normal state`, () => { - it(`checks normal bounds after resize`, (done) => { + describe('BrowserWindow.getNormalBounds()', () => { + describe('Normal state', () => { + it('checks normal bounds after resize', (done) => { const size = [300, 400] w.once('resize', () => { expectBoundsEqual(w.getNormalBounds(), w.getBounds()) @@ -950,7 +950,7 @@ describe('BrowserWindow module', () => { }) w.setSize(size[0], size[1]) }) - it(`checks normal bounds after move`, (done) => { + it('checks normal bounds after move', (done) => { const pos = [10, 10] w.once('move', () => { expectBoundsEqual(w.getNormalBounds(), w.getBounds()) @@ -959,8 +959,8 @@ describe('BrowserWindow module', () => { w.setPosition(pos[0], pos[1]) }) }) - ifdescribe(process.platform !== 'linux')(`Maximized state`, () => { - it(`checks normal bounds when maximized`, (done) => { + ifdescribe(process.platform !== 'linux')('Maximized state', () => { + it('checks normal bounds when maximized', (done) => { const bounds = w.getBounds() w.once('maximize', () => { expectBoundsEqual(w.getNormalBounds(), bounds) @@ -969,7 +969,7 @@ describe('BrowserWindow module', () => { w.show() w.maximize() }) - it(`checks normal bounds when unmaximized`, (done) => { + it('checks normal bounds when unmaximized', (done) => { const bounds = w.getBounds() w.once('maximize', () => { w.unmaximize() @@ -982,8 +982,8 @@ describe('BrowserWindow module', () => { w.maximize() }) }) - ifdescribe(process.platform !== 'linux')(`Minimized state`, () => { - it(`checks normal bounds when minimized`, (done) => { + ifdescribe(process.platform !== 'linux')('Minimized state', () => { + it('checks normal bounds when minimized', (done) => { const bounds = w.getBounds() w.once('minimize', () => { expectBoundsEqual(w.getNormalBounds(), bounds) @@ -992,7 +992,7 @@ describe('BrowserWindow module', () => { w.show() w.minimize() }) - it(`checks normal bounds when restored`, (done) => { + it('checks normal bounds when restored', (done) => { const bounds = w.getBounds() w.once('minimize', () => { w.restore() @@ -1005,8 +1005,8 @@ describe('BrowserWindow module', () => { w.minimize() }) }) - ifdescribe(process.platform === 'win32')(`Fullscreen state`, () => { - it(`checks normal bounds when fullscreen'ed`, (done) => { + ifdescribe(process.platform === 'win32')('Fullscreen state', () => { + it('checks normal bounds when fullscreen\'ed', (done) => { const bounds = w.getBounds() w.once('enter-full-screen', () => { expectBoundsEqual(w.getNormalBounds(), bounds) @@ -1015,7 +1015,7 @@ describe('BrowserWindow module', () => { w.show() w.setFullScreen(true) }) - it(`checks normal bounds when unfullscreen'ed`, (done) => { + it('checks normal bounds when unfullscreen\'ed', (done) => { const bounds = w.getBounds() w.once('enter-full-screen', () => { w.setFullScreen(false) @@ -1262,7 +1262,7 @@ describe('BrowserWindow module', () => { server = http.createServer((req, res) => { if (req.url === '/link') { res.setHeader('Content-type', 'text/html') - res.end(`foo`) + res.end('foo') return } res.end() @@ -2092,10 +2092,10 @@ describe('BrowserWindow module', () => { await closeWindow(popupWindow, { assertNotWindows: false }) expect(popupAccessMessage).to.be.a('string', - `child's .document is accessible from its parent window`) + 'child\'s .document is accessible from its parent window') expect(popupAccessMessage).to.match(/^Blocked a frame with origin/) expect(openerAccessMessage).to.be.a('string', - `opener .document is accessible from a popup window`) + 'opener .document is accessible from a popup window') expect(openerAccessMessage).to.match(/^Blocked a frame with origin/) }) @@ -2178,7 +2178,7 @@ describe('BrowserWindow module', () => { waitForEvents(w, [ 'page-title-updated' ], done) - w.loadURL(`data:text/html,`) + w.loadURL('data:text/html,') }) it('works for stop events', (done) => { @@ -2187,7 +2187,7 @@ describe('BrowserWindow module', () => { 'did-fail-load', 'did-stop-loading' ], done) - w.loadURL(`data:text/html,`) + w.loadURL('data:text/html,') }) it('works for web contents events', (done) => { diff --git a/spec-main/api-context-bridge-spec.ts b/spec-main/api-context-bridge-spec.ts index 4766cb127198..4138f03a8082 100644 --- a/spec-main/api-context-bridge-spec.ts +++ b/spec-main/api-context-bridge-spec.ts @@ -267,7 +267,7 @@ describe('contextBridge', () => { contextBridge.exposeInMainWorld('example', { 1: 123, 2: 456, - '3': 789 + 3: 789 }) }) const result = await callWithBindings(async (root: any) => { @@ -390,7 +390,7 @@ describe('contextBridge', () => { try { let a: any = [] for (let i = 0; i < 999; i++) { - a = [ a ] + a = [a] } root.example.doThing(a) return false @@ -403,7 +403,7 @@ describe('contextBridge', () => { try { let a: any = [] for (let i = 0; i < 1000; i++) { - a = [ a ] + a = [a] } root.example.doThing(a) return false diff --git a/spec-main/api-crash-reporter-spec.ts b/spec-main/api-crash-reporter-spec.ts index 588e36f693df..98ebfab6bc21 100644 --- a/spec-main/api-crash-reporter-spec.ts +++ b/spec-main/api-crash-reporter-spec.ts @@ -277,10 +277,10 @@ ifdescribe(!process.mas && !process.env.DISABLE_CRASH_REPORTER_TESTS && process. const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true } }) w.loadURL('about:blank') await expect( - w.webContents.executeJavaScript(`require('electron').crashReporter.setUploadToServer(true)`) + w.webContents.executeJavaScript('require(\'electron\').crashReporter.setUploadToServer(true)') ).to.eventually.be.rejected() await expect( - w.webContents.executeJavaScript(`require('electron').crashReporter.getUploadToServer()`) + w.webContents.executeJavaScript('require(\'electron\').crashReporter.getUploadToServer()') ).to.eventually.be.rejected() }) it('sets uploadToServer false when called with false', function () { diff --git a/spec-main/api-debugger-spec.ts b/spec-main/api-debugger-spec.ts index c7f0b5e245d6..ed0a996d3125 100644 --- a/spec-main/api-debugger-spec.ts +++ b/spec-main/api-debugger-spec.ts @@ -104,7 +104,7 @@ describe('debugger module', () => { w.webContents.loadURL('about:blank') w.webContents.debugger.attach() - const params = { 'expression': '4+2' } + const params = { expression: '4+2' } const res = await w.webContents.debugger.sendCommand('Runtime.evaluate', params) expect(res.wasThrown).to.be.undefined() @@ -121,7 +121,7 @@ describe('debugger module', () => { w.webContents.openDevTools() await opened - const params = { 'expression': '4+2' } + const params = { expression: '4+2' } const res = await w.webContents.debugger.sendCommand('Runtime.evaluate', params) expect(res.wasThrown).to.be.undefined() diff --git a/spec-main/api-deprecate-spec.ts b/spec-main/api-deprecate-spec.ts index f0294abd2e80..9233f6ca8751 100644 --- a/spec-main/api-deprecate-spec.ts +++ b/spec-main/api-deprecate-spec.ts @@ -181,8 +181,8 @@ describe('deprecate', () => { deprecate.fnToProperty(mod, 'newProp', '_oldGetterFn', '_oldSetterFn') - mod['oldGetterFn']() - mod['oldSetterFn']() + mod.oldGetterFn() + mod.oldSetterFn() expect(warnings).to.have.lengthOf(2) diff --git a/spec-main/api-menu-spec.ts b/spec-main/api-menu-spec.ts index 45cbb9838435..c3233c962bd4 100644 --- a/spec-main/api-menu-spec.ts +++ b/spec-main/api-menu-spec.ts @@ -83,7 +83,7 @@ describe('Menu module', function () { it('does throw exception for object without role, label, or type attribute', () => { expect(() => { - Menu.buildFromTemplate([{ 'visible': true }]) + Menu.buildFromTemplate([{ visible: true }]) }).to.throw(/Invalid template for MenuItem: must have at least one of label, role or type/) }) it('does throw exception for undefined', () => { @@ -99,7 +99,8 @@ describe('Menu module', function () { { label: 'two', id: '2', - afterGroupContaining: ['1'] }, + afterGroupContaining: ['1'] + }, { type: 'separator' }, { id: '1', @@ -132,8 +133,8 @@ describe('Menu module', function () { }) const sep = new MenuItem({ type: 'separator' }) - const items = [ secondItem, sep, firstItem ] - const expected = [ firstItem, sep, secondItem ] + const items = [secondItem, sep, firstItem] + const expected = [firstItem, sep, secondItem] expect(sortMenuItems(items)).to.deep.equal(expected) }) diff --git a/spec-main/api-net-spec.ts b/spec-main/api-net-spec.ts index ad799b3e9ff6..573e8dadc5ac 100644 --- a/spec-main/api-net-spec.ts +++ b/spec-main/api-net-spec.ts @@ -85,7 +85,7 @@ let routeFailure = false respondNTimes.toRoutes = (routes: Record, n: number) => { return respondNTimes((request, response) => { - if (routes.hasOwnProperty(request.url || '')) { + if (Object.prototype.hasOwnProperty.call(routes, request.url || '')) { (async () => { await Promise.resolve(routes[request.url || ''](request, response)) })().catch((err) => { @@ -702,7 +702,7 @@ describe('net module', () => { expect(() => { session.defaultSession.webRequest.onBeforeRequest( - { urls: [ '*://www.googleapis.com/', '*://blahblah.dev' ] }, + { urls: ['*://www.googleapis.com/', '*://blahblah.dev'] }, (details, callback) => { callback({ cancel: false }) } ) }).to.throw('Invalid url pattern *://blahblah.dev: Empty path.') diff --git a/spec-main/api-notification-dbus-spec.ts b/spec-main/api-notification-dbus-spec.ts index 7631a573b322..2096ecb0b0cf 100644 --- a/spec-main/api-notification-dbus-spec.ts +++ b/spec-main/api-notification-dbus-spec.ts @@ -116,9 +116,9 @@ ifdescribe(!skip)('Notification module (dbus)', () => { body: 'body', actions: [], hints: { - 'append': 'true', + append: 'true', 'desktop-entry': appName, - 'urgency': 1 + urgency: 1 } }) }) diff --git a/spec-main/api-power-monitor-spec.ts b/spec-main/api-power-monitor-spec.ts index fd87260829f9..eea1257dfab0 100644 --- a/spec-main/api-power-monitor-spec.ts +++ b/spec-main/api-power-monitor-spec.ts @@ -128,7 +128,7 @@ describe('powerMonitor', () => { // form and type but not its value. const idleState = powerMonitor.getSystemIdleState(1) expect(idleState).to.be.a('string') - const validIdleStates = [ 'active', 'idle', 'locked', 'unknown' ] + const validIdleStates = ['active', 'idle', 'locked', 'unknown'] expect(validIdleStates).to.include(idleState) }) diff --git a/spec-main/api-protocol-spec.ts b/spec-main/api-protocol-spec.ts index 51a081ac9f2e..4ef2528ac79f 100644 --- a/spec-main/api-protocol-spec.ts +++ b/spec-main/api-protocol-spec.ts @@ -228,7 +228,7 @@ describe('protocol module', () => { expect(() => callback({ path: filePath, headers: { 'X-Great-Header': (42 as any) } - })).to.throw(Error, `Value of 'X-Great-Header' header has to be a string`) + })).to.throw(Error, 'Value of \'X-Great-Header\' header has to be a string') done() }).then(() => { ajax(protocolName + '://fake-host') @@ -371,8 +371,8 @@ describe('protocol module', () => { await registerStreamProtocol(protocolName, (request, callback) => { callback({ headers: { - 'header1': ['value1', 'value2'], - 'header2': 'value3' + header1: ['value1', 'value2'], + header2: 'value3' }, data: getStream() }) diff --git a/spec-main/api-remote-spec.ts b/spec-main/api-remote-spec.ts index 6870360fbdf8..b5fcfdf3c8a9 100644 --- a/spec-main/api-remote-spec.ts +++ b/spec-main/api-remote-spec.ts @@ -94,7 +94,7 @@ ifdescribe(features.isRemoteModuleEnabled())('remote module', () => { w().webContents.once('remote-get-global', (event) => { event.preventDefault() }) - await expect(remotely(() => require('electron').remote.getGlobal('test'))).to.eventually.be.rejected(`Blocked remote.getGlobal('test')`) + await expect(remotely(() => require('electron').remote.getGlobal('test'))).to.eventually.be.rejected('Blocked remote.getGlobal(\'test\')') }) }) @@ -110,7 +110,7 @@ ifdescribe(features.isRemoteModuleEnabled())('remote module', () => { w().webContents.once('remote-get-builtin', (event) => { event.preventDefault() }) - await expect(remotely(() => (require('electron').remote as any).getBuiltin('test'))).to.eventually.be.rejected(`Blocked remote.getGlobal('test')`) + await expect(remotely(() => (require('electron').remote as any).getBuiltin('test'))).to.eventually.be.rejected('Blocked remote.getGlobal(\'test\')') }) }) @@ -126,7 +126,7 @@ ifdescribe(features.isRemoteModuleEnabled())('remote module', () => { w().webContents.once('remote-require', (event) => { event.preventDefault() }) - await expect(remotely(() => require('electron').remote.require('test'))).to.eventually.be.rejected(`Blocked remote.require('test')`) + await expect(remotely(() => require('electron').remote.require('test'))).to.eventually.be.rejected('Blocked remote.require(\'test\')') }) }) @@ -142,7 +142,7 @@ ifdescribe(features.isRemoteModuleEnabled())('remote module', () => { w().webContents.once('remote-get-current-window', (event) => { event.preventDefault() }) - await expect(remotely(() => require('electron').remote.getCurrentWindow())).to.eventually.be.rejected(`Blocked remote.getCurrentWindow()`) + await expect(remotely(() => require('electron').remote.getCurrentWindow())).to.eventually.be.rejected('Blocked remote.getCurrentWindow()') }) }) @@ -158,7 +158,7 @@ ifdescribe(features.isRemoteModuleEnabled())('remote module', () => { w().webContents.once('remote-get-current-web-contents', (event) => { event.preventDefault() }) - await expect(remotely(() => require('electron').remote.getCurrentWebContents())).to.eventually.be.rejected(`Blocked remote.getCurrentWebContents()`) + await expect(remotely(() => require('electron').remote.getCurrentWebContents())).to.eventually.be.rejected('Blocked remote.getCurrentWebContents()') }) }) }) diff --git a/spec-main/api-session-spec.ts b/spec-main/api-session-spec.ts index bda27c89889c..221a90cdd650 100644 --- a/spec-main/api-session-spec.ts +++ b/spec-main/api-session-spec.ts @@ -149,7 +149,7 @@ describe('session module', () => { it('should overwrite previous cookies', async () => { const { cookies } = session.defaultSession const name = 'DidOverwrite' - for (const value of [ 'No', 'Yes' ]) { + for (const value of ['No', 'Yes']) { await cookies.set({ url, name, value, expirationDate: (+new Date()) / 1000 + 120 }) const list = await cookies.get({ url }) @@ -303,7 +303,7 @@ describe('session module', () => { let customSession: Session const protocol = session.defaultSession.protocol const handler = (ignoredError: any, callback: Function) => { - callback({ data: ``, mimeType: 'text/html' }) + callback({ data: '', mimeType: 'text/html' }) } beforeEach(async () => { @@ -869,7 +869,7 @@ describe('session module', () => { const w = new BrowserWindow({ show: false, webPreferences: { - partition: `very-temp-permision-handler`, + partition: 'very-temp-permision-handler', nodeIntegration: true } }) diff --git a/spec-main/api-subframe-spec.ts b/spec-main/api-subframe-spec.ts index 470f9f4f3783..599eee0cc5d3 100644 --- a/spec-main/api-subframe-spec.ts +++ b/spec-main/api-subframe-spec.ts @@ -114,7 +114,7 @@ describe('renderer nodeIntegrationInSubFrames', () => { if (config.names.length > 0) { config.title = `with ${config.names.join(', ')} on` } else { - config.title = `without anything special turned on` + config.title = 'without anything special turned on' } delete config.names diff --git a/spec-main/api-system-preferences-spec.ts b/spec-main/api-system-preferences-spec.ts index 4e85fb22842c..affe8a75d570 100644 --- a/spec-main/api-system-preferences-spec.ts +++ b/spec-main/api-system-preferences-spec.ts @@ -47,7 +47,7 @@ describe('systemPreferences module', () => { 1, null, new Date(), - { 'one': null } + { one: null } ] for (const badDefault of badDefaults) { @@ -90,7 +90,7 @@ describe('systemPreferences module', () => { ['integer', 11], ['url', 'https://github.com/electron'], ['array', [1, 2, 3]], - ['dictionary', { 'a': 1, 'b': 2 }] + ['dictionary', { a: 1, b: 2 }] ] it('sets values', () => { diff --git a/spec-main/api-web-contents-spec.ts b/spec-main/api-web-contents-spec.ts index 80cb0164fe2b..64d0f91bf454 100644 --- a/spec-main/api-web-contents-spec.ts +++ b/spec-main/api-web-contents-spec.ts @@ -235,7 +235,7 @@ describe('webContents module', () => { }) it('executes after page load', (done) => { - w.webContents.executeJavaScript(`(() => "test")()`).then(result => { + w.webContents.executeJavaScript('(() => "test")()').then(result => { expect(result).to.equal('test') done() }) @@ -727,15 +727,15 @@ describe('webContents module', () => { const w = new BrowserWindow({ show: false }) expect(() => { w.webContents.startDrag({ icon: path.join(fixturesPath, 'assets', 'logo.png') } as any) - }).to.throw(`Must specify either 'file' or 'files' option`) + }).to.throw('Must specify either \'file\' or \'files\' option') expect(() => { w.webContents.startDrag({ file: __filename } as any) - }).to.throw(`Must specify non-empty 'icon' option`) + }).to.throw('Must specify non-empty \'icon\' option') expect(() => { w.webContents.startDrag({ file: __filename, icon: __filename }) - }).to.throw(`Must specify non-empty 'icon' option`) + }).to.throw('Must specify non-empty \'icon\' option') }) }) @@ -1561,7 +1561,7 @@ describe('webContents module', () => { marginsType: 'terrible', scaleFactor: 'not-a-number', landscape: [], - pageRanges: { 'oops': 'im-not-the-right-key' }, + pageRanges: { oops: 'im-not-the-right-key' }, headerFooter: '123', printSelectionOnly: 1, printBackground: 2, @@ -1783,7 +1783,7 @@ describe('webContents module', () => { cb(user, pass) }) await w.loadURL(serverUrl) - const body = await w.webContents.executeJavaScript(`document.documentElement.textContent`) + const body = await w.webContents.executeJavaScript('document.documentElement.textContent') expect(body).to.equal(`Basic ${Buffer.from(`${user}:${pass}`).toString('base64')}`) expect(eventRequest.url).to.equal(serverUrl + '/') expect(eventAuthInfo.isProxy).to.be.false() @@ -1807,7 +1807,7 @@ describe('webContents module', () => { cb(user, pass) }) await w.loadURL(`${serverUrl}/no-auth`) - const body = await w.webContents.executeJavaScript(`document.documentElement.textContent`) + const body = await w.webContents.executeJavaScript('document.documentElement.textContent') expect(body).to.equal(`Basic ${Buffer.from(`${user}:${pass}`).toString('base64')}`) expect(eventRequest.url).to.equal(`${serverUrl}/no-auth`) expect(eventAuthInfo.isProxy).to.be.true() @@ -1824,7 +1824,7 @@ describe('webContents module', () => { cb() }) await w.loadURL(serverUrl) - const body = await w.webContents.executeJavaScript(`document.documentElement.textContent`) + const body = await w.webContents.executeJavaScript('document.documentElement.textContent') expect(body).to.equal('401') }) }) diff --git a/spec-main/api-web-contents-view-spec.ts b/spec-main/api-web-contents-view-spec.ts index 3aeeb5da5b89..9f3688896c6a 100644 --- a/spec-main/api-web-contents-view-spec.ts +++ b/spec-main/api-web-contents-view-spec.ts @@ -49,7 +49,7 @@ describe('WebContentsView', () => { return arr } - it(`doesn't crash when GCed during allocation`, (done) => { + it('doesn\'t crash when GCed during allocation', (done) => { const web = (webContents as any).create({}) // eslint-disable-next-line no-new new WebContentsView(web) diff --git a/spec-main/api-web-frame-spec.ts b/spec-main/api-web-frame-spec.ts index 1ff88b6f4360..3f14556743dd 100644 --- a/spec-main/api-web-frame-spec.ts +++ b/spec-main/api-web-frame-spec.ts @@ -29,12 +29,12 @@ describe('webFrame module', () => { } }) }) - const inputText = `spleling test you're ` + const inputText = 'spleling test you\'re ' for (const keyCode of inputText) { w.webContents.sendInputEvent({ type: 'char', keyCode }) } const [words, callbackDefined] = await spellCheckerFeedback - expect(words.sort()).to.deep.equal(['spleling', 'test', `you're`, 'you', 're'].sort()) + expect(words.sort()).to.deep.equal(['spleling', 'test', 'you\'re', 'you', 're'].sort()) expect(callbackDefined).to.be.true() }) }) diff --git a/spec-main/api-web-request-spec.ts b/spec-main/api-web-request-spec.ts index 7b5a97f66fc3..fe98ae4ebcc8 100644 --- a/spec-main/api-web-request-spec.ts +++ b/spec-main/api-web-request-spec.ts @@ -217,7 +217,7 @@ describe('webRequest module', () => { ses.webRequest.onHeadersReceived((details, callback) => { expect(details.statusLine).to.equal('HTTP/1.1 200 OK') expect(details.statusCode).to.equal(200) - expect(details.responseHeaders!['Custom']).to.deep.equal(['Header']) + expect(details.responseHeaders!.Custom).to.deep.equal(['Header']) callback({}) }) const { data } = await ajax(defaultURL) @@ -227,7 +227,7 @@ describe('webRequest module', () => { it('can change the response header', async () => { ses.webRequest.onHeadersReceived((details, callback) => { const responseHeaders = details.responseHeaders! - responseHeaders['Custom'] = ['Changed'] as any + responseHeaders.Custom = ['Changed'] as any callback({ responseHeaders: responseHeaders }) }) const { headers } = await ajax(defaultURL) @@ -247,7 +247,7 @@ describe('webRequest module', () => { it('can change headers of CORS responses', async () => { ses.webRequest.onHeadersReceived((details, callback) => { const responseHeaders = details.responseHeaders! - responseHeaders['Custom'] = ['Changed'] as any + responseHeaders.Custom = ['Changed'] as any callback({ responseHeaders: responseHeaders }) }) const { headers } = await ajax('neworigin://host') @@ -306,7 +306,7 @@ describe('webRequest module', () => { expect(details.fromCache).to.be.a('boolean') expect(details.statusLine).to.equal('HTTP/1.1 200 OK') expect(details.statusCode).to.equal(200) - expect(details.responseHeaders!['Custom']).to.deep.equal(['Header']) + expect(details.responseHeaders!.Custom).to.deep.equal(['Header']) }) const { data, headers } = await ajax(defaultURL) expect(headers).to.match(/^custom: Header$/m) @@ -420,24 +420,24 @@ describe('webRequest module', () => { }) ses.webRequest.onResponseStarted((details) => { if (details.url.startsWith('ws://')) { - expect(details.responseHeaders!['Connection'][0]).be.equal('Upgrade') + expect(details.responseHeaders!.Connection[0]).be.equal('Upgrade') } else if (details.url.startsWith('http')) { - expect(details.responseHeaders!['foo1'][0]).be.equal('bar1') + expect(details.responseHeaders!.foo1[0]).be.equal('bar1') } }) ses.webRequest.onSendHeaders((details) => { if (details.url.startsWith('ws://')) { - expect(details.requestHeaders['foo']).be.equal('bar') - expect(details.requestHeaders['Upgrade']).be.equal('websocket') + expect(details.requestHeaders.foo).be.equal('bar') + expect(details.requestHeaders.Upgrade).be.equal('websocket') } else if (details.url.startsWith('http')) { - expect(details.requestHeaders['foo']).be.equal('bar') + expect(details.requestHeaders.foo).be.equal('bar') } }) ses.webRequest.onCompleted((details) => { if (details.url.startsWith('ws://')) { - expect(details['error']).be.equal('net::ERR_WS_UPGRADE') + expect(details.error).be.equal('net::ERR_WS_UPGRADE') } else if (details.url.startsWith('http')) { - expect(details['error']).be.equal('net::OK') + expect(details.error).be.equal('net::OK') } }) @@ -462,10 +462,10 @@ describe('webRequest module', () => { contents.loadFile(path.join(fixturesPath, 'api', 'webrequest.html'), { query: { port } }) await emittedOnce(ipcMain, 'websocket-success') - expect(receivedHeaders['/websocket']['Upgrade'][0]).to.equal('websocket') - expect(receivedHeaders['/']['foo1'][0]).to.equal('bar1') - expect(reqHeaders['/websocket']['foo']).to.equal('bar') - expect(reqHeaders['/']['foo']).to.equal('bar') + expect(receivedHeaders['/websocket'].Upgrade[0]).to.equal('websocket') + expect(receivedHeaders['/'].foo1[0]).to.equal('bar1') + expect(reqHeaders['/websocket'].foo).to.equal('bar') + expect(reqHeaders['/'].foo).to.equal('bar') }) }) }) diff --git a/spec-main/chromium-spec.ts b/spec-main/chromium-spec.ts index 4ceab1fcca2a..28dd11949658 100644 --- a/spec-main/chromium-spec.ts +++ b/spec-main/chromium-spec.ts @@ -49,7 +49,7 @@ describe('reporting api', () => { res.setHeader('Report-To', JSON.stringify({ group: 'default', max_age: 120, - endpoints: [ { url: `https://localhost:${(server.address() as any).port}/report` } ] + endpoints: [{ url: `https://localhost:${(server.address() as any).port}/report` }] })) res.setHeader('Content-Type', 'text/html') // using the deprecated `webkitRequestAnimationFrame` will trigger a @@ -271,7 +271,7 @@ describe('command line switches', () => { it('should display the discovery page', (done) => { const electronPath = process.execPath let output = '' - const appProcess = ChildProcess.spawn(electronPath, [`--remote-debugging-port=`]) + const appProcess = ChildProcess.spawn(electronPath, ['--remote-debugging-port=']) appProcess.stderr.on('data', (data) => { output += data @@ -318,7 +318,7 @@ describe('chromium features', () => { const appLocale = app.getLocale() const w = new BrowserWindow({ show: false }) await w.loadURL('about:blank') - const languages = await w.webContents.executeJavaScript(`navigator.languages`) + const languages = await w.webContents.executeJavaScript('navigator.languages') expect(languages).to.deep.equal([appLocale]) }) }) @@ -448,7 +448,7 @@ describe('chromium features', () => { [true, false].forEach((isSandboxEnabled) => describe(`sandbox=${isSandboxEnabled}`, () => { - it('posts data in the same window', () => { + it('posts data in the same window', async () => { const w = new BrowserWindow({ show: false, webPreferences: { @@ -456,24 +456,23 @@ describe('chromium features', () => { } }) - return new Promise(async (resolve) => { - await w.loadFile(path.join(fixturesPath, 'pages', 'form-with-data.html')) + await w.loadFile(path.join(fixturesPath, 'pages', 'form-with-data.html')) - w.webContents.once('did-finish-load', async () => { - const res = await w.webContents.executeJavaScript('document.body.innerText') - expect(res).to.equal('body:greeting=hello') - resolve() - }) + const loadPromise = emittedOnce(w.webContents, 'did-finish-load') - w.webContents.executeJavaScript(` - const form = document.querySelector('form') - form.action = '${serverUrl}'; - form.submit(); - `) - }) + w.webContents.executeJavaScript(` + const form = document.querySelector('form') + form.action = '${serverUrl}'; + form.submit(); + `) + + await loadPromise + + const res = await w.webContents.executeJavaScript('document.body.innerText') + expect(res).to.equal('body:greeting=hello') }) - it('posts data to a new window with target=_blank', () => { + it('posts data to a new window with target=_blank', async () => { const w = new BrowserWindow({ show: false, webPreferences: { @@ -481,22 +480,21 @@ describe('chromium features', () => { } }) - return new Promise(async (resolve) => { - await w.loadFile(path.join(fixturesPath, 'pages', 'form-with-data.html')) + await w.loadFile(path.join(fixturesPath, 'pages', 'form-with-data.html')) - app.once('browser-window-created', async (event, newWin) => { - const res = await newWin.webContents.executeJavaScript('document.body.innerText') - expect(res).to.equal('body:greeting=hello') - resolve() - }) + const windowCreatedPromise = emittedOnce(app, 'browser-window-created') - w.webContents.executeJavaScript(` - const form = document.querySelector('form') - form.action = '${serverUrl}'; - form.target = '_blank'; - form.submit(); - `) - }) + w.webContents.executeJavaScript(` + const form = document.querySelector('form') + form.action = '${serverUrl}'; + form.target = '_blank'; + form.submit(); + `) + + const [, newWin] = await windowCreatedPromise + + const res = await newWin.webContents.executeJavaScript('document.body.innerText') + expect(res).to.equal('body:greeting=hello') }) }) ) @@ -598,13 +596,13 @@ describe('chromium features', () => { w.webContents.executeJavaScript(`{ b = window.open(${JSON.stringify(targetURL)}); null }`) const [, window] = await emittedOnce(app, 'browser-window-created') await emittedOnce(window.webContents, 'did-finish-load') - expect(await w.webContents.executeJavaScript(`b.location.href`)).to.equal(targetURL) + expect(await w.webContents.executeJavaScript('b.location.href')).to.equal(targetURL) }) it('defines a window.location setter', async () => { const w = new BrowserWindow({ show: false }) w.loadURL('about:blank') - w.webContents.executeJavaScript(`{ b = window.open("about:blank"); null }`) + w.webContents.executeJavaScript('{ b = window.open("about:blank"); null }') const [, { webContents }] = await emittedOnce(app, 'browser-window-created') await emittedOnce(webContents, 'did-finish-load') // When it loads, redirect @@ -615,7 +613,7 @@ describe('chromium features', () => { it('defines a window.location.href setter', async () => { const w = new BrowserWindow({ show: false }) w.loadURL('about:blank') - w.webContents.executeJavaScript(`{ b = window.open("about:blank"); null }`) + w.webContents.executeJavaScript('{ b = window.open("about:blank"); null }') const [, { webContents }] = await emittedOnce(app, 'browser-window-created') await emittedOnce(webContents, 'did-finish-load') // When it loads, redirect @@ -626,25 +624,25 @@ describe('chromium features', () => { it('open a blank page when no URL is specified', async () => { const w = new BrowserWindow({ show: false }) w.loadURL('about:blank') - w.webContents.executeJavaScript(`{ b = window.open(); null }`) + w.webContents.executeJavaScript('{ b = window.open(); null }') const [, { webContents }] = await emittedOnce(app, 'browser-window-created') await emittedOnce(webContents, 'did-finish-load') - expect(await w.webContents.executeJavaScript(`b.location.href`)).to.equal('about:blank') + expect(await w.webContents.executeJavaScript('b.location.href')).to.equal('about:blank') }) it('open a blank page when an empty URL is specified', async () => { const w = new BrowserWindow({ show: false }) w.loadURL('about:blank') - w.webContents.executeJavaScript(`{ b = window.open(''); null }`) + w.webContents.executeJavaScript('{ b = window.open(\'\'); null }') const [, { webContents }] = await emittedOnce(app, 'browser-window-created') await emittedOnce(webContents, 'did-finish-load') - expect(await w.webContents.executeJavaScript(`b.location.href`)).to.equal('about:blank') + expect(await w.webContents.executeJavaScript('b.location.href')).to.equal('about:blank') }) it('sets the window title to the specified frameName', async () => { const w = new BrowserWindow({ show: false }) w.loadURL('about:blank') - w.webContents.executeJavaScript(`{ b = window.open('', 'hello'); null }`) + w.webContents.executeJavaScript('{ b = window.open(\'\', \'hello\'); null }') const [, window] = await emittedOnce(app, 'browser-window-created') expect(window.getTitle()).to.equal('hello') }) @@ -652,7 +650,7 @@ describe('chromium features', () => { it('does not throw an exception when the frameName is a built-in object property', async () => { const w = new BrowserWindow({ show: false }) w.loadURL('about:blank') - w.webContents.executeJavaScript(`{ b = window.open('', '__proto__'); null }`) + w.webContents.executeJavaScript('{ b = window.open(\'\', \'__proto__\'); null }') const [, window] = await emittedOnce(app, 'browser-window-created') expect(window.getTitle()).to.equal('__proto__') }) @@ -682,7 +680,7 @@ describe('chromium features', () => { it('can return labels of enumerated devices', async () => { const w = new BrowserWindow({ show: false }) w.loadFile(path.join(fixturesPath, 'pages', 'blank.html')) - const labels = await w.webContents.executeJavaScript(`navigator.mediaDevices.enumerateDevices().then(ds => ds.map(d => d.label))`) + const labels = await w.webContents.executeJavaScript('navigator.mediaDevices.enumerateDevices().then(ds => ds.map(d => d.label))') expect(labels.some((l: any) => l)).to.be.true() }) @@ -690,7 +688,7 @@ describe('chromium features', () => { session.defaultSession.setPermissionCheckHandler(() => false) const w = new BrowserWindow({ show: false }) w.loadFile(path.join(fixturesPath, 'pages', 'blank.html')) - const labels = await w.webContents.executeJavaScript(`navigator.mediaDevices.enumerateDevices().then(ds => ds.map(d => d.label))`) + const labels = await w.webContents.executeJavaScript('navigator.mediaDevices.enumerateDevices().then(ds => ds.map(d => d.label))') expect(labels.some((l: any) => l)).to.be.false() }) @@ -886,7 +884,7 @@ describe('chromium features', () => { it('cannot access localStorage', (done) => { ipcMain.once('local-storage-response', (event, error) => { - expect(error).to.equal(`Failed to read the 'localStorage' property from 'Window': Access is denied for this document.`) + expect(error).to.equal('Failed to read the \'localStorage\' property from \'Window\': Access is denied for this document.') done() }) contents.loadURL(protocolName + '://host/localStorage') @@ -894,7 +892,7 @@ describe('chromium features', () => { it('cannot access sessionStorage', (done) => { ipcMain.once('session-storage-response', (event, error) => { - expect(error).to.equal(`Failed to read the 'sessionStorage' property from 'Window': Access is denied for this document.`) + expect(error).to.equal('Failed to read the \'sessionStorage\' property from \'Window\': Access is denied for this document.') done() }) contents.loadURL(`${protocolName}://host/sessionStorage`) @@ -902,7 +900,7 @@ describe('chromium features', () => { it('cannot access WebSQL database', (done) => { ipcMain.once('web-sql-response', (event, error) => { - expect(error).to.equal(`Failed to execute 'openDatabase' on 'Window': Access to the WebDatabase API is denied in this context.`) + expect(error).to.equal('Failed to execute \'openDatabase\' on \'Window\': Access to the WebDatabase API is denied in this context.') done() }) contents.loadURL(`${protocolName}://host/WebSQL`) @@ -910,7 +908,7 @@ describe('chromium features', () => { it('cannot access indexedDB', (done) => { ipcMain.once('indexed-db-response', (event, error) => { - expect(error).to.equal(`Failed to execute 'open' on 'IDBFactory': access to the Indexed Database API is denied in this context.`) + expect(error).to.equal('Failed to execute \'open\' on \'IDBFactory\': access to the Indexed Database API is denied in this context.') done() }) contents.loadURL(`${protocolName}://host/indexedDB`) @@ -918,7 +916,7 @@ describe('chromium features', () => { it('cannot access cookie', (done) => { ipcMain.once('cookie-response', (event, error) => { - expect(error).to.equal(`Failed to set the 'cookie' property on 'Document': Access is denied for this document.`) + expect(error).to.equal('Failed to set the \'cookie\' property on \'Document\': Access is denied for this document.') done() }) contents.loadURL(`${protocolName}://host/cookie`) @@ -1044,7 +1042,7 @@ describe('font fallback', () => { } it('should use Helvetica for sans-serif on Mac, and Arial on Windows and Linux', async () => { - const html = `test` + const html = 'test' const fonts = await getRenderedFonts(html) expect(fonts).to.be.an('array') expect(fonts).to.have.length(1) diff --git a/spec-main/extensions-spec.ts b/spec-main/extensions-spec.ts index 77ff3d4f562c..68bd64b57d7a 100644 --- a/spec-main/extensions-spec.ts +++ b/spec-main/extensions-spec.ts @@ -241,7 +241,7 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex const { id } = await customSession.loadExtension(path.join(fixtures, 'extensions', 'lazy-background-page')) const w = new BrowserWindow({ show: false, webPreferences: { session: customSession } }) await w.loadURL(`chrome-extension://${id}/page-get-background.html`) - const receivedMessage = await w.webContents.executeJavaScript(`window.completionPromise`) + const receivedMessage = await w.webContents.executeJavaScript('window.completionPromise') expect(receivedMessage).to.deep.equal({ some: 'message' }) }) @@ -250,7 +250,7 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex const { id } = await customSession.loadExtension(path.join(fixtures, 'extensions', 'lazy-background-page')) const w = new BrowserWindow({ show: false, webPreferences: { session: customSession } }) await w.loadURL(`chrome-extension://${id}/page-get-background.html`) - const receivedMessage = await w.webContents.executeJavaScript(`window.completionPromise`) + const receivedMessage = await w.webContents.executeJavaScript('window.completionPromise') expect(receivedMessage).to.deep.equal({ some: 'message' }) }) @@ -259,7 +259,7 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex const { id } = await customSession.loadExtension(path.join(fixtures, 'extensions', 'lazy-background-page')) const w = new BrowserWindow({ show: false, webPreferences: { session: customSession } }) await w.loadURL(`chrome-extension://${id}/page-runtime-get-background.html`) - const receivedMessage = await w.webContents.executeJavaScript(`window.completionPromise`) + const receivedMessage = await w.webContents.executeJavaScript('window.completionPromise') expect(receivedMessage).to.deep.equal({ some: 'message' }) }) }) @@ -407,9 +407,9 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex const contentScript = path.resolve(fixtures, 'extensions/content-script') // Computed style values - const COLOR_RED = `rgb(255, 0, 0)` - const COLOR_BLUE = `rgb(0, 0, 255)` - const COLOR_TRANSPARENT = `rgba(0, 0, 0, 0)` + const COLOR_RED = 'rgb(255, 0, 0)' + const COLOR_BLUE = 'rgb(0, 0, 255)' + const COLOR_TRANSPARENT = 'rgba(0, 0, 0, 0)' before(() => { BrowserWindow.addExtension(contentScript) @@ -485,7 +485,7 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex const { id } = await session.defaultSession.loadExtension(path.join(fixtures, 'extensions', 'ui-page')) const w = new BrowserWindow({ show: false }) await w.loadURL(`chrome-extension://${id}/bare-page.html`) - const textContent = await w.webContents.executeJavaScript(`document.body.textContent`) + const textContent = await w.webContents.executeJavaScript('document.body.textContent') expect(textContent).to.equal('ui page loaded ok\n') }) @@ -493,7 +493,7 @@ ifdescribe(process.electronBinding('features').isExtensionsEnabled())('chrome ex const { id } = await session.defaultSession.loadExtension(path.join(fixtures, 'extensions', 'ui-page')) const w = new BrowserWindow({ show: false }) await w.loadURL(`chrome-extension://${id}/page-script-load.html`) - const textContent = await w.webContents.executeJavaScript(`document.body.textContent`) + const textContent = await w.webContents.executeJavaScript('document.body.textContent') expect(textContent).to.equal('script loaded ok\n') }) }) diff --git a/spec-main/modules-spec.ts b/spec-main/modules-spec.ts index 590ffbeafe46..da126f485fcf 100644 --- a/spec-main/modules-spec.ts +++ b/spec-main/modules-spec.ts @@ -20,7 +20,7 @@ describe('modules support', () => { it('can be required in renderer', async () => { const w = new BrowserWindow({ show: false, webPreferences: { nodeIntegration: true } }) w.loadURL('about:blank') - await expect(w.webContents.executeJavaScript(`{ require('echo'); null }`)).to.be.fulfilled() + await expect(w.webContents.executeJavaScript('{ require(\'echo\'); null }')).to.be.fulfilled() }) ifit(features.isRunAsNodeEnabled())('can be required in node binary', function (done) { diff --git a/spec-main/security-warnings-spec.ts b/spec-main/security-warnings-spec.ts index f75e3f0a4ffb..6d28c77c8c66 100644 --- a/spec-main/security-warnings-spec.ts +++ b/spec-main/security-warnings-spec.ts @@ -48,7 +48,7 @@ describe('security warnings', () => { return } - const cspHeaders = { 'Content-Security-Policy': `script-src 'self' 'unsafe-inline'` } + const cspHeaders = { 'Content-Security-Policy': 'script-src \'self\' \'unsafe-inline\'' } response.writeHead(200, useCsp ? cspHeaders : undefined) response.write(file, 'binary') response.end() diff --git a/spec-main/version-bump-spec.ts b/spec-main/version-bump-spec.ts index 857ddd1d4d5a..0acacbc9bab7 100644 --- a/spec-main/version-bump-spec.ts +++ b/spec-main/version-bump-spec.ts @@ -21,7 +21,7 @@ describe('version-bumper', () => { major: 2, minor: 0, patch: 0, - pre: [ 'nightly', 12345678 ] + pre: ['nightly', 12345678] } const version = utils.makeVersion(components, '.', utils.preType.PARTIAL) @@ -33,7 +33,7 @@ describe('version-bumper', () => { major: 2, minor: 0, patch: 0, - pre: [ 'nightly', 12345678 ] + pre: ['nightly', 12345678] } const version = utils.makeVersion(components, '.', utils.preType.FULL) diff --git a/spec-main/webview-spec.ts b/spec-main/webview-spec.ts index db47280b146b..4f2dc4124e45 100644 --- a/spec-main/webview-spec.ts +++ b/spec-main/webview-spec.ts @@ -538,7 +538,7 @@ describe(' tag', function () { it('emits when accessing external protocol', async () => { loadWebView(w.webContents, { - src: `magnet:test`, + src: 'magnet:test', partition }) const [, webViewContents] = await emittedOnce(app, 'web-contents-created') diff --git a/spec/chromium-spec.js b/spec/chromium-spec.js index 9edd54e40dd0..141123863fef 100644 --- a/spec/chromium-spec.js +++ b/spec/chromium-spec.js @@ -454,7 +454,7 @@ describe('chromium feature', () => { setImmediate(() => { let called = false Promise.resolve().then(() => { - done(called ? void 0 : new Error('wrong sequence')) + done(called ? undefined : new Error('wrong sequence')) }) document.createElement('x-element') called = true @@ -467,7 +467,7 @@ describe('chromium feature', () => { ipcRenderer.invoke('ping').then(() => { let called = false Promise.resolve().then(() => { - done(called ? void 0 : new Error('wrong sequence')) + done(called ? undefined : new Error('wrong sequence')) }) document.createElement('y-element') called = true diff --git a/spec/fixtures/api/cookie-app/main.js b/spec/fixtures/api/cookie-app/main.js index 1b07c841349a..b16402a98c0f 100644 --- a/spec/fixtures/api/cookie-app/main.js +++ b/spec/fixtures/api/cookie-app/main.js @@ -17,16 +17,11 @@ app.whenReady().then(async function () { url }) - const maybeRemove = async (pred) => new Promise(async (resolve, reject) => { - try { - if (pred()) { - await persistentSession.cookies.remove(url, name) - } - resolve() - } catch (error) { - reject(error) + const maybeRemove = async (pred) => { + if (pred()) { + await persistentSession.cookies.remove(url, name) } - }) + } try { await maybeRemove(() => process.env.PHASE === 'one') diff --git a/spec/fixtures/module/inspector-binding.js b/spec/fixtures/module/inspector-binding.js index 64505429508b..c91ee8d9fcb8 100644 --- a/spec/fixtures/module/inspector-binding.js +++ b/spec/fixtures/module/inspector-binding.js @@ -16,17 +16,17 @@ let scopeCallback = null function checkScope (session, scopeId) { session.post('Runtime.getProperties', { - 'objectId': scopeId, - 'ownProperties': false, - 'accessorPropertiesOnly': false, - 'generatePreview': true + objectId: scopeId, + ownProperties: false, + accessorPropertiesOnly: false, + generatePreview: true }, scopeCallback) } function debuggerPausedCallback (session, notification) { - const params = notification['params'] - const callFrame = params['callFrames'][0] - const scopeId = callFrame['scopeChain'][0]['object']['objectId'] + const params = notification.params + const callFrame = params.callFrames[0] + const scopeId = callFrame.scopeChain[0].object.objectId checkScope(session, scopeId) } @@ -41,11 +41,11 @@ function testSampleDebugSession () { if (error) failures.push(error) const i = cur++ let v, actual, expected - for (v of result['result']) { - actual = v['value']['value'] - expected = expects[v['name']][i] + for (v of result.result) { + actual = v.value.value + expected = expects[v.name][i] if (actual !== expected) { - failures.push(`Iteration ${i} variable: ${v['name']} ` + + failures.push(`Iteration ${i} variable: ${v.name} ` + `expected: ${expected} actual: ${actual}`) } } @@ -57,19 +57,19 @@ function testSampleDebugSession () { let cbAsSecondArgCalled = false session.post('Debugger.enable', () => { cbAsSecondArgCalled = true }) session.post('Debugger.setBreakpointByUrl', { - 'lineNumber': 9, - 'url': pathToFileURL(path.resolve(__dirname, __filename)).toString(), - 'columnNumber': 0, - 'condition': '' + lineNumber: 9, + url: pathToFileURL(path.resolve(__dirname, __filename)).toString(), + columnNumber: 0, + condition: '' }) debuggedFunction() scopeCallback = null session.disconnect() process.send({ - 'cmd': 'assert', - 'debuggerEnabled': cbAsSecondArgCalled, - 'success': (cur === 5) && (failures.length === 0) + cmd: 'assert', + debuggerEnabled: cbAsSecondArgCalled, + success: (cur === 5) && (failures.length === 0) }) } diff --git a/spec/node-spec.js b/spec/node-spec.js index 618c09d83c48..e78419934d48 100644 --- a/spec/node-spec.js +++ b/spec/node-spec.js @@ -50,7 +50,7 @@ describe('node feature', () => { it('works in forked process when options.env is specifed', (done) => { const child = ChildProcess.fork(path.join(fixtures, 'module', 'fork_ping.js'), [], { - path: process.env['PATH'] + path: process.env.PATH }) child.on('message', (msg) => { expect(msg).to.equal('message') diff --git a/spec/static/main.js b/spec/static/main.js index c08fd5a5f1f0..6a392ea2e4ea 100644 --- a/spec/static/main.js +++ b/spec/static/main.js @@ -7,7 +7,7 @@ const { app, BrowserWindow, crashReporter, dialog, ipcMain, protocol, webContent try { require('fs').rmdirSync(app.getPath('userData'), { recursive: true }) } catch (e) { - console.warn(`Warning: couldn't clear user data directory:`, e) + console.warn('Warning: couldn\'t clear user data directory:', e) } const fs = require('fs') diff --git a/spec/webview-spec.js b/spec/webview-spec.js index f3981567824b..1f2ce7455a76 100644 --- a/spec/webview-spec.js +++ b/spec/webview-spec.js @@ -1021,7 +1021,7 @@ describe(' tag', function () { marginsType: 'terrible', scaleFactor: 'not-a-number', landscape: [], - pageRanges: { 'oops': 'im-not-the-right-key' }, + pageRanges: { oops: 'im-not-the-right-key' }, headerFooter: '123', printSelectionOnly: 1, printBackground: 2,