diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2019-04-06 05:56:00 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2019-04-16 04:24:26 +0800 |
commit | a38e9c438ae872da37999c39d974facd4d524ea2 (patch) | |
tree | afd23a9511e2e306760b71f1dabfdded92c8a25b | |
parent | 7938238b31f69d1a8bfa8069387cc2374435996c (diff) | |
download | android-node-v8-a38e9c438ae872da37999c39d974facd4d524ea2.tar.gz android-node-v8-a38e9c438ae872da37999c39d974facd4d524ea2.tar.bz2 android-node-v8-a38e9c438ae872da37999c39d974facd4d524ea2.zip |
lib: require globals instead of using the global proxy
In addition, use process.stderr instead of console.error when
there is no need to swallow the error.
PR-URL: https://github.com/nodejs/node/pull/27112
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
-rw-r--r-- | lib/.eslintrc.yaml | 10 | ||||
-rw-r--r-- | lib/_http_common.js | 1 | ||||
-rw-r--r-- | lib/_tls_wrap.js | 1 | ||||
-rw-r--r-- | lib/child_process.js | 1 | ||||
-rw-r--r-- | lib/internal/freeze_intrinsics.js | 17 | ||||
-rw-r--r-- | lib/internal/http2/core.js | 1 | ||||
-rw-r--r-- | lib/internal/js_stream_socket.js | 1 | ||||
-rw-r--r-- | lib/internal/main/repl.js | 5 | ||||
-rw-r--r-- | lib/internal/process/execution.js | 8 | ||||
-rw-r--r-- | lib/internal/process/warning.js | 10 | ||||
-rw-r--r-- | lib/internal/repl/history.js | 1 | ||||
-rw-r--r-- | lib/internal/stream_base_commons.js | 1 | ||||
-rw-r--r-- | lib/internal/util/debuglog.js | 2 | ||||
-rw-r--r-- | lib/net.js | 1 | ||||
-rw-r--r-- | lib/perf_hooks.js | 1 | ||||
-rw-r--r-- | lib/readline.js | 1 | ||||
-rw-r--r-- | lib/util.js | 4 |
17 files changed, 42 insertions, 24 deletions
diff --git a/lib/.eslintrc.yaml b/lib/.eslintrc.yaml index ef3236b362..824bd32980 100644 --- a/lib/.eslintrc.yaml +++ b/lib/.eslintrc.yaml @@ -58,13 +58,3 @@ globals: module: false internalBinding: false primordials: false - # Globals - # TODO(joyeecheung): if possible, get these in native modules - # through `require` instead of grabbing them from the global proxy. - clearTimeout: false - setTimeout: false - clearInterval: false - setInterval: false - setImmediate: false - clearImmediate: false - console: false diff --git a/lib/_http_common.js b/lib/_http_common.js index 560d4f7b71..7772ec6931 100644 --- a/lib/_http_common.js +++ b/lib/_http_common.js @@ -22,6 +22,7 @@ 'use strict'; const { Math } = primordials; +const { setImmediate } = require('timers'); const { getOptionValue } = require('internal/options'); diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index 51cd5ae32b..0b844e6a82 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -30,6 +30,7 @@ const { assertCrypto(); +const { setImmediate } = require('timers'); const assert = require('internal/assert'); const crypto = require('crypto'); const net = require('net'); diff --git a/lib/child_process.js b/lib/child_process.js index d16a259122..f60950486d 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -40,6 +40,7 @@ const { ERR_INVALID_OPT_VALUE, ERR_OUT_OF_RANGE } = require('internal/errors').codes; +const { clearTimeout, setTimeout } = require('timers'); const { validateString, isInt32 } = require('internal/validators'); const child_process = require('internal/child_process'); const { diff --git a/lib/internal/freeze_intrinsics.js b/lib/internal/freeze_intrinsics.js index ef32a8dc35..753fb00acb 100644 --- a/lib/internal/freeze_intrinsics.js +++ b/lib/internal/freeze_intrinsics.js @@ -19,11 +19,20 @@ // https://github.com/google/caja/blob/master/src/com/google/caja/ses/repairES5.js // https://github.com/tc39/proposal-frozen-realms/blob/91ac390e3451da92b5c27e354b39e52b7636a437/shim/src/deep-freeze.js -/* global WebAssembly, SharedArrayBuffer, console */ +/* global WebAssembly, SharedArrayBuffer */ /* eslint-disable no-restricted-globals */ 'use strict'; module.exports = function() { + const { + clearImmediate, + clearInterval, + clearTimeout, + setImmediate, + setInterval, + setTimeout + } = require('timers'); + const console = require('internal/console/global'); const intrinsics = [ // Anonymous Intrinsics @@ -124,16 +133,12 @@ module.exports = function() { clearImmediate, clearInterval, clearTimeout, - decodeURI, - decodeURIComponent, - encodeURI, - encodeURIComponent, setImmediate, setInterval, setTimeout, + console, // Other APIs - console, BigInt, Atomics, WebAssembly, diff --git a/lib/internal/http2/core.js b/lib/internal/http2/core.js index ca6e23e061..58193b41cd 100644 --- a/lib/internal/http2/core.js +++ b/lib/internal/http2/core.js @@ -20,6 +20,7 @@ const net = require('net'); const { Duplex } = require('stream'); const tls = require('tls'); const { URL } = require('url'); +const { setImmediate } = require('timers'); const { kIncomingMessage } = require('_http_common'); const { kServerResponse } = require('_http_server'); diff --git a/lib/internal/js_stream_socket.js b/lib/internal/js_stream_socket.js index abfea27835..7302c7a128 100644 --- a/lib/internal/js_stream_socket.js +++ b/lib/internal/js_stream_socket.js @@ -1,5 +1,6 @@ 'use strict'; +const { setImmediate } = require('timers'); const assert = require('internal/assert'); const { Socket } = require('net'); const { JSStream } = internalBinding('js_stream'); diff --git a/lib/internal/main/repl.js b/lib/internal/main/repl.js index c2bf54f8bb..6314453cd1 100644 --- a/lib/internal/main/repl.js +++ b/lib/internal/main/repl.js @@ -15,7 +15,10 @@ prepareMainThreadExecution(); // --entry-type flag not supported in REPL if (require('internal/options').getOptionValue('--entry-type')) { - console.error('Cannot specify --entry-type for REPL'); + // If we can't write to stderr, we'd like to make this a noop, + // so use console.error. + const { error } = require('internal/console/global'); + error('Cannot specify --entry-type for REPL'); process.exit(1); } diff --git a/lib/internal/process/execution.js b/lib/internal/process/execution.js index 7b651ba5d1..86f3ee5b5a 100644 --- a/lib/internal/process/execution.js +++ b/lib/internal/process/execution.js @@ -36,17 +36,18 @@ function tryGetCwd() { } function evalModule(source) { + const { log, error } = require('internal/console/global'); const { decorateErrorStack } = require('internal/util'); const asyncESM = require('internal/process/esm_loader'); asyncESM.loaderPromise.then(async (loader) => { const { result } = await loader.eval(source); if (require('internal/options').getOptionValue('--print')) { - console.log(result); + log(result); } }) .catch((e) => { decorateErrorStack(e); - console.error(e); + error(e); process.exit(1); }); // Handle any nextTicks added in the first tick of the program. @@ -79,7 +80,8 @@ function evalScript(name, body, breakFirstLine) { });\n`; const result = module._compile(script, `${name}-wrapper`); if (require('internal/options').getOptionValue('--print')) { - console.log(result); + const { log } = require('internal/console/global'); + log(result); } // Handle any nextTicks added in the first tick of the program. process._tickCallback(); diff --git a/lib/internal/process/warning.js b/lib/internal/process/warning.js index 71a2c4fa3a..3ad3d4b9fb 100644 --- a/lib/internal/process/warning.js +++ b/lib/internal/process/warning.js @@ -17,10 +17,14 @@ function lazyOption() { return warningFile; } +// If we can't write to stderr, we'd like to make this a noop, +// so use console.error. +let error; function writeOut(message) { - if (console && typeof console.error === 'function') - return console.error(message); - process._rawDebug(message); + if (!error) { + error = require('internal/console/global').error; + } + error(message); } function writeToFile(message) { diff --git a/lib/internal/repl/history.js b/lib/internal/repl/history.js index 9f41b18b67..dd3ea85095 100644 --- a/lib/internal/repl/history.js +++ b/lib/internal/repl/history.js @@ -5,6 +5,7 @@ const path = require('path'); const fs = require('fs'); const os = require('os'); const debug = require('internal/util/debuglog').debuglog('repl'); +const { clearTimeout, setTimeout } = require('timers'); // XXX(chrisdickinson): The 15ms debounce value is somewhat arbitrary. // The debounce is to guard against code pasted into the REPL. diff --git a/lib/internal/stream_base_commons.js b/lib/internal/stream_base_commons.js index 0d9d449141..50eac42772 100644 --- a/lib/internal/stream_base_commons.js +++ b/lib/internal/stream_base_commons.js @@ -23,6 +23,7 @@ const { setUnrefTimeout, getTimerDuration } = require('internal/timers'); +const { clearTimeout } = require('timers'); const kMaybeDestroy = Symbol('kMaybeDestroy'); const kUpdateTimer = Symbol('kUpdateTimer'); diff --git a/lib/internal/util/debuglog.js b/lib/internal/util/debuglog.js index 769328ac9d..e92f3ad2bd 100644 --- a/lib/internal/util/debuglog.js +++ b/lib/internal/util/debuglog.js @@ -39,7 +39,7 @@ function debuglog(set) { emitWarningIfNeeded(set); debugs[set] = function debug(...args) { const msg = format(...args); - console.error('%s %d: %s', set, pid, msg); + process.stderr.write(format('%s %d: %s\n', set, pid, msg)); }; } else { debugs[set] = function debug() {}; diff --git a/lib/net.js b/lib/net.js index ffcf9290b3..9842338f18 100644 --- a/lib/net.js +++ b/lib/net.js @@ -97,6 +97,7 @@ const { let cluster; let dns; +const { clearTimeout } = require('timers'); const { kTimeout } = require('internal/timers'); const DEFAULT_IPV4_ADDR = '0.0.0.0'; diff --git a/lib/perf_hooks.js b/lib/perf_hooks.js index e090ef47c1..83e43af6cf 100644 --- a/lib/perf_hooks.js +++ b/lib/perf_hooks.js @@ -47,6 +47,7 @@ const { ERR_INVALID_PERFORMANCE_MARK } = require('internal/errors').codes; +const { setImmediate } = require('timers'); const kHandle = Symbol('handle'); const kMap = Symbol('map'); const kCallback = Symbol('callback'); diff --git a/lib/readline.js b/lib/readline.js index 250be8ca76..c8d0a8040a 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -44,6 +44,7 @@ const { stripVTControlCharacters } = require('internal/readline'); +const { clearTimeout, setTimeout } = require('timers'); const { kEscape, kClearToBeginning, diff --git a/lib/util.js b/lib/util.js index 74269f83b8..c54b1dba30 100644 --- a/lib/util.js +++ b/lib/util.js @@ -113,8 +113,12 @@ function timestamp() { return [d.getDate(), months[d.getMonth()], time].join(' '); } +let console; // Log is just a thin wrapper to console.log that prepends a timestamp function log(...args) { + if (!console) { + console = require('internal/console/global'); + } console.log('%s - %s', timestamp(), format(...args)); } |