From 5e6441245a7988b2baeafb1d967d4b01a570f494 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 5 May 2021 11:21:27 +0200 Subject: [PATCH] debugger: refactor to use internal modules This avoids loading the entirety of `node:util` and `node:url` and their dependencies while only a subset is actually used by this module. --- lib/internal/inspector/inspect_repl.js | 33 +++++++++++++------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/internal/inspector/inspect_repl.js b/lib/internal/inspector/inspect_repl.js index ab75abddd408db..72ea61993efa30 100644 --- a/lib/internal/inspector/inspect_repl.js +++ b/lib/internal/inspector/inspect_repl.js @@ -27,11 +27,12 @@ const FS = require('fs'); const Path = require('path'); const Repl = require('repl'); -const util = require('util'); const vm = require('vm'); -const fileURLToPath = require('url').fileURLToPath; +const { fileURLToPath } = require('internal/url'); -const debuglog = util.debuglog('inspect'); +const { customInspectSymbol } = require('internal/util'); +const { inspect: utilInspect } = require('internal/util/inspect'); +const debuglog = require('internal/util/debuglog').debuglog('inspect'); const SHORTCUTS = { cont: 'c', @@ -169,12 +170,12 @@ class RemoteObject { } } - [util.inspect.custom](depth, opts) { + [customInspectSymbol](depth, opts) { function formatProperty(prop) { switch (prop.type) { case 'string': case 'undefined': - return util.inspect(prop.value, opts); + return utilInspect(prop.value, opts); case 'number': case 'boolean': @@ -183,7 +184,7 @@ class RemoteObject { case 'object': case 'symbol': if (prop.subtype === 'date') { - return util.inspect(new Date(prop.value), opts); + return utilInspect(new Date(prop.value), opts); } if (prop.subtype === 'array') { return opts.stylize(prop.value, 'special'); @@ -199,7 +200,7 @@ class RemoteObject { case 'number': case 'string': case 'undefined': - return util.inspect(this.value, opts); + return utilInspect(this.value, opts); case 'symbol': return opts.stylize(this.description, 'special'); @@ -213,10 +214,10 @@ class RemoteObject { case 'object': switch (this.subtype) { case 'date': - return util.inspect(new Date(this.description), opts); + return utilInspect(new Date(this.description), opts); case 'null': - return util.inspect(null, opts); + return utilInspect(null, opts); case 'regexp': return opts.stylize(this.description, 'regexp'); @@ -264,11 +265,11 @@ class ScopeSnapshot { this.completionGroup = properties.map((prop) => prop.name); } - [util.inspect.custom](depth, opts) { + [customInspectSymbol](depth, opts) { const type = `${this.type[0].toUpperCase()}${this.type.slice(1)}`; const name = this.name ? `<${this.name}>` : ''; const prefix = `${type}${name} `; - return util.inspect(this.properties, opts) + return utilInspect(this.properties, opts) .replace(/^Map /, prefix); } } @@ -317,7 +318,7 @@ function createRepl(inspector) { const INSPECT_OPTIONS = { colors: inspector.stdout.isTTY }; function inspect(value) { - return util.inspect(value, INSPECT_OPTIONS); + return utilInspect(value, INSPECT_OPTIONS); } function print(value, addNewline = true) { @@ -357,7 +358,7 @@ function createRepl(inspector) { function listScripts(displayNatives = false) { print(formatScripts(displayNatives)); } - listScripts[util.inspect.custom] = function listWithoutInternal() { + listScripts[customInspectSymbol] = function listWithoutInternal() { return formatScripts(); }; @@ -373,7 +374,7 @@ function createRepl(inspector) { return p; } - [util.inspect.custom](depth, { stylize }) { + [customInspectSymbol](depth, { stylize }) { const { startTime, endTime } = this.data; return stylize(`[Profile ${endTime - startTime}μs]`, 'special'); } @@ -393,7 +394,7 @@ function createRepl(inspector) { this.delta = delta; } - [util.inspect.custom](depth, options) { + [customInspectSymbol](depth, options) { const { scriptId, lineNumber, columnNumber, delta, scriptSource } = this; const start = Math.max(1, lineNumber - delta + 1); const end = lineNumber + delta + 1; @@ -459,7 +460,7 @@ function createRepl(inspector) { } class Backtrace extends Array { - [util.inspect.custom]() { + [customInspectSymbol]() { return this.map((callFrame, idx) => { const { location: { scriptId, lineNumber, columnNumber },