UNPKG

10.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"APIUtils.js","sourceRoot":"","sources":["APIUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {isBoolean, isNil, toString, castArray, toNumber, isString, padEnd} from \"lodash\";\nimport getArguments from \"function-arguments\";\nimport {APIConfig} from \"./APIConfig\";\nimport crypto from \"crypto\";\nimport slugify from \"slugify\";\nimport shortid from \"shortid\";\nimport {nanoid} from \"nanoid\";\nimport {encode, decode} from \"safe-base64\";\nimport isBuffer from \"lodash/isBuffer\";\n\nslugify.extend({\"/\": \":\"});\n\nexport type APIUtilsEncoding = BufferEncoding | \"urlsafe\";\n\nexport class APIUtils {\n\n static getRawTypeName(obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n }\n\n static generateShortID() {\n return shortid.generate();\n }\n\n static generateLongID(length?: number) {\n return nanoid(length);\n }\n\n static slugify(text: string) {\n return slugify(text);\n }\n\n static convertToType(value: any, convertToType: string): any {\n\n if (isNil(convertToType)) {\n return value;\n }\n\n let convertedValue;\n let rawValueType = APIUtils.getRawTypeName(value);\n\n // No conversion needed\n if (rawValueType === convertToType) {\n return value;\n }\n\n // Objects and Arrays can only be converted to JSON strings\n if (rawValueType === \"Object\" || rawValueType === \"Array\") {\n if (convertToType === \"String\") {\n try {\n return JSON.stringify(value);\n } catch (e) {\n }\n }\n\n return undefined;\n }\n\n switch (convertToType) {\n case \"String\": {\n convertedValue = toString(value);\n break;\n }\n case \"Boolean\": {\n convertedValue = APIUtils.toBoolean(value);\n break;\n }\n case \"Number\": {\n convertedValue = toNumber(value);\n break;\n }\n case \"Array\": {\n convertedValue = castArray(value);\n break;\n }\n case \"Object\": {\n try {\n convertedValue = JSON.parse(value);\n } catch (e) {\n convertedValue = value;\n }\n }\n }\n\n return convertedValue;\n }\n\n static toBoolean(input: any) {\n if (isBoolean(input)) {\n return input;\n }\n\n return (/(1|true|yes)/i).test(input);\n }\n\n static coalesce(...inputArgs: any[]) {\n\n for (let inputArg of inputArgs) {\n\n // Consider an empty string as a null value\n if (isNil(inputArg) || (isString(inputArg) && inputArg === \"\")) {\n continue;\n }\n\n return inputArg;\n }\n\n return null;\n }\n\n static getFunctionParamNames(fn: Function): string[] {\n return getArguments(fn);\n }\n\n private static _IV_LENGTH = 16;\n private static _CRYPTO_ALG = 'aes-256-cbc';\n private static _HASH_ALG = 'sha256';\n\n static bufferToString(buffer: Buffer, encoding: APIUtilsEncoding): string {\n switch (encoding) {\n case \"urlsafe\": {\n return encode(buffer);\n }\n default: {\n return buffer.toString(encoding);\n }\n }\n }\n\n static stringToBuffer(theString: string, encoding: APIUtilsEncoding): Buffer {\n switch (encoding) {\n case \"urlsafe\": {\n return decode(theString);\n }\n default: {\n return Buffer.from(theString, encoding);\n }\n }\n }\n\n static encrypt(content: string | Buffer, password: string = APIConfig.ENCRYPTION_SECRET, encoding: APIUtilsEncoding = 'base64') {\n password = padEnd(password, 32, \"0\");\n\n let iv = crypto.randomBytes(this._IV_LENGTH);\n let cipher = crypto.createCipheriv(this._CRYPTO_ALG, Buffer.from(password), iv);\n let encrypted = cipher.update(content);\n\n const separator = encoding === \"urlsafe\" ? \"%3A\" : \":\";\n\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n return APIUtils.bufferToString(iv, encoding) + separator + APIUtils.bufferToString(encrypted, encoding);\n }\n\n static decrypt(content: string | Buffer, password: string = APIConfig.ENCRYPTION_SECRET, encoding: APIUtilsEncoding = 'base64') {\n\n const separator = encoding === \"urlsafe\" ? \"%3A\" : \":\";\n\n if(isBuffer(content))\n {\n content = (content as Buffer).toString(\"utf8\");\n }\n\n let textParts = (content as string).split(separator);\n let iv = APIUtils.stringToBuffer(textParts.shift(), encoding);\n let encryptedText = APIUtils.stringToBuffer(textParts.join(separator), encoding);\n let decipher = crypto.createDecipheriv(this._CRYPTO_ALG, Buffer.from(password), iv);\n let decrypted = decipher.update(encryptedText);\n\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString();\n }\n\n static hashString(text: string, encoding: APIUtilsEncoding = 'base64') {\n let shasum = crypto.createHash(this._HASH_ALG);\n shasum.update(text);\n return APIUtils.bufferToString(shasum.digest(), encoding);\n }\n\n static hashMD5(text: string, encoding: APIUtilsEncoding = 'base64') {\n let md5 = crypto.createHash('md5');\n md5.update(text);\n return APIUtils.bufferToString(md5.digest(), encoding);\n }\n\n /**\n * Creates an expiration date in seconds since UNIX epoch from now.\n * @param expirationInSeconds\n */\n static createExpirationInSeconds(expirationInSeconds: number): number {\n return Math.floor(Date.now() / 1000) + expirationInSeconds;\n }\n}"]}
\No newline at end of file