UNPKG

4.09 kBJavaScriptView Raw
1"use strict";
2// tslint:disable:no-unsafe-any
3Object.defineProperty(exports, "__esModule", { value: true });
4function stripComments(content) {
5 /**
6 * First capturing group matches double quoted string
7 * Second matches single quotes string
8 * Third matches block comments
9 * Fourth matches line comments
10 */
11 const regexp = /("(?:[^\\\"]*(?:\\.)?)*")|('(?:[^\\\']*(?:\\.)?)*')|(\/\*(?:\r?\n|.)*?\*\/)|(\/{2,}.*?(?:(?:\r?\n)|$))/g;
12 // tslint:disable-next-line:no-unnecessary-local-variable
13 const result = content.replace(regexp, (match, _0, _1, m3, m4) => {
14 // Only one of m1, m2, m3, m4 matches
15 if (m3) {
16 // A block comment. Replace with nothing
17 return '';
18 }
19 else if (m4) {
20 // A line comment. If it ends in \r?\n then keep it.
21 const length = m4.length;
22 if (length > 2 && m4[length - 1] === '\n') {
23 return m4[length - 2] === '\r' ? '\r\n' : '\n';
24 }
25 else {
26 return '';
27 }
28 }
29 else {
30 // We match a string
31 return match;
32 }
33 });
34 return result;
35}
36exports.stripComments = stripComments;
37//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaXAtY29tbWVudHMuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbInNyYy91dGlscy9zdHJpcC1jb21tZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCOztBQUUvQixTQUFnQixhQUFhLENBQUMsT0FBZTtJQUN6Qzs7Ozs7T0FLRztJQUNILE1BQU0sTUFBTSxHQUNSLHlHQUF5RyxDQUFDO0lBQzlHLHlEQUF5RDtJQUN6RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDdEIscUNBQXFDO1FBQ3JDLElBQUksRUFBRSxFQUFFO1lBQ0osd0NBQXdDO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7YUFBTSxJQUFJLEVBQUUsRUFBRTtZQUNYLG9EQUFvRDtZQUNwRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDdkMsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDbEQ7aUJBQU07Z0JBQ0gsT0FBTyxFQUFFLENBQUM7YUFDYjtTQUNKO2FBQU07WUFDSCxvQkFBb0I7WUFDcEIsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVQLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUEvQkQsc0NBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6bm8tdW5zYWZlLWFueVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBDb21tZW50cyhjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8qKlxuICAgICAqIEZpcnN0IGNhcHR1cmluZyBncm91cCBtYXRjaGVzIGRvdWJsZSBxdW90ZWQgc3RyaW5nXG4gICAgICogU2Vjb25kIG1hdGNoZXMgc2luZ2xlIHF1b3RlcyBzdHJpbmdcbiAgICAgKiBUaGlyZCBtYXRjaGVzIGJsb2NrIGNvbW1lbnRzXG4gICAgICogRm91cnRoIG1hdGNoZXMgbGluZSBjb21tZW50c1xuICAgICAqL1xuICAgIGNvbnN0IHJlZ2V4cCA9XG4gICAgICAgIC8oXCIoPzpbXlxcXFxcXFwiXSooPzpcXFxcLik/KSpcIil8KCcoPzpbXlxcXFxcXCddKig/OlxcXFwuKT8pKicpfChcXC9cXCooPzpcXHI/XFxufC4pKj9cXCpcXC8pfChcXC97Mix9Lio/KD86KD86XFxyP1xcbil8JCkpL2c7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVubmVjZXNzYXJ5LWxvY2FsLXZhcmlhYmxlXG4gICAgY29uc3QgcmVzdWx0ID0gY29udGVudC5yZXBsYWNlKHJlZ2V4cCxcbiAgICAgICAgKG1hdGNoLCBfMCwgXzEsIG0zLCBtNCkgPT4ge1xuICAgICAgICAgICAgLy8gT25seSBvbmUgb2YgbTEsIG0yLCBtMywgbTQgbWF0Y2hlc1xuICAgICAgICAgICAgaWYgKG0zKSB7XG4gICAgICAgICAgICAgICAgLy8gQSBibG9jayBjb21tZW50LiBSZXBsYWNlIHdpdGggbm90aGluZ1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobTQpIHtcbiAgICAgICAgICAgICAgICAvLyBBIGxpbmUgY29tbWVudC4gSWYgaXQgZW5kcyBpbiBcXHI/XFxuIHRoZW4ga2VlcCBpdC5cbiAgICAgICAgICAgICAgICBjb25zdCBsZW5ndGggPSBtNC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDIgJiYgbTRbbGVuZ3RoIC0gMV0gPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtNFtsZW5ndGggLSAyXSA9PT0gJ1xccicgPyAnXFxyXFxuJyA6ICdcXG4nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoIGEgc3RyaW5nXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
\No newline at end of file