UNPKG

gle

Version:

Global Log Engine: Environment-agnostic debugging & logging utility

64 lines (63 loc) 2.35 kB
import { getGlobalObject } from "./compat.js"; export function getDebugContextPatterns() { const flags = getEnvironmentDebugFlags(); return flags.reduce((output, flag) => { let newFlag = flag.trim(), enabled = true; if (/^-/.test(newFlag)) { newFlag = newFlag.substring(1); enabled = false; } if (output[newFlag] !== false) { output[newFlag] = enabled; } return output; }, {}); } function getEnvironmentDebugFlags() { var _a, _b, _c; const globalObj = getGlobalObject(); const debugFlags = new Set(); if (storageAvailable(globalObj) && typeof ((_a = globalObj.localStorage) === null || _a === void 0 ? void 0 : _a.debug) === "string") { globalObj.localStorage.debug.split(",").forEach((flag) => debugFlags.add(flag)); } if (typeof ((_c = (_b = globalObj.process) === null || _b === void 0 ? void 0 : _b.env) === null || _c === void 0 ? void 0 : _c.DEBUG) === "string") { globalObj.process.env.DEBUG.split(",").forEach((flag) => debugFlags.add(flag)); } return [...debugFlags]; } export function getEnvironmentType() { if (typeof process === "undefined" || process.type === 'renderer' || process.browser === true || process.__nwjs) { return "browser"; } return "node"; } /** * Check if storage is available * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API */ function storageAvailable(win) { let storage; try { storage = win.localStorage; const x = "__storage_test__"; storage.setItem(x, x); storage.removeItem(x); return true; } catch (e) { return (typeof DOMException !== "undefined" && e instanceof DOMException && // everything except Firefox (e.code === 22 || // Firefox e.code === 1014 || // test name field too, because code might not be present // everything except Firefox e.name === "QuotaExceededError" || // Firefox e.name === "NS_ERROR_DOM_QUOTA_REACHED") && // acknowledge QuotaExceededError only if there's something already stored storage && storage.length !== 0); } }