diff options
author | James M Snell <jasnell@gmail.com> | 2017-03-11 12:32:25 -0800 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2017-04-19 09:15:57 -0700 |
commit | d2d32ea5a22a30f428a6e08bcb707c3538558933 (patch) | |
tree | 3e92010fd8c30259ea3fa3af6aac6ea90b6c15b3 /lib/buffer.js | |
parent | a16b570f8c1283db81b85ff78ce73608a4265f61 (diff) | |
download | android-node-v8-d2d32ea5a22a30f428a6e08bcb707c3538558933.tar.gz android-node-v8-d2d32ea5a22a30f428a6e08bcb707c3538558933.tar.bz2 android-node-v8-d2d32ea5a22a30f428a6e08bcb707c3538558933.zip |
buffer: add pending deprecation warning
The pending deprecation warning is off by default.
Launch the node process with --pending-deprecation
or NODE_PENDING_DEPRECATION=1 env var set.
PR-URL: https://github.com/nodejs/node/pull/11968
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/buffer.js')
-rw-r--r-- | lib/buffer.js | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/lib/buffer.js b/lib/buffer.js index 5450861d04..e5d1574034 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -22,18 +22,20 @@ 'use strict'; const binding = process.binding('buffer'); +const config = process.binding('config'); const { compare: compare_, compareOffset } = binding; const { isAnyArrayBuffer, isUint8Array } = process.binding('util'); const bindingObj = {}; const internalUtil = require('internal/util'); +const pendingDeprecation = !!config.pendingDeprecation; class FastBuffer extends Uint8Array { constructor(arg1, arg2, arg3) { super(arg1, arg2, arg3); } } - FastBuffer.prototype.constructor = Buffer; + Buffer.prototype = FastBuffer.prototype; exports.Buffer = Buffer; @@ -83,6 +85,28 @@ function alignPool() { } } +var bufferWarn = true; +const bufferWarning = 'The Buffer() and new Buffer() constructors are not ' + + 'recommended for use due to security and usability ' + + 'concerns. Please use the new Buffer.alloc(), ' + + 'Buffer.allocUnsafe(), or Buffer.from() construction ' + + 'methods instead.'; + +function showFlaggedDeprecation() { + if (bufferWarn) { + // This is a *pending* deprecation warning. It is not emitted by + // default unless the --pending-deprecation command-line flag is + // used or the NODE_PENDING_DEPRECATION=1 envvar is set. + process.emitWarning(bufferWarning, 'DeprecationWarning', 'DEP0005'); + bufferWarn = false; + } +} + +const doFlaggedDeprecation = + pendingDeprecation ? + showFlaggedDeprecation : + function() {}; + /** * The Buffer() construtor is deprecated in documentation and should not be * used moving forward. Rather, developers should use one of the three new @@ -94,6 +118,7 @@ function alignPool() { * Deprecation Code: DEP0005 **/ function Buffer(arg, encodingOrOffset, length) { + doFlaggedDeprecation(); // Common case. if (typeof arg === 'number') { if (typeof encodingOrOffset === 'string') { @@ -106,6 +131,12 @@ function Buffer(arg, encodingOrOffset, length) { return Buffer.from(arg, encodingOrOffset, length); } +Object.defineProperty(Buffer, Symbol.species, { + enumerable: false, + configurable: true, + get() { return FastBuffer; } +}); + /** * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError * if value is a number. |