From 7691f7f68867a9ae4cf7470371b032885ef1bf90 Mon Sep 17 00:00:00 2001
From: Dave Methvin
Date: Thu, 12 Mar 2015 13:16:53 -0400
Subject: [PATCH 1/2] Deferred: Deprecate deferred.pipe() method
Ref #89
---
Gruntfile.js | 1 +
src/deferred.js | 13 +++++++++++++
test/deferred.js | 21 +++++++++++++++++++++
test/index.html | 1 +
warnings.md | 6 ++++++
5 files changed, 42 insertions(+)
create mode 100644 src/deferred.js
create mode 100644 test/deferred.js
diff --git a/Gruntfile.js b/Gruntfile.js
index f96c99d7..b45988a9 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -27,6 +27,7 @@ module.exports = function(grunt) {
"src/manipulation.js",
"src/event.js",
"src/traversing.js",
+ "src/deferred.js",
"src/outro.js"
],
tests: {
diff --git a/src/deferred.js b/src/deferred.js
new file mode 100644
index 00000000..078eaebc
--- /dev/null
+++ b/src/deferred.js
@@ -0,0 +1,13 @@
+
+var oldDeferred = jQuery.Deferred;
+
+jQuery.Deferred = function() {
+ var deferred = oldDeferred.apply( this, arguments );
+
+ deferred.pipe = function() {
+ migrateWarn( "deferred.pipe() is deprecated" );
+ return deferred.then.apply( this, arguments );
+ };
+
+ return deferred;
+};
diff --git a/test/deferred.js b/test/deferred.js
new file mode 100644
index 00000000..9d389734
--- /dev/null
+++ b/test/deferred.js
@@ -0,0 +1,21 @@
+
+module("deferred");
+
+test( ".pipe()", function() {
+ expect( 4 );
+
+ var d = jQuery.Deferred().resolve( 1 );
+
+ expectNoWarning( "then", function() {
+ d.then(function( v ) {
+ equal( v, 1, "got correct value" );
+ }); });
+
+ expectWarning( "pipe", function() {
+ d.pipe(function( v ) {
+ equal( v, 1, "got correct value" );
+ });
+ });
+
+});
+
diff --git a/test/index.html b/test/index.html
index 44aedc4c..cce28dcb 100644
--- a/test/index.html
+++ b/test/index.html
@@ -40,6 +40,7 @@
+
diff --git a/warnings.md b/warnings.md
index 02c1f946..fd629653 100644
--- a/warnings.md
+++ b/warnings.md
@@ -148,6 +148,12 @@ $(document).ajaxStart(function(){ $("#status").text("Ajax started"); });
**Solution**: Boolean properties should generally not be passed to `$().attr` at all; replace with `$().prop` unless you truly intend to update the underlying HTML *attribute*.
+### JQMIGRATE: deferred.pipe() is deprecated
+
+**Cause**: The `.pipe()` method on a `jQuery.Deferred` object was deprecated as of jQuery 1.8, when the `.then()` method was changed to perform the same function.
+
+**Solution**: Change all occurrences of `.pipe()` to `.then()`.
+
### JQMIGRATE: jQuery.clean() is deprecated
**Cause**: `jQuery.buildFragment()` and `jQuery.clean()` are undocumented internal methods. The signature of `jQuery.buildFragment()` was changed in jQuery 1.8 and 1.9, and `jQuery.clean()` was removed in 1.9. However, we are aware of some plugins or other code that may be using them.
From 32e1b7f620d39b623c3beff8a7221c7f5a5b445f Mon Sep 17 00:00:00 2001
From: Dave Methvin
Date: Fri, 13 Mar 2015 13:42:37 -0400
Subject: [PATCH 2/2] [squash]: Test and shim the deferred.promise().pipe
method as well
---
src/deferred.js | 18 +++++++++++++-----
test/deferred.js | 17 +++++++++++++++--
2 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/src/deferred.js b/src/deferred.js
index 078eaebc..d83e2556 100644
--- a/src/deferred.js
+++ b/src/deferred.js
@@ -4,10 +4,18 @@ var oldDeferred = jQuery.Deferred;
jQuery.Deferred = function() {
var deferred = oldDeferred.apply( this, arguments );
- deferred.pipe = function() {
- migrateWarn( "deferred.pipe() is deprecated" );
- return deferred.then.apply( this, arguments );
- };
-
+ // Don't add this method if the current jQuery doesn't provide it
+ if ( deferred.pipe ) {
+
+ deferred.pipe = function() {
+ migrateWarn( "deferred.pipe() is deprecated" );
+ return deferred.then.apply( this, arguments );
+ };
+
+ deferred.promise().pipe = function() {
+ return deferred.pipe.apply( this, arguments );
+ };
+ }
+
return deferred;
};
diff --git a/test/deferred.js b/test/deferred.js
index 9d389734..d40b6315 100644
--- a/test/deferred.js
+++ b/test/deferred.js
@@ -2,10 +2,24 @@
module("deferred");
test( ".pipe()", function() {
- expect( 4 );
+ expect( 8 );
var d = jQuery.Deferred().resolve( 1 );
+ // Deferred
+ expectNoWarning( "then", function() {
+ d.then(function( v ) {
+ equal( v, 1, "got correct value" );
+ }); });
+
+ expectWarning( "pipe", function() {
+ d.pipe(function( v ) {
+ equal( v, 1, "got correct value" );
+ });
+ });
+
+ // Deferred's promise object
+ d = d.promise();
expectNoWarning( "then", function() {
d.then(function( v ) {
equal( v, 1, "got correct value" );
@@ -16,6 +30,5 @@ test( ".pipe()", function() {
equal( v, 1, "got correct value" );
});
});
-
});