From 5ac30c99a9cc92f563655709d61e47729d441f62 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Thu, 20 Dec 2018 17:35:40 +0100 Subject: lib: expose all type checks from the internal types module Combine all type checks on the internal types module and do not use the types binding anywhere else anymore. This makes sure all of those checks exist when required. PR-URL: https://github.com/nodejs/node/pull/25149 Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Denys Otrishko --- lib/buffer.js | 2 +- lib/internal/bootstrap/node.js | 2 +- lib/internal/encoding.js | 7 +++---- lib/internal/util.js | 2 +- lib/internal/util/comparisons.js | 4 ++-- lib/internal/util/inspect.js | 14 +++++++------- lib/internal/util/types.js | 1 + lib/util.js | 12 +++--------- 8 files changed, 19 insertions(+), 25 deletions(-) (limited to 'lib') diff --git a/lib/buffer.js b/lib/buffer.js index 0521375cf5..01d2764c6d 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -37,7 +37,6 @@ const { kMaxLength, kStringMaxLength } = internalBinding('buffer'); -const { isAnyArrayBuffer } = internalBinding('types'); const { getOwnNonIndexProperties, propertyFilter: { @@ -52,6 +51,7 @@ const { kIsEncodingSymbol } = require('internal/util'); const { + isAnyArrayBuffer, isArrayBufferView, isUint8Array } = require('internal/util/types'); diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index 870a54746b..5bf2dc523f 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -228,7 +228,7 @@ function startup() { // TODO(addaleax): Turn into a full runtime deprecation. const pendingDeprecation = getOptionValue('--pending-deprecation'); const utilBinding = internalBinding('util'); - const types = internalBinding('types'); + const types = NativeModule.require('internal/util/types'); for (const name of [ 'isArrayBuffer', 'isArrayBufferView', 'isAsyncFunction', 'isDataView', 'isDate', 'isExternal', 'isMap', 'isMapIterator', diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index ad056fd0bd..0084c19b90 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -21,11 +21,10 @@ const { customInspectSymbol: inspect } = require('internal/util'); -const { isArrayBufferView } = require('internal/util/types'); - const { - isArrayBuffer -} = internalBinding('types'); + isArrayBuffer, + isArrayBufferView +} = require('internal/util/types'); const { encodeUtf8String diff --git a/lib/internal/util.js b/lib/internal/util.js index 7af06351c9..35239a7655 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -14,7 +14,7 @@ const { } = internalBinding('util'); const { isNativeError -} = internalBinding('types'); +} = require('internal/util/types'); const { errmap } = internalBinding('uv'); diff --git a/lib/internal/util/comparisons.js b/lib/internal/util/comparisons.js index 1d959f843b..d072608906 100644 --- a/lib/internal/util/comparisons.js +++ b/lib/internal/util/comparisons.js @@ -1,9 +1,9 @@ 'use strict'; const { compare } = internalBinding('buffer'); -const { isArrayBufferView } = require('internal/util/types'); const { isAnyArrayBuffer, + isArrayBufferView, isDate, isMap, isRegExp, @@ -15,7 +15,7 @@ const { isBooleanObject, isBigIntObject, isSymbolObject -} = internalBinding('types'); +} = require('internal/util/types'); const { getOwnNonIndexProperties, propertyFilter: { diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index a6f49c5c05..19eb165b78 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -27,8 +27,6 @@ const { isStackOverflowError } = require('internal/errors'); -const types = internalBinding('types'); -Object.assign(types, require('internal/util/types')); const { isAnyArrayBuffer, isArrayBuffer, @@ -38,6 +36,8 @@ const { isExternal, isMap, isMapIterator, + isModuleNamespaceObject, + isNativeError, isPromise, isSet, isSetIterator, @@ -61,7 +61,7 @@ const { isFloat64Array, isBigInt64Array, isBigUint64Array -} = types; +} = require('internal/util/types'); const ReflectApply = Reflect.apply; @@ -385,9 +385,9 @@ function getKeys(value, showHidden) { try { keys = Object.keys(value); } catch (err) { - if (types.isNativeError(err) && + if (isNativeError(err) && err.name === 'ReferenceError' && - types.isModuleNamespaceObject(value)) { + isModuleNamespaceObject(value)) { keys = Object.getOwnPropertyNames(value); } else { throw err; @@ -693,7 +693,7 @@ function formatRaw(ctx, value, recurseTimes) { } else if (isWeakMap(value)) { braces[0] = `${getPrefix(constructor, tag, 'WeakMap')}{`; formatter = ctx.showHidden ? formatWeakMap : formatWeakCollection; - } else if (types.isModuleNamespaceObject(value)) { + } else if (isModuleNamespaceObject(value)) { braces[0] = `[${tag}] {`; formatter = formatNamespaceObject; skip = true; @@ -880,7 +880,7 @@ function formatNamespaceObject(ctx, value, recurseTimes, keys) { output[i] = formatProperty(ctx, value, recurseTimes, keys[i], kObjectType); } catch (err) { - if (!(types.isNativeError(err) && err.name === 'ReferenceError')) { + if (!(isNativeError(err) && err.name === 'ReferenceError')) { throw err; } // Use the existing functionality. This makes sure the indentation and diff --git a/lib/internal/util/types.js b/lib/internal/util/types.js index 182625a971..865818c661 100644 --- a/lib/internal/util/types.js +++ b/lib/internal/util/types.js @@ -70,6 +70,7 @@ function isBigUint64Array(value) { } module.exports = { + ...internalBinding('types'), isArrayBufferView, isTypedArray, isUint8Array, diff --git a/lib/util.js b/lib/util.js index f48d93d124..1eaf958c39 100644 --- a/lib/util.js +++ b/lib/util.js @@ -31,13 +31,7 @@ const { const { validateNumber } = require('internal/validators'); const { TextDecoder, TextEncoder } = require('internal/encoding'); const { isBuffer } = require('buffer').Buffer; - -const types = internalBinding('types'); -Object.assign(types, require('internal/util/types')); -const { - isRegExp, - isDate, -} = types; +const types = require('internal/util/types'); const { deprecate, @@ -432,9 +426,9 @@ module.exports = exports = { isString, isSymbol, isUndefined, - isRegExp, + isRegExp: types.isRegExp, isObject, - isDate, + isDate: types.isDate, isError(e) { return objectToString(e) === '[object Error]' || e instanceof Error; }, -- cgit v1.2.3