superagent 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/History.md CHANGED
@@ -1,3 +1,13 @@
1
+
2
+ 0.21.0 / 2014-11-11
3
+ ==================
4
+
5
+ * Trim text before parsing json (gjohnson)
6
+ * Update tests to express 4 (gaastonsr)
7
+ * Prevent double callback when error is thrown (pgn-vole)
8
+ * Fix missing clearTimeout (nickdima)
9
+ * Update debug (TooTallNate)
10
+
1
11
  0.20.0 / 2014-10-02
2
12
  ==================
3
13
 
package/component.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "superagent",
3
3
  "repo": "visionmedia/superagent",
4
4
  "description": "awesome http requests",
5
- "version": "0.19.0",
5
+ "version": "0.20.0",
6
6
  "keywords": [
7
7
  "http",
8
8
  "ajax",
package/lib/client.js CHANGED
@@ -294,7 +294,9 @@ function Response(req, options) {
294
294
  options = options || {};
295
295
  this.req = req;
296
296
  this.xhr = this.req.xhr;
297
- this.text = this.xhr.responseText;
297
+ this.text = this.req.method !='HEAD'
298
+ ? this.xhr.responseText
299
+ : null;
298
300
  this.setStatusProperties(this.xhr.status);
299
301
  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());
300
302
  // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but
@@ -450,16 +452,18 @@ function Request(method, url) {
450
452
  this.header = {};
451
453
  this._header = {};
452
454
  this.on('end', function(){
455
+ var err = null;
456
+ var res = null;
457
+
453
458
  try {
454
- var res = new Response(self);
455
- if ('HEAD' == method) res.text = null;
456
- self.callback(null, res);
459
+ res = new Response(self);
457
460
  } catch(e) {
458
- var err = new Error('Parser is unable to parse the response');
461
+ err = new Error('Parser is unable to parse the response');
459
462
  err.parse = true;
460
463
  err.original = e;
461
- self.callback(err);
462
464
  }
465
+
466
+ self.callback(err, res);
463
467
  });
464
468
  }
465
469
 
@@ -806,6 +810,7 @@ Request.prototype.send = function(data){
806
810
 
807
811
  Request.prototype.callback = function(err, res){
808
812
  var fn = this._callback;
813
+ this.clearTimeout();
809
814
  if (2 == fn.length) return fn(err, res);
810
815
  if (err) return this.emit('error', err);
811
816
  fn(res);
@@ -5,9 +5,12 @@ module.exports = function(res, fn){
5
5
  res.on('data', function(chunk){ res.text += chunk; });
6
6
  res.on('end', function(){
7
7
  try {
8
- fn(null, JSON.parse(res.text));
9
- } catch (err) {
10
- fn(err);
8
+ var text = res.text && res.text.replace(/^\s*|\s*$/g, '');
9
+ var body = text && JSON.parse(text);
10
+ } catch (e) {
11
+ var err = e;
12
+ } finally {
13
+ fn(err, body);
11
14
  }
12
15
  });
13
- };
16
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superagent",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "elegant & feature rich browser / node HTTP with a fluent API",
5
5
  "scripts": {
6
6
  "test": "make test"
@@ -26,18 +26,22 @@
26
26
  "component-emitter": "1.1.2",
27
27
  "methods": "1.0.1",
28
28
  "cookiejar": "2.0.1",
29
- "debug": "~2.0.0",
29
+ "debug": "2",
30
30
  "reduce-component": "1.0.1",
31
31
  "extend": "~1.2.1",
32
32
  "form-data": "0.1.3",
33
33
  "readable-stream": "1.0.27-1"
34
34
  },
35
35
  "devDependencies": {
36
- "zuul": "~1.6.0",
37
- "express": "3.5.0",
36
+ "basic-auth-connect": "^1.0.0",
38
37
  "better-assert": "~1.0.1",
38
+ "body-parser": "^1.9.2",
39
+ "cookie-parser": "^1.3.3",
40
+ "express": "^4.9.8",
41
+ "express-session": "^1.9.1",
42
+ "mocha": "*",
39
43
  "should": "3.1.3",
40
- "mocha": "*"
44
+ "zuul": "~1.6.0"
41
45
  },
42
46
  "browser": {
43
47
  "./lib/node/index.js": "./lib/client.js",
package/superagent.js CHANGED
@@ -690,7 +690,9 @@ function Response(req, options) {
690
690
  options = options || {};
691
691
  this.req = req;
692
692
  this.xhr = this.req.xhr;
693
- this.text = this.xhr.responseText;
693
+ this.text = this.req.method !='HEAD'
694
+ ? this.xhr.responseText
695
+ : null;
694
696
  this.setStatusProperties(this.xhr.status);
695
697
  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());
696
698
  // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but
@@ -846,16 +848,18 @@ function Request(method, url) {
846
848
  this.header = {};
847
849
  this._header = {};
848
850
  this.on('end', function(){
851
+ var err = null;
852
+ var res = null;
853
+
849
854
  try {
850
- var res = new Response(self);
851
- if ('HEAD' == method) res.text = null;
852
- self.callback(null, res);
855
+ res = new Response(self);
853
856
  } catch(e) {
854
- var err = new Error('Parser is unable to parse the response');
857
+ err = new Error('Parser is unable to parse the response');
855
858
  err.parse = true;
856
859
  err.original = e;
857
- self.callback(err);
858
860
  }
861
+
862
+ self.callback(err, res);
859
863
  });
860
864
  }
861
865
 
@@ -1202,6 +1206,7 @@ Request.prototype.send = function(data){
1202
1206
 
1203
1207
  Request.prototype.callback = function(err, res){
1204
1208
  var fn = this._callback;
1209
+ this.clearTimeout();
1205
1210
  if (2 == fn.length) return fn(err, res);
1206
1211
  if (err) return this.emit('error', err);
1207
1212
  fn(res);