UNPKG

typescript-logging

Version:

Library for logging, written in typescript, can be used by normal es5+ javascript as well.

200 lines 7.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var CategoryService_1 = require("../log/category/CategoryService"); var LoggerOptions_1 = require("../log/LoggerOptions"); var MessageUtils_1 = require("../utils/MessageUtils"); var ExtensionHelper = (function () { function ExtensionHelper() { // Private constructor } /** * Enables the window event listener to listen to messages (from extensions). * Can be registered/enabled only once. */ ExtensionHelper.register = function () { if (!ExtensionHelper.registered) { var listener = function (evt) { var msg = evt.data; if (msg !== null) { ExtensionHelper.processMessageFromExtension(msg); } }; if (typeof window !== "undefined" && typeof window.removeEventListener !== "undefined" && typeof window.addEventListener !== "undefined") { window.removeEventListener("message", listener); window.addEventListener("message", listener); ExtensionHelper.registered = true; } } }; ExtensionHelper.processMessageFromExtension = function (msg) { if (!ExtensionHelper.registered) { return; } /* tslint:disable:no-console */ if (msg.from === "tsl-extension") { var data = msg.data; switch (data.type) { case "register": ExtensionHelper.enableExtensionIntegration(); break; case "request-change-loglevel": var valueRequest = data.value; var catsApplied = ExtensionHelper.applyLogLevel(valueRequest.categoryId, valueRequest.logLevel, valueRequest.recursive); if (catsApplied.length > 0) { // Send changes back ExtensionHelper.sendCategoriesRuntimeUpdateMessage(catsApplied); } break; default: console.log("Unknown command to process message from extension, command was: " + data.type); break; } } /* tslint:enable:no-console */ }; ExtensionHelper.sendCategoryLogMessage = function (msg) { if (!ExtensionHelper.registered) { return; } var categoryIds = msg.categories.map(function (cat) { return cat.id; }); var content = { type: "log-message", value: { categories: categoryIds, errorAsStack: msg.errorAsStack, formattedMessage: MessageUtils_1.MessageFormatUtils.renderDefaultMessage(msg, false), logLevel: LoggerOptions_1.LogLevel[msg.level].toString(), message: msg.messageAsString, resolvedErrorMessage: msg.isResolvedErrorMessage } }; var message = { data: content, from: "tsl-logging", }; ExtensionHelper.sendMessage(message); }; ExtensionHelper.sendCategoriesRuntimeUpdateMessage = function (categories) { if (!ExtensionHelper.registered) { return; } var service = CategoryService_1.CategoryServiceImpl.getInstance(); var catLevels = { categories: Array() }; categories.forEach(function (cat) { var catSettings = service.getCategorySettings(cat); if (catSettings != null) { catLevels.categories.push({ id: cat.id, logLevel: LoggerOptions_1.LogLevel[catSettings.logLevel].toString() }); } }); var content = { type: "categories-rt-update", value: catLevels, }; var message = { data: content, from: "tsl-logging" }; ExtensionHelper.sendMessage(message); }; ExtensionHelper.sendRootCategoriesToExtension = function () { if (!ExtensionHelper.registered) { return; } var categories = CategoryService_1.CategoryServiceImpl.getInstance().getRootCategories().map(function (cat) { return ExtensionHelper.getCategoryAsJSON(cat); }); var content = { type: "root-categories-tree", value: categories }; var message = { data: content, from: "tsl-logging" }; ExtensionHelper.sendMessage(message); }; /** * If extension integration is enabled, will send the root categories over to the extension. * Otherwise does nothing. */ ExtensionHelper.getCategoryAsJSON = function (cat) { var childCategories = cat.children.map(function (child) { return ExtensionHelper.getCategoryAsJSON(child); }); return { children: childCategories, id: cat.id, logLevel: LoggerOptions_1.LogLevel[cat.logLevel].toString(), name: cat.name, parentId: (cat.parent != null ? cat.parent.id : null), }; }; ExtensionHelper.applyLogLevel = function (categoryId, logLevel, recursive) { var cats = []; var category = CategoryService_1.CategoryServiceImpl.getInstance().getCategoryById(categoryId); if (category != null) { ExtensionHelper._applyLogLevelRecursive(category, LoggerOptions_1.LogLevel.fromString(logLevel), recursive, cats); } else { /* tslint:disable:no-console */ console.log("Could not change log level, failed to find category with id: " + categoryId); /* tslint:enable:no-console */ } return cats; }; ExtensionHelper._applyLogLevelRecursive = function (category, logLevel, recursive, cats) { var categorySettings = CategoryService_1.CategoryServiceImpl.getInstance().getCategorySettings(category); if (categorySettings != null) { categorySettings.logLevel = logLevel; cats.push(category); if (recursive) { category.children.forEach(function (child) { ExtensionHelper._applyLogLevelRecursive(child, logLevel, recursive, cats); }); } } }; ExtensionHelper.getAllCategories = function () { var cats = []; var addCats = function (cat, allCats) { allCats.push(cat); cat.children.forEach(function (catChild) { addCats(catChild, allCats); }); }; CategoryService_1.CategoryServiceImpl.getInstance().getRootCategories().forEach(function (cat) { addCats(cat, cats); }); return cats; }; ExtensionHelper.sendMessage = function (msg) { if (!ExtensionHelper.registered) { return; } if (typeof window !== "undefined" && typeof window.postMessage !== "undefined") { window.postMessage(msg, "*"); } }; /** * Extension framework will call this to enable the integration between two, * after this call the framework will respond with postMessage() messages. */ ExtensionHelper.enableExtensionIntegration = function () { if (!ExtensionHelper.registered) { return; } var instance = CategoryService_1.CategoryServiceImpl.getInstance(); instance.enableExtensionIntegration(); // Send over all categories ExtensionHelper.sendRootCategoriesToExtension(); // Send over the current runtime levels var cats = ExtensionHelper.getAllCategories(); ExtensionHelper.sendCategoriesRuntimeUpdateMessage(cats); }; ExtensionHelper.registered = false; return ExtensionHelper; }()); exports.ExtensionHelper = ExtensionHelper; //# sourceMappingURL=ExtensionHelper.js.map