forked from jquery/jquery-migrate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeferred.js
60 lines (50 loc) · 1.73 KB
/
deferred.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import {
migratePatchFunc,
migratePatchAndInfoFunc,
migrateWarn
} from "../main.js";
// Support jQuery slim which excludes the deferred module in jQuery 4.0+
if ( jQuery.Deferred ) {
var unpatchedGetStackHookValue,
oldDeferred = jQuery.Deferred;
migratePatchFunc( jQuery, "Deferred", function( func ) {
var deferred = oldDeferred(),
promise = deferred.promise();
migratePatchAndInfoFunc( deferred, "pipe", deferred.pipe, "deferred-pipe",
"deferred.pipe() is deprecated" );
migratePatchAndInfoFunc( promise, "pipe", promise.pipe, "deferred-pipe",
"deferred.pipe() is deprecated" );
if ( func ) {
func.call( deferred, deferred );
}
return deferred;
}, "deferred-pipe" );
// Preserve handler of uncaught exceptions in promise chains
jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;
// Preserve the optional hook to record the error, if defined
jQuery.Deferred.getErrorHook = oldDeferred.getErrorHook;
// We want to mirror jQuery.Deferred.getErrorHook here, so we cannot use
// existing Migrate utils.
Object.defineProperty( jQuery.Deferred, "getStackHook", {
configurable: true,
enumerable: true,
get: function() {
if ( jQuery.migrateIsPatchEnabled( "deferred-getStackHook" ) ) {
migrateWarn( "deferred-getStackHook",
"jQuery.Deferred.getStackHook is removed; use jQuery.Deferred.getErrorHook" );
return jQuery.Deferred.getErrorHook;
} else {
return unpatchedGetStackHookValue;
}
},
set: function( newValue ) {
if ( jQuery.migrateIsPatchEnabled( "deferred-getStackHook" ) ) {
migrateWarn( "deferred-getStackHook",
"jQuery.Deferred.getStackHook is removed; use jQuery.Deferred.getErrorHook" );
jQuery.Deferred.getErrorHook = newValue;
} else {
unpatchedGetStackHookValue = newValue;
}
}
} );
}