@sudoo/marked
Version:
JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous
45 lines (44 loc) • 1.56 kB
JavaScript
;
/**
* @author WMXPY
* @namespace Debug_BreakPoint
* @description Controller
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.MarkedDebugBreakPointController = void 0;
class MarkedDebugBreakPointController {
static fromBreakPoints(breakPoints) {
const breakPointsSet = new Set(breakPoints);
return new MarkedDebugBreakPointController(breakPointsSet);
}
constructor(breakPoints) {
this._pendingBreakPoints = breakPoints;
this._triggeredBreakPoints = new Set();
}
shouldBreak(scriptLocation, node) {
const pendingClone = new Set(this._pendingBreakPoints);
const triggeredClone = new Set(this._triggeredBreakPoints);
for (const breakPoint of triggeredClone) {
if (breakPoint.shouldReset(scriptLocation, node)) {
this._pendingBreakPoints.add(breakPoint);
this._triggeredBreakPoints.delete(breakPoint);
}
}
let triggered = false;
for (const breakPoint of pendingClone) {
if (breakPoint.shouldTrigger(scriptLocation, node)) {
this._triggeredBreakPoints.add(breakPoint);
this._pendingBreakPoints.delete(breakPoint);
triggered = true;
}
}
return triggered;
}
getBreakPoints() {
return [
...this._pendingBreakPoints,
...this._triggeredBreakPoints,
];
}
}
exports.MarkedDebugBreakPointController = MarkedDebugBreakPointController;