UNPKG

8.09 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} from \"lodash\";\nimport * as getArguments from \"function-arguments\";\nimport {APIConfig} from \"./APIConfig\";\nimport * as crypto from \"crypto\";\nimport slugify from \"slugify\";\n\nslugify.extend({\"/\": \":\"});\n\nexport class APIUtils {\n\n static getRawTypeName(obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\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 }\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 }\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 encrypt(text: string, password:string = APIConfig.ENCRYPTION_SECRET) {\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(text);\n\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n return iv.toString('base64') + ':' + encrypted.toString('base64');\n }\n\n static decrypt(text: string, password:string = APIConfig.ENCRYPTION_SECRET) {\n let textParts = text.split(':');\n let iv = Buffer.from(textParts.shift(), 'base64');\n let encryptedText = Buffer.from(textParts.join(':'), 'base64');\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 slugify(text:string)\n {\n return slugify(text);\n }\n\n static hashString(text:string)\n {\n let shasum = crypto.createHash(this._HASH_ALG);\n shasum.update(text);\n return shasum.digest('base64');\n }\n\n static hashMD5(text:string)\n {\n let md5 = crypto.createHash('md5');\n md5.update(text);\n return md5.digest('base64');\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 {\n return Math.floor(Date.now() / 1000) + expirationInSeconds;\n }\n}"]}
\No newline at end of file