fix: support async child process methods without callback in asar (#15927)

* fix: support async child process methods without callback in asar

* fix: support async child process methods without callback in asar (improved)
This commit is contained in:
Alex Greenland 2018-12-18 07:27:39 +00:00 committed by Cheng Zhao
parent 6c998aa4f2
commit dc93d94bc8
2 changed files with 19 additions and 3 deletions

View file

@ -143,10 +143,10 @@
return error
}
const overrideAPISync = function (module, name, pathArgumentIndex) {
const overrideAPISync = function (module, name, pathArgumentIndex, fromAsync) {
if (pathArgumentIndex == null) pathArgumentIndex = 0
const old = module[name]
module[name] = function () {
const func = function () {
const pathArgument = arguments[pathArgumentIndex]
const { isAsar, asarPath, filePath } = splitPath(pathArgument)
if (!isAsar) return old.apply(this, arguments)
@ -160,6 +160,10 @@
arguments[pathArgumentIndex] = newPath
return old.apply(this, arguments)
}
if (fromAsync) {
return func
}
module[name] = func
}
const overrideAPI = function (module, name, pathArgumentIndex) {
@ -172,7 +176,7 @@
const callback = arguments[arguments.length - 1]
if (typeof callback !== 'function') {
return overrideAPISync(module, name, pathArgumentIndex)
return overrideAPISync(module, name, pathArgumentIndex, true).apply(this, arguments)
}
const archive = getOrCreateArchive(asarPath)