@@ -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