You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							1.1 KiB
						
					
					
				var $ = require('../internals/export'); | 
						|
var getBuiltIn = require('../internals/get-built-in'); | 
						|
var fails = require('../internals/fails'); | 
						|
 | 
						|
var $stringify = getBuiltIn('JSON', 'stringify'); | 
						|
var re = /[\uD800-\uDFFF]/g; | 
						|
var low = /^[\uD800-\uDBFF]$/; | 
						|
var hi = /^[\uDC00-\uDFFF]$/; | 
						|
 | 
						|
var fix = function (match, offset, string) { | 
						|
  var prev = string.charAt(offset - 1); | 
						|
  var next = string.charAt(offset + 1); | 
						|
  if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) { | 
						|
    return '\\u' + match.charCodeAt(0).toString(16); | 
						|
  } return match; | 
						|
}; | 
						|
 | 
						|
var FORCED = fails(function () { | 
						|
  return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' | 
						|
    || $stringify('\uDEAD') !== '"\\udead"'; | 
						|
}); | 
						|
 | 
						|
if ($stringify) { | 
						|
  // https://github.com/tc39/proposal-well-formed-stringify | 
						|
  $({ target: 'JSON', stat: true, forced: FORCED }, { | 
						|
    // eslint-disable-next-line no-unused-vars | 
						|
    stringify: function stringify(it, replacer, space) { | 
						|
      var result = $stringify.apply(null, arguments); | 
						|
      return typeof result == 'string' ? result.replace(re, fix) : result; | 
						|
    } | 
						|
  }); | 
						|
}
 | 
						|
 |