Skip to content

Commit

Permalink
lib: expose all type checks from the internal types module
Browse files Browse the repository at this point in the history
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: nodejs#25149
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
  • Loading branch information
BridgeAR committed Jan 10, 2019
1 parent 0c67a51 commit e97acf7
Show file tree
Hide file tree
Showing 8 changed files with 19 additions and 25 deletions.
2 changes: 1 addition & 1 deletion lib/buffer.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ const {
kMaxLength,
kStringMaxLength
} = internalBinding('buffer');
const { isAnyArrayBuffer } = internalBinding('types');
const {
customInspectSymbol,
isInsideNodeModules,
normalizeEncoding,
kIsEncodingSymbol
} = require('internal/util');
const {
isAnyArrayBuffer,
isArrayBufferView,
isUint8Array
} = require('internal/util/types');
Expand Down
2 changes: 1 addition & 1 deletion lib/internal/bootstrap/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@
// 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',
Expand Down
7 changes: 3 additions & 4 deletions lib/internal/encoding.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion lib/internal/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const {
} = internalBinding('util');
const {
isNativeError
} = internalBinding('types');
} = require('internal/util/types');

const noCrypto = !process.versions.openssl;

Expand Down
4 changes: 2 additions & 2 deletions lib/internal/util/comparisons.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

const { compare } = internalBinding('buffer');
const { isArrayBufferView } = require('internal/util/types');
const {
isAnyArrayBuffer,
isArrayBufferView,
isDate,
isMap,
isRegExp,
Expand All @@ -15,7 +15,7 @@ const {
isBooleanObject,
isBigIntObject,
isSymbolObject
} = internalBinding('types');
} = require('internal/util/types');
const {
getOwnNonIndexProperties,
propertyFilter: {
Expand Down
14 changes: 7 additions & 7 deletions lib/internal/util/inspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ const {
isStackOverflowError
} = require('internal/errors');

const types = internalBinding('types');
Object.assign(types, require('internal/util/types'));
const {
isAnyArrayBuffer,
isArrayBuffer,
Expand All @@ -38,6 +36,8 @@ const {
isExternal,
isMap,
isMapIterator,
isModuleNamespaceObject,
isNativeError,
isPromise,
isSet,
isSetIterator,
Expand All @@ -61,7 +61,7 @@ const {
isFloat64Array,
isBigInt64Array,
isBigUint64Array
} = types;
} = require('internal/util/types');

const ReflectApply = Reflect.apply;

Expand Down Expand Up @@ -386,9 +386,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;
Expand Down Expand Up @@ -700,7 +700,7 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
} 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;
Expand Down Expand Up @@ -887,7 +887,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
Expand Down
1 change: 1 addition & 0 deletions lib/internal/util/types.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ function isBigUint64Array(value) {
}

module.exports = {
...internalBinding('types'),
isArrayBufferView,
isTypedArray,
isUint8Array,
Expand Down
12 changes: 3 additions & 9 deletions lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -433,9 +427,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;
},
Expand Down

0 comments on commit e97acf7

Please sign in to comment.