UNPKG

@react-native/dev-middleware

Version:
118 lines (116 loc) 3.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true, }); exports.default = void 0; var _timers = require("timers"); var _util = _interopRequireDefault(require("util")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const debug = require("debug")("Metro:InspectorProxy"); const debugCDPMessages = require("debug")("Metro:InspectorProxyCDPMessages"); const CDP_MESSAGES_BATCH_DEBUGGING_THROTTLE_MS = 5000; function getCDPLogPrefix(destination) { return _util.default.format( "[(Debugger) %s (Proxy) %s (Device)]", destination === "DebuggerToProxy" ? "->" : destination === "ProxyToDebugger" ? "<-" : " ", destination === "ProxyToDevice" ? "->" : destination === "DeviceToProxy" ? "<-" : " " ); } class CdpDebugLogging { #cdpMessagesLoggingBatchingFn = { DebuggerToProxy: () => {}, ProxyToDebugger: () => {}, DeviceToProxy: () => {}, ProxyToDevice: () => {}, }; constructor() { if (debug.enabled) { this.#initializeThrottledCDPMessageLogging(); } } #initializeThrottledCDPMessageLogging() { const batchingCounters = { DebuggerToProxy: { count: 0, size: 0, }, ProxyToDebugger: { count: 0, size: 0, }, DeviceToProxy: { count: 0, size: 0, }, ProxyToDevice: { count: 0, size: 0, }, }; Object.keys(batchingCounters).forEach((destination) => { let timeout = null; this.#cdpMessagesLoggingBatchingFn[destination] = (message) => { if (message.length > 1024 * 100) { const messagePreview = JSON.stringify( JSON.parse(message, (key, value) => { if (Array.isArray(value)) { return "[ARRAY]"; } if (typeof value === "string" && value.length > 50) { return value.slice(0, 50) + "..."; } return value; }), null, 2 ); debug( "%s A large message (%s MB) was %s- %s", getCDPLogPrefix(destination), (message.length / (1024 * 1024)).toFixed(2), destination.startsWith("Proxy") ? " sent " : "received", messagePreview ); } if (timeout == null) { timeout = (0, _timers.setTimeout)(() => { debug( "%s %s CDP messages of size %s MB %s in the last %ss.", getCDPLogPrefix(destination), String(batchingCounters[destination].count).padStart(4), String( (batchingCounters[destination].size / (1024 * 1024)).toFixed(2) ).padStart(6), destination.startsWith("Proxy") ? " sent " : "received", CDP_MESSAGES_BATCH_DEBUGGING_THROTTLE_MS / 1000 ); batchingCounters[destination].count = 0; batchingCounters[destination].size = 0; timeout = null; }, CDP_MESSAGES_BATCH_DEBUGGING_THROTTLE_MS).unref(); } batchingCounters[destination].count++; batchingCounters[destination].size += message.length; }; }); } log(destination, message) { if (debugCDPMessages.enabled) { debugCDPMessages("%s message: %s", getCDPLogPrefix(destination), message); } if (debug.enabled) { this.#cdpMessagesLoggingBatchingFn[destination](message); } } } exports.default = CdpDebugLogging;