astro-ghostcms/.pnpm-store/v3/files/34/43d26468350ab63e57581a1fc2d...

43 lines
1.5 KiB
Plaintext
Raw Permalink Normal View History

2024-02-14 14:10:47 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ast_utils_1 = require("./ast-utils");
class FixTracker {
constructor(fixer, sourceCode) {
this.fixer = fixer;
this.sourceCode = sourceCode;
this.retainedRange = null;
}
retainRange(range) {
this.retainedRange = range;
return this;
}
retainEnclosingFunction(node) {
const functionNode = (0, ast_utils_1.getUpperFunction)(node);
return this.retainRange(functionNode ? functionNode.range : this.sourceCode.ast.range);
}
retainSurroundingTokens(nodeOrToken) {
const tokenBefore = this.sourceCode.getTokenBefore(nodeOrToken) || nodeOrToken;
const tokenAfter = this.sourceCode.getTokenAfter(nodeOrToken) || nodeOrToken;
return this.retainRange([tokenBefore.range[0], tokenAfter.range[1]]);
}
replaceTextRange(range, text) {
let actualRange;
if (this.retainedRange) {
actualRange = [
Math.min(this.retainedRange[0], range[0]),
Math.max(this.retainedRange[1], range[1]),
];
}
else {
actualRange = range;
}
return this.fixer.replaceTextRange(actualRange, this.sourceCode.text.slice(actualRange[0], range[0]) +
text +
this.sourceCode.text.slice(range[1], actualRange[1]));
}
remove(nodeOrToken) {
return this.replaceTextRange(nodeOrToken.range, "");
}
}
exports.default = FixTracker;