{"version":3,"file":"randomBytes.cjs","sources":["../../src/instanceOfBuiltin.ts","../../src/isNil.ts","../../src/node/randomBytes.ts"],"sourcesContent":["// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#data_and_structure_types\n\n/**\n * @param {any}\n *\n * @returns {Array[string, string]} [Typeof instance, if it has mutable methods]\n */\nexport function instanceOfBuiltin(arg: any): [string, string] {\n\t// With Mutable Methods\n\tif (arg instanceof Date) {\n\t\treturn [\"Date\", \"HAS_MUTABLE_METHODS\"]\n\t} else if (arg instanceof Set) {\n\t\treturn [\"Set\", \"HAS_MUTABLE_METHODS\"]\n\t} else if (arg instanceof Map) {\n\t\treturn [\"Map\", \"HAS_MUTABLE_METHODS\"]\n\t} else if (arg instanceof WeakSet) {\n\t\treturn [\"WeakSet\", \"HAS_MUTABLE_METHODS\"]\n\t} else if (arg instanceof WeakMap) {\n\t\treturn [\"WeakMap\", \"HAS_MUTABLE_METHODS\"]\n\t}\n\n\t// Without MutableMethods\n\tif (arg === null) {\n\t\treturn [\"Null\", \"NO_MUTABLE_METHODS\"]\n\t} else if (typeof arg === \"function\") {\n\t\treturn [\"Function\", \"NO_MUTABLE_METHODS\"]\n\t} else if (arg instanceof RegExp) {\n\t\treturn [\"RegExp\", \"NO_MUTABLE_METHODS\"]\n\t}\n\n\treturn [\"\", \"\"]\n}\n","import { instanceOfBuiltin } from \"./instanceOfBuiltin\"\n\ntype ArgTypes = undefined | null | string | number | Array<any> | Record<any, any>\n\nexport function isNil(arg: ArgTypes): boolean {\n\tif (\n\t\targ === undefined ||\n\t\targ === null ||\n\t\t(arg.constructor === String && !!arg.trim()[0] === false) ||\n\t\t(arg.constructor === Number && isNaN(arg)) ||\n\t\t(Array.isArray(arg) && !!arg[0] === false) ||\n\t\t(arg.toString() === \"[object Object]\" && !!Object.keys(arg)[0] === false)\n\t) {\n\t\treturn true\n\t}\n\n\tif (arg.constructor === Boolean) {\n\t\tconsole.warn(\n\t\t\t\"Boolean args return their original value. This can lead to unexpected behavior. isNil checks for empty Strings, Objects, and Arrays, as well as NaN, null, and undefined.\",\n\t\t)\n\t\treturn arg\n\t}\n\n\tif (typeof arg === \"symbol\" || typeof arg === \"bigint\") {\n\t\tconsole.warn(`${typeof arg} type not supported`)\n\t\treturn true\n\t}\n\n\tif (!!instanceOfBuiltin(arg)[0] === true) {\n\t\tconsole.warn(`${instanceOfBuiltin(arg)[0]} type not supported`)\n\t\treturn true\n\t}\n\n\treturn false\n}\n","import crypto from \"crypto\"\nimport { promisify } from \"util\"\nimport { isNil } from \"../isNil\" // .ts\n\ntype BytesReturn = [string, Error | null]\n\n/**\n * randomBytes generates a string of random bytes of a specified length\n */\nexport async function randomBytes(length: number): Promise<BytesReturn> {\n\ttry {\n\t\tconst randomBytesPromise = promisify(crypto.randomBytes)\n\t\tconst bytePromise = await randomBytesPromise(length)\n\t\t// Hex doubles the amount of characters that are returned, so slice to return the length passed in.\n\t\t// This feels hacky and probably needs some more research.\n\t\tconst toHex = bytePromise.toString(\"hex\")\n\t\tconst bytes: string = toHex.slice(0, length)\n\t\tif (isNil(bytes)) {\n\t\t\treturn [\n\t\t\t\t\"\",\n\t\t\t\t{\n\t\t\t\t\tname: \"#60374242\",\n\t\t\t\t\tmessage: \"Failed to generate random bytes\",\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\t\treturn [bytes, null]\n\t} catch (err) {\n\t\t// @ts-ignore\n\t\treturn [\"\", err]\n\t}\n}\n"],"names":["promisify","crypto"],"mappings":"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"}