UNPKG

theprogrammablemind

Version:

79 lines (66 loc) 1.25 kB
const counters = {} const hits = {} let db = () => { debugger // eslint-disable-line no-debugger } const reset = () => { Object.keys(counters).forEach(key => delete counters[key]) Object.keys(hits).forEach(key => delete hits[key]) db = () => { debugger } // eslint-disable-line no-debugger } const getDb = () => { return db } const setDb = (value) => { db = value } const hit = (name) => { hits[name] = true } const unhit = (name) => { hits[name] = false } const wasHit = (name) => { return hits[name] } const counter = (name, breakAt = [], debugBreak = true) => { if (!counters[name]) { counters[name] = 0 } counters[name] += 1 console.log(`counters[${name}] = ${counters[name]}`) unhit(name) if (Array.isArray(breakAt) && breakAt.includes(counters[name])) { if (debugBreak) { db() } hit(name) return true } else if (breakAt == counters[name]) { if (debugBreak) { db() } hit(name) return true } } const get = (name) => { return counters[name] } const _break = (name) => { if (wasHit(name)) { db() } } module.exports = { counter, get, _break, // break is a keyword // used for tests reset, hit, unhit, wasHit, getDb, setDb }