ut2 1.15.0 → 1.17.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.
Files changed (74) hide show
  1. package/README.md +8 -0
  2. package/dist/ut2.js +199 -26
  3. package/dist/ut2.js.map +1 -1
  4. package/dist/ut2.min.js +1 -1
  5. package/dist/ut2.min.js.map +1 -1
  6. package/es/fromPathPairs.js +25 -0
  7. package/es/get.js +20 -0
  8. package/es/guard.js +2 -1
  9. package/es/index.js +7 -0
  10. package/es/internals/helpers.js +2 -2
  11. package/es/internals/isEqualDeep.js +1 -1
  12. package/es/internals/isIndex.js +12 -0
  13. package/es/internals/native.js +24 -23
  14. package/es/internals/stringToPath.js +15 -0
  15. package/es/memoize.js +47 -0
  16. package/es/merge.js +1 -1
  17. package/es/pathPairs.js +25 -0
  18. package/es/set.js +33 -0
  19. package/es/toPath.js +20 -0
  20. package/es/unset.js +15 -0
  21. package/lib/fromPathPairs.js +27 -0
  22. package/lib/get.js +22 -0
  23. package/lib/guard.js +2 -1
  24. package/lib/index.js +14 -0
  25. package/lib/internals/helpers.js +1 -1
  26. package/lib/internals/isIndex.js +14 -0
  27. package/lib/internals/native.js +24 -23
  28. package/lib/internals/stringToPath.js +17 -0
  29. package/lib/memoize.js +49 -0
  30. package/lib/merge.js +1 -1
  31. package/lib/pathPairs.js +27 -0
  32. package/lib/set.js +35 -0
  33. package/lib/toPath.js +22 -0
  34. package/lib/unset.js +17 -0
  35. package/package.json +26 -29
  36. package/types/camelCase.d.ts +1 -1
  37. package/types/ceil.d.ts +1 -1
  38. package/types/compact.d.ts +1 -1
  39. package/types/eq.d.ts +1 -1
  40. package/types/escape.d.ts +1 -1
  41. package/types/escapeRegExp.d.ts +1 -1
  42. package/types/floor.d.ts +1 -1
  43. package/types/fromPathPairs.d.ts +42 -0
  44. package/types/get.d.ts +21 -0
  45. package/types/index.d.ts +7 -0
  46. package/types/internals/isIndex.d.ts +17 -0
  47. package/types/internals/native.d.ts +25 -25
  48. package/types/internals/root.d.ts +1 -1
  49. package/types/internals/stringToPath.d.ts +9 -0
  50. package/types/internals/types.d.ts +1 -0
  51. package/types/invert.d.ts +1 -1
  52. package/types/isBlob.d.ts +2 -2
  53. package/types/isFile.d.ts +1 -1
  54. package/types/isLength.d.ts +1 -1
  55. package/types/isObject.d.ts +1 -1
  56. package/types/isTypedArray.d.ts +1 -1
  57. package/types/kebabCase.d.ts +1 -1
  58. package/types/memoize.d.ts +50 -0
  59. package/types/merge.d.ts +1 -1
  60. package/types/mergeObject.d.ts +1 -1
  61. package/types/move.d.ts +1 -1
  62. package/types/omitBy.d.ts +1 -1
  63. package/types/orderBy.d.ts +1 -1
  64. package/types/partition.d.ts +2 -2
  65. package/types/pascalCase.d.ts +1 -1
  66. package/types/pathPairs.d.ts +30 -0
  67. package/types/pickBy.d.ts +1 -1
  68. package/types/round.d.ts +1 -1
  69. package/types/set.d.ts +24 -0
  70. package/types/snakeCase.d.ts +1 -1
  71. package/types/toLength.d.ts +1 -1
  72. package/types/toPath.d.ts +17 -0
  73. package/types/unset.d.ts +20 -0
  74. package/types/words.d.ts +1 -1
