UNPKG

sk-js

Version:
704 lines (624 loc) 22.2 kB
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } import Proxy0 from './Proxy0'; var crypto = require('crypto'); var uuidByteToHex = []; for (var i = 0; i < 256; ++i) { uuidByteToHex[i] = (i + 0x100).toString(16).substr(1); } var SK = /*#__PURE__*/ function () { function SK() { _classCallCheck(this, SK); } _createClass(SK, null, [{ key: "$", //+08:00 /** * New or get namespace object. * * @param {string} $ namespace * @param {Object} initVal init value * @param {Object} env window(browser) or global(nodejs) etc. * @returns {*} Returns the new assigner function. */ value: function $() { var _$ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.DEFAULT_DOMAIN; var initVal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var env = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : SK.DEFAULT_ENV; if (!env[_$]) { env[_$] = initVal; } else if (!Proxy0._.isEmpty(initVal)) { env[_$] = initVal; } return env[_$]; } /** * default of assignWith's customizer * * @private * @returns {*|undefined} * @see Proxy0._.assignWith */ }, { key: "_skAssignCustomizer", value: function _skAssignCustomizer(objValue, srcValue, key, object, source) { return SK.arePlainObject(objValue, srcValue, object, source) ? SK.assign(objValue, srcValue) : undefined; } /** * xxx.com,a,b => xxx.com?a=b * xxx.com?a=b,a,c => xxx.com?a=c * xxx.com?a=b,c,d => xxx.com?a=b&c=d * * @param url * @param param * @param value * @returns {string} */ }, { key: "appendParameter", value: function appendParameter(url, param, value) { if (url.indexOf(SK.CHAR_QUESTION) === -1) { return url + SK.CHAR_QUESTION + param + SK.CHAR_EQUAL + value; } else { var currentValue = SK.getRequestParameter(param, url.split(SK.CHAR_QUESTION)[1]); if (currentValue) { return url.replace(param + SK.CHAR_EQUAL + currentValue, param + SK.CHAR_EQUAL + value); } else { return url + SK.CHAR_AMPERSAND + param + SK.CHAR_EQUAL + value; } } } /** * Checks if values are plain object. * * @returns {boolean} * @see Proxy0._.isPlainObject */ }, { key: "arePlainObject", value: function arePlainObject() { var rtn = true; for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) { values[_key] = arguments[_key]; } values.forEach(function (item) { rtn = rtn && Proxy0._.isPlainObject(item); }); return rtn; } /** * overwrite assign of lodash * * @static * @param {Object} object The destination object. * @param {...Object} objects The source objects. */ }, { key: "assign", value: function assign(object) { var _Proxy0$_; for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { objects[_key2 - 1] = arguments[_key2]; } return (_Proxy0$_ = Proxy0._).assignWith.apply(_Proxy0$_, [object].concat(objects, [SK._skAssignCustomizer])); } /** * cookieStorage * * @param key * @param value * @returns {*} */ }, { key: "cookies", value: function cookies(key, value) { if (arguments.length > 1) { Proxy0.Cookies.remove(key); if (!Proxy0._.isNil(value)) { return Proxy0.Cookies.set(key, value); } } else { return Proxy0.Cookies.get(key); } } /** * @param {Array|string} array * @param {Array|string} anotherArray * @param {string} concat * @returns {Array|string} * @example * descartes(['alert','btn'],['success','info']);//['alert-success','alert-info','btn-success','btn-info'] * descartes('alert','link','-');//'alert-link' */ }, { key: "descartes", value: function descartes() { var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var anotherArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var concat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : SK.CHAR_DASH; var arr1 = Array.isArray(array) ? array : [array]; var arr2 = Array.isArray(anotherArray) ? anotherArray : [anotherArray]; var rtn = []; arr1.forEach(function (item1) { arr2.forEach(function (item2) { rtn.push(item1 + concat + item2); }); }); return rtn.length === 1 ? rtn[0] : rtn; } }, { key: "ellipsis", value: function ellipsis(str) { var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 8; var safeStr = SK.s4s(str); return safeStr.length > len ? "".concat(safeStr.split(SK.CHAR_ESCAPE_N)[0].split(SK.CHAR_LESS)[0].substring(0, len), "...") : str; } }, { key: "emptyFunc", value: function emptyFunc() {} //overwrite extend of jquery }, { key: "extend", value: function extend() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if (_typeof(target) === SK.JS_KEYWORD_BOOLEAN) { deep = target; // Skip the boolean and the target target = arguments[i] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if (_typeof(target) !== SK.JS_KEYWORD_OBJECT && !Proxy0._.isFunction(target)) { target = {}; } // Extend jQuery itself if only one argument is passed if (i === length) { target = this; i--; } for (; i < length; i++) { // Only deal with non-null/undefined values if ((options = arguments[i]) !== null) { // Extend the base object for (name in options) { src = target[name]; copy = options[name]; // Prevent never-ending loop if (target === copy) { continue; } // Recurse if we're merging plain objects or arrays if (deep && copy && (Proxy0._.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = []; //src && Array.isArray(src) ? src : [];//SK modify jquery behaviour } else { clone = src && Proxy0._.isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[name] = SK.extend(deep, clone, copy); // Don't bring in undefined values } else if (copy !== undefined) { target[name] = copy; } } } } // Return the modified object return target; } //overwrite extend of jquery }, { key: "extends", value: function _extends() { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if (typeof target === 'boolean') { deep = target; // Skip the boolean and the target target = arguments[i] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if (_typeof(target) !== SK.JS_KEYWORD_OBJECT && !Proxy0._.isFunction(target)) { target = {}; } // Extend jQuery itself if only one argument is passed if (i === length) { target = this; i--; } for (; i < length; i++) { // Only deal with non-null/undefined values if ((options = arguments[i]) !== null) { // Extend the base object for (name in options) { src = target[name]; copy = options[name]; // Prevent never-ending loop if (target === copy) { continue; } // Recurse if we're merging plain objects or arrays if (deep && copy && (Proxy0._.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = []; //src && Array.isArray(src) ? src : [];//SK modify jquery behaviour } else { clone = src && Proxy0._.isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[name] = SK.extends(deep, clone, copy); // Don't bring in undefined values } else { //if (copy !== undefined) {//SK modify jquery behaviour target[name] = copy; } } } } // Return the modified object return target; } /** * language in cookies if exist, else default * * @returns {string} */ }, { key: "getCurrentLanguage", value: function getCurrentLanguage() { var language = SK.cookies(SK.STR_LANGUAGE); if (!language) { SK.cookies(SK.STR_LANGUAGE, SK.DEFAULT_LANGUAGE); language = SK.cookies(SK.STR_LANGUAGE); } return language; } /** * (a,?a=1&b=2) -> 1 * * @param param * @param search * @returns {*} */ }, { key: "getRequestParameter", value: function getRequestParameter(param) { var search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.STR_EMPTY; search = Proxy0._.startsWith(search, SK.CHAR_QUESTION) ? search.slice(1) : search; var reg = new RegExp("(^|&)".concat(param, "=([^&]*)(&|$)")); var r = search.match(reg); return r ? decodeURIComponent(r[2]) : undefined; } /** * /a/b -> ['/','/a/','/a/b/'] * * @param path * @returns {string[]} */ }, { key: "getSubPaths", value: function getSubPaths(path) { var rtn = [SK.CHAR_SLASH]; path.split(SK.CHAR_SLASH).reduce(function (sum, item) { if (SK.s4s(item) === SK.STR_EMPTY) { return sum; } else { var tmpValidPath = SK.getValidPath(sum + item); rtn.push(tmpValidPath); return tmpValidPath; } }, SK.STR_EMPTY); return rtn; } /** * a/b/c -> /a/b/c/ * * @param path * @returns {string} */ }, { key: "getValidPath", value: function getValidPath(path) { return (Proxy0._.startsWith(path, SK.CHAR_SLASH) ? SK.STR_EMPTY : SK.CHAR_SLASH) + path + (Proxy0._.endsWith(path, SK.CHAR_SLASH) ? SK.STR_EMPTY : SK.CHAR_SLASH); } /** * Safe array for value. * @param {*} value * @param {Array} defaultValue * @returns {Array} */ }, { key: "s4a", value: function s4a(value) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; return Proxy0._.isArray(value) ? value : defaultValue; } /** * Safe boolean for value. * @param {*} value * @param {boolean} defaultValue * @returns {boolean} */ }, { key: "s4b", value: function s4b(value) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; return Proxy0._.isBoolean(value) ? value : defaultValue; } /** * Safe date for value. * @param {*} value * @param {Date} defaultValue * @returns {Date} */ }, { key: "s4d", value: function s4d(value) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date(); return Proxy0._.isDate(value) ? value : defaultValue; } /** * Safe finite number for value. * @param {*} value * @param {number} defaultValue * @returns {number} */ }, { key: "s4n", value: function s4n(value) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return Proxy0._.isFinite(Proxy0._.toNumber(value)) ? Proxy0._.toNumber(value) : defaultValue; } /** * Safe plain object for value. * @param {*} value * @param {Object} defaultValue * @returns {{}} */ }, { key: "s4o", value: function s4o(value) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Proxy0._.isPlainObject(value) ? value : defaultValue; } /** * Safe string for value. * @param {*} value * @param {string} defaultValue * @returns {string} */ }, { key: "s4s", value: function s4s(value) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.STR_EMPTY; return Proxy0._.isBoolean(value) || Proxy0._.isFinite(value) || Proxy0._.isString(value) ? String(value) : defaultValue; } }, { key: "strMapping", value: function strMapping() { var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.uuid().toLowerCase().replace(/-/g, SK.STR_EMPTY); var dstSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.SET_ARY_L62; var srcSet = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : SK.SET_ARY_HEX; var i, divide, newlen, numberMap = {}, fromBase = srcSet.length, toBase = dstSet.length, length = str.length, result = SK.STR_EMPTY; if (srcSet === dstSet) { return str; } for (i = 0; i < length; i++) { numberMap[i] = srcSet.indexOf(str[i]); } do { divide = 0; newlen = 0; for (i = 0; i < length; i++) { divide = divide * fromBase + numberMap[i]; if (divide >= toBase) { numberMap[newlen++] = parseInt(divide / toBase, 10); divide = divide % toBase; } else if (newlen > 0) { numberMap[newlen++] = 0; } } length = newlen; result = dstSet.slice(divide, divide + 1).concat(result); } while (newlen !== 0); return result; } /** * upper first char * * @param words * @returns {string} * @example * upperWordsFirstChar('list');//List * upperWordsFirstChar('xi nAn shi you xUe yuan china people');//Xi NAn Shi You XUe Yuan China People */ }, { key: "upperWordsFirstChar", value: function upperWordsFirstChar(words) { return Proxy0._.toString(words).replace(/\s[a-z]/g, function (nonFirstWord) { return nonFirstWord.toUpperCase(); }).replace(/^[a-z]/, function (firstWord) { return firstWord.toUpperCase(); }); } //XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX }, { key: "uuid", value: function uuid() { var rnds = crypto.randomBytes(16); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` rnds[6] = rnds[6] & 0x0f | 0x40; rnds[8] = rnds[8] & 0x3f | 0x80; var i = 0; return [uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], SK.CHAR_MINUS, uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], SK.CHAR_MINUS, uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], SK.CHAR_MINUS, uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], SK.CHAR_MINUS, uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]], uuidByteToHex[rnds[i++]]].join(''); } }, { key: "cMl36", value: function cMl36() { var uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.uuid(); var dstSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.SET_ARY_L62; return Date.now() + SK.CHAR_MINUS + SK.l22(uuid, dstSet); } }, { key: "cMl40", value: function cMl40() { var uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.uuid(); var dstSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.SET_ARY_L62; return Date.now() + SK.CHAR_MINUS + SK.l22(uuid, dstSet); } }, { key: "cUl36", value: function cUl36() { var uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.uuid(); var dstSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.SET_ARY_L62; return Date.now() + SK.CHAR_UNDERLINE + SK.l22(uuid, dstSet); } }, { key: "cUl40", value: function cUl40() { var uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.uuid(); var dstSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.SET_ARY_L62; return Date.now() + SK.CHAR_UNDERLINE + SK.l22(uuid, dstSet); } /** * length less than 22 */ }, { key: "l22", value: function l22() { var uuid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SK.uuid(); var dstSet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SK.SET_ARY_L62; return SK.strMapping(uuid.toLowerCase().replace(/-/g, SK.STR_EMPTY), dstSet, SK.SET_ARY_HEX); } }]); return SK; }(); SK.CHAR_AMPERSAND = '&'; SK.CHAR_ANGLE = '∠'; SK.CHAR_APPROXIMATELY = '≈'; SK.CHAR_ARROW = '→'; SK.CHAR_ASTERISK = '*'; SK.CHAR_BACKSLASH = '\\'; SK.CHAR_BACKSPACE = '\b'; SK.CHAR_BLANK = ' '; SK.CHAR_BR = '\n'; SK.CHAR_CELSIUS = '℃'; SK.CHAR_CIRCLE = '⊙'; SK.CHAR_CIRCUMFERENCE = '○'; SK.CHAR_CLOSE_BRACE = '}'; SK.CHAR_CLOSE_BRACKET = ']'; SK.CHAR_CLOSE_PARENTHESIS = ')'; SK.CHAR_COLON = ':'; SK.CHAR_COMMA = ','; SK.CHAR_DASH = '-'; SK.CHAR_DEGREE = '°'; SK.CHAR_DIVIDE = '÷'; SK.CHAR_DOT = '.'; SK.CHAR_DOUBLE_QUOTATION = '"'; SK.CHAR_EQUAL = '='; SK.CHAR_EQUAL_APPROXIMATELY = '≌'; SK.CHAR_EQUIVALENT = '≡'; SK.CHAR_ESCAPE_B = '\b'; SK.CHAR_ESCAPE_N = '\n'; SK.CHAR_ESCAPE_R = '\r'; SK.CHAR_ESCAPE_T = '\t'; SK.CHAR_EXCLAMATION = '!'; SK.CHAR_HENCE = '∴'; SK.CHAR_INFINITY = '∞'; SK.CHAR_INTEGRAL = '∫'; SK.CHAR_INTERSECTION = '∩'; SK.CHAR_LESS = '<'; SK.CHAR_LESS_EQUAL = '≤'; SK.CHAR_MINUS = '-'; SK.CHAR_MINUTE = '′'; SK.CHAR_MULTIPLY = '×'; SK.CHAR_MORE = '>'; SK.CHAR_MORE_EQUAL = '≥'; SK.CHAR_NOT_EQUAL = '≠'; SK.CHAR_NOT_LESS = '≮'; SK.CHAR_NOT_MORE = '≯'; SK.CHAR_OPEN_BRACE = '{'; SK.CHAR_OPEN_BRACKET = '['; SK.CHAR_OPEN_PARENTHESIS = '('; SK.CHAR_PARALLEL = '‖'; SK.CHAR_PERCENT = '%'; SK.CHAR_PERMILL = '‰'; SK.CHAR_PERPENDICULAR = '⊥'; SK.CHAR_PI = 'π'; SK.CHAR_PLUS = '+'; SK.CHAR_PLUS_MINUS = '±'; SK.CHAR_POUND = '#'; SK.CHAR_PROPORTION = '∷'; SK.CHAR_QUESTION = '?'; SK.CHAR_SECOND = '〃'; SK.CHAR_SECTION = '§'; SK.CHAR_SEMICIRCLE = '⌒'; SK.CHAR_SEMICOLON = ';'; SK.CHAR_SIGMA = '∑'; SK.CHAR_SINCE = '∵'; SK.CHAR_SINGLE_QUOTATION = '\''; SK.CHAR_SLASH = '/'; SK.CHAR_SQUARE = '√'; SK.CHAR_TRIANGLE = '△'; SK.CHAR_UNDERLINE = '_'; SK.CHAR_UNION = '∪'; SK.CHAR_VARIES = '∝'; SK.CHAR_VERTICAL = '|'; SK.CHAR_MALE = '♂'; SK.CHAR_FEMALE = '♀'; SK.CHAR_Y = 'Y'; SK.CHAR_N = 'N'; SK.CHAR_T = 'T'; SK.CHAR_F = 'F'; SK.CHAR_S = 'S'; SK.FILE_TYPE_HTML = 'html'; SK.FILE_TYPE_HTML_WITH_POINT = SK.CHAR_DOT + SK.FILE_TYPE_HTML; SK.FILE_TYPE_JSON = 'json'; SK.FILE_TYPE_JSON_WITH_POINT = SK.CHAR_DOT + SK.FILE_TYPE_JSON; SK.JS_KEYWORD_BOOLEAN = 'boolean'; SK.JS_KEYWORD_FUNCTION = 'function'; SK.JS_KEYWORD_OBJECT = 'object'; SK.LANGUAGE_en_US = 'en_US'; SK.LANGUAGE_zh_CN = 'zh_CN'; SK.REQUEST_METHOD_POST = 'POST'; SK.REQUEST_METHOD_DELETE = 'DELETE'; SK.REQUEST_METHOD_PUT = 'PUT'; SK.REQUEST_METHOD_GET = 'GET'; SK.SET_ARY_BIN = '01'; SK.SET_ARY_OCT = '01234567'; SK.SET_ARY_DEC = '0123456789'; SK.SET_DIGITAL = SK.SET_ARY_DEC; SK.SET_ARY_HEX = '0123456789abcdef'; SK.SET_ARY_L62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; SK.STR_EMPTY = ''; SK.STR_NULL = 'NULL'; SK.STR_UNDERLINE_UNDERLINE = '__'; SK.STR_DEFAULT = 'default'; SK.STR_ERROR = 'error'; SK.STR_LANGUAGE = 'language'; SK.DEFAULT_CONTEXT_PATH = SK.STR_EMPTY; SK.DEFAULT_DOMAIN = '$sk'; SK.DEFAULT_ENV = {}; SK.DEFAULT_LANGUAGE = SK.LANGUAGE_en_US; SK.DEFAULT_MOMENT_H_MI_S = 'HH:mm:ss'; SK.DEFAULT_MOMENT_HMIS = 'HHmmss'; SK.DEFAULT_MOMENT_SSS = 'SSS'; SK.DEFAULT_MOMENT_Y_M_D = 'YYYY-MM-DD'; SK.DEFAULT_MOMENT_YMD = 'YYYYMMDD'; SK.DEFAULT_MOMENT_YsMsD = 'YYYY/MM/DD'; SK.DEFAULT_MOMENT_Z = 'Z'; SK.DEFAULT_MOMENT_DATE_TIME = SK.DEFAULT_MOMENT_Y_M_D + SK.CHAR_BLANK + SK.DEFAULT_MOMENT_H_MI_S; SK.DEFAULT_MOMENT_DATE_TIME_SSS = SK.DEFAULT_MOMENT_DATE_TIME + SK.CHAR_DOT + SK.DEFAULT_MOMENT_SSS; SK.DEFAULT_MOMENT_DATETIME = SK.DEFAULT_MOMENT_YMD + SK.DEFAULT_MOMENT_HMIS; SK.DEFAULT_MOMENT_DATETIMESSS = SK.DEFAULT_MOMENT_DATETIME + SK.DEFAULT_MOMENT_SSS; export { SK as default };