crapifyme
Version:
Ultra-fast developer productivity CLI tools - remove comments, logs, and more
67 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogsProcessor = void 0;
const tokenizer_1 = require("../../shared/tokenizer");
class LogsProcessor {
constructor(options = {}) {
this.keepPatterns = options.keep || [];
this.preserveDebug = options.preserveDebug !== false;
this.preserveError = options.preserveError !== false;
this.preserveWarn = options.preserveWarn !== false;
}
processFile(content) {
const tokenizer = new tokenizer_1.SimpleTokenizer();
const tokens = tokenizer.tokenize(content);
const result = [];
let removed = 0;
let preserved = 0;
for (const token of tokens) {
if (token.type === 'console-log') {
if (this.shouldPreserveLog(token.value)) {
result.push(token.value);
preserved++;
}
else {
removed++;
}
}
else {
result.push(token.value);
}
}
const processedContent = result.join('');
return {
content: processedContent,
modified: content !== processedContent,
removed,
preserved
};
}
shouldPreserveLog(logStatement) {
const lowerLog = logStatement.toLowerCase();
for (const pattern of this.keepPatterns) {
if (lowerLog.includes(pattern.toLowerCase())) {
return true;
}
}
if (this.preserveError && lowerLog.includes('console.error')) {
return true;
}
// Preserve console.warn by default
if (this.preserveWarn && lowerLog.includes('console.warn')) {
return true;
}
if (this.preserveDebug && lowerLog.includes('console.debug')) {
return true;
}
const importantMethods = ['console.assert', 'console.trace', 'console.time', 'console.timeEnd'];
for (const method of importantMethods) {
if (lowerLog.includes(method)) {
return true;
}
}
return false;
}
}
exports.LogsProcessor = LogsProcessor;
//# sourceMappingURL=logic.js.map