@@ -0,0 +1,25 @@
1
+ import { __read } from 'tslib';
2
+ import isIndex from './internals/isIndex.js';
3
+ import { nativeUndefined } from './internals/native.js';
4
+ import isArray from './isArray.js';
5
+ import isObject from './isObject.js';
6
+ import set from './set.js';
7
+
8
+ function fromPathPairs(value, customizer) {
9
+ var valueIsArray = isArray(value);
10
+ var firstPairPath = valueIsArray && isArray(value[0]) && isArray(value[0][0]) ? value[0][0] : [];
11
+ var firstNode = customizer ? customizer(nativeUndefined, firstPairPath[0], nativeUndefined) : nativeUndefined;
12
+ var result = isObject(firstNode) ? firstNode : isIndex(firstPairPath[0]) ? [] : {};
13
+ var length = valueIsArray ? value.length : 0;
14
+ var index = -1;
15
+ while (++index < length) {
16
+ var pathPair = value[index];
17
+ if (isArray(pathPair)) {
18
+ var _a = __read(pathPair, 2), paths = _a[0], val = _a[1];
19
+ set(result, paths, val, customizer);
20
+ }
21
+ }
22
+ return result;
23
+ }
24
+
25
+ export { fromPathPairs as default };
package/es/get.js ADDED
@@ -0,0 +1,20 @@
1
+ import { nativeUndefined } from './internals/native.js';
2
+ import isNil from './isNil.js';
3
+ import isUndefined from './isUndefined.js';
4
+ import toPath from './toPath.js';
5
+
6
+ function baseGet(object, key) {
7
+ var paths = toPath(key, object);
8
+ var length = paths.length;
9
+ var index = 0;
10
+ while (!isNil(object) && index < length) {
11
+ object = object[paths[index++]];
12
+ }
13
+ return index && index === length ? object : nativeUndefined;
14
+ }
15
+ function get(object, key, defaultValue) {
16
+ var result = isNil(object) ? nativeUndefined : baseGet(object, key);
17
+ return isUndefined(result) ? defaultValue : result;
18
+ }
19
+
20
+ export { get as default };
package/es/guard.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { nativeUndefined } from './internals/native.js';
1
2
  import isPromiseLike from './isPromiseLike.js';
2
3
 
