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 // change the name of a function
function: (fn, newName) => { renameFunction: (fn, newName) => {
const warn = warnOnce(fn.name, newName) const warn = warnOnce(`${fn.name} function`, `${newName} function`)
return function (this: any) { return function (this: any) {
warn() warn()
fn.apply(this, arguments) fn.apply(this, arguments)

View file

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

View file

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