Skip to content

Commit

Permalink
extend std/util/node types
Browse files Browse the repository at this point in the history
  • Loading branch information
pevers committed Jun 7, 2020
1 parent 09ee9a8 commit b50426f
Show file tree
Hide file tree
Showing 2 changed files with 668 additions and 16 deletions.
201 changes: 201 additions & 0 deletions std/node/_util/_util_types.ts
Expand Up @@ -26,6 +26,207 @@ const _toString = Object.prototype.toString;
const _isObjectLike = (value: unknown): boolean =>
value !== null && typeof value === "object";

const _isFunctionLike = (value: unknown): boolean =>
value !== null && typeof value === "function";

export function isAnyArrayBuffer(value: unknown): boolean {
return (
_isObjectLike(value) &&
(_toString.call(value) === "[object ArrayBuffer]" ||
_toString.call(value) === "[object SharedArrayBuffer]")
);
}

export function isArrayBufferView(value: unknown): boolean {
return ArrayBuffer.isView(value);
}

export function isArgumentsObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Arguments]";
}

export function isArrayBuffer(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object ArrayBuffer]"
);
}

export function isAsyncFunction(value: unknown): boolean {
return (
_isFunctionLike(value) && _toString.call(value) === "[object AsyncFunction]"
);
}

export function isBigInt64Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object BigInt64Array]"
);
}

export function isBigUint64Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object BigUint64Array]"
);
}

export function isBooleanObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Boolean]";
}

export function isBoxedPrimitive(value: unknown): boolean {
return (
isBooleanObject(value) ||
isStringObject(value) ||
isNumberObject(value) ||
isSymbolObject(value) ||
isBigIntObject(value)
);
}

export function isDataView(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object DataView]";
}

export function isDate(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Date]";
}

// isExternal: Not implemented

export function isFloat32Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Float32Array]"
);
}

export function isFloat64Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Float64Array]"
);
}

export function isGeneratorFunction(value: unknown): boolean {
return (
_isFunctionLike(value) &&
_toString.call(value) === "[object GeneratorFunction]"
);
}

export function isGeneratorObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Generator]";
}

export function isInt8Array(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Int8Array]";
}

export function isInt16Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Int16Array]"
);
}

export function isInt32Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Int32Array]"
);
}

export function isMap(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Map]";
}

export function isMapIterator(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Map Iterator]"
);
}

export function isModuleNamespaceObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Module]";
}

export function isNativeError(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Error]";
}

export function isNumberObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Number]";
}

export function isBigIntObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object BigInt]";
}

export function isPromise(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Promise]";
}

export function isRegExp(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object RegExp]";
}

export function isSet(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Set]";
}

export function isSetIterator(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Set Iterator]"
);
}

export function isSharedArrayBuffer(value: unknown): boolean {
return (
_isObjectLike(value) &&
_toString.call(value) === "[object SharedArrayBuffer]"
);
}

export function isStringObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object String]";
}

export function isSymbolObject(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object Symbol]";
}

// Adapted from Lodash
export function isTypedArray(value: unknown): boolean {
/** Used to match `toStringTag` values of typed arrays. */
const reTypedTag = /^\[object (?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array\]$/;
return _isObjectLike(value) && reTypedTag.test(_toString.call(value));
}

export function isUint8Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Uint8Array]"
);
}

export function isUint8ClampedArray(value: unknown): boolean {
return (
_isObjectLike(value) &&
_toString.call(value) === "[object Uint8ClampedArray]"
);
}

export function isUint16Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Uint16Array]"
);
}

export function isUint32Array(value: unknown): boolean {
return (
_isObjectLike(value) && _toString.call(value) === "[object Uint32Array]"
);
}

export function isWeakMap(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object WeakMap]";
}

export function isWeakSet(value: unknown): boolean {
return _isObjectLike(value) && _toString.call(value) === "[object WeakSet]";
}

0 comments on commit b50426f

Please sign in to comment.