From e34cc6f48c118ac31363aa6660bf55de5ae672a1 Mon Sep 17 00:00:00 2001 From: Milan Burda Date: Fri, 17 Feb 2023 19:56:09 +0100 Subject: [PATCH] test: enable linting of ts-smoke and fix all issues (#37322) --- script/lint.js | 5 +- spec/ts-smoke/electron/main.ts | 799 +++++++++++++++-------------- spec/ts-smoke/electron/renderer.ts | 149 +++--- spec/ts-smoke/runner.js | 20 +- 4 files changed, 495 insertions(+), 478 deletions(-) diff --git a/script/lint.js b/script/lint.js index c6d42aa0a334..3c79e3af6999 100755 --- a/script/lint.js +++ b/script/lint.js @@ -22,10 +22,7 @@ process.env.PATH = `${process.env.PATH}${path.delimiter}${DEPOT_TOOLS}`; const IGNORELIST = new Set([ ['shell', 'browser', 'resources', 'win', 'resource.h'], ['shell', 'common', 'node_includes.h'], - ['spec', 'fixtures', 'pages', 'jquery-3.6.0.min.js'], - ['spec', 'ts-smoke', 'electron', 'main.ts'], - ['spec', 'ts-smoke', 'electron', 'renderer.ts'], - ['spec', 'ts-smoke', 'runner.js'] + ['spec', 'fixtures', 'pages', 'jquery-3.6.0.min.js'] ].map(tokens => path.join(ELECTRON_ROOT, ...tokens))); const IS_WINDOWS = process.platform === 'win32'; diff --git a/spec/ts-smoke/electron/main.ts b/spec/ts-smoke/electron/main.ts index 5378150c5d44..4e5ee99c5082 100644 --- a/spec/ts-smoke/electron/main.ts +++ b/spec/ts-smoke/electron/main.ts @@ -1,6 +1,3 @@ -// tslint:disable:ordered-imports curly no-console no-angle-bracket-type-assertion object-literal-sort-keys only-arrow-functions -/* eslint-disable */ - import { app, autoUpdater, @@ -25,65 +22,69 @@ import { systemPreferences, webContents, TouchBar -} from 'electron' +} from 'electron'; -import * as path from 'path' +import * as path from 'path'; // Quick start // https://github.com/electron/electron/blob/main/docs/tutorial/quick-start.md // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the javascript object is GCed. -let mainWindow: Electron.BrowserWindow = null -const mainWindow2: BrowserWindow = null +let mainWindow: Electron.BrowserWindow = null; // Quit when all windows are closed. app.on('window-all-closed', () => { if (process.platform !== 'darwin') { - app.quit() + app.quit(); } -}) +}); // Check single instance app -const gotLock = app.requestSingleInstanceLock() +const gotLock = app.requestSingleInstanceLock(); if (!gotLock) { - app.quit() - process.exit(0) + app.quit(); + process.exit(0); } // This method will be called when Electron has done everything // initialization and ready for creating browser windows. app.whenReady().then(() => { // Create the browser window. - mainWindow = new BrowserWindow({ width: 800, height: 600 }) + mainWindow = new BrowserWindow({ width: 800, height: 600 }); // and load the index.html of the app. - mainWindow.loadURL(`file://${__dirname}/index.html`) - mainWindow.loadURL('file://foo/bar', { userAgent: 'cool-agent', httpReferrer: 'greatReferrer' }) - mainWindow.webContents.loadURL('file://foo/bar', { userAgent: 'cool-agent', httpReferrer: 'greatReferrer' }) - mainWindow.webContents.loadURL('file://foo/bar', { userAgent: 'cool-agent', httpReferrer: 'greatReferrer', postData: [{ type: 'rawData', bytes: Buffer.from([123]) }] }) + mainWindow.loadURL(`file://${__dirname}/index.html`); + mainWindow.loadURL('file://foo/bar', { userAgent: 'cool-agent', httpReferrer: 'greatReferrer' }); + mainWindow.webContents.loadURL('file://foo/bar', { userAgent: 'cool-agent', httpReferrer: 'greatReferrer' }); + mainWindow.webContents.loadURL('file://foo/bar', { userAgent: 'cool-agent', httpReferrer: 'greatReferrer', postData: [{ type: 'rawData', bytes: Buffer.from([123]) }] }); + + mainWindow.webContents.openDevTools(); + mainWindow.webContents.toggleDevTools(); + mainWindow.webContents.openDevTools({ mode: 'detach' }); + mainWindow.webContents.closeDevTools(); + mainWindow.webContents.addWorkSpace('/path/to/workspace'); + mainWindow.webContents.removeWorkSpace('/path/to/workspace'); + + const opened = mainWindow.webContents.isDevToolsOpened(); + console.log('isDevToolsOpened', opened); + + const focused = mainWindow.webContents.isDevToolsFocused(); + console.log('isDevToolsFocused', focused); - mainWindow.webContents.openDevTools() - mainWindow.webContents.toggleDevTools() - mainWindow.webContents.openDevTools({ mode: 'detach' }) - mainWindow.webContents.closeDevTools() - mainWindow.webContents.addWorkSpace('/path/to/workspace') - mainWindow.webContents.removeWorkSpace('/path/to/workspace') - const opened: boolean = mainWindow.webContents.isDevToolsOpened() - const focused = mainWindow.webContents.isDevToolsFocused() // Emitted when the window is closed. mainWindow.on('closed', () => { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. - mainWindow = null - }) + mainWindow = null; + }); - mainWindow.webContents.setVisualZoomLevelLimits(50, 200) + mainWindow.webContents.setVisualZoomLevelLimits(50, 200); - mainWindow.webContents.print({ silent: true, printBackground: false }) - mainWindow.webContents.print() + mainWindow.webContents.print({ silent: true, printBackground: false }); + mainWindow.webContents.print(); mainWindow.webContents.printToPDF({ margins: { @@ -92,95 +93,95 @@ app.whenReady().then(() => { printBackground: true, pageRanges: '1-3', landscape: true - }).then((data: Buffer) => console.log(data)) + }).then((data: Buffer) => console.log(data)); - mainWindow.webContents.printToPDF({}).then(data => console.log(data)) + mainWindow.webContents.printToPDF({}).then(data => console.log(data)); - mainWindow.webContents.executeJavaScript('return true;').then((v: boolean) => console.log(v)) - mainWindow.webContents.executeJavaScript('return true;', true).then((v: boolean) => console.log(v)) - mainWindow.webContents.executeJavaScript('return true;', true) - mainWindow.webContents.executeJavaScript('return true;', true).then((result: boolean) => console.log(result)) - mainWindow.webContents.insertText('blah, blah, blah') - mainWindow.webContents.startDrag({ file: '/path/to/img.png', icon: nativeImage.createFromPath('/path/to/icon.png') }) - mainWindow.webContents.findInPage('blah') + mainWindow.webContents.executeJavaScript('return true;').then((v: boolean) => console.log(v)); + mainWindow.webContents.executeJavaScript('return true;', true).then((v: boolean) => console.log(v)); + mainWindow.webContents.executeJavaScript('return true;', true); + mainWindow.webContents.executeJavaScript('return true;', true).then((result: boolean) => console.log(result)); + mainWindow.webContents.insertText('blah, blah, blah'); + mainWindow.webContents.startDrag({ file: '/path/to/img.png', icon: nativeImage.createFromPath('/path/to/icon.png') }); + mainWindow.webContents.findInPage('blah'); mainWindow.webContents.findInPage('blah', { forward: true, matchCase: false - }) - mainWindow.webContents.stopFindInPage('clearSelection') - mainWindow.webContents.stopFindInPage('keepSelection') - mainWindow.webContents.stopFindInPage('activateSelection') + }); + mainWindow.webContents.stopFindInPage('clearSelection'); + mainWindow.webContents.stopFindInPage('keepSelection'); + mainWindow.webContents.stopFindInPage('activateSelection'); - mainWindow.loadURL('https://github.com') + mainWindow.loadURL('https://github.com'); mainWindow.webContents.on('did-finish-load', function () { mainWindow.webContents.savePage('/tmp/test.html', 'HTMLComplete').then(() => { - console.log('Page saved successfully') - }) - }) + console.log('Page saved successfully'); + }); + }); try { - mainWindow.webContents.debugger.attach('1.1') + mainWindow.webContents.debugger.attach('1.1'); } catch (err) { - console.log('Debugger attach failed : ', err) + console.log('Debugger attach failed : ', err); } mainWindow.webContents.debugger.on('detach', function (event, reason) { - console.log('Debugger detached due to : ', reason) - }) + console.log('Debugger detached due to : ', reason); + }); mainWindow.webContents.debugger.on('message', function (event, method, params: any) { if (method === 'Network.requestWillBeSent') { if (params.request.url === 'https://www.github.com') { - mainWindow.webContents.debugger.detach() + mainWindow.webContents.debugger.detach(); } } - }) + }); - mainWindow.webContents.debugger.sendCommand('Network.enable') + mainWindow.webContents.debugger.sendCommand('Network.enable'); mainWindow.webContents.capturePage().then(image => { - console.log(image.toDataURL()) - }) + console.log(image.toDataURL()); + }); mainWindow.webContents.capturePage({ x: 0, y: 0, width: 100, height: 200 }).then(image => { - console.log(image.toPNG()) - }) -}) + console.log(image.toPNG()); + }); +}); -app.commandLine.appendSwitch('enable-web-bluetooth') +app.commandLine.appendSwitch('enable-web-bluetooth'); app.whenReady().then(() => { mainWindow.webContents.on('select-bluetooth-device', (event, deviceList, callback) => { - event.preventDefault() + event.preventDefault(); const result = (() => { for (const device of deviceList) { if (device.deviceName === 'test') { - return device + return device; } } - return null - })() + return null; + })(); if (!result) { - callback('') + callback(''); } else { - callback(result.deviceId) + callback(result.deviceId); } - }) -}) + }); +}); // Locale -app.getLocale() +app.getLocale(); // Desktop environment integration -app.addRecentDocument('/Users/USERNAME/Desktop/work.type') -app.clearRecentDocuments() +app.addRecentDocument('/Users/USERNAME/Desktop/work.type'); +app.clearRecentDocuments(); const dockMenu = Menu.buildFromTemplate([ { label: 'New Window', click: () => { - console.log('New Window') + console.log('New Window'); } }, { @@ -224,14 +225,14 @@ const dockMenu = Menu.buildFromTemplate([ } ] } -]) -app.dock.setMenu(dockMenu) -app.dock.setBadge('foo') -const dockid = app.dock.bounce('informational') -app.dock.cancelBounce(dockid) -app.dock.setIcon('/path/to/icon.png') +]); +app.dock.setMenu(dockMenu); +app.dock.setBadge('foo'); +const dockid = app.dock.bounce('informational'); +app.dock.cancelBounce(dockid); +app.dock.setIcon('/path/to/icon.png'); -app.setBadgeCount(app.getBadgeCount() + 1) +app.setBadgeCount(app.getBadgeCount() + 1); app.setUserTasks([ { @@ -243,8 +244,8 @@ app.setUserTasks([ description: 'Create a new window', workingDirectory: path.dirname(process.execPath) } -]) -app.setUserTasks([]) +]); +app.setUserTasks([]); app.setJumpList([ { @@ -302,35 +303,35 @@ app.setJumpList([ description: 'Recover Project' }] } -]) +]); if (app.isUnityRunning()) { - console.log('unity running') + console.log('unity running'); } if (app.isAccessibilitySupportEnabled()) { - console.log('a11y running') + console.log('a11y running'); } -app.setLoginItemSettings({ openAtLogin: true, openAsHidden: false }) -console.log(app.getLoginItemSettings().wasOpenedAtLogin) +app.setLoginItemSettings({ openAtLogin: true, openAsHidden: false }); +console.log(app.getLoginItemSettings().wasOpenedAtLogin); app.setAboutPanelOptions({ applicationName: 'Test', version: '1.2.3' -}) +}); // Online/Offline Event Detection // https://github.com/electron/electron/blob/main/docs/tutorial/online-offline-events.md -let onlineStatusWindow: Electron.BrowserWindow +let onlineStatusWindow: Electron.BrowserWindow; app.whenReady().then(() => { - onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false, vibrancy: 'sidebar' }) - onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`) -}) -app.on('accessibility-support-changed', (_, enabled) => console.log('accessibility: ' + enabled)) + onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false, vibrancy: 'sidebar' }); + onlineStatusWindow.loadURL(`file://${__dirname}/online-status.html`); +}); +app.on('accessibility-support-changed', (_, enabled) => console.log('accessibility: ' + enabled)); ipcMain.on('online-status-changed', (event, status: any) => { - console.log(status) -}) + console.log(status); +}); // Synopsis // https://github.com/electron/electron/blob/main/docs/api/synopsis.md @@ -340,16 +341,16 @@ app.whenReady().then(() => { width: 800, height: 600, titleBarStyle: 'hiddenInset' - }) - window.loadURL('https://github.com') -}) + }); + window.loadURL('https://github.com'); +}); // Supported command line switches // https://github.com/electron/electron/blob/main/docs/api/command-line-switches.md -app.commandLine.appendSwitch('remote-debugging-port', '8315') -app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1') -app.commandLine.appendSwitch('vmodule', 'console=0') +app.commandLine.appendSwitch('remote-debugging-port', '8315'); +app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1'); +app.commandLine.appendSwitch('vmodule', 'console=0'); // systemPreferences // https://github.com/electron/electron/blob/main/docs/api/system-preferences.md @@ -359,35 +360,36 @@ const browserOptions = { height: 800, transparent: false, frame: true -} +}; // Make the window transparent only if the platform supports it. if (process.platform !== 'win32' || systemPreferences.isAeroGlassEnabled()) { - browserOptions.transparent = true - browserOptions.frame = false + browserOptions.transparent = true; + browserOptions.frame = false; } if (process.platform === 'win32') { - systemPreferences.on('color-changed', () => { console.log('color changed') }) - systemPreferences.on('inverted-color-scheme-changed', (_, inverted) => console.log(inverted ? 'inverted' : 'not inverted')) - console.log('Color for menu is', systemPreferences.getColor('menu')) + systemPreferences.on('color-changed', () => { console.log('color changed'); }); + systemPreferences.on('inverted-color-scheme-changed', (_, inverted) => console.log(inverted ? 'inverted' : 'not inverted')); + console.log('Color for menu is', systemPreferences.getColor('menu')); } if (process.platform === 'darwin') { - const value: string = systemPreferences.getUserDefault('Foo', 'string'); - // @ts-expect-error - const value2: number = systemPreferences.getUserDefault('Foo', 'boolean'); + const value = systemPreferences.getUserDefault('Foo', 'string'); + console.log(value); + const value2 = systemPreferences.getUserDefault('Foo', 'boolean'); + console.log(value2); } // Create the window. -const win1 = new BrowserWindow(browserOptions) +const win1 = new BrowserWindow(browserOptions); // Navigate. if (browserOptions.transparent) { - win1.loadURL('file://' + __dirname + '/index.html') + win1.loadURL(`file://${__dirname}/index.html`); } else { // No transparency, so we load a fallback that uses basic styles. - win1.loadURL('file://' + __dirname + '/fallback.html') + win1.loadURL(`file://${__dirname}/fallback.html`); } // app @@ -396,30 +398,30 @@ if (browserOptions.transparent) { app.on('certificate-error', function (event, webContents, url, error, certificate, callback) { if (url === 'https://github.com') { // Verification logic. - event.preventDefault() - callback(true) + event.preventDefault(); + callback(true); } else { - callback(false) + callback(false); } -}) +}); app.on('select-client-certificate', function (event, webContents, url, list, callback) { - event.preventDefault() - callback(list[0]) -}) + event.preventDefault(); + callback(list[0]); +}); app.on('login', function (event, webContents, request, authInfo, callback) { - event.preventDefault() - callback('username', 'secret') -}) + event.preventDefault(); + callback('username', 'secret'); +}); -const win2 = new BrowserWindow({ show: false }) +const win2 = new BrowserWindow({ show: false }); win2.once('ready-to-show', () => { - win2.show() -}) + win2.show(); +}); -app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) }) -app.exit(0) +app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) }); +app.exit(0); // auto-updater // https://github.com/electron/electron/blob/main/docs/api/auto-updater.md @@ -430,43 +432,43 @@ autoUpdater.setFeedURL({ key: 'value' }, serverType: 'default' -}) -autoUpdater.checkForUpdates() -autoUpdater.quitAndInstall() +}); +autoUpdater.checkForUpdates(); +autoUpdater.quitAndInstall(); autoUpdater.on('error', (error) => { - console.log('error', error) -}) + console.log('error', error); +}); autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateURL) => { - console.log('update-downloaded', releaseNotes, releaseName, releaseDate, updateURL) -}) + console.log('update-downloaded', releaseNotes, releaseName, releaseDate, updateURL); +}); // BrowserWindow // https://github.com/electron/electron/blob/main/docs/api/browser-window.md -let win3 = new BrowserWindow({ width: 800, height: 600, show: false }) +let win3 = new BrowserWindow({ width: 800, height: 600, show: false }); win3.on('closed', () => { - win3 = null -}) + win3 = null; +}); -win3.loadURL('https://github.com') -win3.show() +win3.loadURL('https://github.com'); +win3.show(); -const toolbarRect = document.getElementById('toolbar').getBoundingClientRect() -win3.setSheetOffset(toolbarRect.height) +const toolbarRect = document.getElementById('toolbar').getBoundingClientRect(); +win3.setSheetOffset(toolbarRect.height); -let window = new BrowserWindow() -window.setProgressBar(0.5) -window.setRepresentedFilename('/etc/passwd') -window.setDocumentEdited(true) -window.previewFile('/path/to/file') -window.previewFile('/path/to/file', 'Displayed Name') -window.setVibrancy('menu') -window.setVibrancy('titlebar') -window.setVibrancy('selection') -window.setVibrancy('popover') -window.setIcon('/path/to/icon') +let window = new BrowserWindow(); +window.setProgressBar(0.5); +window.setRepresentedFilename('/etc/passwd'); +window.setDocumentEdited(true); +window.previewFile('/path/to/file'); +window.previewFile('/path/to/file', 'Displayed Name'); +window.setVibrancy('menu'); +window.setVibrancy('titlebar'); +window.setVibrancy('selection'); +window.setVibrancy('popover'); +window.setIcon('/path/to/icon'); // content-tracing // https://github.com/electron/electron/blob/main/docs/api/content-tracing.md @@ -474,16 +476,16 @@ window.setIcon('/path/to/icon') const options = { categoryFilter: '*', traceOptions: 'record-until-full,enable-sampling' -} +}; contentTracing.startRecording(options).then(() => { - console.log('Tracing started') + console.log('Tracing started'); setTimeout(function () { contentTracing.stopRecording('').then(path => { - console.log(`Tracing data recorded to ${path}`) - }) - }, 5000) -}) + console.log(`Tracing data recorded to ${path}`); + }); + }, 5000); +}); // dialog // https://github.com/electron/electron/blob/main/docs/api/dialog.md @@ -494,7 +496,7 @@ dialog.showOpenDialogSync({ defaultPath: '/var/log/syslog', filters: [{ name: '', extensions: [''] }], properties: ['openFile', 'openDirectory', 'multiSelections'] -}) +}); // variant with browserWindow dialog.showOpenDialog(win3, { @@ -503,44 +505,44 @@ dialog.showOpenDialog(win3, { filters: [{ name: '', extensions: [''] }], properties: ['openFile', 'openDirectory', 'multiSelections'] }).then(ret => { - console.log(ret) -}) + console.log(ret); +}); // global-shortcut // https://github.com/electron/electron/blob/main/docs/api/global-shortcut.md // Register a 'ctrl+x' shortcut listener. const ret = globalShortcut.register('ctrl+x', () => { - console.log('ctrl+x is pressed') -}) -if (!ret) { console.log('registration fails') } + console.log('ctrl+x is pressed'); +}); +if (!ret) { console.log('registration fails'); } // Check whether a shortcut is registered. -console.log(globalShortcut.isRegistered('ctrl+x')) +console.log(globalShortcut.isRegistered('ctrl+x')); // Unregister a shortcut. -globalShortcut.unregister('ctrl+x') +globalShortcut.unregister('ctrl+x'); // Unregister all shortcuts. -globalShortcut.unregisterAll() +globalShortcut.unregisterAll(); // ipcMain // https://github.com/electron/electron/blob/main/docs/api/ipc-main.md ipcMain.on('asynchronous-message', (event, arg: any) => { - console.log(arg) // prints "ping" - event.sender.send('asynchronous-reply', 'pong') -}) + console.log(arg); // prints "ping" + event.sender.send('asynchronous-reply', 'pong'); +}); ipcMain.on('synchronous-message', (event, arg: any) => { - console.log(arg) // prints "ping" - event.returnValue = 'pong' -}) + console.log(arg); // prints "ping" + event.returnValue = 'pong'; +}); ipcMain.on('synchronous-message', (event, arg: any) => { - console.log("event isn't namespaced and refers to the correct type.") - event.returnValue = 'pong' -}) + console.log(arg); // prints "ping" + event.returnValue = 'pong'; +}); const winWindows = new BrowserWindow({ width: 800, @@ -548,31 +550,32 @@ const winWindows = new BrowserWindow({ show: false, thickFrame: false, type: 'toolbar' -}) +}); +console.log(winWindows.id); // menu-item // https://github.com/electron/electron/blob/main/docs/api/menu-item.md -const menuItem = new MenuItem({}) +const menuItem = new MenuItem({}); -menuItem.label = 'Hello World!' +menuItem.label = 'Hello World!'; menuItem.click = (passedMenuItem: Electron.MenuItem, browserWindow: Electron.BrowserWindow) => { - console.log('click', passedMenuItem, browserWindow) -} + console.log('click', passedMenuItem, browserWindow); +}; // menu // https://github.com/electron/electron/blob/main/docs/api/menu.md -let menu = new Menu() -menu.append(new MenuItem({ label: 'MenuItem1', click: () => { console.log('item 1 clicked') } })) -menu.append(new MenuItem({ type: 'separator' })) -menu.append(new MenuItem({ label: 'MenuItem2', type: 'checkbox', checked: true })) -menu.insert(0, menuItem) +let menu = new Menu(); +menu.append(new MenuItem({ label: 'MenuItem1', click: () => { console.log('item 1 clicked'); } })); +menu.append(new MenuItem({ type: 'separator' })); +menu.append(new MenuItem({ label: 'MenuItem2', type: 'checkbox', checked: true })); +menu.insert(0, menuItem); -console.log(menu.items) +console.log(menu.items); -const pos = screen.getCursorScreenPoint() -menu.popup({ x: pos.x, y: pos.y }) +const pos = screen.getCursorScreenPoint(); +menu.popup({ x: pos.x, y: pos.y }); // main.js const template = [ @@ -614,7 +617,7 @@ const template = [ { label: 'Quit', accelerator: 'Command+Q', - click: () => { app.quit() } + click: () => { app.quit(); } } ] }, @@ -664,7 +667,7 @@ const template = [ accelerator: 'Command+R', click: (item, focusedWindow) => { if (focusedWindow) { - focusedWindow.webContents.reloadIgnoringCache() + focusedWindow.webContents.reloadIgnoringCache(); } } }, @@ -673,7 +676,7 @@ const template = [ accelerator: 'Alt+Command+I', click: (item, focusedWindow) => { if (focusedWindow) { - focusedWindow.webContents.toggleDevTools() + focusedWindow.webContents.toggleDevTools(); } } }, @@ -685,7 +688,7 @@ const template = [ accelerator: 'CmdOrCtrl+0', click: (item, focusedWindow) => { if (focusedWindow) { - focusedWindow.webContents.zoomLevel = 0 + focusedWindow.webContents.zoomLevel = 0; } } }, @@ -694,8 +697,8 @@ const template = [ accelerator: 'CmdOrCtrl+Plus', click: (item, focusedWindow) => { if (focusedWindow) { - const { webContents } = focusedWindow - webContents.zoomLevel += 0.5 + const { webContents } = focusedWindow; + webContents.zoomLevel += 0.5; } } }, @@ -704,8 +707,8 @@ const template = [ accelerator: 'CmdOrCtrl+-', click: (item, focusedWindow) => { if (focusedWindow) { - const { webContents } = focusedWindow - webContents.zoomLevel -= 0.5 + const { webContents } = focusedWindow; + webContents.zoomLevel -= 0.5; } } } @@ -737,11 +740,11 @@ const template = [ label: 'Help', submenu: [] } -] +]; -menu = Menu.buildFromTemplate(template) +menu = Menu.buildFromTemplate(template); -Menu.setApplicationMenu(menu) // Must be called within app.whenReady().then(function(){ ... }); +Menu.setApplicationMenu(menu); // Must be called within app.whenReady().then(function(){ ... }); Menu.buildFromTemplate([ { label: '4', id: '4' }, @@ -749,7 +752,7 @@ Menu.buildFromTemplate([ { label: '1', id: '1', before: ['4'] }, { label: '2', id: '2' }, { label: '3', id: '3' } -]) +]); Menu.buildFromTemplate([ { label: 'a' }, @@ -758,7 +761,7 @@ Menu.buildFromTemplate([ { label: '2' }, { label: 'c' }, { label: '3' } -]) +]); // All possible MenuItem roles Menu.buildFromTemplate([ @@ -791,7 +794,7 @@ Menu.buildFromTemplate([ { role: 'stopSpeaking' }, { role: 'close' }, { role: 'minimize' }, - { role: 'zoom' }, + { role: 'zoom' }, { role: 'front' }, { role: 'appMenu' }, { role: 'fileMenu' }, @@ -805,138 +808,140 @@ Menu.buildFromTemplate([ { role: 'selectPreviousTab' }, { role: 'mergeAllWindows' }, { role: 'clearRecentDocuments' }, - { role : 'moveTabToNewWindow'} -]) + { role: 'moveTabToNewWindow' } +]); // net // https://github.com/electron/electron/blob/main/docs/api/net.md app.whenReady().then(() => { - const request = net.request('https://github.com') - request.setHeader('Some-Custom-Header-Name', 'Some-Custom-Header-Value') - const header = request.getHeader('Some-Custom-Header-Name') - request.removeHeader('Some-Custom-Header-Name') + const request = net.request('https://github.com'); + request.setHeader('Some-Custom-Header-Name', 'Some-Custom-Header-Value'); + const header = request.getHeader('Some-Custom-Header-Name'); + console.log('header', header); + request.removeHeader('Some-Custom-Header-Name'); request.on('response', (response) => { - console.log(`Status code: ${response.statusCode}`) - console.log(`Status message: ${response.statusMessage}`) - console.log(`Headers: ${JSON.stringify(response.headers)}`) - console.log(`Http version: ${response.httpVersion}`) - console.log(`Major Http version: ${response.httpVersionMajor}`) - console.log(`Minor Http version: ${response.httpVersionMinor}`) + console.log(`Status code: ${response.statusCode}`); + console.log(`Status message: ${response.statusMessage}`); + console.log(`Headers: ${JSON.stringify(response.headers)}`); + console.log(`Http version: ${response.httpVersion}`); + console.log(`Major Http version: ${response.httpVersionMajor}`); + console.log(`Minor Http version: ${response.httpVersionMinor}`); response.on('data', (chunk) => { - console.log(`BODY: ${chunk}`) - }) + console.log(`BODY: ${chunk}`); + }); response.on('end', () => { - console.log('No more data in response.') - }) + console.log('No more data in response.'); + }); response.on('error', () => { - console.log('"error" event emitted') - }) + console.log('"error" event emitted'); + }); response.on('aborted', () => { - console.log('"aborted" event emitted') - }) - }) + console.log('"aborted" event emitted'); + }); + }); request.on('login', (authInfo, callback) => { - callback('username', 'password') - }) + callback('username', 'password'); + }); request.on('finish', () => { - console.log('"finish" event emitted') - }) + console.log('"finish" event emitted'); + }); request.on('abort', () => { - console.log('"abort" event emitted') - }) + console.log('"abort" event emitted'); + }); request.on('error', () => { - console.log('"error" event emitted') - }) - request.write('Hello World!', 'utf-8') - request.end('Hello World!', 'utf-8') - request.abort() -}) + console.log('"error" event emitted'); + }); + request.write('Hello World!', 'utf-8'); + request.end('Hello World!', 'utf-8'); + request.abort(); +}); // power-monitor // https://github.com/electron/electron/blob/main/docs/api/power-monitor.md app.whenReady().then(() => { powerMonitor.on('suspend', () => { - console.log('The system is going to sleep') - }) + console.log('The system is going to sleep'); + }); powerMonitor.on('resume', () => { - console.log('The system has resumed from sleep') - }) + console.log('The system has resumed from sleep'); + }); powerMonitor.on('on-ac', () => { - console.log('The system changed to AC power') - }) + console.log('The system changed to AC power'); + }); powerMonitor.on('on-battery', () => { - console.log('The system changed to battery power') - }) -}) + console.log('The system changed to battery power'); + }); +}); // power-save-blocker // https://github.com/electron/electron/blob/main/docs/api/power-save-blocker.md -const id = powerSaveBlocker.start('prevent-display-sleep') -console.log(powerSaveBlocker.isStarted(id)) +const id = powerSaveBlocker.start('prevent-display-sleep'); +console.log(powerSaveBlocker.isStarted(id)); -powerSaveBlocker.stop(id) +powerSaveBlocker.stop(id); // protocol // https://github.com/electron/electron/blob/main/docs/api/protocol.md app.whenReady().then(() => { - protocol.registerSchemesAsPrivileged([{ scheme: 'https', privileges: { standard: true, allowServiceWorkers: true } }]) + protocol.registerSchemesAsPrivileged([{ scheme: 'https', privileges: { standard: true, allowServiceWorkers: true } }]); protocol.registerFileProtocol('atom', (request, callback) => { - callback(`${__dirname}/${request.url}`) - }) + callback(`${__dirname}/${request.url}`); + }); protocol.registerBufferProtocol('atom', (request, callback) => { - callback({ mimeType: 'text/html', data: Buffer.from('
Response
') }) - }) + callback({ mimeType: 'text/html', data: Buffer.from('
Response
') }); + }); protocol.registerStringProtocol('atom', (request, callback) => { - callback('Hello World!') - }) + callback('Hello World!'); + }); protocol.registerHttpProtocol('atom', (request, callback) => { - callback({ url: request.url, method: request.method }) - }) + callback({ url: request.url, method: request.method }); + }); - protocol.unregisterProtocol('atom') + protocol.unregisterProtocol('atom'); - const registered: boolean = protocol.isProtocolRegistered('atom') -}) + const registered = protocol.isProtocolRegistered('atom'); + console.log('isProtocolRegistered', registered); +}); // tray // https://github.com/electron/electron/blob/main/docs/api/tray.md -let appIcon: Electron.Tray = null +let appIcon: Electron.Tray = null; app.whenReady().then(() => { - appIcon = new Tray('/path/to/my/icon') + appIcon = new Tray('/path/to/my/icon'); const contextMenu = Menu.buildFromTemplate([ { label: 'Item1', type: 'radio' }, { label: 'Item2', type: 'radio' }, { label: 'Item3', type: 'radio', checked: true }, { label: 'Item4', type: 'radio' } - ]) + ]); - appIcon.setTitle('title') - appIcon.setToolTip('This is my application.') + appIcon.setTitle('title'); + appIcon.setToolTip('This is my application.'); - appIcon.setImage('/path/to/new/icon') - appIcon.setPressedImage('/path/to/new/icon') + appIcon.setImage('/path/to/new/icon'); + appIcon.setPressedImage('/path/to/new/icon'); - appIcon.popUpContextMenu(contextMenu, { x: 100, y: 100 }) - appIcon.setContextMenu(contextMenu) + appIcon.popUpContextMenu(contextMenu, { x: 100, y: 100 }); + appIcon.setContextMenu(contextMenu); - appIcon.setIgnoreDoubleClickEvents(true) + appIcon.setIgnoreDoubleClickEvents(true); appIcon.on('click', (event, bounds) => { - console.log('click', event, bounds) - }) + console.log('click', event, bounds); + }); appIcon.on('balloon-show', () => { - console.log('balloon-show') - }) + console.log('balloon-show'); + }); appIcon.displayBalloon({ title: 'Hello World!', @@ -946,31 +951,28 @@ app.whenReady().then(() => { respectQuietTime: true, largeIcon: true, noSound: true - }) -}) + }); +}); // clipboard // https://github.com/electron/electron/blob/main/docs/api/clipboard.md -{ - let str: string - clipboard.writeText('Example String') - clipboard.writeText('Example String', 'selection') - clipboard.writeBookmark('foo', 'http://example.com') - clipboard.writeBookmark('foo', 'http://example.com', 'selection') - clipboard.writeFindText('foo') - str = clipboard.readText('selection') - str = clipboard.readFindText() - console.log(clipboard.availableFormats()) - console.log(clipboard.readBookmark().title) - clipboard.clear() +clipboard.writeText('Example String'); +clipboard.writeText('Example String', 'selection'); +clipboard.writeBookmark('foo', 'http://example.com'); +clipboard.writeBookmark('foo', 'http://example.com', 'selection'); +clipboard.writeFindText('foo'); +console.log(clipboard.readText('selection')); +console.log(clipboard.readFindText()); +console.log(clipboard.availableFormats()); +console.log(clipboard.readBookmark().title); +clipboard.clear(); - clipboard.write({ - html: '', - text: 'Hello World!', - image: clipboard.readImage() - }) -} +clipboard.write({ + html: '', + text: 'Hello World!', + image: clipboard.readImage() +}); // crash-reporter // https://github.com/electron/electron/blob/main/docs/api/crash-reporter.md @@ -983,51 +985,61 @@ crashReporter.start({ extra: { someKey: 'value' } -}) +}); -console.log(crashReporter.getLastCrashReport()) -console.log(crashReporter.getUploadedReports()) +console.log(crashReporter.getLastCrashReport()); +console.log(crashReporter.getUploadedReports()); // nativeImage // https://github.com/electron/electron/blob/main/docs/api/native-image.md -const appIcon2 = new Tray('/Users/somebody/images/icon.png') -const window2 = new BrowserWindow({ icon: '/Users/somebody/images/window.png' }) -const image = clipboard.readImage() -const appIcon3 = new Tray(image) -const appIcon4 = new Tray('/Users/somebody/images/icon.png') +const appIcon2 = new Tray('/Users/somebody/images/icon.png'); +appIcon2.destroy(); -const image2 = nativeImage.createFromPath('/Users/somebody/images/icon.png') +const window2 = new BrowserWindow({ icon: '/Users/somebody/images/window.png' }); +console.log(window2.id); + +const image = clipboard.readImage(); +console.log(image.getSize()); + +const appIcon3 = new Tray(image); +appIcon3.destroy(); + +const appIcon4 = new Tray('/Users/somebody/images/icon.png'); +appIcon4.destroy(); + +const image2 = nativeImage.createFromPath('/Users/somebody/images/icon.png'); +console.log(image2.getSize()); // process // https://github.com/electron/electron/blob/main/docs/api/process.md -console.log(process.versions.electron) -console.log(process.versions.chrome) -console.log(process.type) -console.log(process.resourcesPath) -console.log(process.mas) -console.log(process.windowsStore) -process.noAsar = true -process.crash() -process.hang() -process.setFdLimit(8192) +console.log(process.versions.electron); +console.log(process.versions.chrome); +console.log(process.type); +console.log(process.resourcesPath); +console.log(process.mas); +console.log(process.windowsStore); +process.noAsar = true; +process.crash(); +process.hang(); +process.setFdLimit(8192); // screen // https://github.com/electron/electron/blob/main/docs/api/screen.md app.whenReady().then(() => { - const size = screen.getPrimaryDisplay().workAreaSize - mainWindow = new BrowserWindow({ width: size.width, height: size.height }) -}) + const size = screen.getPrimaryDisplay().workAreaSize; + mainWindow = new BrowserWindow({ width: size.width, height: size.height }); +}); app.whenReady().then(() => { - const displays = screen.getAllDisplays() - let externalDisplay: any = null + const displays = screen.getAllDisplays(); + let externalDisplay: any = null; for (const i in displays) { if (displays[i].bounds.x > 0 || displays[i].bounds.y > 0) { - externalDisplay = displays[i] - break + externalDisplay = displays[i]; + break; } } @@ -1035,39 +1047,39 @@ app.whenReady().then(() => { mainWindow = new BrowserWindow({ x: externalDisplay.bounds.x + 50, y: externalDisplay.bounds.y + 50 - }) + }); } screen.on('display-added', (event, display) => { - console.log('display-added', display) - }) + console.log('display-added', display); + }); screen.on('display-removed', (event, display) => { - console.log('display-removed', display) - }) + console.log('display-removed', display); + }); screen.on('display-metrics-changed', (event, display, changes) => { - console.log('display-metrics-changed', display, changes) - }) -}) + console.log('display-metrics-changed', display, changes); + }); +}); // shell // https://github.com/electron/electron/blob/main/docs/api/shell.md -shell.showItemInFolder('/home/user/Desktop/test.txt') -shell.trashItem('/home/user/Desktop/test.txt').then(() => {}) +shell.showItemInFolder('/home/user/Desktop/test.txt'); +shell.trashItem('/home/user/Desktop/test.txt').then(() => {}); shell.openPath('/home/user/Desktop/test.txt').then(err => { - if (err) console.log(err) -}) + if (err) console.log(err); +}); shell.openExternal('https://github.com', { activate: false -}).then(() => {}) +}).then(() => {}); -shell.beep() +shell.beep(); -shell.writeShortcutLink('/home/user/Desktop/shortcut.lnk', 'update', shell.readShortcutLink('/home/user/Desktop/shortcut.lnk')) +shell.writeShortcutLink('/home/user/Desktop/shortcut.lnk', 'update', shell.readShortcutLink('/home/user/Desktop/shortcut.lnk')); // cookies // https://github.com/electron/electron/blob/main/docs/api/cookies.md @@ -1075,148 +1087,155 @@ shell.writeShortcutLink('/home/user/Desktop/shortcut.lnk', 'update', shell.readS // Query all cookies. session.defaultSession.cookies.get({}) .then(cookies => { - console.log(cookies) + console.log(cookies); }).catch((error: Error) => { - console.log(error) - }) + console.log(error); + }); // Query all cookies associated with a specific url. session.defaultSession.cookies.get({ url: 'http://www.github.com' }) .then(cookies => { - console.log(cookies) + console.log(cookies); }).catch((error: Error) => { - console.log(error) - }) + console.log(error); + }); // Set a cookie with the given cookie data; // may overwrite equivalent cookies if they exist. - const cookie = { url: 'http://www.github.com', name: 'dummy_name', value: 'dummy' } + const cookie = { url: 'http://www.github.com', name: 'dummy_name', value: 'dummy' }; session.defaultSession.cookies.set(cookie) .then(() => { // success }, (error: Error) => { - console.error(error) - }) + console.error(error); + }); } // session // https://github.com/electron/electron/blob/main/docs/api/session.md session.defaultSession.on('will-download', (event, item, webContents) => { - event.preventDefault() + console.log('will-download', webContents.id); + event.preventDefault(); require('got')(item.getURL()).then((data: any) => { - require('fs').writeFileSync('/somewhere', data) - }) -}) + require('fs').writeFileSync('/somewhere', data); + }); +}); // In the main process. session.defaultSession.on('will-download', (event, item, webContents) => { + console.log('will-download', webContents.id); // Set the save path, making Electron not to prompt a save dialog. - item.setSavePath('/tmp/save.pdf') - console.log(item.getSavePath()) - console.log(item.getMimeType()) - console.log(item.getFilename()) - console.log(item.getTotalBytes()) + item.setSavePath('/tmp/save.pdf'); + console.log(item.getSavePath()); + console.log(item.getMimeType()); + console.log(item.getFilename()); + console.log(item.getTotalBytes()); item.on('updated', (_event, state) => { if (state === 'interrupted') { - console.log('Download is interrupted but can be resumed') + console.log('Download is interrupted but can be resumed'); } else if (state === 'progressing') { if (item.isPaused()) { - console.log('Download is paused') + console.log('Download is paused'); } else { - console.log(`Received bytes: ${item.getReceivedBytes()}`) + console.log(`Received bytes: ${item.getReceivedBytes()}`); } } - }) + }); item.on('done', function (e, state) { if (state === 'completed') { - console.log('Download successfully') + console.log('Download successfully'); } else { - console.log(`Download failed: ${state}`) + console.log(`Download failed: ${state}`); } - }) -}) + }); +}); // To emulate a GPRS connection with 50kbps throughput and 500 ms latency. session.defaultSession.enableNetworkEmulation({ latency: 500, downloadThroughput: 6400, uploadThroughput: 6400 -}) +}); // To emulate a network outage. session.defaultSession.enableNetworkEmulation({ offline: true -}) +}); session.defaultSession.setCertificateVerifyProc((request, callback) => { - const { hostname } = request + const { hostname } = request; if (hostname === 'github.com') { - callback(0) + callback(0); } else { - callback(-2) + callback(-2); } -}) +}); session.defaultSession.setPermissionRequestHandler(function (webContents, permission, callback) { if (webContents.getURL() === 'github.com') { if (permission === 'notifications') { - callback(false) - return + callback(false); + return; } } - callback(true) -}) + callback(true); +}); // consider any url ending with `example.com`, `foobar.com`, `baz` // for integrated authentication. -session.defaultSession.allowNTLMCredentialsForDomains('*example.com, *foobar.com, *baz') +session.defaultSession.allowNTLMCredentialsForDomains('*example.com, *foobar.com, *baz'); // consider all urls for integrated authentication. -session.defaultSession.allowNTLMCredentialsForDomains('*') +session.defaultSession.allowNTLMCredentialsForDomains('*'); // Modify the user agent for all requests to the following urls. const filter = { urls: ['https://*.github.com/*', '*://electron.github.io'] -} +}; session.defaultSession.webRequest.onBeforeSendHeaders(filter, function (details: any, callback: any) { - details.requestHeaders['User-Agent'] = 'MyAgent' - callback({ cancel: false, requestHeaders: details.requestHeaders }) -}) + details.requestHeaders['User-Agent'] = 'MyAgent'; + callback({ cancel: false, requestHeaders: details.requestHeaders }); +}); app.whenReady().then(function () { - const protocol = session.defaultSession.protocol + const protocol = session.defaultSession.protocol; protocol.registerFileProtocol('atom', function (request, callback) { - const url = request.url.substr(7) - callback(path.normalize(__dirname + '/' + url)) - }) -}) + const url = request.url.substr(7); + callback(path.normalize(`${__dirname}/${url}`)); + }); +}); // webContents // https://github.com/electron/electron/blob/main/docs/api/web-contents.md -console.log(webContents.getAllWebContents()) -console.log(webContents.getFocusedWebContents()) +console.log(webContents.getAllWebContents()); +console.log(webContents.getFocusedWebContents()); const win4 = new BrowserWindow({ webPreferences: { offscreen: true } -}) +}); win4.webContents.on('paint', (event, dirty, _image) => { - console.log(dirty, _image.getBitmap()) -}) + console.log(dirty, _image.getBitmap()); +}); -win4.loadURL('http://github.com') +win4.loadURL('http://github.com'); -const unusedTouchBar = new TouchBar({ +// TouchBar +// https://github.com/electron/electron/blob/main/docs/api/touch-bar.md + +const touchBar = new TouchBar({ items: [ new TouchBar.TouchBarButton({ label: '' }), new TouchBar.TouchBarLabel({ label: '' }) ] -}) +}); + +mainWindow.setTouchBar(touchBar); diff --git a/spec/ts-smoke/electron/renderer.ts b/spec/ts-smoke/electron/renderer.ts index 57ea707f9dc6..9ba7a0486835 100644 --- a/spec/ts-smoke/electron/renderer.ts +++ b/spec/ts-smoke/electron/renderer.ts @@ -6,67 +6,65 @@ import { clipboard, crashReporter, shell -} from 'electron' - -import * as fs from 'fs' +} from 'electron'; // In renderer process (web page). // https://github.com/electron/electron/blob/main/docs/api/ipc-renderer.md -console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong" +console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong" ipcRenderer.on('asynchronous-reply', (event, arg: any) => { - console.log(arg) // prints "pong" - event.sender.send('another-message', 'Hello World!') -}) + console.log(arg); // prints "pong" + event.sender.send('another-message', 'Hello World!'); +}); -ipcRenderer.send('asynchronous-message', 'ping') +ipcRenderer.send('asynchronous-message', 'ping'); // web-frame // https://github.com/electron/electron/blob/main/docs/api/web-frame.md -webFrame.setZoomFactor(2) -console.log(webFrame.getZoomFactor()) +webFrame.setZoomFactor(2); +console.log(webFrame.getZoomFactor()); -webFrame.setZoomLevel(200) -console.log(webFrame.getZoomLevel()) +webFrame.setZoomLevel(200); +console.log(webFrame.getZoomLevel()); -webFrame.setVisualZoomLevelLimits(50, 200) +webFrame.setVisualZoomLevelLimits(50, 200); webFrame.setSpellCheckProvider('en-US', { spellCheck (words, callback) { setTimeout(() => { - const spellchecker = require('spellchecker') - const misspelled = words.filter(x => spellchecker.isMisspelled(x)) - callback(misspelled) - }, 0) + const spellchecker = require('spellchecker'); + const misspelled = words.filter(x => spellchecker.isMisspelled(x)); + callback(misspelled); + }, 0); } -}) +}); -webFrame.insertText('text') +webFrame.insertText('text'); -webFrame.executeJavaScript('return true;').then((v: boolean) => console.log(v)) -webFrame.executeJavaScript('return true;', true).then((v: boolean) => console.log(v)) -webFrame.executeJavaScript('return true;', true) -webFrame.executeJavaScript('return true;', true).then((result: boolean) => console.log(result)) +webFrame.executeJavaScript('return true;').then((v: boolean) => console.log(v)); +webFrame.executeJavaScript('return true;', true).then((v: boolean) => console.log(v)); +webFrame.executeJavaScript('return true;', true); +webFrame.executeJavaScript('return true;', true).then((result: boolean) => console.log(result)); -console.log(webFrame.getResourceUsage()) -webFrame.clearCache() +console.log(webFrame.getResourceUsage()); +webFrame.clearCache(); // clipboard // https://github.com/electron/electron/blob/main/docs/api/clipboard.md -clipboard.writeText('Example String') -clipboard.writeText('Example String', 'selection') -console.log(clipboard.readText('selection')) -console.log(clipboard.availableFormats()) -clipboard.clear() +clipboard.writeText('Example String'); +clipboard.writeText('Example String', 'selection'); +console.log(clipboard.readText('selection')); +console.log(clipboard.availableFormats()); +clipboard.clear(); clipboard.write({ html: '', text: 'Hello World!', bookmark: 'Bookmark name', image: clipboard.readImage() -}) +}); // crash-reporter // https://github.com/electron/electron/blob/main/docs/api/crash-reporter.md @@ -76,14 +74,14 @@ crashReporter.start({ companyName: 'YourCompany', submitURL: 'https://your-domain.com/url-to-submit', uploadToServer: true -}) +}); // desktopCapturer // https://github.com/electron/electron/blob/main/docs/api/desktop-capturer.md desktopCapturer.getSources({ types: ['window', 'screen'] }).then(sources => { for (let i = 0; i < sources.length; ++i) { - if (sources[i].name == 'Electron') { + if (sources[i].name === 'Electron') { (navigator as any).webkitGetUserMedia({ audio: false, video: { @@ -96,18 +94,18 @@ desktopCapturer.getSources({ types: ['window', 'screen'] }).then(sources => { maxHeight: 720 } } - }, gotStream, getUserMediaError) - return + }, gotStream, getUserMediaError); + return; } } -}) +}); function gotStream (stream: any) { - (document.querySelector('video') as HTMLVideoElement).src = URL.createObjectURL(stream) + (document.querySelector('video') as HTMLVideoElement).src = URL.createObjectURL(stream); } function getUserMediaError (error: Error) { - console.log('getUserMediaError', error) + console.log('getUserMediaError', error); } // File object @@ -119,78 +117,81 @@ function getUserMediaError (error: Error) { */ -const holder = document.getElementById('holder') +const holder = document.getElementById('holder'); holder.ondragover = function () { - return false -} + return false; +}; holder.ondragleave = holder.ondragend = function () { - return false -} + return false; +}; holder.ondrop = function (e) { - e.preventDefault() - const file = e.dataTransfer.files[0] - console.log('File you dragged here is', file.path) - return false -} + e.preventDefault(); + const file = e.dataTransfer.files[0]; + console.log('File you dragged here is', file.path); + return false; +}; // nativeImage // https://github.com/electron/electron/blob/main/docs/api/native-image.md -const image = clipboard.readImage() +const image = clipboard.readImage(); +console.log(image.getSize()); // https://github.com/electron/electron/blob/main/docs/api/process.md // preload.js -const _setImmediate = setImmediate -const _clearImmediate = clearImmediate +const _setImmediate = setImmediate; +const _clearImmediate = clearImmediate; process.once('loaded', function () { - global.setImmediate = _setImmediate - global.clearImmediate = _clearImmediate -}) + global.setImmediate = _setImmediate; + global.clearImmediate = _clearImmediate; +}); // shell // https://github.com/electron/electron/blob/main/docs/api/shell.md -shell.openExternal('https://github.com').then(() => {}) +shell.openExternal('https://github.com').then(() => {}); // // https://github.com/electron/electron/blob/main/docs/api/webview-tag.md -const webview = document.createElement('webview') -webview.loadURL('https://github.com') +const webview = document.createElement('webview'); +webview.loadURL('https://github.com'); webview.addEventListener('console-message', function (e) { - console.log('Guest page logged a message:', e.message) -}) + console.log('Guest page logged a message:', e.message); +}); webview.addEventListener('found-in-page', function (e) { if (e.result.finalUpdate) { - webview.stopFindInPage('keepSelection') + webview.stopFindInPage('keepSelection'); } -}) +}); -const requestId = webview.findInPage('test') +const requestId = webview.findInPage('test'); +console.log(requestId); webview.addEventListener('close', function () { - webview.src = 'about:blank' -}) + webview.src = 'about:blank'; +}); // In embedder page. webview.addEventListener('ipc-message', function (event) { - console.log(event.channel) // Prints "pong" -}) -webview.send('ping') -webview.capturePage().then(image => { console.log(image) }) + console.log(event.channel); // Prints "pong" +}); +webview.send('ping'); +webview.capturePage().then(image => { console.log(image); }); -{ - const opened: boolean = webview.isDevToolsOpened() - const focused: boolean = webview.isDevToolsFocused() -} +const opened = webview.isDevToolsOpened(); +console.log('isDevToolsOpened', opened); + +const focused = webview.isDevToolsFocused(); +console.log('isDevToolsFocused', focused); // In guest page. ipcRenderer.on('ping', function () { - ipcRenderer.sendToHost('pong') -}) + ipcRenderer.sendToHost('pong'); +}); diff --git a/spec/ts-smoke/runner.js b/spec/ts-smoke/runner.js index 32b6a1c02e88..90ab3369a8e2 100644 --- a/spec/ts-smoke/runner.js +++ b/spec/ts-smoke/runner.js @@ -1,18 +1,18 @@ -const path = require('path') -const childProcess = require('child_process') +const path = require('path'); +const childProcess = require('child_process'); const typeCheck = () => { - const tscExec = path.resolve(require.resolve('typescript'), '../../bin/tsc') + const tscExec = path.resolve(require.resolve('typescript'), '../../bin/tsc'); const tscChild = childProcess.spawn(process.execPath, [tscExec, '--project', './ts-smoke/tsconfig.json'], { cwd: path.resolve(__dirname, '../') - }) - tscChild.stdout.on('data', d => console.log(d.toString())) - tscChild.stderr.on('data', d => console.error(d.toString())) + }); + tscChild.stdout.on('data', d => console.log(d.toString())); + tscChild.stderr.on('data', d => console.error(d.toString())); tscChild.on('exit', (tscStatus) => { if (tscStatus !== 0) { - process.exit(tscStatus) + process.exit(tscStatus); } - }) -} + }); +}; -typeCheck() +typeCheck();