|
26 | 26 | setupProcessICUVersions();
|
27 | 27 |
|
28 | 28 | setupGlobalVariables();
|
| 29 | + |
| 30 | + const _process = NativeModule.require('internal/process'); |
| 31 | + _process.setupConfig(NativeModule._source); |
| 32 | + NativeModule.require('internal/process/warning').setup(); |
| 33 | + NativeModule.require('internal/process/next_tick').setup(); |
| 34 | + NativeModule.require('internal/process/stdio').setup(); |
| 35 | + |
29 | 36 | const browserGlobals = !process._noBrowserGlobals;
|
30 | 37 | if (browserGlobals) {
|
31 | 38 | setupGlobalTimeouts();
|
32 | 39 | setupGlobalConsole();
|
33 | 40 | }
|
34 | 41 |
|
35 |
| - const _process = NativeModule.require('internal/process'); |
36 | 42 | const perf = process.binding('performance');
|
37 | 43 | const {
|
38 | 44 | NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE,
|
|
50 | 56 | _process.setup_performance();
|
51 | 57 | _process.setup_cpuUsage();
|
52 | 58 | _process.setupMemoryUsage();
|
53 |
| - _process.setupConfig(NativeModule._source); |
54 |
| - NativeModule.require('internal/process/warning').setup(); |
55 |
| - NativeModule.require('internal/process/next_tick').setup(); |
56 |
| - NativeModule.require('internal/process/stdio').setup(); |
57 |
| - if (browserGlobals) { |
58 |
| - // Instantiate eagerly in case the first call is under stack overflow |
59 |
| - // conditions where instantiation doesn't work. |
60 |
| - const console = global.console; |
61 |
| - console.assert; |
62 |
| - console.clear; |
63 |
| - console.count; |
64 |
| - console.countReset; |
65 |
| - console.dir; |
66 |
| - console.error; |
67 |
| - console.log; |
68 |
| - console.time; |
69 |
| - console.timeEnd; |
70 |
| - console.trace; |
71 |
| - console.warn; |
72 |
| - } |
73 | 59 | _process.setupKillAndExit();
|
74 | 60 | _process.setupSignalHandlers();
|
75 | 61 | if (global.__coverage__)
|
|
319 | 305 |
|
320 | 306 | function setupGlobalConsole() {
|
321 | 307 | const originalConsole = global.console;
|
322 |
| - let console; |
| 308 | + const Module = NativeModule.require('module'); |
| 309 | + // Setup Node.js global.console |
| 310 | + const wrappedConsole = NativeModule.require('console'); |
323 | 311 | Object.defineProperty(global, 'console', {
|
324 | 312 | configurable: true,
|
325 | 313 | enumerable: true,
|
326 |
| - get: function() { |
327 |
| - if (!console) { |
328 |
| - console = (originalConsole === undefined) ? |
329 |
| - NativeModule.require('console') : |
330 |
| - installInspectorConsole(originalConsole); |
331 |
| - } |
332 |
| - return console; |
| 314 | + get() { |
| 315 | + return wrappedConsole; |
333 | 316 | }
|
334 | 317 | });
|
335 |
| - setupInspectorCommandLineAPI(); |
| 318 | + setupInspector(originalConsole, wrappedConsole, Module); |
336 | 319 | }
|
337 | 320 |
|
338 |
| - function installInspectorConsole(globalConsole) { |
339 |
| - const wrappedConsole = NativeModule.require('console'); |
340 |
| - const inspector = process.binding('inspector'); |
341 |
| - if (!inspector.consoleCall) { |
342 |
| - return wrappedConsole; |
| 321 | + function setupInspector(originalConsole, wrappedConsole, Module) { |
| 322 | + const { addCommandLineAPI, consoleCall } = process.binding('inspector'); |
| 323 | + if (!consoleCall) { |
| 324 | + return; |
343 | 325 | }
|
| 326 | + // Setup inspector command line API |
| 327 | + const { makeRequireFunction } = NativeModule.require('internal/module'); |
| 328 | + const path = NativeModule.require('path'); |
| 329 | + const cwd = tryGetCwd(path); |
| 330 | + |
| 331 | + const consoleAPIModule = new Module('<inspector console>'); |
| 332 | + consoleAPIModule.paths = |
| 333 | + Module._nodeModulePaths(cwd).concat(Module.globalPaths); |
| 334 | + addCommandLineAPI('require', makeRequireFunction(consoleAPIModule)); |
344 | 335 | const config = {};
|
345 | 336 | for (const key of Object.keys(wrappedConsole)) {
|
346 |
| - if (!globalConsole.hasOwnProperty(key)) |
| 337 | + if (!originalConsole.hasOwnProperty(key)) |
347 | 338 | continue;
|
348 | 339 | // If global console has the same method as inspector console,
|
349 | 340 | // then wrap these two methods into one. Native wrapper will preserve
|
350 | 341 | // the original stack.
|
351 |
| - wrappedConsole[key] = inspector.consoleCall.bind(wrappedConsole, |
352 |
| - globalConsole[key], |
353 |
| - wrappedConsole[key], |
354 |
| - config); |
| 342 | + wrappedConsole[key] = consoleCall.bind(wrappedConsole, |
| 343 | + originalConsole[key], |
| 344 | + wrappedConsole[key], |
| 345 | + config); |
355 | 346 | }
|
356 |
| - for (const key of Object.keys(globalConsole)) { |
| 347 | + for (const key of Object.keys(originalConsole)) { |
357 | 348 | if (wrappedConsole.hasOwnProperty(key))
|
358 | 349 | continue;
|
359 |
| - wrappedConsole[key] = globalConsole[key]; |
| 350 | + wrappedConsole[key] = originalConsole[key]; |
360 | 351 | }
|
361 |
| - return wrappedConsole; |
362 |
| - } |
363 |
| - |
364 |
| - function setupInspectorCommandLineAPI() { |
365 |
| - const { addCommandLineAPI } = process.binding('inspector'); |
366 |
| - if (!addCommandLineAPI) return; |
367 |
| - |
368 |
| - const Module = NativeModule.require('module'); |
369 |
| - const { makeRequireFunction } = NativeModule.require('internal/module'); |
370 |
| - const path = NativeModule.require('path'); |
371 |
| - const cwd = tryGetCwd(path); |
372 |
| - |
373 |
| - const consoleAPIModule = new Module('<inspector console>'); |
374 |
| - consoleAPIModule.paths = |
375 |
| - Module._nodeModulePaths(cwd).concat(Module.globalPaths); |
376 |
| - |
377 |
| - addCommandLineAPI('require', makeRequireFunction(consoleAPIModule)); |
378 | 352 | }
|
379 | 353 |
|
380 | 354 | function setupProcessFatal() {
|
|
0 commit comments