summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2019-04-06 05:56:00 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2019-04-16 04:24:26 +0800
commita38e9c438ae872da37999c39d974facd4d524ea2 (patch)
treeafd23a9511e2e306760b71f1dabfdded92c8a25b
parent7938238b31f69d1a8bfa8069387cc2374435996c (diff)
downloadandroid-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.yaml10
-rw-r--r--lib/_http_common.js1
-rw-r--r--lib/_tls_wrap.js1
-rw-r--r--lib/child_process.js1
-rw-r--r--lib/internal/freeze_intrinsics.js17
-rw-r--r--lib/internal/http2/core.js1
-rw-r--r--lib/internal/js_stream_socket.js1
-rw-r--r--lib/internal/main/repl.js5
-rw-r--r--lib/internal/process/execution.js8
-rw-r--r--lib/internal/process/warning.js10
-rw-r--r--lib/internal/repl/history.js1
-rw-r--r--lib/internal/stream_base_commons.js1
-rw-r--r--lib/internal/util/debuglog.js2
-rw-r--r--lib/net.js1
-rw-r--r--lib/perf_hooks.js1
-rw-r--r--lib/readline.js1
-rw-r--r--lib/util.js4
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));
}