3
4
  var guard = function (fn, shouldGuard) {
@@ -5,7 +6,7 @@ var guard = function (fn, shouldGuard) {
5
6
  if (shouldGuard && !shouldGuard(err)) {
6
7
  throw err;
7
8
  }
8
- return undefined;
9
+ return nativeUndefined;
9
10
  };
10
11
  try {
11
12
  var result = fn();
package/es/index.js CHANGED
@@ -30,6 +30,7 @@ export { default as before } from './before.js';
30
30
  export { default as curry } from './curry.js';
31
31
  export { default as debounce } from './debounce.js';
32
32
  export { default as delay } from './delay.js';
33
+ export { default as memoize } from './memoize.js';
33
34
  export { default as negate } from './negate.js';
34
35
  export { default as once } from './once.js';
35
36
  export { default as partial } from './partial.js';
@@ -86,6 +87,8 @@ export { default as randomInt } from './randomInt.js';
86
87
  export { default as allKeys } from './allKeys.js';
87
88
  export { default as allKeysIn } from './allKeysIn.js';
88
89
  export { default as findKey } from './findKey.js';
90
+ export { default as fromPathPairs } from './fromPathPairs.js';
91
+ export { default as get } from './get.js';
89
92
  export { default as invert } from './invert.js';
90
93
  export { default as keys } from './keys.js';
91
94
  export { default as keysIn } from './keysIn.js';
@@ -95,6 +98,9 @@ export { default as omit } from './omit.js';
95
98
  export { default as omitBy } from './omitBy.js';
96
99
  export { default as pick } from './pick.js';
97
100
  export { default as pickBy } from './pickBy.js';
101
+ export { default as pathPairs } from './pathPairs.js';
102
+ export { default as set } from './set.js';
103
+ export { default as unset } from './unset.js';
98
104
  export { default as camelCase } from './camelCase.js';
99
105
  export { default as capitalize } from './capitalize.js';
100
106
  export { default as escape } from './escape.js';
@@ -131,6 +137,7 @@ export { default as toFinite } from './toFinite.js';
131
137
  export { default as toInteger } from './toInteger.js';
132
138
  export { default as toLength } from './toLength.js';
133
139
  export { default as toNumber } from './toNumber.js';
140
+ export { default as toPath } from './toPath.js';
134
141
  export { default as toSafeInteger } from './toSafeInteger.js';
135
142
  export { default as toString } from './toString.js';
136
143
  export { default as tryit } from './tryit.js';
@@ -1,8 +1,8 @@
1
1
  import isObjectLike from '../isObjectLike.js';
2
2
  import getTag from './getTag.js';
3
- import { argumentsTag, stringUndefined, functionProtoToString } from './native.js';
3
+ import { argumentsTag, functionProtoToString, stringUndefined } from './native.js';
4
4
 
5
- var VERSION = "1.15.0";
5
+ var VERSION = "1.17.0";
6
6
  var isBrowser = typeof window !== stringUndefined && isObjectLike(window) && typeof document !== stringUndefined && isObjectLike(document) && window.document === document;
7
7
  var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
8
8
  var FUNC_ERROR_TEXT = 'Expected a function';
@@ -1,7 +1,7 @@
1
1
  import allKeys from '../allKeys.js';
2
2
  import eq from '../eq.js';
3
3
  import getTagWithBugfix from './getTagWithBugfix.js';
4
- import { symbolProto, nativeUndefined, arrayBufferTag, dataViewTag, errorTag, symbolTag, regExpTag, stringTag, dateTag, booleanTag, numberTag, objectTag, objectProtoHasOwnProperty, argumentsTag, setTag, mapTag, arrayTag, arrayProtoSlice } from './native.js';
4
+ import { symbolProto, nativeUndefined, arrayBufferTag, dataViewTag, errorTag, symbolTag, regExpTag, stringTag, dateTag, booleanTag, numberTag, objectTag, objectProtoHasOwnProperty, arrayTag, argumentsTag, setTag, mapTag, arrayProtoSlice } from './native.js';
5
5
  import isBuffer from '../isBuffer.js';
6
6
  import isFunction from '../isFunction.js';
7
7
  import isNil from '../isNil.js';
@@ -0,0 +1,12 @@
1
+ import isLength from '../isLength.js';
2
+ import toNumber from '../toNumber.js';
3
+
4
+ function isIndex(value) {
5
+ var type = typeof value;
6
+ if (type === 'string' && value) {
7
+ value = toNumber(value);
8
+ }
9
+ return isLength(value);
10
+ }
11
+
12
+ export { isIndex as default };
@@ -29,28 +29,29 @@ var selfExisted = typeof self === stringObject && self;
29
29
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
30
30
  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
31
31
  var MAX_ARRAY_LENGTH = 4294967295;
32
- var bigIntTag = '[object BigInt]';
33
- var numberTag = '[object Number]';
34
- var booleanTag = '[object Boolean]';
35
- var stringTag = '[object String]';
36
- var dateTag = '[object Date]';
37
- var regExpTag = '[object RegExp]';
38
- var symbolTag = '[object Symbol]';
39
- var errorTag = '[object Error]';
40
- var arrayBufferTag = '[object ArrayBuffer]';
41
- var argumentsTag = '[object Arguments]';
42
- var arrayTag = '[object Array]';
43
- var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return '[object ' + item + ']'; });
44
- var weakSetTag = '[object WeakSet]';
45
- var blobTag = '[object Blob]';
46
- var fileTag = '[object File]';
47
- var domExceptionTag = '[object DOMException]';
48
- var objectTag = '[object Object]';
49
- var dataViewTag = '[object DataView]';
50
- var mapTag = '[object Map]';
51
- var promiseTag = '[object Promise]';
52
- var setTag = '[object Set]';
53
- var weakMapTag = '[object WeakMap]';
54
- var windowTag = '[object Window]';
32
+ var tagPrefix = '[object ';
33
+ var bigIntTag = tagPrefix + 'BigInt]';
34
+ var numberTag = tagPrefix + 'Number]';
35
+ var booleanTag = tagPrefix + 'Boolean]';
36
+ var stringTag = tagPrefix + 'String]';
37
+ var dateTag = tagPrefix + 'Date]';
38
+ var regExpTag = tagPrefix + 'RegExp]';
39
+ var symbolTag = tagPrefix + 'Symbol]';
40
+ var errorTag = tagPrefix + 'Error]';
41
+ var arrayBufferTag = tagPrefix + 'ArrayBuffer]';
42
+ var argumentsTag = tagPrefix + 'Arguments]';
43
+ var arrayTag = tagPrefix + 'Array]';
44
+ var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return tagPrefix + item + ']'; });
45
+ var weakSetTag = tagPrefix + 'WeakSet]';
46
+ var blobTag = tagPrefix + 'Blob]';
47
+ var fileTag = tagPrefix + 'File]';
48
+ var domExceptionTag = tagPrefix + 'DOMException]';
49
+ var objectTag = tagPrefix + 'Object]';
50
+ var dataViewTag = tagPrefix + 'DataView]';
51
+ var mapTag = tagPrefix + 'Map]';
52
+ var promiseTag = tagPrefix + 'Promise]';
53
+ var setTag = tagPrefix + 'Set]';
54
+ var weakMapTag = tagPrefix + 'WeakMap]';
55
+ var windowTag = tagPrefix + 'Window]';
55
56
 
