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.
- package/README.md +8 -0
- package/dist/ut2.js +199 -26
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/fromPathPairs.js +25 -0
- package/es/get.js +20 -0
- package/es/guard.js +2 -1
- package/es/index.js +7 -0
- package/es/internals/helpers.js +2 -2
- package/es/internals/isEqualDeep.js +1 -1
- package/es/internals/isIndex.js +12 -0
- package/es/internals/native.js +24 -23
- package/es/internals/stringToPath.js +15 -0
- package/es/memoize.js +47 -0
- package/es/merge.js +1 -1
- package/es/pathPairs.js +25 -0
- package/es/set.js +33 -0
- package/es/toPath.js +20 -0
- package/es/unset.js +15 -0
- package/lib/fromPathPairs.js +27 -0
- package/lib/get.js +22 -0
- package/lib/guard.js +2 -1
- package/lib/index.js +14 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/internals/isIndex.js +14 -0
- package/lib/internals/native.js +24 -23
- package/lib/internals/stringToPath.js +17 -0
- package/lib/memoize.js +49 -0
- package/lib/merge.js +1 -1
- package/lib/pathPairs.js +27 -0
- package/lib/set.js +35 -0
- package/lib/toPath.js +22 -0
- package/lib/unset.js +17 -0
- package/package.json +26 -29
- package/types/camelCase.d.ts +1 -1
- package/types/ceil.d.ts +1 -1
- package/types/compact.d.ts +1 -1
- package/types/eq.d.ts +1 -1
- package/types/escape.d.ts +1 -1
- package/types/escapeRegExp.d.ts +1 -1
- package/types/floor.d.ts +1 -1
- package/types/fromPathPairs.d.ts +42 -0
- package/types/get.d.ts +21 -0
- package/types/index.d.ts +7 -0
- package/types/internals/isIndex.d.ts +17 -0
- package/types/internals/native.d.ts +25 -25
- package/types/internals/root.d.ts +1 -1
- package/types/internals/stringToPath.d.ts +9 -0
- package/types/internals/types.d.ts +1 -0
- package/types/invert.d.ts +1 -1
- package/types/isBlob.d.ts +2 -2
- package/types/isFile.d.ts +1 -1
- package/types/isLength.d.ts +1 -1
- package/types/isObject.d.ts +1 -1
- package/types/isTypedArray.d.ts +1 -1
- package/types/kebabCase.d.ts +1 -1
- package/types/memoize.d.ts +50 -0
- package/types/merge.d.ts +1 -1
- package/types/mergeObject.d.ts +1 -1
- package/types/move.d.ts +1 -1
- package/types/omitBy.d.ts +1 -1
- package/types/orderBy.d.ts +1 -1
- package/types/partition.d.ts +2 -2
- package/types/pascalCase.d.ts +1 -1
- package/types/pathPairs.d.ts +30 -0
- package/types/pickBy.d.ts +1 -1
- package/types/round.d.ts +1 -1
- package/types/set.d.ts +24 -0
- package/types/snakeCase.d.ts +1 -1
- package/types/toLength.d.ts +1 -1
- package/types/toPath.d.ts +17 -0
- package/types/unset.d.ts +20 -0
- 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
|
|
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';
|
package/es/internals/helpers.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import isObjectLike from '../isObjectLike.js';
|
|
2
2
|
import getTag from './getTag.js';
|
|
3
|
-
import { argumentsTag,
|
|
3
|
+
import { argumentsTag, functionProtoToString, stringUndefined } from './native.js';
|
|
4
4
|
|
|
5
|
-
var VERSION = "1.
|
|
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,
|
|
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 };
|
package/es/internals/native.js
CHANGED
|
@@ -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
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
var
|
|
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 :
|
|
54
|
+
merge.NOT_MERGE_ARRAYS = function (objValue, srcValue) { return (isArray(srcValue) ? srcValue : nativeUndefined); };
|
|
55
55
|
|
|
56
56
|
export { merge as default };
|
package/es/pathPairs.js
ADDED
|
@@ -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
|
|
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;
|
package/lib/internals/helpers.js
CHANGED
|
@@ -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.
|
|
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;
|
package/lib/internals/native.js
CHANGED
|
@@ -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
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
54
|
-
var
|
|
55
|
-
var
|
|
56
|
-
var
|
|
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 :
|
|
56
|
+
merge.NOT_MERGE_ARRAYS = function (objValue, srcValue) { return (isArray(srcValue) ? srcValue : native.nativeUndefined); };
|
|
57
57
|
|
|
58
58
|
module.exports = merge;
|