@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
169 lines • 8.12 kB
JavaScript
;
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