UNPKG

@sudoo/marked

Version:

JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous

45 lines (44 loc) 1.56 kB
"use strict"; /** * @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;