Browse Source

chore: tsify more of lib (#23721)

* chore: tsify more of lib

* Update lib/browser/api/session.ts

Co-authored-by: Jeremy Apthorp <[email protected]>

Co-authored-by: Jeremy Apthorp <[email protected]>
Samuel Attard 4 years ago
parent
commit
9bc5e98238

+ 1 - 1
build/webpack/webpack.config.base.js

@@ -66,7 +66,7 @@ if (defines['ENABLE_VIEWS_API'] === 'false') {
 
 const alias = {}
 for (const ignoredModule of ignoredModules) {
-  alias[ignoredModule] = path.resolve(electronRoot, 'lib/common/dummy.js')
+  alias[ignoredModule] = path.resolve(electronRoot, 'lib/common/dummy.ts')
 }
 
 module.exports = ({

+ 23 - 23
filenames.auto.gni

@@ -136,11 +136,11 @@ auto_filenames = {
 
   sandbox_bundle_deps = [
     "lib/browser/api/module-names.ts",
-    "lib/common/api/clipboard.js",
+    "lib/common/api/clipboard.ts",
     "lib/common/api/deprecate.ts",
     "lib/common/api/module-list.ts",
-    "lib/common/api/native-image.js",
-    "lib/common/api/shell.js",
+    "lib/common/api/native-image.ts",
+    "lib/common/api/shell.ts",
     "lib/common/define-properties.ts",
     "lib/common/electron-binding-setup.ts",
     "lib/common/type-utils.ts",
@@ -189,15 +189,15 @@ auto_filenames = {
     "lib/browser/api/auto-updater/auto-updater-native.js",
     "lib/browser/api/auto-updater/auto-updater-win.js",
     "lib/browser/api/auto-updater/squirrel-update-win.js",
-    "lib/browser/api/browser-view.js",
+    "lib/browser/api/browser-view.ts",
     "lib/browser/api/browser-window.js",
-    "lib/browser/api/content-tracing.js",
+    "lib/browser/api/content-tracing.ts",
     "lib/browser/api/crash-reporter.ts",
     "lib/browser/api/desktop-capturer.ts",
     "lib/browser/api/dialog.js",
     "lib/browser/api/exports/electron.ts",
-    "lib/browser/api/global-shortcut.js",
-    "lib/browser/api/in-app-purchase.js",
+    "lib/browser/api/global-shortcut.ts",
+    "lib/browser/api/in-app-purchase.ts",
     "lib/browser/api/ipc-main.ts",
     "lib/browser/api/menu-item-roles.js",
     "lib/browser/api/menu-item.js",
@@ -208,19 +208,19 @@ auto_filenames = {
     "lib/browser/api/native-theme.ts",
     "lib/browser/api/net-log.js",
     "lib/browser/api/net.ts",
-    "lib/browser/api/notification.js",
+    "lib/browser/api/notification.ts",
     "lib/browser/api/power-monitor.ts",
-    "lib/browser/api/power-save-blocker.js",
+    "lib/browser/api/power-save-blocker.ts",
     "lib/browser/api/protocol.ts",
     "lib/browser/api/screen.ts",
-    "lib/browser/api/session.js",
+    "lib/browser/api/session.ts",
     "lib/browser/api/system-preferences.ts",
     "lib/browser/api/top-level-window.js",
     "lib/browser/api/touch-bar.js",
-    "lib/browser/api/tray.js",
-    "lib/browser/api/view.js",
-    "lib/browser/api/views/image-view.js",
-    "lib/browser/api/web-contents-view.js",
+    "lib/browser/api/tray.ts",
+    "lib/browser/api/view.ts",
+    "lib/browser/api/views/image-view.ts",
+    "lib/browser/api/web-contents-view.ts",
     "lib/browser/api/web-contents.js",
     "lib/browser/chrome-extension-shim.js",
     "lib/browser/default-menu.ts",
@@ -238,11 +238,11 @@ auto_filenames = {
     "lib/browser/remote/server.ts",
     "lib/browser/rpc-server.js",
     "lib/browser/utils.ts",
-    "lib/common/api/clipboard.js",
+    "lib/common/api/clipboard.ts",
     "lib/common/api/deprecate.ts",
     "lib/common/api/module-list.ts",
-    "lib/common/api/native-image.js",
-    "lib/common/api/shell.js",
+    "lib/common/api/native-image.ts",
+    "lib/common/api/shell.ts",
     "lib/common/define-properties.ts",
     "lib/common/electron-binding-setup.ts",
     "lib/common/init.ts",
@@ -260,11 +260,11 @@ auto_filenames = {
 
   renderer_bundle_deps = [
     "lib/browser/api/module-names.ts",
-    "lib/common/api/clipboard.js",
+    "lib/common/api/clipboard.ts",
     "lib/common/api/deprecate.ts",
     "lib/common/api/module-list.ts",
-    "lib/common/api/native-image.js",
-    "lib/common/api/shell.js",
+    "lib/common/api/native-image.ts",
+    "lib/common/api/shell.ts",
     "lib/common/define-properties.ts",
     "lib/common/electron-binding-setup.ts",
     "lib/common/init.ts",
@@ -302,11 +302,11 @@ auto_filenames = {
 
   worker_bundle_deps = [
     "lib/browser/api/module-names.ts",
-    "lib/common/api/clipboard.js",
+    "lib/common/api/clipboard.ts",
     "lib/common/api/deprecate.ts",
     "lib/common/api/module-list.ts",
-    "lib/common/api/native-image.js",
-    "lib/common/api/shell.js",
+    "lib/common/api/native-image.ts",
+    "lib/common/api/shell.ts",
     "lib/common/define-properties.ts",
     "lib/common/electron-binding-setup.ts",
     "lib/common/init.ts",

+ 3 - 4
lib/browser/api/browser-view.js → lib/browser/api/browser-view.ts

@@ -1,11 +1,10 @@
-'use strict';
+import { EventEmitter } from 'events';
 
-const { EventEmitter } = require('events');
 const { BrowserView } = process.electronBinding('browser_view');
 
 Object.setPrototypeOf(BrowserView.prototype, EventEmitter.prototype);
 
-BrowserView.fromWebContents = (webContents) => {
+BrowserView.fromWebContents = (webContents: Electron.WebContents) => {
   for (const view of BrowserView.getAllViews()) {
     if (view.webContents.equal(webContents)) return view;
   }
@@ -13,4 +12,4 @@ BrowserView.fromWebContents = (webContents) => {
   return null;
 };
 
-module.exports = BrowserView;
+export default BrowserView;

+ 0 - 2
lib/browser/api/content-tracing.js

@@ -1,2 +0,0 @@
-'use strict';
-module.exports = process.electronBinding('content_tracing');

+ 1 - 0
lib/browser/api/content-tracing.ts

@@ -0,0 +1 @@
+export default process.electronBinding('content_tracing');

+ 0 - 3
lib/browser/api/global-shortcut.js

@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = process.electronBinding('global_shortcut').globalShortcut;

+ 1 - 0
lib/browser/api/global-shortcut.ts

@@ -0,0 +1 @@
+export default process.electronBinding('global_shortcut').globalShortcut;

+ 9 - 7
lib/browser/api/in-app-purchase.js → lib/browser/api/in-app-purchase.ts

@@ -1,22 +1,24 @@
-'use strict';
+import { EventEmitter } from 'events';
 
-const { deprecate } = require('electron');
+let _inAppPurchase;
 
 if (process.platform === 'darwin') {
-  const { EventEmitter } = require('events');
   const { inAppPurchase, InAppPurchase } = process.electronBinding('in_app_purchase');
 
   // inAppPurchase is an EventEmitter.
   Object.setPrototypeOf(InAppPurchase.prototype, EventEmitter.prototype);
   EventEmitter.call(inAppPurchase);
 
-  module.exports = inAppPurchase;
+  _inAppPurchase = inAppPurchase;
 } else {
-  module.exports = {
-    purchaseProduct: (productID, quantity, callback) => {
+  _inAppPurchase = new EventEmitter();
+  Object.assign(_inAppPurchase, {
+    purchaseProduct: () => {
       throw new Error('The inAppPurchase module can only be used on macOS');
     },
     canMakePayments: () => false,
     getReceiptURL: () => ''
-  };
+  });
 }
+
+export default _inAppPurchase;

+ 0 - 7
lib/browser/api/notification.js

@@ -1,7 +0,0 @@
-'use strict';
-
-const { Notification, isSupported } = process.electronBinding('notification');
-
-Notification.isSupported = isSupported;
-
-module.exports = Notification;

+ 5 - 0
lib/browser/api/notification.ts

@@ -0,0 +1,5 @@
+const { Notification: ElectronNotification, isSupported } = process.electronBinding('notification');
+
+ElectronNotification.isSupported = isSupported;
+
+export default ElectronNotification;

+ 0 - 3
lib/browser/api/power-save-blocker.js

@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = process.electronBinding('power_save_blocker').powerSaveBlocker;

+ 1 - 0
lib/browser/api/power-save-blocker.ts

@@ -0,0 +1 @@
+export default process.electronBinding('power_save_blocker').powerSaveBlocker;

+ 0 - 17
lib/browser/api/session.js

@@ -1,17 +0,0 @@
-'use strict';
-
-const { EventEmitter } = require('events');
-const { app, deprecate } = require('electron');
-const { fromPartition } = process.electronBinding('session');
-
-// Public API.
-Object.defineProperties(exports, {
-  defaultSession: {
-    enumerable: true,
-    get () { return fromPartition(''); }
-  },
-  fromPartition: {
-    enumerable: true,
-    value: fromPartition
-  }
-});

+ 8 - 0
lib/browser/api/session.ts

@@ -0,0 +1,8 @@
+const { fromPartition } = process.electronBinding('session');
+
+export default {
+  fromPartition,
+  get defaultSession () {
+    return fromPartition('');
+  }
+};

+ 1 - 3
lib/browser/api/tray.js → lib/browser/api/tray.ts

@@ -1,5 +1,3 @@
-'use strict';
-
 const { Tray } = process.electronBinding('tray');
 
-module.exports = Tray;
+export default Tray;

+ 1 - 3
lib/browser/api/view.js → lib/browser/api/view.ts

@@ -1,5 +1,3 @@
-'use strict';
-
 const { View } = process.electronBinding('view');
 
-module.exports = View;
+export default View;

+ 2 - 3
lib/browser/api/views/image-view.js → lib/browser/api/views/image-view.ts

@@ -1,8 +1,7 @@
-const electron = require('electron');
+import { View } from 'electron';
 
-const { View } = electron;
 const { ImageView } = process.electronBinding('image_view');
 
 Object.setPrototypeOf(ImageView.prototype, View.prototype);
 
-module.exports = ImageView;
+export default ImageView;

+ 2 - 5
lib/browser/api/web-contents-view.js → lib/browser/api/web-contents-view.ts

@@ -1,10 +1,7 @@
-'use strict';
+import { View } from 'electron';
 
-const electron = require('electron');
-
-const { View } = electron;
 const { WebContentsView } = process.electronBinding('web_contents_view');
 
 Object.setPrototypeOf(WebContentsView.prototype, View.prototype);
 
-module.exports = WebContentsView;
+export default WebContentsView;

+ 4 - 6
lib/common/api/clipboard.js → lib/common/api/clipboard.ts

@@ -1,13 +1,11 @@
-'use strict';
-
 const clipboard = process.electronBinding('clipboard');
 
 if (process.type === 'renderer') {
   const ipcRendererUtils = require('@electron/internal/renderer/ipc-renderer-internal-utils');
   const typeUtils = require('@electron/internal/common/type-utils');
 
-  const makeRemoteMethod = function (method) {
-    return (...args) => {
+  const makeRemoteMethod = function (method: keyof Electron.Clipboard) {
+    return (...args: any[]) => {
       args = typeUtils.serialize(args);
       const result = ipcRendererUtils.invokeSync('ELECTRON_BROWSER_CLIPBOARD_SYNC', method, ...args);
       return typeUtils.deserialize(result);
@@ -16,7 +14,7 @@ if (process.type === 'renderer') {
 
   if (process.platform === 'linux') {
     // On Linux we could not access clipboard in renderer process.
-    for (const method of Object.keys(clipboard)) {
+    for (const method of Object.keys(clipboard) as (keyof Electron.Clipboard)[]) {
       clipboard[method] = makeRemoteMethod(method);
     }
   } else if (process.platform === 'darwin') {
@@ -26,4 +24,4 @@ if (process.type === 'renderer') {
   }
 }
 
-module.exports = clipboard;
+export default clipboard;

+ 1 - 3
lib/common/api/native-image.js → lib/common/api/native-image.ts

@@ -1,5 +1,3 @@
-'use strict';
-
 const { nativeImage } = process.electronBinding('native_image');
 
-module.exports = nativeImage;
+export default nativeImage;

+ 0 - 3
lib/common/api/shell.js

@@ -1,3 +0,0 @@
-'use strict';
-
-module.exports = process.electronBinding('shell');

+ 1 - 0
lib/common/api/shell.ts

@@ -0,0 +1 @@
+export default process.electronBinding('shell');

+ 0 - 0
lib/common/dummy.js → lib/common/dummy.ts


+ 0 - 1
spec-main/ambient.d.ts

@@ -25,7 +25,6 @@ declare namespace Electron {
     constructor(args: {show: boolean})
     setContentView(view: View): void
   }
-  class View {}
   class WebContentsView {
     constructor(options: BrowserWindowConstructorOptions)
   }

+ 2 - 0
typings/internal-electron.d.ts

@@ -87,6 +87,8 @@ declare namespace Electron {
   namespace Main {
     const deprecate: ElectronInternal.DeprecationUtil;
   }
+
+  class View {}
 }
 
 declare namespace ElectronInternal {