56
57
  export { MAX_ARRAY_LENGTH, MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, argumentsTag, arrayBufferTag, arrayProto, arrayProtoSlice, arrayTag, bigIntTag, blobTag, booleanTag, dataViewTag, dateTag, domExceptionTag, errorTag, fileTag, functionProto, functionProtoToString, functionTags, globalExisted, globalThisExisted, mapTag, mathAbs, mathCeil, mathFloor, mathMax, mathMin, mathRandom, nativeUndefined, numberIsFinite, numberIsInteger, numberIsSafeInteger, numberTag, objectGetOwnPropertySymbols, objectGetPrototypeOf, objectKeys, objectProto, objectProtoHasOwnProperty, objectProtoPropertyIsEnumerable, objectProtoToString, objectTag, promiseTag, regExpTag, selfExisted, setTag, stringObject, stringTag, stringUndefined, symbolProto, symbolTag, weakMapTag, weakSetTag, windowTag };
@@ -0,0 +1,15 @@
1
+ var reEscapeChar = /\\(\\)?/g;
2
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
3
+ function stringToPath(value) {
4
+ var result = [];
5
+ if (value.charCodeAt(0) === 46) {
6
+ result.push('');
7
+ }
8
+ value.replace(rePropName, function (match, number, quote, subString) {
9
+ result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);
10
+ return match;
11
+ });
12
+ return result;
13
+ }
14
+
15
+ export { stringToPath as default };
package/es/memoize.js ADDED
@@ -0,0 +1,47 @@
1
+ import eq from './eq.js';
2
+ import { mathCeil } from './internals/native.js';
3
+
4
+ function argsEqual(newArgs, lastArgs) {
5
+ if (newArgs.length !== lastArgs.length) {
6
+ return false;
7
+ }
8
+ for (var i = 0, len = newArgs.length; i < len; i++) {
9
+ if (!eq(newArgs[i], lastArgs[i])) {
10
+ return false;
11
+ }
12
+ }
13
+ return true;
14
+ }
15
+ function memoize(func, options) {
16
+ var opts = options || {};
17
+ var max = mathCeil(opts.max || 0);
18
+ var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual : argsEqual;
19
+ var cache = [];
20
+ function memoized() {
21
+ var _this = this;
22
+ var newArgs = [];
23
+ for (var _i = 0; _i < arguments.length; _i++) {
24
+ newArgs[_i] = arguments[_i];
25
+ }
26
+ var cacheValue = cache.find(function (item) { return item.lastThis === _this && isEqual(item.lastArgs, newArgs); });
27
+ if (cacheValue) {
28
+ return cacheValue.lastReturn;
29
+ }
30
+ var lastReturn = func.apply(this, newArgs);
31
+ if (max > 0 && cache.length >= max) {
32
+ cache.shift();
33
+ }
34
+ cache.push({
35
+ lastArgs: newArgs,
36
+ lastThis: this,
37
+ lastReturn: lastReturn
38
+ });
39
+ return lastReturn;
40
+ }
41
+ memoized.clear = function () {
42
+ cache.length = 0;
43
+ };
44
+ return memoized;
45
+ }
46
+
47
+ export { memoize as default };
package/es/merge.js CHANGED
@@ -51,6 +51,6 @@ function merge(object, source, customizer, getKeys) {
51
51
  if (getKeys === void 0) { getKeys = allKeys; }
52
52
  return baseMerge(object, source, getKeys, customizer);
53
53
  }
