summaryrefslogtreecommitdiff
path: root/std/node/_util.ts
diff options
context:
space:
mode:
authorGuy Bedford <guybedford@gmail.com>2020-11-09 06:25:13 -0800
committerGitHub <noreply@github.com>2020-11-09 09:25:13 -0500
commit8b7f5531ee1ccde897e87890e9aabc554fedb9dd (patch)
tree117a85b98d1488c290d8acc392cfb99b1b21f8e0 /std/node/_util.ts
parent293cae5e1ff2a5768e2f3a73cc18f99acc3fbfbd (diff)
feat(std/node): consistent Node.js builtin shapes (#8274)
Diffstat (limited to 'std/node/_util.ts')
-rw-r--r--std/node/_util.ts134
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;