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