From 89e24dda05555499c69d30093afc97268afee2a0 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Fri, 15 Apr 2016 16:32:00 -0400 Subject: [PATCH] util: deprecate most of util.is*() --- lib/util.js | 39 ++++++++++++++++++++++++++------------- src/node_util.cc | 6 ++++++ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/lib/util.js b/lib/util.js index 42661608ddf7f5..91ab113a55d66d 100644 --- a/lib/util.js +++ b/lib/util.js @@ -715,42 +715,51 @@ function reduceToSingleString(output, base, braces) { // NOTE: These type checking functions intentionally don't use `instanceof` // because it is fragile and can be easily faked with `Object.create()`. -exports.isArray = Array.isArray; +exports.isArray = internalUtil.deprecate(Array.isArray, + 'util.isArray() is deprecated. Use Array.isArray instead.'); function isBoolean(arg) { return typeof arg === 'boolean'; } -exports.isBoolean = isBoolean; +exports.isBoolean = internalUtil.deprecate(isBoolean, + 'util.isBoolean() is deprecated. Use typeof arg === \'boolean\' instead.'); function isNull(arg) { return arg === null; } -exports.isNull = isNull; +exports.isNull = internalUtil.deprecate(isNull, + 'util.isNull() is deprecated. Use arg === null instead.'); function isNullOrUndefined(arg) { return arg === null || arg === undefined; } -exports.isNullOrUndefined = isNullOrUndefined; +exports.isNullOrUndefined = internalUtil.deprecate(isNullOrUndefined, + 'util.isNullOrUndefined() is deprecated. Use the following instead:\n' + + 'arg === null || arg === undefined'); function isNumber(arg) { return typeof arg === 'number'; } -exports.isNumber = isNumber; +exports.isNumber = internalUtil.deprecate(isNumber, + 'util.isNumber() is deprecated. Use typeof arg === \'number\' instead.'); function isString(arg) { return typeof arg === 'string'; } -exports.isString = isString; +exports.isString = internalUtil.deprecate(isString, + 'util.isString() is deprecated. Use typeof arg === \'string\' instead.'); function isSymbol(arg) { return typeof arg === 'symbol'; } -exports.isSymbol = isSymbol; +exports.isSymbol = internalUtil.deprecate(isSymbol, + 'util.isSymbol() is deprecated. Use typeof arg === \'symbol\' instead'); function isUndefined(arg) { return arg === undefined; } -exports.isUndefined = isUndefined; +exports.isUndefined = internalUtil.deprecate(isUndefined, + 'util.isUndefined() is deprecated. Use arg === undefined instead.'); function isRegExp(re) { return binding.isRegExp(re); @@ -760,7 +769,9 @@ exports.isRegExp = isRegExp; function isObject(arg) { return arg !== null && typeof arg === 'object'; } -exports.isObject = isObject; +exports.isObject = internalUtil.deprecate(isObject, + 'util.isObject() is deprecated. Use the following instead:\n' + + 'arg !== null && typeof arg === \'object\''); function isDate(d) { return binding.isDate(d); @@ -772,15 +783,17 @@ exports.isError = isError; function isFunction(arg) { return typeof arg === 'function'; } -exports.isFunction = isFunction; +exports.isFunction = internalUtil.deprecate(isFunction, + 'util.isFunction() is deprecated. ' + + 'Use typeof arg === \'function\' instead.'); function isPrimitive(arg) { - return arg === null || - typeof arg !== 'object' && typeof arg !== 'function'; + return binding.isPrimitive(arg); } exports.isPrimitive = isPrimitive; -exports.isBuffer = Buffer.isBuffer; +exports.isBuffer = internalUtil.deprecate(Buffer.isBuffer, + 'util.isBuffer() is deprecated. Use Buffer.isBuffer() instead.'); function pad(n) { diff --git a/src/node_util.cc b/src/node_util.cc index 1c5a2fa9a1f373..d21be385c2e205 100644 --- a/src/node_util.cc +++ b/src/node_util.cc @@ -38,6 +38,11 @@ using v8::Value; #undef V +static void IsPrimitive(const FunctionCallbackInfo& args) { + args.GetReturnValue().Set(!args[0]->IsObject() && !args[0]->IsExternal()); +} + + static void GetHiddenValue(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); @@ -84,6 +89,7 @@ void Initialize(Local target, env->SetMethod(target, "getHiddenValue", GetHiddenValue); env->SetMethod(target, "setHiddenValue", SetHiddenValue); + env->SetMethod(target, "isPrimitive", IsPrimitive); } } // namespace util