htmlyer
Version:
103 lines (102 loc) • 7.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.input2html = exports.jsonStringify = exports.urlEncode = exports.jsEncode = exports.htmlEncode = void 0;
var spCharCodes = "[\\u0000-\\u001F]|\\u00F1|\\u000B|\\u000C|\\u00A0|\\uFEFF|\\u1680|\\u180E|[\\u2000-\\u200F]|\\u2028|\\u2029|\\u202F|\\u205F|\\u3000";
function getStrValue(str) {
if (str === null || str === undefined || typeof str == 'function') {
str = '';
} else {
str += '';
}
return str;
}
var HtmlEscapeMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`',
'\\': '\'
};
function escapeMap2RegExpStr(escapeMap) {
return Object.keys(escapeMap).map(function (v) {
return {
'\\': '\\\\',
'\n': '\\n',
'\r': '\\r'
}[v] || v;
}).join('|');
}
exports.htmlEncode = function () {
var escapeMap = Object.assign({}, HtmlEscapeMap);
var reg = new RegExp(escapeMap2RegExpStr(escapeMap), 'g');
function rp(all) {
return escapeMap[all] || '';
}
return function (str) {
str = getStrValue(str);
if (!str) return str;
return str.replace(reg, rp);
};
}();
exports.jsEncode = function () {
// 可以再添加一个\/ 主要是防止// 或则/**/这些组合注释 (有一个地方没有encode,可能会导致一片代码被波及)
var escapeMap = {
'\n': '\\n',
'\r': '\\r',
'\\': '\\\\',
'/': '\\/',
'"': '\\"',
"'": "\\'",
'>': '\\>',
// 增加> | < 防止在script标签中,中xss
'<': "\\u003c",
'`': '\\`'
};
var reg = new RegExp(escapeMap2RegExpStr(escapeMap) + '|' + spCharCodes, 'g');
function rp(str) {
return escapeMap[str] || "\\u" + str.charCodeAt(0).toString(16).padStart(4, '0');
}
return function (str) {
str = getStrValue(str);
if (!str) return str;
return str.replace(reg, rp);
};
}();
function urlEncode(str) {
str = getStrValue(str);
if (!str) return str;
return encodeURIComponent(str);
}
exports.urlEncode = urlEncode;
exports.jsonStringify = function () {
var scriptTagReg = /</g;
return function (data, replacer, space) {
var result = JSON.stringify(data, replacer, space);
if (!result) return '';
// 防</script> xss
// 由于stringify本身就会对里面的数据进行一些encode
// 而且都是jsEncode类型,所以不担心htmlEncode分支
return result.replace(scriptTagReg, "\\u003c");
};
}();
exports.input2html = function () {
var escapeMap = Object.assign(Object.assign({}, HtmlEscapeMap), {
' ': ' ',
'\n': '<br/>',
'\r': ''
});
var reg = new RegExp(escapeMap2RegExpStr(escapeMap) + '|' + spCharCodes, 'g');
function rp(all) {
return escapeMap[all] || '&#' + all.charCodeAt(0) + ';';
}
return function (str) {
str = getStrValue(str);
if (!str) return str;
return str.replace(reg, rp);
};
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzcENoYXJDb2RlcyIsImdldFN0clZhbHVlIiwic3RyIiwidW5kZWZpbmVkIiwiSHRtbEVzY2FwZU1hcCIsImVzY2FwZU1hcDJSZWdFeHBTdHIiLCJlc2NhcGVNYXAiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwidiIsImpvaW4iLCJleHBvcnRzIiwiaHRtbEVuY29kZSIsImFzc2lnbiIsInJlZyIsIlJlZ0V4cCIsInJwIiwiYWxsIiwicmVwbGFjZSIsImpzRW5jb2RlIiwiY2hhckNvZGVBdCIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJ1cmxFbmNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJqc29uU3RyaW5naWZ5Iiwic2NyaXB0VGFnUmVnIiwiZGF0YSIsInJlcGxhY2VyIiwic3BhY2UiLCJyZXN1bHQiLCJKU09OIiwic3RyaW5naWZ5IiwiaW5wdXQyaHRtbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsV0FBVyxHQUFHLHFJQUFxSTtBQUd6SixTQUFTQyxXQUFXQSxDQUFDQyxHQUFRO0VBQzNCLElBQUlBLEdBQUcsS0FBSyxJQUFJLElBQUlBLEdBQUcsS0FBS0MsU0FBUyxJQUFJLE9BQU9ELEdBQUcsSUFBSSxVQUFVLEVBQUU7SUFDakVBLEdBQUcsR0FBRyxFQUFFO0VBQ1YsQ0FBQyxNQUFNO0lBQ0xBLEdBQUcsSUFBSSxFQUFFO0VBQ1g7RUFFQSxPQUFPQSxHQUFHO0FBQ1o7QUFNQSxJQUFNRSxhQUFhLEdBQWM7RUFDL0IsR0FBRyxFQUFFLE9BQU87RUFDWixHQUFHLEVBQUUsTUFBTTtFQUNYLEdBQUcsRUFBRSxNQUFNO0VBQ1gsR0FBRyxFQUFFLFFBQVE7RUFDYixHQUFHLEVBQUUsUUFBUTtFQUNiLEdBQUcsRUFBRSxRQUFRO0VBQ2IsSUFBSSxFQUFFO0NBQ1A7QUFHRCxTQUFTQyxtQkFBbUJBLENBQUNDLFNBQW9CO0VBQy9DLE9BQU9DLE1BQU0s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