ubdate
This commit is contained in:
54
node_modules/es-abstract/2020/QuoteJSONString.js
generated
vendored
Normal file
54
node_modules/es-abstract/2020/QuoteJSONString.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
'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-quotejsonstring
|
||||
|
||||
var 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;
|
||||
};
|
||||
Reference in New Issue
Block a user