CoolFace
Apppublic

Ejdjdososs/fable-ai

sourceHugging Facemitupdated 3mo agoView on Hugging Face
0likes
browser.js273 linesDownload Raw Back to src
1/* eslint-env browser */2 3/**4 * This is the web browser implementation of `debug()`.5 */6 7exports.formatArgs = formatArgs;8exports.save = save;9exports.load = load;10exports.useColors = useColors;11exports.storage = localstorage();12exports.destroy = (() => {13	let warned = false;14 15	return () => {16		if (!warned) {17			warned = true;18			console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');19		}20	};21})();22 23/**24 * Colors.25 */26 27exports.colors = [28	'#0000CC',29	'#0000FF',30	'#0033CC',31	'#0033FF',32	'#0066CC',33	'#0066FF',34	'#0099CC',35	'#0099FF',36	'#00CC00',37	'#00CC33',38	'#00CC66',39	'#00CC99',40	'#00CCCC',41	'#00CCFF',42	'#3300CC',43	'#3300FF',44	'#3333CC',45	'#3333FF',46	'#3366CC',47	'#3366FF',48	'#3399CC',49	'#3399FF',50	'#33CC00',51	'#33CC33',52	'#33CC66',53	'#33CC99',54	'#33CCCC',55	'#33CCFF',56	'#6600CC',57	'#6600FF',58	'#6633CC',59	'#6633FF',60	'#66CC00',61	'#66CC33',62	'#9900CC',63	'#9900FF',64	'#9933CC',65	'#9933FF',66	'#99CC00',67	'#99CC33',68	'#CC0000',69	'#CC0033',70	'#CC0066',71	'#CC0099',72	'#CC00CC',73	'#CC00FF',74	'#CC3300',75	'#CC3333',76	'#CC3366',77	'#CC3399',78	'#CC33CC',79	'#CC33FF',80	'#CC6600',81	'#CC6633',82	'#CC9900',83	'#CC9933',84	'#CCCC00',85	'#CCCC33',86	'#FF0000',87	'#FF0033',88	'#FF0066',89	'#FF0099',90	'#FF00CC',91	'#FF00FF',92	'#FF3300',93	'#FF3333',94	'#FF3366',95	'#FF3399',96	'#FF33CC',97	'#FF33FF',98	'#FF6600',99	'#FF6633',100	'#FF9900',101	'#FF9933',102	'#FFCC00',103	'#FFCC33'104];105 106/**107 * Currently only WebKit-based Web Inspectors, Firefox >= v31,108 * and the Firebug extension (any Firefox version) are known109 * to support "%c" CSS customizations.110 *111 * TODO: add a `localStorage` variable to explicitly enable/disable colors112 */113 114// eslint-disable-next-line complexity115function useColors() {116	// NB: In an Electron preload script, document will be defined but not fully117	// initialized. Since we know we're in Chrome, we'll just detect this case118	// explicitly119	if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {120		return true;121	}122 123	// Internet Explorer and Edge do not support colors.124	if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {125		return false;126	}127 128	let m;129 130	// Is webkit? http://stackoverflow.com/a/16459606/376773131	// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632132	// eslint-disable-next-line no-return-assign133	return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||134		// Is firebug? http://stackoverflow.com/a/398120/376773135		(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||136		// Is firefox >= v31?137		// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages138		(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) ||139		// Double check webkit in userAgent just in case we are in a worker140		(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));141}142 143/**144 * Colorize log arguments if enabled.145 *146 * @api public147 */148 149function formatArgs(args) {150	args[0] = (this.useColors ? '%c' : '') +151		this.namespace +152		(this.useColors ? ' %c' : ' ') +153		args[0] +154		(this.useColors ? '%c ' : ' ') +155		'+' + module.exports.humanize(this.diff);156 157	if (!this.useColors) {158		return;159	}160 161	const c = 'color: ' + this.color;162	args.splice(1, 0, c, 'color: inherit');163 164	// The final "%c" is somewhat tricky, because there could be other165	// arguments passed either before or after the %c, so we need to166	// figure out the correct index to insert the CSS into167	let index = 0;168	let lastC = 0;169	args[0].replace(/%[a-zA-Z%]/g, match => {170		if (match === '%%') {171			return;172		}173		index++;174		if (match === '%c') {175			// We only are interested in the *last* %c176			// (the user may have provided their own)177			lastC = index;178		}179	});180 181	args.splice(lastC, 0, c);182}183 184/**185 * Invokes `console.debug()` when available.186 * No-op when `console.debug` is not a "function".187 * If `console.debug` is not available, falls back188 * to `console.log`.189 *190 * @api public191 */192exports.log = console.debug || console.log || (() => {});193 194/**195 * Save `namespaces`.196 *197 * @param {String} namespaces198 * @api private199 */200function save(namespaces) {201	try {202		if (namespaces) {203			exports.storage.setItem('debug', namespaces);204		} else {205			exports.storage.removeItem('debug');206		}207	} catch (error) {208		// Swallow209		// XXX (@Qix-) should we be logging these?210	}211}212 213/**214 * Load `namespaces`.215 *216 * @return {String} returns the previously persisted debug modes217 * @api private218 */219function load() {220	let r;221	try {222		r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;223	} catch (error) {224		// Swallow225		// XXX (@Qix-) should we be logging these?226	}227 228	// If debug isn't set in LS, and we're in Electron, try to load $DEBUG229	if (!r && typeof process !== 'undefined' && 'env' in process) {230		r = process.env.DEBUG;231	}232 233	return r;234}235 236/**237 * Localstorage attempts to return the localstorage.238 *239 * This is necessary because safari throws240 * when a user disables cookies/localstorage241 * and you attempt to access it.242 *243 * @return {LocalStorage}244 * @api private245 */246 247function localstorage() {248	try {249		// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context250		// The Browser also has localStorage in the global context.251		return localStorage;252	} catch (error) {253		// Swallow254		// XXX (@Qix-) should we be logging these?255	}256}257 258module.exports = require('./common')(exports);259 260const {formatters} = module.exports;261 262/**263 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.264 */265 266formatters.j = function (v) {267	try {268		return JSON.stringify(v);269	} catch (error) {270		return '[UnexpectedJSONParseError]: ' + error.message;271	}272};273