@@ -11,7 +11,7 @@ var randomBytes = require('randombytes');
1111// Generate an internal UID to make the regexp pattern harder to guess. 
1212var  UID_LENGTH           =  16 ; 
1313var  UID                  =  generateUID ( ) ; 
14- var  PLACE_HOLDER_REGEXP  =  new  RegExp ( '(\\\\)?"@__(F|R|D|M|S|U|I)-'  +  UID  +  '-(\\d+)__@"' ,  'g' ) ; 
14+ var  PLACE_HOLDER_REGEXP  =  new  RegExp ( '(\\\\)?"@__(F|R|D|M|S|U|I|B )-'  +  UID  +  '-(\\d+)__@"' ,  'g' ) ; 
1515
1616var  IS_NATIVE_CODE_REGEXP  =  / \{ \s * \[ n a t i v e   c o d e \] \s * \} / g; 
1717var  IS_PURE_FUNCTION  =  / f u n c t i o n .* ?\( / ; 
@@ -70,6 +70,7 @@ module.exports = function serialize(obj, options) {
7070    var  sets       =  [ ] ; 
7171    var  undefs     =  [ ] ; 
7272    var  infinities =  [ ] ; 
73+     var  bigInts  =  [ ] ; 
7374
7475    // Returns placeholders for functions and regexps (identified by index) 
7576    // which are later replaced by their string representation. 
@@ -119,6 +120,10 @@ module.exports = function serialize(obj, options) {
119120            return  '@__I-'  +  UID  +  '-'  +  ( infinities . push ( origValue )  -  1 )  +  '__@' ; 
120121        } 
121122
123+         if  ( type  ===  'bigint' )  { 
124+             return  '@__B-'  +  UID  +  '-'  +  ( bigInts . push ( origValue )  -  1 )  +  '__@' ; 
125+         } 
126+ 
122127        return  value ; 
123128    } 
124129
@@ -192,7 +197,7 @@ module.exports = function serialize(obj, options) {
192197        str  =  str . replace ( UNSAFE_CHARS_REGEXP ,  escapeUnsafeChars ) ; 
193198    } 
194199
195-     if  ( functions . length  ===  0  &&  regexps . length  ===  0  &&  dates . length  ===  0  &&  maps . length  ===  0  &&  sets . length  ===  0  &&  undefs . length  ===  0  &&  infinities . length  ===  0 )  { 
200+     if  ( functions . length  ===  0  &&  regexps . length  ===  0  &&  dates . length  ===  0  &&  maps . length  ===  0  &&  sets . length  ===  0  &&  undefs . length  ===  0  &&  infinities . length  ===  0   &&   bigInts . length   ===   0 )  { 
196201        return  str ; 
197202    } 
198203
@@ -231,6 +236,10 @@ module.exports = function serialize(obj, options) {
231236            return  infinities [ valueIndex ] ; 
232237        } 
233238
239+         if  ( type  ===  'B' )  { 
240+             return  "BigInt(\""  +  bigInts [ valueIndex ]  +  "\")" ; 
241+         } 
242+ 
234243        var  fn  =  functions [ valueIndex ] ; 
235244
236245        return  serializeFunc ( fn ) ; 
0 commit comments