54
- merge.NOT_MERGE_ARRAYS = function (objValue, srcValue) { return (isArray(srcValue) ? srcValue : undefined); };
54
+ merge.NOT_MERGE_ARRAYS = function (objValue, srcValue) { return (isArray(srcValue) ? srcValue : nativeUndefined); };
55
55
 
56
56
  export { merge as default };
@@ -0,0 +1,25 @@
1
+ import { __spreadArray, __read } from 'tslib';
2
+ import forEach from './forEach.js';
3
+ import isObjectLike from './isObjectLike.js';
4
+
5
+ function basePathPairs(object, parentPath) {
6
+ if (parentPath === void 0) { parentPath = []; }
7
+ var result = [];
8
+ if (isObjectLike(object)) {
9
+ forEach(object, function (v, k) {
10
+ var currentPath = parentPath.concat([k]);
11
+ if (isObjectLike(v)) {
12
+ result.push.apply(result, __spreadArray([], __read(basePathPairs(v, currentPath)), false));
13
+ }
14
+ else {
15
+ result.push([currentPath, v]);
16
+ }
17
+ });
18
+ }
19
+ return result;
20
+ }
21
+ function pathPairs(object) {
22
+ return basePathPairs(object);
23
+ }
24
+
25
+ export { pathPairs as default };
package/es/set.js ADDED
@@ -0,0 +1,33 @@
1
+ import isIndex from './internals/isIndex.js';
2
+ import { nativeUndefined } from './internals/native.js';
3
+ import isObject from './isObject.js';
4
+ import toPath from './toPath.js';
5
+
6
+ function set(object, path, value, customizer) {
7
+ if (!isObject(object)) {
8
+ return object;
9
+ }
10
+ var paths = toPath(path, object);
11
+ var length = paths.length;
12
+ var lastIndex = length - 1;
13
+ var index = -1;
14
+ var nested = object;
15
+ while (++index < length) {
16
+ var key = paths[index];
17
+ if (index === lastIndex) {
18
+ nested[key] = value;
19
+ }
20
+ else {
21
+ var objValue = nested[key];
22
+ var newValue = customizer ? customizer(objValue, key, nested) : nativeUndefined;
23
+ if (!isObject(newValue)) {
24
+ newValue = isObject(objValue) ? objValue : isIndex(paths[index + 1]) ? [] : {};
25
+ }
26
+ nested[key] = newValue;
27
+ nested = nested[key];
28
+ }
29
+ }
30
+ return object;
31
+ }
32
+
33
+ export { set as default };
package/es/toPath.js ADDED
@@ -0,0 +1,20 @@
1
+ import stringToPath from './internals/stringToPath.js';
2
+ import isArray from './isArray.js';
3
+ import isObject from './isObject.js';
4
+ import isSymbol from './isSymbol.js';
5
+ import toString from './toString.js';
6
+
7
+ function toKey(value) {
8
+ return isSymbol(value) ? value : toString(value);
9
+ }
10
+ function toPath(value, object) {
11
+ if (isArray(value)) {
12
+ return value.map(toKey);
13
+ }
14
+ if (isSymbol(value) || (typeof value === 'string' && isObject(object) && value in object)) {
15
+ return [value];
16
+ }
17
+ return stringToPath(toString(value));
18
+ }
19
+
20
+ export { toPath as default };
package/es/unset.js ADDED
@@ -0,0 +1,15 @@
1
+ import get from './get.js';
2
+ import isNil from './isNil.js';
3
+ import nth from './nth.js';
4
+ import toPath from './toPath.js';
5
+
6
+ function unset(object, path) {
7
+ if (isNil(object)) {
8
+ return true;
9
+ }
10
+ var paths = toPath(path, object);
11
+ var parent = paths.length < 2 ? object : get(object, paths.slice(0, -1));
12
+ return isNil(parent) ? true : delete parent[nth(paths, -1)];
13
+ }
14
+
15
+ export { unset as default };
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var isIndex = require('./internals/isIndex.js');
5
+ var native = require('./internals/native.js');
6
+ var isArray = require('./isArray.js');
7
+ var isObject = require('./isObject.js');
8
+ var set = require('./set.js');
9
+
10
+ function fromPathPairs(value, customizer) {
11
+ var valueIsArray = isArray(value);
12
+ var firstPairPath = valueIsArray && isArray(value[0]) && isArray(value[0][0]) ? value[0][0] : [];
13
+ var firstNode = customizer ? customizer(native.nativeUndefined, firstPairPath[0], native.nativeUndefined) : native.nativeUndefined;
14
+ var result = isObject(firstNode) ? firstNode : isIndex(firstPairPath[0]) ? [] : {};
15
+ var length = valueIsArray ? value.length : 0;
16
+ var index = -1;
17
+ while (++index < length) {
18
+ var pathPair = value[index];
19
+ if (isArray(pathPair)) {
20
+ var _a = tslib.__read(pathPair, 2), paths = _a[0], val = _a[1];
21
+ set(result, paths, val, customizer);
22
+ }
23
+ }
24
+ return result;
25
+ }
26
+
27
+ module.exports = fromPathPairs;
package/lib/get.js ADDED
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var native = require('./internals/native.js');
4
+ var isNil = require('./isNil.js');
5
+ var isUndefined = require('./isUndefined.js');
6
+ var toPath = require('./toPath.js');
7
+
8
+ function baseGet(object, key) {
9
+ var paths = toPath(key, object);
10
+ var length = paths.length;
11
+ var index = 0;
12
+ while (!isNil(object) && index < length) {
13
+ object = object[paths[index++]];
14
+ }
15
+ return index && index === length ? object : native.nativeUndefined;
16
+ }
17
+ function get(object, key, defaultValue) {
18
+ var result = isNil(object) ? native.nativeUndefined : baseGet(object, key);
19
+ return isUndefined(result) ? defaultValue : result;
20
+ }
21
+
22
+ module.exports = get;
package/lib/guard.js CHANGED
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var native = require('./internals/native.js');
3
4
  var isPromiseLike = require('./isPromiseLike.js');
