under-dash.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. "use strict";
  2. function _typeof(obj) { "@babel/helpers - typeof"; 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); }
  3. var toString = Object.prototype.toString;
  4. var escapeHtmlRegex = /["&<>]/;
  5. var _ = {
  6. each: function each(obj, cb) {
  7. if (obj) {
  8. if (Array.isArray(obj)) {
  9. obj.forEach(cb);
  10. } else {
  11. Object.keys(obj).forEach(function (key) {
  12. cb(obj[key], key);
  13. });
  14. }
  15. }
  16. },
  17. some: function some(obj, cb) {
  18. if (obj) {
  19. if (Array.isArray(obj)) {
  20. return obj.some(cb);
  21. }
  22. return Object.keys(obj).some(function (key) {
  23. return cb(obj[key], key);
  24. });
  25. }
  26. return false;
  27. },
  28. every: function every(obj, cb) {
  29. if (obj) {
  30. if (Array.isArray(obj)) {
  31. return obj.every(cb);
  32. }
  33. return Object.keys(obj).every(function (key) {
  34. return cb(obj[key], key);
  35. });
  36. }
  37. return true;
  38. },
  39. map: function map(obj, cb) {
  40. if (obj) {
  41. if (Array.isArray(obj)) {
  42. return obj.map(cb);
  43. }
  44. return Object.keys(obj).map(function (key) {
  45. return cb(obj[key], key);
  46. });
  47. }
  48. return [];
  49. },
  50. keyBy: function keyBy(a, p) {
  51. return a.reduce(function (o, v) {
  52. o[v[p]] = v;
  53. return o;
  54. }, {});
  55. },
  56. isEqual: function isEqual(a, b) {
  57. var aType = _typeof(a);
  58. var bType = _typeof(b);
  59. var aArray = Array.isArray(a);
  60. var bArray = Array.isArray(b);
  61. if (aType !== bType) {
  62. return false;
  63. }
  64. switch (_typeof(a)) {
  65. case 'object':
  66. if (aArray || bArray) {
  67. if (aArray && bArray) {
  68. return a.length === b.length && a.every(function (aValue, index) {
  69. var bValue = b[index];
  70. return _.isEqual(aValue, bValue);
  71. });
  72. }
  73. return false;
  74. }
  75. return _.every(a, function (aValue, key) {
  76. var bValue = b[key];
  77. return _.isEqual(aValue, bValue);
  78. });
  79. default:
  80. return a === b;
  81. }
  82. },
  83. escapeHtml: function escapeHtml(html) {
  84. var regexResult = escapeHtmlRegex.exec(html);
  85. if (!regexResult) return html;
  86. var result = '';
  87. var escape = '';
  88. var lastIndex = 0;
  89. var i = regexResult.index;
  90. for (; i < html.length; i++) {
  91. switch (html.charAt(i)) {
  92. case '"':
  93. escape = '&quot;';
  94. break;
  95. case '&':
  96. escape = '&amp;';
  97. break;
  98. case '\'':
  99. escape = '&apos;';
  100. break;
  101. case '<':
  102. escape = '&lt;';
  103. break;
  104. case '>':
  105. escape = '&gt;';
  106. break;
  107. default:
  108. continue;
  109. }
  110. if (lastIndex !== i) result += html.substring(lastIndex, i);
  111. lastIndex = i + 1;
  112. result += escape;
  113. }
  114. if (lastIndex !== i) return result + html.substring(lastIndex, i);
  115. return result;
  116. },
  117. strcmp: function strcmp(a, b) {
  118. if (a < b) return -1;
  119. if (a > b) return 1;
  120. return 0;
  121. },
  122. isUndefined: function isUndefined(val) {
  123. return toString.call(val) === '[object Undefined]';
  124. },
  125. isObject: function isObject(val) {
  126. return toString.call(val) === '[object Object]';
  127. },
  128. deepMerge: function deepMerge() {
  129. var target = arguments[0] || {};
  130. var length = arguments.length; // eslint-disable-next-line one-var
  131. var src, clone, copyIsArray;
  132. function assignValue(val, key) {
  133. src = target[key];
  134. copyIsArray = Array.isArray(val);
  135. if (_.isObject(val) || copyIsArray) {
  136. if (copyIsArray) {
  137. copyIsArray = false;
  138. clone = src && Array.isArray(src) ? src : [];
  139. } else {
  140. clone = src && _.isObject(src) ? src : {};
  141. }
  142. target[key] = _.deepMerge(clone, val);
  143. } else if (!_.isUndefined(val)) {
  144. target[key] = val;
  145. }
  146. }
  147. for (var i = 0; i < length; i++) {
  148. _.each(arguments[i], assignValue);
  149. }
  150. return target;
  151. }
  152. };
  153. module.exports = _;
  154. //# sourceMappingURL=under-dash.js.map