UNPKG

diagnostic-channel-publishers

Version:

A collection of pre-built module patches that enable existing npm modules to publish diagnostic data

64 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.enable = exports.console = void 0; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for details. var diagnostic_channel_1 = require("diagnostic-channel"); var stream_1 = require("stream"); var consolePatchFunction = function (originalConsole) { var aiLoggingOutStream = new stream_1.Writable(); var aiLoggingErrStream = new stream_1.Writable(); // Default console is roughly equivalent to `new Console(process.stdout, process.stderr)` // We create a version which publishes to the channel and also to stdout/stderr aiLoggingOutStream.write = function (chunk) { if (!chunk) { return true; } var message = chunk.toString(); diagnostic_channel_1.channel.publish("console", { message: message }); return true; }; aiLoggingErrStream.write = function (chunk) { if (!chunk) { return true; } var message = chunk.toString(); diagnostic_channel_1.channel.publish("console", { message: message, stderr: true }); return true; }; var aiLoggingConsole = new originalConsole.Console(aiLoggingOutStream, aiLoggingErrStream); var consoleMethods = ["log", "info", "warn", "error", "dir", "time", "timeEnd", "trace", "assert"]; var _loop_1 = function (method) { var originalMethod = originalConsole[method]; if (originalMethod) { originalConsole[method] = function () { if (aiLoggingConsole[method]) { try { aiLoggingConsole[method].apply(aiLoggingConsole, arguments); } catch (e) { // Ignore errors; allow the original method to throw if necessary } } return originalMethod.apply(originalConsole, arguments); }; } }; for (var _i = 0, consoleMethods_1 = consoleMethods; _i < consoleMethods_1.length; _i++) { var method = consoleMethods_1[_i]; _loop_1(method); } return originalConsole; }; exports.console = { versionSpecifier: ">= 4.0.0", patch: consolePatchFunction }; function enable() { diagnostic_channel_1.channel.registerMonkeyPatch("console", exports.console); // Force patching of console /* tslint:disable-next-line:no-var-requires */ require("console"); } exports.enable = enable; //# sourceMappingURL=console.pub.js.map