UNPKG

@tencent-sdk/common

Version:
238 lines (234 loc) 6.73 kB
import { createHmac, createHash } from 'crypto'; import camelCase from 'camelcase'; function sha1(str, key) { return createHmac('sha1', key) .update(str) .digest('hex'); } function hash(str, algorithm) { return createHash(algorithm) .update(str) .digest('hex'); } /** * simple deep clone object * @param {object} obj object */ function deepClone(obj) { return JSON.parse(JSON.stringify(obj)); } /** * return variable real type * @param {any} obj input variable */ function getRealType(obj) { return Object.prototype.toString.call(obj).slice(8, -1); } /** * is array * @param obj object */ function isArray(obj) { return getRealType(obj) === 'Array'; } /** * is object * @param obj object */ function isObject(obj) { return getRealType(obj) === 'Object'; } function isEmpty(val) { return (val === undefined || val === null || (typeof val === 'number' && isNaN(val))); } function cleanEmptyValue(obj) { var newObj = {}; for (var key in obj) { var val = obj[key]; if (!isEmpty(val)) { newObj[key] = val; } } return newObj; } function camelCaseProps(obj, pascalCase) { if (pascalCase === void 0) { pascalCase = false; } var res = {}; if (isObject(obj)) { res = {}; Object.keys(obj).forEach(function (key) { var val = obj[key]; var k = camelCase(key, { pascalCase: pascalCase }); res[k] = isObject(val) || isArray(val) ? camelCaseProps(val, pascalCase) : val; }); } if (isArray(obj)) { res = []; obj.forEach(function (item) { res.push(isObject(item) || isArray(item) ? camelCaseProps(item, pascalCase) : item); }); } return res; } function pascalCaseProps(obj) { return camelCaseProps(obj, true); } function logger$1(topic, content) { console.log("[DEBUG] " + topic + ": " + content + " "); } function getUnixTime(date) { var val = date.getTime(); return Math.ceil(val / 1000); } function getDate(date) { var year = date.getUTCFullYear(); var month = date.getUTCMonth() + 1; var day = date.getUTCDate(); return year + "-" + (month > 9 ? month : "0" + month) + "-" + (day > 9 ? day : "0" + day); } /** * iterate object or array * @param obj object or array * @param iterator iterator function */ function forEach(obj, iterator) { if (isArray(obj)) { var arr = obj; if (arr.forEach) { arr.forEach(iterator); return; } for (var i = 0; i < arr.length; i += 1) { iterator(arr[i], i, arr); } } else { var oo = obj; for (var key in oo) { if (obj.hasOwnProperty(key)) { iterator(oo[key], key, obj); } } } } /** * flatter request parameter * @param obj target object or array */ function flatten(obj) { if (!isArray(obj) && !isObject(obj)) { return {}; } var ret = {}; var dump = function (obj, prefix, parents) { var checkedParents = []; if (parents) { var i = void 0; for (i = 0; i < parents.length; i++) { if (parents[i] === obj) { throw new Error('object has circular references'); } checkedParents.push(obj); } } checkedParents.push(obj); if (!isArray(obj) && !isObject(obj)) { if (!prefix) { throw obj + 'is not object or array'; } ret[prefix] = obj; return {}; } if (isArray(obj)) { // it's an array forEach(obj, function (obj, i) { dump(obj, prefix ? prefix + '.' + i : '' + i, checkedParents); }); } else { // it's an object forEach(obj, function (obj, key) { dump(obj, prefix ? prefix + '.' + key : '' + key, checkedParents); }); } }; dump(obj, null); return ret; } function stringifyPrimitive(v) { switch (typeof v) { case 'string': return v; case 'boolean': return v ? 'true' : 'false'; case 'number': return isFinite(v) ? v : ''; default: return ''; } } function safeUrlEncode(str) { return encodeURIComponent(str) .replace(/!/g, '%21') .replace(/'/g, '%27') .replace(/\(/g, '%28') .replace(/\)/g, '%29') .replace(/\*/g, '%2A'); } function querystring(obj, isSafeEncode) { if (isSafeEncode === void 0) { isSafeEncode = false; } var sep = '&'; var eq = '='; var encodeHandler = isSafeEncode ? safeUrlEncode : encodeURIComponent; if (!obj) return ''; if (obj && typeof obj === 'object') { return Object.keys(obj) .map(function (k) { var ks = encodeHandler(stringifyPrimitive(k)) + eq; if (Array.isArray(obj[k])) { return obj[k] .map(function (v) { return ks + encodeHandler(stringifyPrimitive(v)); }) .join(sep); } else { return ks + encodeHandler(stringifyPrimitive(obj[k])); } }) .filter(Boolean) .join(sep); } return ''; } function sortObjectKey(obj) { var list = []; Object.keys(obj).forEach(function (key) { if (obj.hasOwnProperty(key)) { list.push(key); } }); return list.sort(function (a, b) { a = a.toLowerCase(); b = b.toLowerCase(); return a === b ? 0 : a > b ? 1 : -1; }); } function stringifyObject(obj, sortKeyMethod) { var list = []; var keyList = sortKeyMethod(obj); keyList.forEach(function (key) { var val = obj[key] === undefined || obj[key] === null ? '' : '' + obj[key]; key = key.toLowerCase(); key = safeUrlEncode(key); val = safeUrlEncode(val) || ''; list.push(key + '=' + val); }); return list.join('&'); } export { deepClone, getRealType, isArray, isObject, isEmpty, cleanEmptyValue, camelCaseProps, pascalCaseProps, logger$1 as logger, getUnixTime, getDate, forEach, flatten, querystring, sortObjectKey, stringifyObject, sha1, hash }; //# sourceMappingURL=index.esm.js.map