4
5
 
5
6
  var guard = function (fn, shouldGuard) {
@@ -7,7 +8,7 @@ var guard = function (fn, shouldGuard) {
7
8
  if (shouldGuard && !shouldGuard(err)) {
8
9
  throw err;
9
10
  }
10
- return undefined;
11
+ return native.nativeUndefined;
11
12
  };
12
13
  try {
13
14
  var result = fn();
package/lib/index.js CHANGED
@@ -32,6 +32,7 @@ var before = require('./before.js');
32
32
  var curry = require('./curry.js');
33
33
  var debounce = require('./debounce.js');
34
34
  var delay = require('./delay.js');
35
+ var memoize = require('./memoize.js');
35
36
  var negate = require('./negate.js');
36
37
  var once = require('./once.js');
37
38
  var partial = require('./partial.js');
@@ -88,6 +89,8 @@ var randomInt = require('./randomInt.js');
88
89
  var allKeys = require('./allKeys.js');
89
90
  var allKeysIn = require('./allKeysIn.js');
90
91
  var findKey = require('./findKey.js');
92
+ var fromPathPairs = require('./fromPathPairs.js');
93
+ var get = require('./get.js');
91
94
  var invert = require('./invert.js');
92
95
  var keys = require('./keys.js');
93
96
  var keysIn = require('./keysIn.js');
@@ -97,6 +100,9 @@ var omit = require('./omit.js');
97
100
  var omitBy = require('./omitBy.js');
98
101
  var pick = require('./pick.js');
99
102
  var pickBy = require('./pickBy.js');
103
+ var pathPairs = require('./pathPairs.js');
104
+ var set = require('./set.js');
105
+ var unset = require('./unset.js');
100
106
  var camelCase = require('./camelCase.js');
101
107
  var capitalize = require('./capitalize.js');
102
108
  var escape = require('./escape.js');
@@ -133,6 +139,7 @@ var toFinite = require('./toFinite.js');
133
139
  var toInteger = require('./toInteger.js');
134
140
  var toLength = require('./toLength.js');
135
141
  var toNumber = require('./toNumber.js');
142
+ var toPath = require('./toPath.js');
136
143
  var toSafeInteger = require('./toSafeInteger.js');
137
144
  var toString = require('./toString.js');
138
145
  var tryit = require('./tryit.js');
@@ -175,6 +182,7 @@ exports.before = before;
175
182
  exports.curry = curry;
176
183
  exports.debounce = debounce;
177
184
  exports.delay = delay;
185
+ exports.memoize = memoize;
178
186
  exports.negate = negate;
179
187
  exports.once = once;
180
188
  exports.partial = partial;
@@ -231,6 +239,8 @@ exports.randomInt = randomInt;
231
239
  exports.allKeys = allKeys;
232
240
  exports.allKeysIn = allKeysIn;
233
241
  exports.findKey = findKey;
242
+ exports.fromPathPairs = fromPathPairs;
243
+ exports.get = get;
234
244
  exports.invert = invert;
235
245
  exports.keys = keys;
236
246
  exports.keysIn = keysIn;
@@ -240,6 +250,9 @@ exports.omit = omit;
240
250
  exports.omitBy = omitBy;
241
251
  exports.pick = pick;
242
252
  exports.pickBy = pickBy;
253
+ exports.pathPairs = pathPairs;
254
+ exports.set = set;
255
+ exports.unset = unset;
243
256
  exports.camelCase = camelCase;
244
257
  exports.capitalize = capitalize;
245
258
  exports.escape = escape;
@@ -276,6 +289,7 @@ exports.toFinite = toFinite;
276
289
  exports.toInteger = toInteger;
277
290
  exports.toLength = toLength;
278
291
  exports.toNumber = toNumber;
292
+ exports.toPath = toPath;
279
293
  exports.toSafeInteger = toSafeInteger;
280
294
  exports.toString = toString;
281
295
  exports.tryit = tryit;
@@ -4,7 +4,7 @@ var isObjectLike = require('../isObjectLike.js');
4
4
  var getTag = require('./getTag.js');
5
5
  var native = require('./native.js');
6
6
 
7
- var VERSION = "1.15.0";
7
+ var VERSION = "1.17.0";
8
8
  var isBrowser = typeof window !== native.stringUndefined && isObjectLike(window) && typeof document !== native.stringUndefined && isObjectLike(document) && window.document === document;
9
9
  var supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
10
10
  var FUNC_ERROR_TEXT = 'Expected a function';
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var isLength = require('../isLength.js');
4
+ var toNumber = require('../toNumber.js');
5
+
6
+ function isIndex(value) {
7
+ var type = typeof value;
8
+ if (type === 'string' && value) {
9
+ value = toNumber(value);
10
+ }
11
+ return isLength(value);
12
+ }
13
+
14
+ module.exports = isIndex;
@@ -31,29 +31,30 @@ var selfExisted = typeof self === stringObject && self;
31
31
  var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
32
32
  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
33
33
  var MAX_ARRAY_LENGTH = 4294967295;
34
- var bigIntTag = '[object BigInt]';
35
- var numberTag = '[object Number]';
36
- var booleanTag = '[object Boolean]';
37
- var stringTag = '[object String]';
38
- var dateTag = '[object Date]';
39
- var regExpTag = '[object RegExp]';
40
- var symbolTag = '[object Symbol]';
41
- var errorTag = '[object Error]';
42
- var arrayBufferTag = '[object ArrayBuffer]';
43
- var argumentsTag = '[object Arguments]';
44
- var arrayTag = '[object Array]';
45
- var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return '[object ' + item + ']'; });
46
- var weakSetTag = '[object WeakSet]';
47
- var blobTag = '[object Blob]';
48
- var fileTag = '[object File]';
49
- var domExceptionTag = '[object DOMException]';
50
- var objectTag = '[object Object]';
51
- var dataViewTag = '[object DataView]';
52
- var mapTag = '[object Map]';
53
- var promiseTag = '[object Promise]';
54
- var setTag = '[object Set]';
55
- var weakMapTag = '[object WeakMap]';
56
- var windowTag = '[object Window]';
34
+ var tagPrefix = '[object ';
35
+ var bigIntTag = tagPrefix + 'BigInt]';
36
+ var numberTag = tagPrefix + 'Number]';
37
+ var booleanTag = tagPrefix + 'Boolean]';
38
+ var stringTag = tagPrefix + 'String]';
39
+ var dateTag = tagPrefix + 'Date]';
40
+ var regExpTag = tagPrefix + 'RegExp]';
41
+ var symbolTag = tagPrefix + 'Symbol]';
42
+ var errorTag = tagPrefix + 'Error]';
43
+ var arrayBufferTag = tagPrefix + 'ArrayBuffer]';
44
+ var argumentsTag = tagPrefix + 'Arguments]';
45
+ var arrayTag = tagPrefix + 'Array]';
46
+ var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return tagPrefix + item + ']'; });
47
+ var weakSetTag = tagPrefix + 'WeakSet]';
48
+ var blobTag = tagPrefix + 'Blob]';
49
+ var fileTag = tagPrefix + 'File]';
50
+ var domExceptionTag = tagPrefix + 'DOMException]';
51
+ var objectTag = tagPrefix + 'Object]';
52
+ var dataViewTag = tagPrefix + 'DataView]';
53
+ var mapTag = tagPrefix + 'Map]';
54
+ var promiseTag = tagPrefix + 'Promise]';
55
+ var setTag = tagPrefix + 'Set]';
56
+ var weakMapTag = tagPrefix + 'WeakMap]';
57
+ var windowTag = tagPrefix + 'Window]';
57
58
 
