| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 'use strict';var GetIntrinsic = require('get-intrinsic');var $TypeError = GetIntrinsic('%TypeError%');var callBound = require('call-bind/callBound');var forEach = require('../helpers/forEach');var isLeadingSurrogate = require('../helpers/isLeadingSurrogate');var isTrailingSurrogate = require('../helpers/isTrailingSurrogate');var $charCodeAt = callBound('String.prototype.charCodeAt');var Type = require('./Type');var UnicodeEscape = require('./UnicodeEscape');var UTF16Encoding = require('./UTF16Encoding');var UTF16DecodeString = require('./UTF16DecodeString');var has = require('has');// https://262.ecma-international.org/11.0/#sec-quotejsonstringvar escapes = {	'\u0008': '\\b',	'\u0009': '\\t',	'\u000A': '\\n',	'\u000C': '\\f',	'\u000D': '\\r',	'\u0022': '\\"',	'\u005c': '\\\\'};module.exports = function QuoteJSONString(value) {	if (Type(value) !== 'String') {		throw new $TypeError('Assertion failed: `value` must be a String');	}	var product = '"';	if (value) {		forEach(UTF16DecodeString(value), function (C) {			if (has(escapes, C)) {				product += escapes[C];			} else {				var cCharCode = $charCodeAt(C, 0);				if (cCharCode < 0x20 || isLeadingSurrogate(C) || isTrailingSurrogate(C)) {					product += UnicodeEscape(C);				} else {					product += UTF16Encoding(cCharCode);				}			}		});	}	product += '"';	return product;};
 |