@@ -8,18 +8,20 @@ var TeleportJS = (function (Primitive, primitive) {
8
8
number : 'n' ,
9
9
bigint : 'b' ,
10
10
symbol : 's' ,
11
- RegExp : 'R' ,
12
11
Map : 'M' ,
13
12
Set : 'S' ,
14
- Int8Array : 'A' ,
15
- Uint8Array : 'B' ,
16
- Uint8ClampedArray : 'C' ,
17
- Int16Array : 'D' ,
18
- Uint16Array : 'E' ,
13
+ Date : 'D' ,
14
+ RegExp : 'R' ,
15
+ Buffer : 'B' ,
16
+ Int8Array : 'H' ,
17
+ Uint8Array : 'I' ,
18
+ Uint8ClampedArray : 'J' ,
19
+ Int16Array : 'P' ,
20
+ Uint16Array : 'Q' ,
19
21
Int32Array : 'F' ,
20
22
Uint32Array : 'G' ,
21
- Float32Array : 'H ' ,
22
- Float64Array : 'I '
23
+ Float32Array : 'K ' ,
24
+ Float64Array : 'L '
23
25
} ;
24
26
25
27
/*!
@@ -58,7 +60,7 @@ var TeleportJS = (function (Primitive, primitive) {
58
60
i = + set ( known , input , $ . call ( { '' : value } , '' , value ) ) ,
59
61
replace = function ( key , value ) {
60
62
var after = $ . call ( this , key , value ) ;
61
- var refIndex = setRefs ( knownRefs , refs , after ) ;
63
+ var refIndex = setRefs ( knownRefs , refs , key , after , this ) ;
62
64
63
65
if ( refIndex ) {
64
66
return refIndex ;
@@ -116,6 +118,12 @@ var TeleportJS = (function (Primitive, primitive) {
116
118
var parts = / \/ ( .* ) \/ ( .* ) / . exec ( value ) ;
117
119
refs [ index ] = new RegExp ( parts [ 1 ] , parts [ 2 ] ) ;
118
120
break ;
121
+ case REF_PREFIX . Buffer :
122
+ refs [ index ] = Buffer . from ( JSON . parse ( value ) ) ;
123
+ break ;
124
+ case REF_PREFIX . Date :
125
+ refs [ index ] = new Date ( value ) ;
126
+ break ;
119
127
case REF_PREFIX . Map :
120
128
refs [ index ] = new Map ( TeleportJS . parse ( value ) ) ;
121
129
break ;
@@ -192,10 +200,15 @@ var TeleportJS = (function (Primitive, primitive) {
192
200
return index ;
193
201
}
194
202
195
- function setRefs ( known , refs , value ) {
203
+ function setRefs ( known , refs , key , value , obj ) {
196
204
var after ;
197
205
198
206
switch ( typeof value ) {
207
+ case 'string' :
208
+ if ( obj [ key ] instanceof Date ) {
209
+ after = REF_PREFIX . Date + REF_SEPARATOR + value ;
210
+ }
211
+ break ;
199
212
case 'undefined' :
200
213
after = REF_PREFIX . undefined ;
201
214
break ;
@@ -216,6 +229,9 @@ var TeleportJS = (function (Primitive, primitive) {
216
229
if ( value === null ) {
217
230
break ;
218
231
}
232
+ else if ( value . type === 'Buffer' && value . data && Buffer . isBuffer ( obj [ key ] ) ) {
233
+ after = REF_PREFIX . Buffer + REF_SEPARATOR + JSON . stringify ( value . data ) ;
234
+ }
219
235
else if ( value instanceof RegExp ) {
220
236
after = REF_PREFIX . RegExp + REF_SEPARATOR + Primitive ( value ) ;
221
237
}
0 commit comments