58
59
  exports.MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH;
59
60
  exports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var reEscapeChar = /\\(\\)?/g;
4
+ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
5
+ function stringToPath(value) {
6
+ var result = [];
7
+ if (value.charCodeAt(0) === 46) {
8
+ result.push('');
9
+ }
10
+ value.replace(rePropName, function (match, number, quote, subString) {
11
+ result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);
12
+ return match;
13
+ });
14
+ return result;
15
+ }
16
+
17
+ module.exports = stringToPath;
package/lib/memoize.js ADDED
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ var eq = require('./eq.js');
4
+ var native = require('./internals/native.js');
5
+
6
+ function argsEqual(newArgs, lastArgs) {
7
+ if (newArgs.length !== lastArgs.length) {
8
+ return false;
9
+ }
10
+ for (var i = 0, len = newArgs.length; i < len; i++) {
11
+ if (!eq(newArgs[i], lastArgs[i])) {
12
+ return false;
13
+ }
14
+ }
15
+ return true;
16
+ }
17
+ function memoize(func, options) {
18
+ var opts = options || {};
19
+ var max = native.mathCeil(opts.max || 0);
20
+ var isEqual = typeof opts.isEqual === 'function' ? opts.isEqual : argsEqual;
21
+ var cache = [];
22
+ function memoized() {
23
+ var _this = this;
24
+ var newArgs = [];
25
+ for (var _i = 0; _i < arguments.length; _i++) {
26
+ newArgs[_i] = arguments[_i];
27
+ }
28
+ var cacheValue = cache.find(function (item) { return item.lastThis === _this && isEqual(item.lastArgs, newArgs); });
29
+ if (cacheValue) {
30
+ return cacheValue.lastReturn;
31
+ }
32
+ var lastReturn = func.apply(this, newArgs);
33
+ if (max > 0 && cache.length >= max) {
34
+ cache.shift();
35
+ }
36
+ cache.push({
37
+ lastArgs: newArgs,
38
+ lastThis: this,
39
+ lastReturn: lastReturn
40
+ });
41
+ return lastReturn;
42
+ }
43
+ memoized.clear = function () {
44
+ cache.length = 0;
45
+ };
46
+ return memoized;
47
+ }
48
+
49
+ module.exports = memoize;
package/lib/merge.js CHANGED
@@ -53,6 +53,6 @@ function merge(object, source, customizer, getKeys) {
53
53
  if (getKeys === void 0) { getKeys = allKeys; }
54
54
  return baseMerge(object, source, getKeys, customizer);
55
55
  }
56
- merge.NOT_MERGE_ARRAYS = function (objValue, srcValue) { return (isArray(srcValue) ? srcValue : undefined); };
56
+ merge.NOT_MERGE_ARRAYS = function (objValue, srcValue) { return (isArray(srcValue) ? srcValue : native.nativeUndefined); };
57
57
 
58
58
  module.exports = merge;