@@ -8,18 +8,20 @@ var TeleportJS = (function (Primitive, primitive) {
88 number : 'n' ,
99 bigint : 'b' ,
1010 symbol : 's' ,
11- RegExp : 'R' ,
1211 Map : 'M' ,
1312 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' ,
1921 Int32Array : 'F' ,
2022 Uint32Array : 'G' ,
21- Float32Array : 'H ' ,
22- Float64Array : 'I '
23+ Float32Array : 'K ' ,
24+ Float64Array : 'L '
2325 } ;
2426
2527 /*!
@@ -58,7 +60,7 @@ var TeleportJS = (function (Primitive, primitive) {
5860 i = + set ( known , input , $ . call ( { '' : value } , '' , value ) ) ,
5961 replace = function ( key , value ) {
6062 var after = $ . call ( this , key , value ) ;
61- var refIndex = setRefs ( knownRefs , refs , after ) ;
63+ var refIndex = setRefs ( knownRefs , refs , key , after , this ) ;
6264
6365 if ( refIndex ) {
6466 return refIndex ;
@@ -116,6 +118,12 @@ var TeleportJS = (function (Primitive, primitive) {
116118 var parts = / \/ ( .* ) \/ ( .* ) / . exec ( value ) ;
117119 refs [ index ] = new RegExp ( parts [ 1 ] , parts [ 2 ] ) ;
118120 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 ;
119127 case REF_PREFIX . Map :
120128 refs [ index ] = new Map ( TeleportJS . parse ( value ) ) ;
121129 break ;
@@ -192,10 +200,15 @@ var TeleportJS = (function (Primitive, primitive) {
192200 return index ;
193201 }
194202
195- function setRefs ( known , refs , value ) {
203+ function setRefs ( known , refs , key , value , obj ) {
196204 var after ;
197205
198206 switch ( typeof value ) {
207+ case 'string' :
208+ if ( obj [ key ] instanceof Date ) {
209+ after = REF_PREFIX . Date + REF_SEPARATOR + value ;
210+ }
211+ break ;
199212 case 'undefined' :
200213 after = REF_PREFIX . undefined ;
201214 break ;
@@ -216,6 +229,9 @@ var TeleportJS = (function (Primitive, primitive) {
216229 if ( value === null ) {
217230 break ;
218231 }
232+ else if ( value . type === 'Buffer' && value . data && Buffer . isBuffer ( obj [ key ] ) ) {
233+ after = REF_PREFIX . Buffer + REF_SEPARATOR + JSON . stringify ( value . data ) ;
234+ }
219235 else if ( value instanceof RegExp ) {
220236 after = REF_PREFIX . RegExp + REF_SEPARATOR + Primitive ( value ) ;
221237 }
0 commit comments