refactor: improve function deprecation module (#19012)

* add removeFunction to deprecation module

* clarify deprecate api

* throw error

* change error msg
This commit is contained in:
Micha Hanselmann 2019-07-08 18:01:35 -07:00 committed by Cheng Zhao
parent a90306876e
commit d79e6bbffe
3 changed files with 18 additions and 5 deletions

View file

@ -34,9 +34,21 @@ const deprecate: ElectronInternal.DeprecationUtil = {
}
},
// remove a function with no replacement
removeFunction: (fn, removedName) => {
if (!fn) { throw Error(`'${removedName} function' is invalid or does not exist.`) }
// wrap the deprecated function to warn user
const warn = warnOnce(`${fn.name} function`)
return function (this: any) {
warn()
fn.apply(this, arguments)
}
},
// change the name of a function
function: (fn, newName) => {
const warn = warnOnce(fn.name, newName)
renameFunction: (fn, newName) => {
const warn = warnOnce(`${fn.name} function`, `${newName} function`)
return function (this: any) {
warn()
fn.apply(this, arguments)

View file

@ -87,7 +87,7 @@ describe('deprecate', () => {
deprecate.setHandler(m => { msg = m })
function oldFn () { return 'hello' }
const deprecatedFn = deprecate.function(oldFn)
const deprecatedFn = deprecate.removeFunction(oldFn, 'oldFn')
deprecatedFn()
expect(msg).to.be.a('string')
@ -100,7 +100,7 @@ describe('deprecate', () => {
function oldFn () { return 'hello' }
function newFn () { return 'goodbye' }
const deprecatedFn = deprecate.function(oldFn, newFn)
const deprecatedFn = deprecate.renameFunction(oldFn, newFn)
deprecatedFn()
expect(msg).to.be.a('string')

View file

@ -76,7 +76,8 @@ declare namespace ElectronInternal {
getHandler(): DeprecationHandler | null;
warn(oldName: string, newName: string): void;
log(message: string): void;
function(fn: Function, newName: string): Function;
removeFunction(fn: Function, removedName: string): Function;
renameFunction(fn: Function, newName: string): Function;
event(emitter: NodeJS.EventEmitter, oldName: string, newName: string): void;
fnToProperty(module: any, prop: string, getter: string, setter: string): void;
removeProperty<T, K extends (keyof T & string)>(object: T, propertyName: K): T;