refactor: Port renderer-internal-utils to TypeScript (#16942)

* chore: make aliasify work on .ts files as well

* refactor: Port renderer-internal-utils to TypeScript

* refactor: Implement feedback <3
This commit is contained in:
Felix Rieseberg 2019-02-13 23:05:49 -08:00 committed by Samuel Attard
parent 46a24c82ff
commit 9112ad01be
5 changed files with 49 additions and 31 deletions

View file

@ -67,7 +67,7 @@ filenames = {
"lib/renderer/content-scripts-injector.js",
"lib/renderer/init.js",
"lib/renderer/inspector.js",
"lib/renderer/ipc-renderer-internal-utils.js",
"lib/renderer/ipc-renderer-internal-utils.ts",
"lib/renderer/ipc-renderer-internal.js",
"lib/renderer/remote.js",
"lib/renderer/security-warnings.js",

View file

@ -1,30 +0,0 @@
'use strict'
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
const errorUtils = require('@electron/internal/common/error-utils')
let nextId = 0
exports.invoke = function (command, ...args) {
return new Promise((resolve, reject) => {
const requestId = ++nextId
ipcRenderer.once(`${command}_RESPONSE_${requestId}`, (event, error, result) => {
if (error) {
reject(errorUtils.deserialize(error))
} else {
resolve(result)
}
})
ipcRenderer.send(command, requestId, ...args)
})
}
exports.invokeSync = function (command, ...args) {
const [ error, result ] = ipcRenderer.sendSync(command, ...args)
if (error) {
throw errorUtils.deserialize(error)
} else {
return result
}
}

View file

@ -0,0 +1,30 @@
import * as ipcRenderer from '@electron/internal/renderer/ipc-renderer-internal'
import * as errorUtils from '@electron/internal/common/error-utils'
let nextId = 0
export function invoke<T> (command: string, ...args: any[]) {
return new Promise<T>((resolve, reject) => {
const requestId = ++nextId
ipcRenderer.once(`${command}_RESPONSE_${requestId}`, (
_event: Electron.Event, error: Electron.SerializedError, result: any
) => {
if (error) {
reject(errorUtils.deserialize(error))
} else {
resolve(result)
}
})
ipcRenderer.send(command, requestId, ...args)
})
}
export function invokeSync<T> (command: string, ...args: any[]): T {
const [ error, result ] = ipcRenderer.sendSync(command, ...args)
if (error) {
throw errorUtils.deserialize(error)
} else {
return result
}
}

View file

@ -76,6 +76,9 @@
"aliasify": {
"replacements": {
"@electron/internal/(.+)": "./lib/$1"
},
"appliesTo": {
"includeExtensions": [".js", ".ts"]
}
},
"lint-staged": {

View file

@ -6,9 +6,24 @@
*/
declare namespace Electron {
enum ProcessType {
browser = 'browser',
renderer = 'renderer',
worker = 'worker'
}
interface App {
setVersion(version: string): void;
setDesktopName(name: string): void;
setAppPath(path: string | null): void;
}
interface SerializedError {
message: string;
stack?: string,
name: string,
from: Electron.ProcessType,
cause: SerializedError,
__ELECTRON_SERIALIZED_ERROR__: true
}
}