diff options
author | Guy Bedford <guybedford@gmail.com> | 2020-11-09 06:25:13 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-09 09:25:13 -0500 |
commit | 8b7f5531ee1ccde897e87890e9aabc554fedb9dd (patch) | |
tree | 117a85b98d1488c290d8acc392cfb99b1b21f8e0 /std/node/_util.ts | |
parent | 293cae5e1ff2a5768e2f3a73cc18f99acc3fbfbd (diff) |
feat(std/node): consistent Node.js builtin shapes (#8274)
Diffstat (limited to 'std/node/_util.ts')
-rw-r--r-- | std/node/_util.ts | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/std/node/_util.ts b/std/node/_util.ts new file mode 100644 index 000000000..9cf996670 --- /dev/null +++ b/std/node/_util.ts @@ -0,0 +1,134 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +export { promisify } from "./_util/_util_promisify.ts"; +export { callbackify } from "./_util/_util_callbackify.ts"; +import { codes, errorMap } from "./_errors.ts"; +import * as types from "./_util/_util_types.ts"; +export { types }; + +const NumberIsSafeInteger = Number.isSafeInteger; +const { + ERR_OUT_OF_RANGE, + ERR_INVALID_ARG_TYPE, +} = codes; + +const DEFAULT_INSPECT_OPTIONS = { + showHidden: false, + depth: 2, + colors: false, + customInspect: true, + showProxy: false, + maxArrayLength: 100, + maxStringLength: Infinity, + breakLength: 80, + compact: 3, + sorted: false, + getters: false, +}; + +inspect.defaultOptions = DEFAULT_INSPECT_OPTIONS; +inspect.custom = Deno.customInspect; + +// TODO(schwarzkopfb): make it in-line with Node's implementation +// Ref: https://nodejs.org/dist/latest-v14.x/docs/api/util.html#util_util_inspect_object_options +// deno-lint-ignore no-explicit-any +export function inspect(object: unknown, ...opts: any): string { + opts = { ...DEFAULT_INSPECT_OPTIONS, ...opts }; + return Deno.inspect(object, { + depth: opts.depth, + iterableLimit: opts.maxArrayLength, + compact: !!opts.compact, + sorted: !!opts.sorted, + showProxy: !!opts.showProxy, + }); +} + +/** @deprecated - use `Array.isArray()` instead. */ +export function isArray(value: unknown): boolean { + return Array.isArray(value); +} + +/** @deprecated - use `typeof value === "boolean" || value instanceof Boolean` instead. */ +export function isBoolean(value: unknown): boolean { + return typeof value === "boolean" || value instanceof Boolean; +} + +/** @deprecated - use `value === null` instead. */ +export function isNull(value: unknown): boolean { + return value === null; +} + +/** @deprecated - use `value === null || value === undefined` instead. */ +export function isNullOrUndefined(value: unknown): boolean { + return value === null || value === undefined; +} + +/** @deprecated - use `typeof value === "number" || value instanceof Number` instead. */ +export function isNumber(value: unknown): boolean { + return typeof value === "number" || value instanceof Number; +} + +/** @deprecated - use `typeof value === "string" || value instanceof String` instead. */ +export function isString(value: unknown): boolean { + return typeof value === "string" || value instanceof String; +} + +/** @deprecated - use `typeof value === "symbol"` instead. */ +export function isSymbol(value: unknown): boolean { + return typeof value === "symbol"; +} + +/** @deprecated - use `value === undefined` instead. */ +export function isUndefined(value: unknown): boolean { + return value === undefined; +} + +/** @deprecated - use `value !== null && typeof value === "object"` instead. */ +export function isObject(value: unknown): boolean { + return value !== null && typeof value === "object"; +} + +/** @deprecated - use `e instanceof Error` instead. */ +export function isError(e: unknown): boolean { + return e instanceof Error; +} + +/** @deprecated - use `typeof value === "function"` instead. */ +export function isFunction(value: unknown): boolean { + return typeof value === "function"; +} + +/** @deprecated - use `value instanceof RegExp` instead. */ +export function isRegExp(value: unknown): boolean { + return value instanceof RegExp; +} + +/** @deprecated - use `value === null || (typeof value !== "object" && typeof value !== "function")` instead. */ +export function isPrimitive(value: unknown): boolean { + return ( + value === null || (typeof value !== "object" && typeof value !== "function") + ); +} + +/** + * Returns a system error name from an error code number. + * @param code error code number + */ +export function getSystemErrorName(code: number): string | undefined { + if (typeof code !== "number") { + throw new ERR_INVALID_ARG_TYPE("err", "number", code); + } + if (code >= 0 || !NumberIsSafeInteger(code)) { + throw new ERR_OUT_OF_RANGE("err", "a negative integer", code); + } + return errorMap.get(code)?.[0]; +} + +import { _TextDecoder, _TextEncoder } from "./_utils.ts"; + +/** The global TextDecoder */ +export type TextDecoder = import("./_utils.ts")._TextDecoder; +export const TextDecoder = _TextDecoder; + +/** The global TextEncoder */ +export type TextEncoder = import("./_utils.ts")._TextEncoder; +export const TextEncoder = _TextEncoder; |