47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.stripSlashes = exports.removeSlashes = void 0;
|
|
const get_unescaped_any_js_1 = require("./get-unescaped-any.js");
|
|
const removeSlashes = (source, options = {}) => {
|
|
const { getUnescaped = get_unescaped_any_js_1.getUnescapedAny } = options;
|
|
const rx = /(?:(\\(u([0-9a-f]{4})|u\{([0-9a-f]+)\}|x([0-9a-f]{2})|(\d{1,3})|([\s\S]|$)))|([\s\S]))/giu;
|
|
let match;
|
|
let result = '';
|
|
while (null != (match = rx.exec(source))) {
|
|
const [, sequence, fallback, unicode, unicodePoint, hex, octal, char, literal] = match;
|
|
if (literal) {
|
|
result += literal;
|
|
continue;
|
|
}
|
|
let code;
|
|
if (char != null) {
|
|
code = null;
|
|
}
|
|
else if (octal) {
|
|
code = Number.parseInt(octal, 8);
|
|
}
|
|
else {
|
|
code = Number.parseInt((unicodePoint || unicode || hex), 16);
|
|
}
|
|
try {
|
|
const unescaped = getUnescaped(sequence, code);
|
|
if (!unescaped) {
|
|
result += fallback;
|
|
}
|
|
else if (unescaped === true) {
|
|
result += (0, get_unescaped_any_js_1.getUnescapedAny)(sequence, code) || fallback;
|
|
}
|
|
else {
|
|
result += unescaped;
|
|
}
|
|
}
|
|
catch (_error) {
|
|
result += fallback;
|
|
}
|
|
}
|
|
return result;
|
|
};
|
|
exports.removeSlashes = removeSlashes;
|
|
const stripSlashes = removeSlashes;
|
|
exports.stripSlashes = stripSlashes;
|
|
//# sourceMappingURL=remove-slashes.js.map
|