@@ -17,39 +17,38 @@ var isBuf = require('./is-buffer');
17
17
* @api public
18
18
*/
19
19
20
- exports . deconstructPacket = function ( packet ) {
20
+ exports . deconstructPacket = function ( packet ) {
21
21
var buffers = [ ] ;
22
22
var packetData = packet . data ;
23
-
24
- function _deconstructPacket ( data ) {
25
- if ( ! data ) return data ;
26
-
27
- if ( isBuf ( data ) ) {
28
- var placeholder = { _placeholder : true , num : buffers . length } ;
29
- buffers . push ( data ) ;
30
- return placeholder ;
31
- } else if ( isArray ( data ) ) {
32
- var newData = new Array ( data . length ) ;
33
- for ( var i = 0 ; i < data . length ; i ++ ) {
34
- newData [ i ] = _deconstructPacket ( data [ i ] ) ;
35
- }
36
- return newData ;
37
- } else if ( typeof data === 'object' && ! ( data instanceof Date ) ) {
38
- var newData = { } ;
39
- for ( var key in data ) {
40
- newData [ key ] = _deconstructPacket ( data [ key ] ) ;
41
- }
42
- return newData ;
43
- }
44
- return data ;
45
- }
46
-
47
23
var pack = packet ;
48
- pack . data = _deconstructPacket ( packetData ) ;
24
+ pack . data = _deconstructPacket ( packetData , buffers ) ;
49
25
pack . attachments = buffers . length ; // number of binary 'attachments'
50
26
return { packet : pack , buffers : buffers } ;
51
27
} ;
52
28
29
+ function _deconstructPacket ( data , buffers ) {
30
+ if ( ! data ) return data ;
31
+
32
+ if ( isBuf ( data ) ) {
33
+ var placeholder = { _placeholder : true , num : buffers . length } ;
34
+ buffers . push ( data ) ;
35
+ return placeholder ;
36
+ } else if ( isArray ( data ) ) {
37
+ var newData = new Array ( data . length ) ;
38
+ for ( var i = 0 ; i < data . length ; i ++ ) {
39
+ newData [ i ] = _deconstructPacket ( data [ i ] , buffers ) ;
40
+ }
41
+ return newData ;
42
+ } else if ( typeof data === 'object' && ! ( data instanceof Date ) ) {
43
+ var newData = { } ;
44
+ for ( var key in data ) {
45
+ newData [ key ] = _deconstructPacket ( data [ key ] , buffers ) ;
46
+ }
47
+ return newData ;
48
+ }
49
+ return data ;
50
+ }
51
+
53
52
/**
54
53
* Reconstructs a binary packet from its placeholder packet and buffers
55
54
*
@@ -60,29 +59,28 @@ exports.deconstructPacket = function(packet){
60
59
*/
61
60
62
61
exports . reconstructPacket = function ( packet , buffers ) {
62
+ packet . data = _reconstructPacket ( packet . data , buffers ) ;
63
+ packet . attachments = undefined ; // no longer useful
64
+ return packet ;
65
+ } ;
63
66
64
- function _reconstructPacket ( data ) {
65
- if ( data && data . _placeholder ) {
66
- var buf = buffers [ data . num ] ; // appropriate buffer (should be natural order anyway)
67
- return buf ;
68
- } else if ( isArray ( data ) ) {
69
- for ( var i = 0 ; i < data . length ; i ++ ) {
70
- data [ i ] = _reconstructPacket ( data [ i ] ) ;
71
- }
72
- return data ;
73
- } else if ( data && 'object' === typeof data ) {
74
- for ( var key in data ) {
75
- data [ key ] = _reconstructPacket ( data [ key ] ) ;
76
- }
77
- return data ;
67
+ function _reconstructPacket ( data , buffers ) {
68
+ if ( ! data ) return data ;
69
+
70
+ if ( data && data . _placeholder ) {
71
+ return buffers [ data . num ] ; // appropriate buffer (should be natural order anyway)
72
+ } else if ( isArray ( data ) ) {
73
+ for ( var i = 0 ; i < data . length ; i ++ ) {
74
+ data [ i ] = _reconstructPacket ( data [ i ] , buffers ) ;
75
+ }
76
+ } else if ( typeof data === 'object' ) {
77
+ for ( var key in data ) {
78
+ data [ key ] = _reconstructPacket ( data [ key ] , buffers ) ;
78
79
}
79
- return data ;
80
80
}
81
81
82
- packet . data = _reconstructPacket ( packet . data ) ;
83
- packet . attachments = undefined ; // no longer useful
84
- return packet ;
85
- } ;
82
+ return data ;
83
+ }
86
84
87
85
/**
88
86
* Asynchronously removes Blobs or Files from data via
@@ -124,7 +122,7 @@ exports.removeBlobs = function(data, callback) {
124
122
for ( var i = 0 ; i < obj . length ; i ++ ) {
125
123
_removeBlobs ( obj [ i ] , i , obj ) ;
126
124
}
127
- } else if ( obj && 'object' === typeof obj && ! isBuf ( obj ) ) { // and object
125
+ } else if ( typeof obj === 'object' && ! isBuf ( obj ) ) { // and object
128
126
for ( var key in obj ) {
129
127
_removeBlobs ( obj [ key ] , key , obj ) ;
130
128
}
0 commit comments