ut2 1.5.5 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/merge.js CHANGED
@@ -2,36 +2,46 @@ import allKeysIn from './allKeysIn.js';
2
2
  import isArray from './isArray.js';
3
3
  import isObject from './isObject.js';
4
4
  import isObjectLike from './isObjectLike.js';
5
+ import isPlainObject from './isPlainObject.js';
5
6
 
6
- function baseMerge(object, source, customizer, storage) {
7
- if (storage === void 0) { storage = new WeakMap(); }
7
+ function baseMerge(object, source, customizer, stack) {
8
+ if (stack === void 0) { stack = new WeakMap(); }
8
9
  var obj = Object(object);
9
10
  if (!isObject(source) || obj === source) {
10
11
  return obj;
11
12
  }
12
13
  var keys = allKeysIn(source);
14
+ var hasCustomizer = typeof customizer === 'function';
13
15
  keys.forEach(function (key) {
14
16
  var srcValue = source[key];
15
- var newValue = typeof customizer === 'function' ? customizer(obj[key], srcValue, key, obj, source) : undefined;
16
- if (newValue === undefined) {
17
- newValue = srcValue;
18
- }
19
- if (isObjectLike(newValue) && key in obj && !storage.has(newValue)) {
20
- storage.set(newValue, true);
21
- var objValue = obj[key];
22
- var newObjValue = void 0;
23
- if (isArray(newValue)) {
24
- newObjValue = isArray(objValue) ? objValue : [];
25
- }
26
- else {
27
- newObjValue = isObjectLike(objValue) ? objValue : {};
28
- }
29
- obj[key] = baseMerge(newObjValue, newValue, customizer, storage);
17
+ var srcIsObj = isObject(srcValue);
18
+ if (srcIsObj && stack.has(srcValue)) {
19
+ obj[key] = srcValue;
30
20
  }
31
21
  else {
32
- if (newValue !== undefined || (newValue === undefined && !(key in obj))) {
22
+ var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : undefined;
23
+ if (newValue !== undefined) {
33
24
  obj[key] = newValue;
34
25
  }
26
+ else {
27
+ var objValue = obj[key];
28
+ var newObjValue = void 0;
29
+ if (srcIsObj) {
30
+ stack.set(srcValue, true);
31
+ if (isArray(srcValue)) {
32
+ newObjValue = isArray(objValue) ? objValue : [];
33
+ }
34
+ else if (isPlainObject(srcValue)) {
35
+ newObjValue = isObjectLike(objValue) ? objValue : {};
36
+ }
37
+ }
38
+ if (newObjValue) {
39
+ obj[key] = baseMerge(newObjValue, srcValue, customizer, stack);
40
+ }
41
+ else if (srcValue !== undefined || !(key in obj)) {
42
+ obj[key] = srcValue;
43
+ }
44
+ }
35
45
  }
36
46
  });
37
47
  return obj;
package/es/range.js ADDED
@@ -0,0 +1,28 @@
1
+ import { mathMax, mathCeil } from './internals/native.js';
2
+ import isNil from './isNil.js';
3
+ import toFinite from './toFinite.js';
4
+
5
+ function range(start, end, step) {
6
+ start = toFinite(start);
7
+ if (isNil(end)) {
8
+ end = start;
9
+ start = 0;
10
+ }
11
+ else {
12
+ end = toFinite(end);
13
+ }
14
+ step = toFinite(step);
15
+ if (!step) {
16
+ step = start < end ? 1 : -1;
17
+ }
18
+ var index = -1;
19
+ var length = mathMax(mathCeil((end - start) / step), 0);
20
+ var result = Array(length);
21
+ while (length--) {
22
+ result[++index] = start;
23
+ start += step;
24
+ }
25
+ return result;
26
+ }
27
+
28
+ export { range as default };
package/es/toString.js CHANGED
@@ -9,7 +9,7 @@ function baseToString(value) {
9
9
  return value;
10
10
  }
11
11
  if (isArray(value)) {
12
- return "".concat(value.map(baseToString));
12
+ return '' + value.map(baseToString);
13
13
  }
14
14
  if (isSymbol(value)) {
15
15
  return symbolToString ? symbolToString.call(value) : '';
package/lib/index.js CHANGED
@@ -104,6 +104,7 @@ var lt = require('./lt.js');
104
104
  var lte = require('./lte.js');
105
105
  var noop = require('./noop.js');
106
106
  var nthArg = require('./nthArg.js');
107
+ var range = require('./range.js');
107
108
  var sleep = require('./sleep.js');
108
109
  var times = require('./times.js');
109
110
  var toFinite = require('./toFinite.js');
@@ -222,6 +223,7 @@ exports.lt = lt;
222
223
  exports.lte = lte;
223
224
  exports.noop = noop;
224
225
  exports.nthArg = nthArg;
226
+ exports.range = range;
225
227
  exports.sleep = sleep;
226
228
  exports.times = times;
227
229
  exports.toFinite = toFinite;
@@ -3,7 +3,7 @@
3
3
  var getTag = require('./getTag.js');
4
4
  var native = require('./native.js');
5
5
 
6
- exports.VERSION = "1.5.5";
6
+ exports.VERSION = "1.6.0";
7
7
  exports.supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
8
8
  exports.FUNC_ERROR_TEXT = 'Expected a function';
9
9
  function toSource(func) {
package/lib/merge.js CHANGED
@@ -4,36 +4,46 @@ var allKeysIn = require('./allKeysIn.js');
4
4
  var isArray = require('./isArray.js');
5
5
  var isObject = require('./isObject.js');
6
6
  var isObjectLike = require('./isObjectLike.js');
7
+ var isPlainObject = require('./isPlainObject.js');
7
8
 
8
- function baseMerge(object, source, customizer, storage) {
9
- if (storage === void 0) { storage = new WeakMap(); }
9
+ function baseMerge(object, source, customizer, stack) {
10
+ if (stack === void 0) { stack = new WeakMap(); }
10
11
  var obj = Object(object);
11
12
  if (!isObject(source) || obj === source) {
12
13
  return obj;
13
14
  }
14
15
  var keys = allKeysIn(source);
16
+ var hasCustomizer = typeof customizer === 'function';
15
17
  keys.forEach(function (key) {
16
18
  var srcValue = source[key];
17
- var newValue = typeof customizer === 'function' ? customizer(obj[key], srcValue, key, obj, source) : undefined;
18
- if (newValue === undefined) {
19
- newValue = srcValue;
20
- }
21
- if (isObjectLike(newValue) && key in obj && !storage.has(newValue)) {
22
- storage.set(newValue, true);
23
- var objValue = obj[key];
24
- var newObjValue = void 0;
25
- if (isArray(newValue)) {
26
- newObjValue = isArray(objValue) ? objValue : [];
27
- }
28
- else {
29
- newObjValue = isObjectLike(objValue) ? objValue : {};
30
- }
31
- obj[key] = baseMerge(newObjValue, newValue, customizer, storage);
19
+ var srcIsObj = isObject(srcValue);
20
+ if (srcIsObj && stack.has(srcValue)) {
21
+ obj[key] = srcValue;
32
22
  }
33
23
  else {
34
- if (newValue !== undefined || (newValue === undefined && !(key in obj))) {
24
+ var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : undefined;
25
+ if (newValue !== undefined) {
35
26
  obj[key] = newValue;
36
27
  }
28
+ else {
29
+ var objValue = obj[key];
30
+ var newObjValue = void 0;
31
+ if (srcIsObj) {
32
+ stack.set(srcValue, true);
33
+ if (isArray(srcValue)) {
34
+ newObjValue = isArray(objValue) ? objValue : [];
35
+ }
36
+ else if (isPlainObject(srcValue)) {
37
+ newObjValue = isObjectLike(objValue) ? objValue : {};
38
+ }
39
+ }
40
+ if (newObjValue) {
41
+ obj[key] = baseMerge(newObjValue, srcValue, customizer, stack);
42
+ }
43
+ else if (srcValue !== undefined || !(key in obj)) {
44
+ obj[key] = srcValue;
45
+ }
46
+ }
37
47
  }
38
48
  });
39
49
  return obj;
package/lib/range.js ADDED
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var native = require('./internals/native.js');
4
+ var isNil = require('./isNil.js');
5
+ var toFinite = require('./toFinite.js');
6
+
7
+ function range(start, end, step) {
8
+ start = toFinite(start);
9
+ if (isNil(end)) {
10
+ end = start;
11
+ start = 0;
12
+ }
13
+ else {
14
+ end = toFinite(end);
15
+ }
16
+ step = toFinite(step);
17
+ if (!step) {
18
+ step = start < end ? 1 : -1;
19
+ }
20
+ var index = -1;
21
+ var length = native.mathMax(native.mathCeil((end - start) / step), 0);
22
+ var result = Array(length);
23
+ while (length--) {
24
+ result[++index] = start;
25
+ start += step;
26
+ }
27
+ return result;
28
+ }
29
+
30
+ module.exports = range;
package/lib/toString.js CHANGED
@@ -11,7 +11,7 @@ function baseToString(value) {
11
11
  return value;
12
12
  }
13
13
  if (isArray(value)) {
14
- return "".concat(value.map(baseToString));
14
+ return '' + value.map(baseToString);
15
15
  }
16
16
  if (isSymbol(value)) {
17
17
  return symbolToString ? symbolToString.call(value) : '';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ut2",
3
- "version": "1.5.5",
3
+ "version": "1.6.0",
4
4
  "author": "caijf",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
package/types/index.d.ts CHANGED
@@ -156,6 +156,7 @@ export { default as lt } from './lt';
156
156
  export { default as lte } from './lte';
157
157
  export { default as noop } from './noop';
158
158
  export { default as nthArg } from './nthArg';
159
+ export { default as range } from './range';
159
160
  export { default as sleep } from './sleep';
160
161
  export { default as times } from './times';
161
162
  export { default as toFinite } from './toFinite';
@@ -12,6 +12,10 @@
12
12
  *
13
13
  * lowerFirst('BAR'); // 'bAR'
14
14
  *
15
+ * lowerFirst('--Foo-bar--'); // '--Foo-bar--' 不进行分词处理
16
+ *
17
+ * lowerFirst('Foo-bar'); // 'foo-bar'
18
+ *
15
19
  */
16
20
  declare const lowerFirst: (string: string) => string;
17
21
  export default lowerFirst;
@@ -0,0 +1,4 @@
1
+ declare function range(start: number, end: number, step: number): number[];
2
+ declare function range(start: number, end: number): number[];
3
+ declare function range(end: number): number[];
4
+ export default range;
@@ -12,6 +12,10 @@
12
12
  *
13
13
  * upperFirst('BAR'); // 'BAR'
14
14
  *
15
+ * lowerFirst('--foo-bar--'); // '--foo-bar--' 不进行分词处理
16
+ *
17
+ * lowerFirst('foo-bar'); // 'Foo-bar'
18
+ *
15
19
  */
16
20
  declare const upperFirst: (string: string) => string;
17
21
  export default upperFirst;