File tree Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -86,10 +86,18 @@ export class Hookable <
86
86
87
87
deprecateHook < NameT extends HookNameT > ( name : NameT , deprecated : DeprecatedHook < HooksT > ) {
88
88
this . _deprecatedHooks [ name ] = deprecated
89
+ const _hooks = this . _hooks [ name ] || [ ]
90
+ this . _hooks [ name ] = undefined
91
+ for ( const hook of _hooks ) {
92
+ this . hook ( name , hook as any )
93
+ }
89
94
}
90
95
91
96
deprecateHooks ( deprecatedHooks : Record < HookNameT , DeprecatedHook < HooksT > > ) {
92
97
Object . assign ( this . _deprecatedHooks , deprecatedHooks )
98
+ for ( const name in deprecatedHooks ) {
99
+ this . deprecateHook ( name , deprecatedHooks [ name ] )
100
+ }
93
101
}
94
102
95
103
addHooks ( configHooks : NestedHooks < HooksT > ) {
Original file line number Diff line number Diff line change @@ -66,6 +66,16 @@ describe('core: hookable', () => {
66
66
expect ( hook . _hooks . c ) . toEqual ( [ expect . any ( Function ) , expect . any ( Function ) , expect . any ( Function ) ] )
67
67
} )
68
68
69
+ test ( 'should handle deprecation after registering' , ( ) => {
70
+ const hook = createHooks ( )
71
+ hook . hook ( 'a' , ( ) => { } )
72
+ hook . hook ( 'b' , ( ) => { } )
73
+ hook . deprecateHook ( 'a' , 'b' )
74
+ expect ( console . warn ) . toBeCalledWith ( 'a hook has been deprecated, please use b' )
75
+ expect ( hook . _hooks . a ) . toBeUndefined ( )
76
+ expect ( hook . _hooks . b ) . toEqual ( [ expect . any ( Function ) , expect . any ( Function ) ] )
77
+ } )
78
+
69
79
test ( 'deprecateHooks' , ( ) => {
70
80
const hook = createHooks ( )
71
81
hook . deprecateHooks ( {
You can’t perform that action at this time.
0 commit comments