/** Copyright 2014-2019 Stewart Allen -- All Rights Reserved */ "use strict"; (function() { if (self.base.debug) return; const base = self.base, flags = {}, stash = [], debug_colors = [0xff0000, 0x00ff00, 0x0000ff, 0x00ffff, 0xff00ff, 0xffff00]; let size = 20, enabled = false, next_debug_color = 0; /** ****************************************************************** * Debug Functions ******************************************************************* */ function log(o) { console.log(o); if (enabled) { stash.push(o); while (stash.length > size) stash.shift(); } } function enable(history) { enabled = true; if (history) size = Math.abs(history); } function disable() { enabled = false; } function on() { return enabled; } function history() { return stash; } function last() { return stash[stash.length-1]; } function trace(msg) { if (msg && typeof msg != 'string') msg = JSON.stringify(msg); log(new Error(msg).stack); } function view() { return base.debug.view; } function setView(view) { base.debug.view = view; } function get(f) { return flags[f]; } function set(f, value) { if (Array.isArray(f)) { for (let i=0; i