UNPKG

@kwiz/common

Version:

KWIZ common utilities and helpers for M365 platform

169 lines 8.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GetGlobalDebug = GetGlobalDebug; exports.isDebug = isDebug; exports.isKWizComTenant = isKWizComTenant; exports.isDebugOnKWizComTenant = isDebugOnKWizComTenant; exports.consoleLoggerFilter = consoleLoggerFilter; exports.waitIfDebug = waitIfDebug; exports.trackChangesToObject = trackChangesToObject; const _dependencies_1 = require("../_dependencies"); const constants_1 = require("./constants"); const cookies_1 = require("./cookies"); const objects_1 = require("./objects"); const promises_1 = require("./promises"); const typecheckers_1 = require("./typecheckers"); /** Get the global debug object. it will only be on the top window so don't put it in the IKWizComGlobals */ function GetGlobalDebug() { return (0, objects_1.getKWizComGlobal)(true); } function SetGlobalDebugFunction() { var kGlobal = GetGlobalDebug(); if ((0, typecheckers_1.isNullOrUndefined)(kGlobal.Debug)) { kGlobal.Debug = { _debug: null, _consoleLoggerFilter: null, On: (Permanent) => { kGlobal.Debug._debug = true; (0, cookies_1.setCookie)("KWizComDebug", "true", Permanent === true ? 365 : 1); console.log("KWIZ Debug Mode: On"); }, Off: () => { kGlobal.Debug._debug = false; (0, cookies_1.deleteCookie)("KWizComDebug"); console.log("KWIZ Debug Mode: Off"); }, ToggleLogs: (categoryName, silent) => { if (silent === true) { if (kGlobal.Debug._consoleLoggerFilter === null) kGlobal.Debug._consoleLoggerFilter = [categoryName]; else if (!kGlobal.Debug._consoleLoggerFilter.includes(categoryName)) kGlobal.Debug._consoleLoggerFilter.push(categoryName); } else { if (kGlobal.Debug._consoleLoggerFilter === null) kGlobal.Debug._consoleLoggerFilter = []; else if (kGlobal.Debug._consoleLoggerFilter.includes(categoryName)) kGlobal.Debug._consoleLoggerFilter = kGlobal.Debug._consoleLoggerFilter.filter(c => c !== categoryName); } (0, cookies_1.setCookie)("KWizComDebugFilter", kGlobal.Debug._consoleLoggerFilter.join('~'), 365); console.log(`logs for ${categoryName} will ${silent === true ? 'not show up' : 'show up'}`); }, PurgeCache: async (options) => { options = options || {}; let result = { success: true }; let failedKeys = []; if (options.skipStorage !== true) { console.log(`purging local storage`); localStorage.clear(); console.log(`purging session storage`); sessionStorage.clear(); } if (options.skipCookies !== true) { console.log(`purging all cookies`); var cookies = document.cookie.split(";"); cookies.forEach(cookie => { document.cookie = cookie.split("=")[0] + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; }); } console.log(`purging caches`); try { let keys = await caches.keys(); for (let i1 = 0; i1 < keys.length; i1++) { let key = keys[i1]; try { let cache = await caches.open(key); if (cache) { let subKeys = await cache.keys(); if (subKeys && subKeys.length) { let keysToRemove = options.onlyKWizComCaches !== true ? subKeys : subKeys .filter(k => k.url.toLowerCase().includes(`${constants_1.kwiz_cdn_hostname_production}/`) || k.url.toLowerCase().includes(`${constants_1.kwiz_cdn_hostname_fastring}/`) || k.url.toLowerCase().includes(`${constants_1.kwiz_cdn_hostname_localdev}/`)); for (let i2 = 0; i2 < keysToRemove.length; i2++) { let success = await cache.delete(keysToRemove[i2]); if (!success) //failed failedKeys.push(keysToRemove[i2].url); } } } } catch (b) { failedKeys.push(key); } } } catch (e) { result.success = false; result.error = e; result.message = (e.message || "Something went wrong."); } if ((0, typecheckers_1.isNotEmptyArray)(failedKeys)) { result.success = false; result.message = ((0, typecheckers_1.isNullOrEmptyString)(result.message) ? '' : ' ') + `Failed keys: ${failedKeys.join()}`; } console.group('PurgeCache complete'); console.dir(result); console.groupEnd(); return result; } }; //no need to do this anymore, once we added max-age cache to our response headers, the SP Service worker now clears //the cache of our SPFx controls on its own. // //by default - DO NOT clear cookies/storage and non-KWIZ caches! // window.setTimeout(() => kGlobal.Debug.PurgeCache({ // skipCookies: true, // skipStorage: true, // onlyKWizComCaches: true // }), 3000); } } SetGlobalDebugFunction(); function isDebug() { var kGlobal = GetGlobalDebug(); if ((0, typecheckers_1.isNullOrUndefined)(kGlobal.Debug._debug)) { kGlobal.Debug._debug = _dependencies_1.configInfo.IsLocalDev || objects_1.$w.location.href.indexOf('kwdebug=true') > 0 || objects_1.$w.location.href.indexOf('/workbench.aspx') > 0 || (0, cookies_1.getCookie)("KWizComDebug") === "true"; } return kGlobal.Debug._debug === true; } /** returns true if this is a kwizcom production/test tenant */ function isKWizComTenant() { return objects_1.$w.location.host === "kwizcom.sharepoint.com" || window.location.host === "kwizcomqa.sharepoint.com"; } function isDebugOnKWizComTenant() { return isKWizComTenant() && isDebug(); } function consoleLoggerFilter() { var kGlobal = GetGlobalDebug(); if ((0, typecheckers_1.isNullOrUndefined)(kGlobal.Debug._consoleLoggerFilter)) { let KWizComDebugFilter = (0, cookies_1.getCookie)("KWizComDebugFilter"); if (!(0, typecheckers_1.isNullOrEmptyString)(KWizComDebugFilter)) kGlobal.Debug._consoleLoggerFilter = KWizComDebugFilter.split('~'); else kGlobal.Debug._consoleLoggerFilter = []; } return kGlobal.Debug._consoleLoggerFilter; } async function waitIfDebug(seconds) { if (isDebug()) await (0, promises_1.sleepAsync)(seconds); } function trackChangesToObject(parent, objectName, tracker) { let originalValue = parent[objectName]; Object.defineProperty(parent, objectName, { set: (newValue) => { if ((0, typecheckers_1.isFunction)(tracker.onBeforeSet)) tracker.onBeforeSet(newValue); originalValue = newValue; if ((0, typecheckers_1.isFunction)(tracker.onAfterSet)) tracker.onAfterSet(newValue); }, get: () => { if ((0, typecheckers_1.isFunction)(tracker.onBeforeGet)) tracker.onBeforeGet(originalValue); return originalValue; } }); } //# sourceMappingURL=debug.js.map