lodash-rails 4.13.1 → 4.14.1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.core.js +205 -212
- data/vendor/assets/javascripts/lodash.core.min.js +23 -23
- data/vendor/assets/javascripts/lodash.js +807 -604
- data/vendor/assets/javascripts/lodash.min.js +124 -121
- metadata +2 -2
@@ -3,26 +3,26 @@
|
|
3
3
|
* lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE
|
4
4
|
* Build: `lodash core -o ./dist/lodash.core.js`
|
5
5
|
*/
|
6
|
-
;(function(){function n(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function t(n){return
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
}function O(n,t){return t
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
}return false}function
|
15
|
-
return n&&n.length?n[0]:
|
16
|
-
return t
|
17
|
-
}function L(n){
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
return n
|
22
|
-
|
23
|
-
var r=0;return t=
|
24
|
-
|
25
|
-
|
26
|
-
return
|
27
|
-
var t=(/^(?:replace|split)$/.test(n)?String.prototype:
|
28
|
-
return
|
6
|
+
;(function(){function n(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return m(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r,e){return n===Z||J(n,an[r])&&!ln.call(e,r)?t:n;
|
7
|
+
}function f(n){return V(n)?vn(n):{}}function a(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(Z,r)},t)}function l(n,t){var r=true;return jn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function p(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===Z?i===i:r(i,c)))var c=i,f=o}return f}function s(n,t){var r=[];return jn(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function h(n,r,e,u,o){var i=-1,c=n.length;for(e||(e=I),o||(o=[]);++i<c;){
|
8
|
+
var f=n[i];0<r&&e(f)?1<r?h(f,r-1,e,u,o):t(o,f):u||(o[o.length]=f)}return o}function v(n,t){return n&&dn(n,t,Dn)}function b(n,t){return s(t,function(t){return U(n[t])})}function y(n,t){return n>t}function g(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:_(n,t,g,r,e,u))}function _(n,t,r,e,u,o){var i=kn(n),c=kn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a);
|
9
|
+
var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=R(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"),
|
10
|
+
f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=D(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function j(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?O:r)(n)}function d(n,t){return n<t}function m(n,t){var r=-1,e=P(n)?Array(n.length):[];return jn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function O(n){var t=Dn(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&g(n[u],r[u],Z,3)))return false}return true}}
|
11
|
+
function x(n,t){return n=Object(n),C(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function A(n){var t;return t=_n(t===Z?n.length-1:t,0),function(){for(var r=arguments,e=-1,u=_n(r.length-t,0),o=Array(u);++e<u;)o[e]=r[t+e];for(e=-1,u=Array(t+1);++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function E(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function w(n){return E(n,0,n.length)}function k(n,t){var r;return jn(n,function(n,e,u){
|
12
|
+
return r=t(n,e,u),!r}),!!r}function N(n,r){return C(r,function(n,r){return r.func.apply(r.thisArg,t([n],r.args))},n)}function S(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=e?e(r[i],n[i],i,r,n):Z,f=r,a=i,i=c===Z?n[i]:c,c=f[a];ln.call(f,a)&&J(c,i)&&(i!==Z||a in f)||(f[a]=i)}return r}function T(n){return A(function(t,r){var e=-1,u=r.length,o=1<u?r[u-1]:Z,o=3<n.length&&typeof o=="function"?(u--,o):Z;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function F(n){return function(){
|
13
|
+
var t=arguments,r=f(n.prototype),t=n.apply(r,t);return V(t)?t:r}}function B(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==un&&this instanceof e?u:n;++c<f;)a[c]=r[c];for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=F(n);return e}function R(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(2&u&&c>i))return false;for(var c=-1,f=true,a=1&u?[]:Z;++c<i;){var l=n[c],p=t[c];if(void 0!==Z){
|
14
|
+
f=false;break}if(a){if(!k(t,function(n,t){if(!$(a,t)&&(l===n||r(l,n,e,u,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!r(l,p,e,u,o)){f=false;break}}return f}function D(n,t,r,e,u,o){var i=2&u,c=Dn(n),f=c.length,a=Dn(t).length;if(f!=a&&!i)return false;for(var l=f;l--;){var p=c[l];if(!(i?p in t:ln.call(t,p)))return false}for(a=true;++l<f;){var p=c[l],s=n[p],h=t[p];if(void 0!==Z||s!==h&&!r(s,h,e,u,o)){a=false;break}i||(i="constructor"==p)}return a&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(a=false)),
|
15
|
+
a}function I(n){return kn(n)||M(n)}function q(n){return n&&n.length?n[0]:Z}function $(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function z(n,t){return jn(n,j(t))}function C(n,t,r){return e(n,j(t),r,3>arguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Nn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){
|
16
|
+
return n===t||n!==n&&t!==t}function M(n){return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=On(n),t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n);
|
17
|
+
}function L(n){return typeof n=="string"||!kn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?u(n,Dn(n)):[]}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=b(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=b(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);return jn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=w(this.__actions__)).push({
|
18
|
+
func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&",
|
19
|
+
"<":"<",">":">",'"':""","'":"'","`":"`"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=Object.keys,_n=Math.max;i.prototype=f(o.prototype),i.prototype.constructor=i;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(v),dn=function(n){return function(t,r,e){var u=-1,o=Object(t);
|
20
|
+
e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}(),mn=function(n,t){return function(r){return n(t(r))}}(gn,Object),On=r("length"),xn=String,An=function(n){return function(t,r,e){var u=Object(t);if(!P(t)){var o=j(r);t=Dn(t),r=function(n){return o(u[n],n,u)}}return r=n(t,r,e),-1<r?u[o?t[r]:r]:Z}}(function(n,t,r){var e=n?n.length:0;if(!e)return-1;r=null==r?0:Nn(r),0>r&&(r=_n(e+r,0));n:{for(t=j(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),gn=A(function(n,t,r){
|
21
|
+
return B(n,t,r)}),En=A(function(n,t){return a(n,1,t)}),wn=A(function(n,t,r){return a(n,Sn(t)||0,r)}),kn=Array.isArray,Nn=Number,Sn=Number,Tn=T(function(n,t){S(t,Dn(t),n)}),Fn=T(function(t,r){S(r,n(r),t)}),Bn=T(function(t,r,e,u){S(r,n(r),t,u)}),Rn=A(function(n){return n.push(Z,c),Bn.apply(Z,n)}),Dn=mn,mn=A(function(n,t){return null==n?{}:x(n,m(h(t,1),xn))});o.assignIn=Fn,o.before=G,o.bind=gn,o.chain=function(n){return n=o(n),n.__chain__=true,n},o.compact=function(n){return s(n,Boolean)},o.concat=function(){
|
22
|
+
for(var n=arguments.length,r=Array(n?n-1:0),e=arguments[0],u=n;u--;)r[u-1]=arguments[u];return n?t(kn(e)?w(e):[e],h(r,1)):[]},o.create=function(n,t){var r=f(n);return t?Tn(r,t):r},o.defaults=Rn,o.defer=En,o.delay=wn,o.filter=function(n,t){return s(n,j(t))},o.flatten=function(n){return n&&n.length?h(n,1):[]},o.flattenDeep=function(n){return n&&n.length?h(n,nn):[]},o.iteratee=j,o.keys=Dn,o.map=function(n,t){return m(n,j(t))},o.matches=function(n){return O(Tn({},n))},o.mixin=Y,o.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");
|
23
|
+
return function(){return!n.apply(this,arguments)}},o.once=function(n){return G(2,n)},o.pick=mn,o.slice=function(n,t,r){var e=n?n.length:0;return r=r===Z?e:+r,e?E(n,null==t?0:+t,r):[]},o.sortBy=function(n,t){var e=0;return t=j(t),m(m(n,function(n,r,u){return{value:n,index:e++,criteria:t(n,r,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==Z,o=null===r,i=r===r,c=e!==Z,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r<e||f&&u&&i||!c&&i||!a){r=-1;
|
24
|
+
break n}}r=0}return r||n.index-t.index}),r("value"))},o.tap=function(n,t){return t(n),n},o.thru=function(n,t){return t(n)},o.toArray=function(n){return P(n)?n.length?w(n):[]:W(n)},o.values=W,o.extend=Fn,Y(o,o),o.clone=function(n){return V(n)?kn(n)?w(n):S(n,Dn(n)):n},o.escape=function(n){return(n=Q(n))&&rn.test(n)?n.replace(tn,cn):n},o.every=function(n,t,r){return t=r?Z:t,l(n,j(t))},o.find=An,o.forEach=z,o.has=function(n,t){return null!=n&&ln.call(n,t)},o.head=q,o.identity=X,o.indexOf=$,o.isArguments=M,
|
25
|
+
o.isArray=kn,o.isBoolean=function(n){return true===n||false===n||H(n)&&"[object Boolean]"==sn.call(n)},o.isDate=function(n){return H(n)&&"[object Date]"==sn.call(n)},o.isEmpty=function(n){return P(n)&&(kn(n)||L(n)||U(n.splice)||M(n))?!n.length:!Dn(n).length},o.isEqual=function(n,t){return g(n,t)},o.isFinite=function(n){return typeof n=="number"&&yn(n)},o.isFunction=U,o.isNaN=function(n){return K(n)&&n!=+n},o.isNull=function(n){return null===n},o.isNumber=K,o.isObject=V,o.isRegExp=function(n){return V(n)&&"[object RegExp]"==sn.call(n);
|
26
|
+
},o.isString=L,o.isUndefined=function(n){return n===Z},o.last=function(n){var t=n?n.length:0;return t?n[t-1]:Z},o.max=function(n){return n&&n.length?p(n,X,y):Z},o.min=function(n){return n&&n.length?p(n,X,d):Z},o.noConflict=function(){return un._===this&&(un._=hn),this},o.noop=function(){},o.reduce=C,o.result=function(n,t,r){return t=null==n?Z:n[t],t===Z&&(t=r),U(t)?t.call(n):t},o.size=function(n){return null==n?0:(n=P(n)?n:Dn(n),n.length)},o.some=function(n,t,r){return t=r?Z:t,k(n,j(t))},o.uniqueId=function(n){
|
27
|
+
var t=++pn;return Q(n)+t},o.each=z,o.first=q,Y(o,function(){var n={};return v(o,function(t,r){ln.call(o.prototype,r)||(n[r]=t)}),n}(),{chain:false}),o.VERSION="4.14.1",jn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:fn)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);o.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(kn(u)?u:[],n);
|
28
|
+
}return this[r](function(r){return t.apply(kn(r)?r:[],n)})}}),o.prototype.toJSON=o.prototype.valueOf=o.prototype.value=function(){return N(this.__wrapped__,this.__actions__)},typeof define=="function"&&typeof define.amd=="object"&&define.amd?(un._=o, define(function(){return o})):on?((on.exports=o)._=o,en._=o):un._=o}).call(this);
|
@@ -12,7 +12,7 @@
|
|
12
12
|
var undefined;
|
13
13
|
|
14
14
|
/** Used as the semantic version number. */
|
15
|
-
var VERSION = '4.
|
15
|
+
var VERSION = '4.14.1';
|
16
16
|
|
17
17
|
/** Used as the size to enable large array optimizations. */
|
18
18
|
var LARGE_ARRAY_SIZE = 200;
|
@@ -26,7 +26,7 @@
|
|
26
26
|
/** Used as the internal argument placeholder. */
|
27
27
|
var PLACEHOLDER = '__lodash_placeholder__';
|
28
28
|
|
29
|
-
/** Used to compose bitmasks for
|
29
|
+
/** Used to compose bitmasks for function metadata. */
|
30
30
|
var BIND_FLAG = 1,
|
31
31
|
BIND_KEY_FLAG = 2,
|
32
32
|
CURRY_BOUND_FLAG = 4,
|
@@ -66,6 +66,19 @@
|
|
66
66
|
MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
|
67
67
|
HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
|
68
68
|
|
69
|
+
/** Used to associate wrap methods with their bit flags. */
|
70
|
+
var wrapFlags = [
|
71
|
+
['ary', ARY_FLAG],
|
72
|
+
['bind', BIND_FLAG],
|
73
|
+
['bindKey', BIND_KEY_FLAG],
|
74
|
+
['curry', CURRY_FLAG],
|
75
|
+
['curryRight', CURRY_RIGHT_FLAG],
|
76
|
+
['flip', FLIP_FLAG],
|
77
|
+
['partial', PARTIAL_FLAG],
|
78
|
+
['partialRight', PARTIAL_RIGHT_FLAG],
|
79
|
+
['rearg', REARG_FLAG]
|
80
|
+
];
|
81
|
+
|
69
82
|
/** `Object#toString` result references. */
|
70
83
|
var argsTag = '[object Arguments]',
|
71
84
|
arrayTag = '[object Array]',
|
@@ -116,7 +129,8 @@
|
|
116
129
|
/** Used to match property names within property paths. */
|
117
130
|
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
|
118
131
|
reIsPlainProp = /^\w*$/,
|
119
|
-
|
132
|
+
reLeadingDot = /^\./,
|
133
|
+
rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
|
120
134
|
|
121
135
|
/**
|
122
136
|
* Used to match `RegExp`
|
@@ -130,6 +144,11 @@
|
|
130
144
|
reTrimStart = /^\s+/,
|
131
145
|
reTrimEnd = /\s+$/;
|
132
146
|
|
147
|
+
/** Used to match wrap detail comments. */
|
148
|
+
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
|
149
|
+
reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
|
150
|
+
reSplitDetails = /,? & /;
|
151
|
+
|
133
152
|
/** Used to match non-compound words composed of alphanumeric characters. */
|
134
153
|
var reBasicWord = /[a-zA-Z0-9]+/g;
|
135
154
|
|
@@ -249,7 +268,7 @@
|
|
249
268
|
'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
|
250
269
|
'Promise', 'Reflect', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError',
|
251
270
|
'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
|
252
|
-
'_', 'isFinite', 'parseInt', 'setTimeout'
|
271
|
+
'_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
|
253
272
|
];
|
254
273
|
|
255
274
|
/** Used to make template sourceURLs easier to identify. */
|
@@ -342,26 +361,41 @@
|
|
342
361
|
var freeParseFloat = parseFloat,
|
343
362
|
freeParseInt = parseInt;
|
344
363
|
|
364
|
+
/** Detect free variable `global` from Node.js. */
|
365
|
+
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
|
366
|
+
|
367
|
+
/** Detect free variable `self`. */
|
368
|
+
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
|
369
|
+
|
370
|
+
/** Used as a reference to the global object. */
|
371
|
+
var root = freeGlobal || freeSelf || Function('return this')();
|
372
|
+
|
345
373
|
/** Detect free variable `exports`. */
|
346
|
-
var freeExports = typeof exports == 'object' && exports;
|
374
|
+
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
|
347
375
|
|
348
376
|
/** Detect free variable `module`. */
|
349
|
-
var freeModule = freeExports && typeof module == 'object' && module;
|
377
|
+
var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
|
350
378
|
|
351
379
|
/** Detect the popular CommonJS extension `module.exports`. */
|
352
380
|
var moduleExports = freeModule && freeModule.exports === freeExports;
|
353
381
|
|
354
|
-
/** Detect free variable `
|
355
|
-
var
|
382
|
+
/** Detect free variable `process` from Node.js. */
|
383
|
+
var freeProcess = moduleExports && freeGlobal.process;
|
356
384
|
|
357
|
-
/**
|
358
|
-
var
|
385
|
+
/** Used to access faster Node.js helpers. */
|
386
|
+
var nodeUtil = (function() {
|
387
|
+
try {
|
388
|
+
return freeProcess && freeProcess.binding('util');
|
389
|
+
} catch (e) {}
|
390
|
+
}());
|
359
391
|
|
360
|
-
|
361
|
-
var
|
362
|
-
|
363
|
-
|
364
|
-
|
392
|
+
/* Node.js helper references. */
|
393
|
+
var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
|
394
|
+
nodeIsDate = nodeUtil && nodeUtil.isDate,
|
395
|
+
nodeIsMap = nodeUtil && nodeUtil.isMap,
|
396
|
+
nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
|
397
|
+
nodeIsSet = nodeUtil && nodeUtil.isSet,
|
398
|
+
nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
|
365
399
|
|
366
400
|
/*--------------------------------------------------------------------------*/
|
367
401
|
|
@@ -374,7 +408,7 @@
|
|
374
408
|
* @returns {Object} Returns `map`.
|
375
409
|
*/
|
376
410
|
function addMapEntry(map, pair) {
|
377
|
-
// Don't return `
|
411
|
+
// Don't return `map.set` because it's not chainable in IE 11.
|
378
412
|
map.set(pair[0], pair[1]);
|
379
413
|
return map;
|
380
414
|
}
|
@@ -388,6 +422,7 @@
|
|
388
422
|
* @returns {Object} Returns `set`.
|
389
423
|
*/
|
390
424
|
function addSetEntry(set, value) {
|
425
|
+
// Don't return `set.add` because it's not chainable in IE 11.
|
391
426
|
set.add(value);
|
392
427
|
return set;
|
393
428
|
}
|
@@ -403,8 +438,7 @@
|
|
403
438
|
* @returns {*} Returns the result of `func`.
|
404
439
|
*/
|
405
440
|
function apply(func, thisArg, args) {
|
406
|
-
|
407
|
-
switch (length) {
|
441
|
+
switch (args.length) {
|
408
442
|
case 0: return func.call(thisArg);
|
409
443
|
case 1: return func.call(thisArg, args[0]);
|
410
444
|
case 2: return func.call(thisArg, args[0], args[1]);
|
@@ -721,7 +755,7 @@
|
|
721
755
|
*/
|
722
756
|
function baseIndexOf(array, value, fromIndex) {
|
723
757
|
if (value !== value) {
|
724
|
-
return
|
758
|
+
return baseFindIndex(array, baseIsNaN, fromIndex);
|
725
759
|
}
|
726
760
|
var index = fromIndex - 1,
|
727
761
|
length = array.length;
|
@@ -756,6 +790,17 @@
|
|
756
790
|
return -1;
|
757
791
|
}
|
758
792
|
|
793
|
+
/**
|
794
|
+
* The base implementation of `_.isNaN` without support for number objects.
|
795
|
+
*
|
796
|
+
* @private
|
797
|
+
* @param {*} value The value to check.
|
798
|
+
* @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
|
799
|
+
*/
|
800
|
+
function baseIsNaN(value) {
|
801
|
+
return value !== value;
|
802
|
+
}
|
803
|
+
|
759
804
|
/**
|
760
805
|
* The base implementation of `_.mean` and `_.meanBy` without support for
|
761
806
|
* iteratee shorthands.
|
@@ -770,6 +815,32 @@
|
|
770
815
|
return length ? (baseSum(array, iteratee) / length) : NAN;
|
771
816
|
}
|
772
817
|
|
818
|
+
/**
|
819
|
+
* The base implementation of `_.property` without support for deep paths.
|
820
|
+
*
|
821
|
+
* @private
|
822
|
+
* @param {string} key The key of the property to get.
|
823
|
+
* @returns {Function} Returns the new accessor function.
|
824
|
+
*/
|
825
|
+
function baseProperty(key) {
|
826
|
+
return function(object) {
|
827
|
+
return object == null ? undefined : object[key];
|
828
|
+
};
|
829
|
+
}
|
830
|
+
|
831
|
+
/**
|
832
|
+
* The base implementation of `_.propertyOf` without support for deep paths.
|
833
|
+
*
|
834
|
+
* @private
|
835
|
+
* @param {Object} object The object to query.
|
836
|
+
* @returns {Function} Returns the new accessor function.
|
837
|
+
*/
|
838
|
+
function basePropertyOf(object) {
|
839
|
+
return function(key) {
|
840
|
+
return object == null ? undefined : object[key];
|
841
|
+
};
|
842
|
+
}
|
843
|
+
|
773
844
|
/**
|
774
845
|
* The base implementation of `_.reduce` and `_.reduceRight`, without support
|
775
846
|
* for iteratee shorthands, which iterates over `collection` using `eachFunc`.
|
@@ -870,7 +941,7 @@
|
|
870
941
|
}
|
871
942
|
|
872
943
|
/**
|
873
|
-
* The base implementation of `_.unary` without support for storing
|
944
|
+
* The base implementation of `_.unary` without support for storing metadata.
|
874
945
|
*
|
875
946
|
* @private
|
876
947
|
* @param {Function} func The function to cap arguments for.
|
@@ -943,17 +1014,6 @@
|
|
943
1014
|
return index;
|
944
1015
|
}
|
945
1016
|
|
946
|
-
/**
|
947
|
-
* Checks if `value` is a global object.
|
948
|
-
*
|
949
|
-
* @private
|
950
|
-
* @param {*} value The value to check.
|
951
|
-
* @returns {null|Object} Returns `value` if it's a global object, else `null`.
|
952
|
-
*/
|
953
|
-
function checkGlobal(value) {
|
954
|
-
return (value && value.Object === Object) ? value : null;
|
955
|
-
}
|
956
|
-
|
957
1017
|
/**
|
958
1018
|
* Gets the number of `placeholder` occurrences in `array`.
|
959
1019
|
*
|
@@ -981,9 +1041,7 @@
|
|
981
1041
|
* @param {string} letter The matched letter to deburr.
|
982
1042
|
* @returns {string} Returns the deburred letter.
|
983
1043
|
*/
|
984
|
-
|
985
|
-
return deburredLetters[letter];
|
986
|
-
}
|
1044
|
+
var deburrLetter = basePropertyOf(deburredLetters);
|
987
1045
|
|
988
1046
|
/**
|
989
1047
|
* Used by `_.escape` to convert characters to HTML entities.
|
@@ -992,9 +1050,7 @@
|
|
992
1050
|
* @param {string} chr The matched character to escape.
|
993
1051
|
* @returns {string} Returns the escaped character.
|
994
1052
|
*/
|
995
|
-
|
996
|
-
return htmlEscapes[chr];
|
997
|
-
}
|
1053
|
+
var escapeHtmlChar = basePropertyOf(htmlEscapes);
|
998
1054
|
|
999
1055
|
/**
|
1000
1056
|
* Used by `_.template` to escape characters for inclusion in compiled string literals.
|
@@ -1019,28 +1075,6 @@
|
|
1019
1075
|
return object == null ? undefined : object[key];
|
1020
1076
|
}
|
1021
1077
|
|
1022
|
-
/**
|
1023
|
-
* Gets the index at which the first occurrence of `NaN` is found in `array`.
|
1024
|
-
*
|
1025
|
-
* @private
|
1026
|
-
* @param {Array} array The array to search.
|
1027
|
-
* @param {number} fromIndex The index to search from.
|
1028
|
-
* @param {boolean} [fromRight] Specify iterating from right to left.
|
1029
|
-
* @returns {number} Returns the index of the matched `NaN`, else `-1`.
|
1030
|
-
*/
|
1031
|
-
function indexOfNaN(array, fromIndex, fromRight) {
|
1032
|
-
var length = array.length,
|
1033
|
-
index = fromIndex + (fromRight ? 1 : -1);
|
1034
|
-
|
1035
|
-
while ((fromRight ? index-- : ++index < length)) {
|
1036
|
-
var other = array[index];
|
1037
|
-
if (other !== other) {
|
1038
|
-
return index;
|
1039
|
-
}
|
1040
|
-
}
|
1041
|
-
return -1;
|
1042
|
-
}
|
1043
|
-
|
1044
1078
|
/**
|
1045
1079
|
* Checks if `value` is a host object in IE < 9.
|
1046
1080
|
*
|
@@ -1094,6 +1128,20 @@
|
|
1094
1128
|
return result;
|
1095
1129
|
}
|
1096
1130
|
|
1131
|
+
/**
|
1132
|
+
* Creates a function that invokes `func` with its first argument transformed.
|
1133
|
+
*
|
1134
|
+
* @private
|
1135
|
+
* @param {Function} func The function to wrap.
|
1136
|
+
* @param {Function} transform The argument transform.
|
1137
|
+
* @returns {Function} Returns the new function.
|
1138
|
+
*/
|
1139
|
+
function overArg(func, transform) {
|
1140
|
+
return function(arg) {
|
1141
|
+
return func(transform(arg));
|
1142
|
+
};
|
1143
|
+
}
|
1144
|
+
|
1097
1145
|
/**
|
1098
1146
|
* Replaces all `placeholder` elements in `array` with an internal placeholder
|
1099
1147
|
* and returns an array of their indexes.
|
@@ -1189,9 +1237,7 @@
|
|
1189
1237
|
* @param {string} chr The matched character to unescape.
|
1190
1238
|
* @returns {string} Returns the unescaped character.
|
1191
1239
|
*/
|
1192
|
-
|
1193
|
-
return htmlUnescapes[chr];
|
1194
|
-
}
|
1240
|
+
var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
|
1195
1241
|
|
1196
1242
|
/*--------------------------------------------------------------------------*/
|
1197
1243
|
|
@@ -1235,7 +1281,8 @@
|
|
1235
1281
|
context = context ? _.defaults({}, context, _.pick(root, contextProps)) : root;
|
1236
1282
|
|
1237
1283
|
/** Built-in constructor references. */
|
1238
|
-
var
|
1284
|
+
var Array = context.Array,
|
1285
|
+
Date = context.Date,
|
1239
1286
|
Error = context.Error,
|
1240
1287
|
Math = context.Math,
|
1241
1288
|
RegExp = context.RegExp,
|
@@ -1289,19 +1336,22 @@
|
|
1289
1336
|
Symbol = context.Symbol,
|
1290
1337
|
Uint8Array = context.Uint8Array,
|
1291
1338
|
enumerate = Reflect ? Reflect.enumerate : undefined,
|
1292
|
-
|
1293
|
-
|
1294
|
-
objectCreate = Object.create,
|
1339
|
+
iteratorSymbol = Symbol ? Symbol.iterator : undefined,
|
1340
|
+
objectCreate = context.Object.create,
|
1295
1341
|
propertyIsEnumerable = objectProto.propertyIsEnumerable,
|
1296
|
-
splice = arrayProto.splice
|
1342
|
+
splice = arrayProto.splice,
|
1343
|
+
spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
|
1297
1344
|
|
1298
1345
|
/** Built-in method references that are mockable. */
|
1299
|
-
var
|
1346
|
+
var clearTimeout = function(id) { return context.clearTimeout.call(root, id); },
|
1347
|
+
setTimeout = function(func, wait) { return context.setTimeout.call(root, func, wait); };
|
1300
1348
|
|
1301
1349
|
/* Built-in method references for those with the same name as other `lodash` methods. */
|
1302
1350
|
var nativeCeil = Math.ceil,
|
1303
1351
|
nativeFloor = Math.floor,
|
1304
1352
|
nativeGetPrototype = Object.getPrototypeOf,
|
1353
|
+
nativeGetSymbols = Object.getOwnPropertySymbols,
|
1354
|
+
nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
|
1305
1355
|
nativeIsFinite = context.isFinite,
|
1306
1356
|
nativeJoin = arrayProto.join,
|
1307
1357
|
nativeKeys = Object.keys,
|
@@ -1319,7 +1369,15 @@
|
|
1319
1369
|
Promise = getNative(context, 'Promise'),
|
1320
1370
|
Set = getNative(context, 'Set'),
|
1321
1371
|
WeakMap = getNative(context, 'WeakMap'),
|
1322
|
-
nativeCreate = getNative(Object, 'create');
|
1372
|
+
nativeCreate = getNative(context.Object, 'create');
|
1373
|
+
|
1374
|
+
/* Used to set `toString` methods. */
|
1375
|
+
var defineProperty = (function() {
|
1376
|
+
var func = getNative(context.Object, 'defineProperty'),
|
1377
|
+
name = getNative.name;
|
1378
|
+
|
1379
|
+
return (name && name.length > 2) ? func : undefined;
|
1380
|
+
}());
|
1323
1381
|
|
1324
1382
|
/** Used to store function metadata. */
|
1325
1383
|
var metaMap = WeakMap && new WeakMap;
|
@@ -1410,16 +1468,16 @@
|
|
1410
1468
|
*
|
1411
1469
|
* The wrapper methods that are **not** chainable by default are:
|
1412
1470
|
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
|
1413
|
-
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `
|
1414
|
-
* `
|
1415
|
-
* `
|
1416
|
-
* `
|
1417
|
-
* `
|
1418
|
-
* `
|
1419
|
-
* `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
|
1420
|
-
* `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
|
1421
|
-
* `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
|
1422
|
-
* `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
|
1471
|
+
* `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
|
1472
|
+
* `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
|
1473
|
+
* `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
|
1474
|
+
* `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
|
1475
|
+
* `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
|
1476
|
+
* `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
|
1477
|
+
* `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
|
1478
|
+
* `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
|
1479
|
+
* `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
|
1480
|
+
* `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
|
1423
1481
|
* `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
|
1424
1482
|
* `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
|
1425
1483
|
* `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
|
@@ -2122,8 +2180,13 @@
|
|
2122
2180
|
*/
|
2123
2181
|
function stackSet(key, value) {
|
2124
2182
|
var cache = this.__data__;
|
2125
|
-
if (cache instanceof ListCache
|
2126
|
-
|
2183
|
+
if (cache instanceof ListCache) {
|
2184
|
+
var pairs = cache.__data__;
|
2185
|
+
if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
|
2186
|
+
pairs.push([key, value]);
|
2187
|
+
return this;
|
2188
|
+
}
|
2189
|
+
cache = this.__data__ = new MapCache(pairs);
|
2127
2190
|
}
|
2128
2191
|
cache.set(key, value);
|
2129
2192
|
return this;
|
@@ -2260,7 +2323,7 @@
|
|
2260
2323
|
}
|
2261
2324
|
|
2262
2325
|
/**
|
2263
|
-
* The base implementation of `_.clamp` which doesn't coerce arguments
|
2326
|
+
* The base implementation of `_.clamp` which doesn't coerce arguments.
|
2264
2327
|
*
|
2265
2328
|
* @private
|
2266
2329
|
* @param {number} number The number to clamp.
|
@@ -2344,12 +2407,12 @@
|
|
2344
2407
|
if (!isArr) {
|
2345
2408
|
var props = isFull ? getAllKeys(value) : keys(value);
|
2346
2409
|
}
|
2347
|
-
// Recursively populate clone (susceptible to call stack limits).
|
2348
2410
|
arrayEach(props || value, function(subValue, key) {
|
2349
2411
|
if (props) {
|
2350
2412
|
key = subValue;
|
2351
2413
|
subValue = value[key];
|
2352
2414
|
}
|
2415
|
+
// Recursively populate clone (susceptible to call stack limits).
|
2353
2416
|
assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));
|
2354
2417
|
});
|
2355
2418
|
return result;
|
@@ -2363,26 +2426,37 @@
|
|
2363
2426
|
* @returns {Function} Returns the new spec function.
|
2364
2427
|
*/
|
2365
2428
|
function baseConforms(source) {
|
2366
|
-
var props = keys(source)
|
2367
|
-
length = props.length;
|
2368
|
-
|
2429
|
+
var props = keys(source);
|
2369
2430
|
return function(object) {
|
2370
|
-
|
2371
|
-
|
2372
|
-
|
2373
|
-
var index = length;
|
2374
|
-
while (index--) {
|
2375
|
-
var key = props[index],
|
2376
|
-
predicate = source[key],
|
2377
|
-
value = object[key];
|
2431
|
+
return baseConformsTo(object, source, props);
|
2432
|
+
};
|
2433
|
+
}
|
2378
2434
|
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
|
2435
|
+
/**
|
2436
|
+
* The base implementation of `_.conformsTo` which accepts `props` to check.
|
2437
|
+
*
|
2438
|
+
* @private
|
2439
|
+
* @param {Object} object The object to inspect.
|
2440
|
+
* @param {Object} source The object of property predicates to conform to.
|
2441
|
+
* @returns {boolean} Returns `true` if `object` conforms, else `false`.
|
2442
|
+
*/
|
2443
|
+
function baseConformsTo(object, source, props) {
|
2444
|
+
var length = props.length;
|
2445
|
+
if (object == null) {
|
2446
|
+
return !length;
|
2447
|
+
}
|
2448
|
+
var index = length;
|
2449
|
+
while (index--) {
|
2450
|
+
var key = props[index],
|
2451
|
+
predicate = source[key],
|
2452
|
+
value = object[key];
|
2453
|
+
|
2454
|
+
if ((value === undefined &&
|
2455
|
+
!(key in Object(object))) || !predicate(value)) {
|
2456
|
+
return false;
|
2383
2457
|
}
|
2384
|
-
|
2385
|
-
|
2458
|
+
}
|
2459
|
+
return true;
|
2386
2460
|
}
|
2387
2461
|
|
2388
2462
|
/**
|
@@ -2398,13 +2472,13 @@
|
|
2398
2472
|
}
|
2399
2473
|
|
2400
2474
|
/**
|
2401
|
-
* The base implementation of `_.delay` and `_.defer` which accepts
|
2402
|
-
*
|
2475
|
+
* The base implementation of `_.delay` and `_.defer` which accepts `args`
|
2476
|
+
* to provide to `func`.
|
2403
2477
|
*
|
2404
2478
|
* @private
|
2405
2479
|
* @param {Function} func The function to delay.
|
2406
2480
|
* @param {number} wait The number of milliseconds to delay invocation.
|
2407
|
-
* @param {
|
2481
|
+
* @param {Array} args The arguments to provide to `func`.
|
2408
2482
|
* @returns {number} Returns the timer id.
|
2409
2483
|
*/
|
2410
2484
|
function baseDelay(func, wait, args) {
|
@@ -2718,7 +2792,18 @@
|
|
2718
2792
|
}
|
2719
2793
|
|
2720
2794
|
/**
|
2721
|
-
* The base implementation of `
|
2795
|
+
* The base implementation of `getTag`.
|
2796
|
+
*
|
2797
|
+
* @private
|
2798
|
+
* @param {*} value The value to query.
|
2799
|
+
* @returns {string} Returns the `toStringTag`.
|
2800
|
+
*/
|
2801
|
+
function baseGetTag(value) {
|
2802
|
+
return objectToString.call(value);
|
2803
|
+
}
|
2804
|
+
|
2805
|
+
/**
|
2806
|
+
* The base implementation of `_.gt` which doesn't coerce arguments.
|
2722
2807
|
*
|
2723
2808
|
* @private
|
2724
2809
|
* @param {*} value The value to compare.
|
@@ -2760,7 +2845,7 @@
|
|
2760
2845
|
}
|
2761
2846
|
|
2762
2847
|
/**
|
2763
|
-
* The base implementation of `_.inRange` which doesn't coerce arguments
|
2848
|
+
* The base implementation of `_.inRange` which doesn't coerce arguments.
|
2764
2849
|
*
|
2765
2850
|
* @private
|
2766
2851
|
* @param {number} number The number to check.
|
@@ -2873,6 +2958,28 @@
|
|
2873
2958
|
return func == null ? undefined : apply(func, object, args);
|
2874
2959
|
}
|
2875
2960
|
|
2961
|
+
/**
|
2962
|
+
* The base implementation of `_.isArrayBuffer` without Node.js optimizations.
|
2963
|
+
*
|
2964
|
+
* @private
|
2965
|
+
* @param {*} value The value to check.
|
2966
|
+
* @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
|
2967
|
+
*/
|
2968
|
+
function baseIsArrayBuffer(value) {
|
2969
|
+
return isObjectLike(value) && objectToString.call(value) == arrayBufferTag;
|
2970
|
+
}
|
2971
|
+
|
2972
|
+
/**
|
2973
|
+
* The base implementation of `_.isDate` without Node.js optimizations.
|
2974
|
+
*
|
2975
|
+
* @private
|
2976
|
+
* @param {*} value The value to check.
|
2977
|
+
* @returns {boolean} Returns `true` if `value` is a date object, else `false`.
|
2978
|
+
*/
|
2979
|
+
function baseIsDate(value) {
|
2980
|
+
return isObjectLike(value) && objectToString.call(value) == dateTag;
|
2981
|
+
}
|
2982
|
+
|
2876
2983
|
/**
|
2877
2984
|
* The base implementation of `_.isEqual` which supports partial comparisons
|
2878
2985
|
* and tracks traversed objects.
|
@@ -2956,6 +3063,17 @@
|
|
2956
3063
|
return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
|
2957
3064
|
}
|
2958
3065
|
|
3066
|
+
/**
|
3067
|
+
* The base implementation of `_.isMap` without Node.js optimizations.
|
3068
|
+
*
|
3069
|
+
* @private
|
3070
|
+
* @param {*} value The value to check.
|
3071
|
+
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
|
3072
|
+
*/
|
3073
|
+
function baseIsMap(value) {
|
3074
|
+
return isObjectLike(value) && getTag(value) == mapTag;
|
3075
|
+
}
|
3076
|
+
|
2959
3077
|
/**
|
2960
3078
|
* The base implementation of `_.isMatch` without support for iteratee shorthands.
|
2961
3079
|
*
|
@@ -3026,6 +3144,40 @@
|
|
3026
3144
|
return pattern.test(toSource(value));
|
3027
3145
|
}
|
3028
3146
|
|
3147
|
+
/**
|
3148
|
+
* The base implementation of `_.isRegExp` without Node.js optimizations.
|
3149
|
+
*
|
3150
|
+
* @private
|
3151
|
+
* @param {*} value The value to check.
|
3152
|
+
* @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
|
3153
|
+
*/
|
3154
|
+
function baseIsRegExp(value) {
|
3155
|
+
return isObject(value) && objectToString.call(value) == regexpTag;
|
3156
|
+
}
|
3157
|
+
|
3158
|
+
/**
|
3159
|
+
* The base implementation of `_.isSet` without Node.js optimizations.
|
3160
|
+
*
|
3161
|
+
* @private
|
3162
|
+
* @param {*} value The value to check.
|
3163
|
+
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
|
3164
|
+
*/
|
3165
|
+
function baseIsSet(value) {
|
3166
|
+
return isObjectLike(value) && getTag(value) == setTag;
|
3167
|
+
}
|
3168
|
+
|
3169
|
+
/**
|
3170
|
+
* The base implementation of `_.isTypedArray` without Node.js optimizations.
|
3171
|
+
*
|
3172
|
+
* @private
|
3173
|
+
* @param {*} value The value to check.
|
3174
|
+
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
3175
|
+
*/
|
3176
|
+
function baseIsTypedArray(value) {
|
3177
|
+
return isObjectLike(value) &&
|
3178
|
+
isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
|
3179
|
+
}
|
3180
|
+
|
3029
3181
|
/**
|
3030
3182
|
* The base implementation of `_.iteratee`.
|
3031
3183
|
*
|
@@ -3058,9 +3210,7 @@
|
|
3058
3210
|
* @param {Object} object The object to query.
|
3059
3211
|
* @returns {Array} Returns the array of property names.
|
3060
3212
|
*/
|
3061
|
-
|
3062
|
-
return nativeKeys(Object(object));
|
3063
|
-
}
|
3213
|
+
var baseKeys = overArg(nativeKeys, Object);
|
3064
3214
|
|
3065
3215
|
/**
|
3066
3216
|
* The base implementation of `_.keysIn` which doesn't skip the constructor
|
@@ -3088,7 +3238,7 @@
|
|
3088
3238
|
}
|
3089
3239
|
|
3090
3240
|
/**
|
3091
|
-
* The base implementation of `_.lt` which doesn't coerce arguments
|
3241
|
+
* The base implementation of `_.lt` which doesn't coerce arguments.
|
3092
3242
|
*
|
3093
3243
|
* @private
|
3094
3244
|
* @param {*} value The value to compare.
|
@@ -3255,18 +3405,17 @@
|
|
3255
3405
|
isCommon = false;
|
3256
3406
|
}
|
3257
3407
|
}
|
3258
|
-
stack.set(srcValue, newValue);
|
3259
|
-
|
3260
3408
|
if (isCommon) {
|
3261
3409
|
// Recursively merge objects and arrays (susceptible to call stack limits).
|
3410
|
+
stack.set(srcValue, newValue);
|
3262
3411
|
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
|
3412
|
+
stack['delete'](srcValue);
|
3263
3413
|
}
|
3264
|
-
stack['delete'](srcValue);
|
3265
3414
|
assignMergeValue(object, key, newValue);
|
3266
3415
|
}
|
3267
3416
|
|
3268
3417
|
/**
|
3269
|
-
* The base implementation of `_.nth` which doesn't coerce
|
3418
|
+
* The base implementation of `_.nth` which doesn't coerce arguments.
|
3270
3419
|
*
|
3271
3420
|
* @private
|
3272
3421
|
* @param {Array} array The array to query.
|
@@ -3318,12 +3467,9 @@
|
|
3318
3467
|
*/
|
3319
3468
|
function basePick(object, props) {
|
3320
3469
|
object = Object(object);
|
3321
|
-
return
|
3322
|
-
|
3323
|
-
|
3324
|
-
}
|
3325
|
-
return result;
|
3326
|
-
}, {});
|
3470
|
+
return basePickBy(object, props, function(value, key) {
|
3471
|
+
return key in object;
|
3472
|
+
});
|
3327
3473
|
}
|
3328
3474
|
|
3329
3475
|
/**
|
@@ -3331,12 +3477,12 @@
|
|
3331
3477
|
*
|
3332
3478
|
* @private
|
3333
3479
|
* @param {Object} object The source object.
|
3480
|
+
* @param {string[]} props The property identifiers to pick from.
|
3334
3481
|
* @param {Function} predicate The function invoked per property.
|
3335
3482
|
* @returns {Object} Returns the new object.
|
3336
3483
|
*/
|
3337
|
-
function basePickBy(object, predicate) {
|
3484
|
+
function basePickBy(object, props, predicate) {
|
3338
3485
|
var index = -1,
|
3339
|
-
props = getAllKeysIn(object),
|
3340
3486
|
length = props.length,
|
3341
3487
|
result = {};
|
3342
3488
|
|
@@ -3351,19 +3497,6 @@
|
|
3351
3497
|
return result;
|
3352
3498
|
}
|
3353
3499
|
|
3354
|
-
/**
|
3355
|
-
* The base implementation of `_.property` without support for deep paths.
|
3356
|
-
*
|
3357
|
-
* @private
|
3358
|
-
* @param {string} key The key of the property to get.
|
3359
|
-
* @returns {Function} Returns the new accessor function.
|
3360
|
-
*/
|
3361
|
-
function baseProperty(key) {
|
3362
|
-
return function(object) {
|
3363
|
-
return object == null ? undefined : object[key];
|
3364
|
-
};
|
3365
|
-
}
|
3366
|
-
|
3367
3500
|
/**
|
3368
3501
|
* A specialized version of `baseProperty` which supports deep paths.
|
3369
3502
|
*
|
@@ -3466,7 +3599,7 @@
|
|
3466
3599
|
|
3467
3600
|
/**
|
3468
3601
|
* The base implementation of `_.range` and `_.rangeRight` which doesn't
|
3469
|
-
* coerce arguments
|
3602
|
+
* coerce arguments.
|
3470
3603
|
*
|
3471
3604
|
* @private
|
3472
3605
|
* @param {number} start The start of the range.
|
@@ -3515,6 +3648,35 @@
|
|
3515
3648
|
return result;
|
3516
3649
|
}
|
3517
3650
|
|
3651
|
+
/**
|
3652
|
+
* The base implementation of `_.rest` which doesn't validate or coerce arguments.
|
3653
|
+
*
|
3654
|
+
* @private
|
3655
|
+
* @param {Function} func The function to apply a rest parameter to.
|
3656
|
+
* @param {number} [start=func.length-1] The start position of the rest parameter.
|
3657
|
+
* @returns {Function} Returns the new function.
|
3658
|
+
*/
|
3659
|
+
function baseRest(func, start) {
|
3660
|
+
start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
|
3661
|
+
return function() {
|
3662
|
+
var args = arguments,
|
3663
|
+
index = -1,
|
3664
|
+
length = nativeMax(args.length - start, 0),
|
3665
|
+
array = Array(length);
|
3666
|
+
|
3667
|
+
while (++index < length) {
|
3668
|
+
array[index] = args[start + index];
|
3669
|
+
}
|
3670
|
+
index = -1;
|
3671
|
+
var otherArgs = Array(start + 1);
|
3672
|
+
while (++index < start) {
|
3673
|
+
otherArgs[index] = args[index];
|
3674
|
+
}
|
3675
|
+
otherArgs[start] = array;
|
3676
|
+
return apply(func, this, otherArgs);
|
3677
|
+
};
|
3678
|
+
}
|
3679
|
+
|
3518
3680
|
/**
|
3519
3681
|
* The base implementation of `_.set`.
|
3520
3682
|
*
|
@@ -4294,9 +4456,9 @@
|
|
4294
4456
|
|
4295
4457
|
var newValue = customizer
|
4296
4458
|
? customizer(object[key], source[key], key, object, source)
|
4297
|
-
:
|
4459
|
+
: undefined;
|
4298
4460
|
|
4299
|
-
assignValue(object, key, newValue);
|
4461
|
+
assignValue(object, key, newValue === undefined ? source[key] : newValue);
|
4300
4462
|
}
|
4301
4463
|
return object;
|
4302
4464
|
}
|
@@ -4326,7 +4488,7 @@
|
|
4326
4488
|
var func = isArray(collection) ? arrayAggregator : baseAggregator,
|
4327
4489
|
accumulator = initializer ? initializer() : {};
|
4328
4490
|
|
4329
|
-
return func(collection, setter, getIteratee(iteratee), accumulator);
|
4491
|
+
return func(collection, setter, getIteratee(iteratee, 2), accumulator);
|
4330
4492
|
};
|
4331
4493
|
}
|
4332
4494
|
|
@@ -4338,7 +4500,7 @@
|
|
4338
4500
|
* @returns {Function} Returns the new assigner function.
|
4339
4501
|
*/
|
4340
4502
|
function createAssigner(assigner) {
|
4341
|
-
return
|
4503
|
+
return baseRest(function(object, sources) {
|
4342
4504
|
var index = -1,
|
4343
4505
|
length = sources.length,
|
4344
4506
|
customizer = length > 1 ? sources[length - 1] : undefined,
|
@@ -4422,14 +4584,13 @@
|
|
4422
4584
|
*
|
4423
4585
|
* @private
|
4424
4586
|
* @param {Function} func The function to wrap.
|
4425
|
-
* @param {number} bitmask The bitmask
|
4426
|
-
* for more details.
|
4587
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
4427
4588
|
* @param {*} [thisArg] The `this` binding of `func`.
|
4428
4589
|
* @returns {Function} Returns the new wrapped function.
|
4429
4590
|
*/
|
4430
|
-
function
|
4591
|
+
function createBind(func, bitmask, thisArg) {
|
4431
4592
|
var isBind = bitmask & BIND_FLAG,
|
4432
|
-
Ctor =
|
4593
|
+
Ctor = createCtor(func);
|
4433
4594
|
|
4434
4595
|
function wrapper() {
|
4435
4596
|
var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
|
@@ -4486,7 +4647,7 @@
|
|
4486
4647
|
* @param {Function} Ctor The constructor to wrap.
|
4487
4648
|
* @returns {Function} Returns the new wrapped function.
|
4488
4649
|
*/
|
4489
|
-
function
|
4650
|
+
function createCtor(Ctor) {
|
4490
4651
|
return function() {
|
4491
4652
|
// Use a `switch` statement to work with class constructors. See
|
4492
4653
|
// http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
|
@@ -4516,13 +4677,12 @@
|
|
4516
4677
|
*
|
4517
4678
|
* @private
|
4518
4679
|
* @param {Function} func The function to wrap.
|
4519
|
-
* @param {number} bitmask The bitmask
|
4520
|
-
* for more details.
|
4680
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
4521
4681
|
* @param {number} arity The arity of `func`.
|
4522
4682
|
* @returns {Function} Returns the new wrapped function.
|
4523
4683
|
*/
|
4524
|
-
function
|
4525
|
-
var Ctor =
|
4684
|
+
function createCurry(func, bitmask, arity) {
|
4685
|
+
var Ctor = createCtor(func);
|
4526
4686
|
|
4527
4687
|
function wrapper() {
|
4528
4688
|
var length = arguments.length,
|
@@ -4539,8 +4699,8 @@
|
|
4539
4699
|
|
4540
4700
|
length -= holders.length;
|
4541
4701
|
if (length < arity) {
|
4542
|
-
return
|
4543
|
-
func, bitmask,
|
4702
|
+
return createRecurry(
|
4703
|
+
func, bitmask, createHybrid, wrapper.placeholder, undefined,
|
4544
4704
|
args, holders, undefined, undefined, arity - length);
|
4545
4705
|
}
|
4546
4706
|
var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
|
@@ -4559,18 +4719,13 @@
|
|
4559
4719
|
function createFind(findIndexFunc) {
|
4560
4720
|
return function(collection, predicate, fromIndex) {
|
4561
4721
|
var iterable = Object(collection);
|
4562
|
-
predicate = getIteratee(predicate, 3);
|
4563
4722
|
if (!isArrayLike(collection)) {
|
4564
|
-
var
|
4723
|
+
var iteratee = getIteratee(predicate, 3);
|
4724
|
+
collection = keys(collection);
|
4725
|
+
predicate = function(key) { return iteratee(iterable[key], key, iterable); };
|
4565
4726
|
}
|
4566
|
-
var index = findIndexFunc(
|
4567
|
-
|
4568
|
-
key = value;
|
4569
|
-
value = iterable[key];
|
4570
|
-
}
|
4571
|
-
return predicate(value, key, iterable);
|
4572
|
-
}, fromIndex);
|
4573
|
-
return index > -1 ? collection[props ? props[index] : index] : undefined;
|
4727
|
+
var index = findIndexFunc(collection, predicate, fromIndex);
|
4728
|
+
return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
|
4574
4729
|
};
|
4575
4730
|
}
|
4576
4731
|
|
@@ -4582,7 +4737,7 @@
|
|
4582
4737
|
* @returns {Function} Returns the new flow function.
|
4583
4738
|
*/
|
4584
4739
|
function createFlow(fromRight) {
|
4585
|
-
return
|
4740
|
+
return baseRest(function(funcs) {
|
4586
4741
|
funcs = baseFlatten(funcs, 1);
|
4587
4742
|
|
4588
4743
|
var length = funcs.length,
|
@@ -4644,8 +4799,7 @@
|
|
4644
4799
|
*
|
4645
4800
|
* @private
|
4646
4801
|
* @param {Function|string} func The function or method name to wrap.
|
4647
|
-
* @param {number} bitmask The bitmask
|
4648
|
-
* for more details.
|
4802
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
4649
4803
|
* @param {*} [thisArg] The `this` binding of `func`.
|
4650
4804
|
* @param {Array} [partials] The arguments to prepend to those provided to
|
4651
4805
|
* the new function.
|
@@ -4658,13 +4812,13 @@
|
|
4658
4812
|
* @param {number} [arity] The arity of `func`.
|
4659
4813
|
* @returns {Function} Returns the new wrapped function.
|
4660
4814
|
*/
|
4661
|
-
function
|
4815
|
+
function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
|
4662
4816
|
var isAry = bitmask & ARY_FLAG,
|
4663
4817
|
isBind = bitmask & BIND_FLAG,
|
4664
4818
|
isBindKey = bitmask & BIND_KEY_FLAG,
|
4665
4819
|
isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG),
|
4666
4820
|
isFlip = bitmask & FLIP_FLAG,
|
4667
|
-
Ctor = isBindKey ? undefined :
|
4821
|
+
Ctor = isBindKey ? undefined : createCtor(func);
|
4668
4822
|
|
4669
4823
|
function wrapper() {
|
4670
4824
|
var length = arguments.length,
|
@@ -4687,8 +4841,8 @@
|
|
4687
4841
|
length -= holdersCount;
|
4688
4842
|
if (isCurried && length < arity) {
|
4689
4843
|
var newHolders = replaceHolders(args, placeholder);
|
4690
|
-
return
|
4691
|
-
func, bitmask,
|
4844
|
+
return createRecurry(
|
4845
|
+
func, bitmask, createHybrid, wrapper.placeholder, thisArg,
|
4692
4846
|
args, newHolders, argPos, ary, arity - length
|
4693
4847
|
);
|
4694
4848
|
}
|
@@ -4705,7 +4859,7 @@
|
|
4705
4859
|
args.length = ary;
|
4706
4860
|
}
|
4707
4861
|
if (this && this !== root && this instanceof wrapper) {
|
4708
|
-
fn = Ctor ||
|
4862
|
+
fn = Ctor || createCtor(fn);
|
4709
4863
|
}
|
4710
4864
|
return fn.apply(thisBinding, args);
|
4711
4865
|
}
|
@@ -4731,13 +4885,14 @@
|
|
4731
4885
|
*
|
4732
4886
|
* @private
|
4733
4887
|
* @param {Function} operator The function to perform the operation.
|
4888
|
+
* @param {number} [defaultValue] The value used for `undefined` arguments.
|
4734
4889
|
* @returns {Function} Returns the new mathematical operation function.
|
4735
4890
|
*/
|
4736
|
-
function createMathOperation(operator) {
|
4891
|
+
function createMathOperation(operator, defaultValue) {
|
4737
4892
|
return function(value, other) {
|
4738
4893
|
var result;
|
4739
4894
|
if (value === undefined && other === undefined) {
|
4740
|
-
return
|
4895
|
+
return defaultValue;
|
4741
4896
|
}
|
4742
4897
|
if (value !== undefined) {
|
4743
4898
|
result = value;
|
@@ -4767,12 +4922,12 @@
|
|
4767
4922
|
* @returns {Function} Returns the new over function.
|
4768
4923
|
*/
|
4769
4924
|
function createOver(arrayFunc) {
|
4770
|
-
return
|
4925
|
+
return baseRest(function(iteratees) {
|
4771
4926
|
iteratees = (iteratees.length == 1 && isArray(iteratees[0]))
|
4772
4927
|
? arrayMap(iteratees[0], baseUnary(getIteratee()))
|
4773
|
-
: arrayMap(baseFlatten(iteratees, 1
|
4928
|
+
: arrayMap(baseFlatten(iteratees, 1), baseUnary(getIteratee()));
|
4774
4929
|
|
4775
|
-
return
|
4930
|
+
return baseRest(function(args) {
|
4776
4931
|
var thisArg = this;
|
4777
4932
|
return arrayFunc(iteratees, function(iteratee) {
|
4778
4933
|
return apply(iteratee, thisArg, args);
|
@@ -4809,16 +4964,15 @@
|
|
4809
4964
|
*
|
4810
4965
|
* @private
|
4811
4966
|
* @param {Function} func The function to wrap.
|
4812
|
-
* @param {number} bitmask The bitmask
|
4813
|
-
* for more details.
|
4967
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
4814
4968
|
* @param {*} thisArg The `this` binding of `func`.
|
4815
4969
|
* @param {Array} partials The arguments to prepend to those provided to
|
4816
4970
|
* the new function.
|
4817
4971
|
* @returns {Function} Returns the new wrapped function.
|
4818
4972
|
*/
|
4819
|
-
function
|
4973
|
+
function createPartial(func, bitmask, thisArg, partials) {
|
4820
4974
|
var isBind = bitmask & BIND_FLAG,
|
4821
|
-
Ctor =
|
4975
|
+
Ctor = createCtor(func);
|
4822
4976
|
|
4823
4977
|
function wrapper() {
|
4824
4978
|
var argsIndex = -1,
|
@@ -4852,15 +5006,14 @@
|
|
4852
5006
|
end = step = undefined;
|
4853
5007
|
}
|
4854
5008
|
// Ensure the sign of `-0` is preserved.
|
4855
|
-
start =
|
4856
|
-
start = start === start ? start : 0;
|
5009
|
+
start = toFinite(start);
|
4857
5010
|
if (end === undefined) {
|
4858
5011
|
end = start;
|
4859
5012
|
start = 0;
|
4860
5013
|
} else {
|
4861
|
-
end =
|
5014
|
+
end = toFinite(end);
|
4862
5015
|
}
|
4863
|
-
step = step === undefined ? (start < end ? 1 : -1) : (
|
5016
|
+
step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
|
4864
5017
|
return baseRange(start, end, step, fromRight);
|
4865
5018
|
};
|
4866
5019
|
}
|
@@ -4887,8 +5040,7 @@
|
|
4887
5040
|
*
|
4888
5041
|
* @private
|
4889
5042
|
* @param {Function} func The function to wrap.
|
4890
|
-
* @param {number} bitmask The bitmask
|
4891
|
-
* for more details.
|
5043
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
4892
5044
|
* @param {Function} wrapFunc The function to create the `func` wrapper.
|
4893
5045
|
* @param {*} placeholder The placeholder value.
|
4894
5046
|
* @param {*} [thisArg] The `this` binding of `func`.
|
@@ -4900,7 +5052,7 @@
|
|
4900
5052
|
* @param {number} [arity] The arity of `func`.
|
4901
5053
|
* @returns {Function} Returns the new wrapped function.
|
4902
5054
|
*/
|
4903
|
-
function
|
5055
|
+
function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
|
4904
5056
|
var isCurry = bitmask & CURRY_FLAG,
|
4905
5057
|
newHolders = isCurry ? holders : undefined,
|
4906
5058
|
newHoldersRight = isCurry ? undefined : holders,
|
@@ -4923,7 +5075,7 @@
|
|
4923
5075
|
setData(result, newData);
|
4924
5076
|
}
|
4925
5077
|
result.placeholder = placeholder;
|
4926
|
-
return result;
|
5078
|
+
return setWrapToString(result, func, bitmask);
|
4927
5079
|
}
|
4928
5080
|
|
4929
5081
|
/**
|
@@ -4952,7 +5104,7 @@
|
|
4952
5104
|
}
|
4953
5105
|
|
4954
5106
|
/**
|
4955
|
-
* Creates a set of `values`.
|
5107
|
+
* Creates a set object of `values`.
|
4956
5108
|
*
|
4957
5109
|
* @private
|
4958
5110
|
* @param {Array} values The values to add to the set.
|
@@ -4988,7 +5140,7 @@
|
|
4988
5140
|
*
|
4989
5141
|
* @private
|
4990
5142
|
* @param {Function|string} func The function or method name to wrap.
|
4991
|
-
* @param {number} bitmask The bitmask
|
5143
|
+
* @param {number} bitmask The bitmask flags.
|
4992
5144
|
* The bitmask may be composed of the following flags:
|
4993
5145
|
* 1 - `_.bind`
|
4994
5146
|
* 2 - `_.bindKey`
|
@@ -5008,7 +5160,7 @@
|
|
5008
5160
|
* @param {number} [arity] The arity of `func`.
|
5009
5161
|
* @returns {Function} Returns the new wrapped function.
|
5010
5162
|
*/
|
5011
|
-
function
|
5163
|
+
function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
|
5012
5164
|
var isBindKey = bitmask & BIND_KEY_FLAG;
|
5013
5165
|
if (!isBindKey && typeof func != 'function') {
|
5014
5166
|
throw new TypeError(FUNC_ERROR_TEXT);
|
@@ -5051,16 +5203,16 @@
|
|
5051
5203
|
bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG);
|
5052
5204
|
}
|
5053
5205
|
if (!bitmask || bitmask == BIND_FLAG) {
|
5054
|
-
var result =
|
5206
|
+
var result = createBind(func, bitmask, thisArg);
|
5055
5207
|
} else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {
|
5056
|
-
result =
|
5208
|
+
result = createCurry(func, bitmask, arity);
|
5057
5209
|
} else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) {
|
5058
|
-
result =
|
5210
|
+
result = createPartial(func, bitmask, thisArg, partials);
|
5059
5211
|
} else {
|
5060
|
-
result =
|
5212
|
+
result = createHybrid.apply(undefined, newData);
|
5061
5213
|
}
|
5062
5214
|
var setter = data ? baseSetData : setData;
|
5063
|
-
return setter(result, newData);
|
5215
|
+
return setWrapToString(setter(result, newData), func, bitmask);
|
5064
5216
|
}
|
5065
5217
|
|
5066
5218
|
/**
|
@@ -5087,7 +5239,7 @@
|
|
5087
5239
|
}
|
5088
5240
|
// Assume cyclic values are equal.
|
5089
5241
|
var stacked = stack.get(array);
|
5090
|
-
if (stacked) {
|
5242
|
+
if (stacked && stack.get(other)) {
|
5091
5243
|
return stacked == other;
|
5092
5244
|
}
|
5093
5245
|
var index = -1,
|
@@ -5095,6 +5247,7 @@
|
|
5095
5247
|
seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;
|
5096
5248
|
|
5097
5249
|
stack.set(array, other);
|
5250
|
+
stack.set(other, array);
|
5098
5251
|
|
5099
5252
|
// Ignore non-index properties.
|
5100
5253
|
while (++index < arrLength) {
|
@@ -5133,6 +5286,7 @@
|
|
5133
5286
|
}
|
5134
5287
|
}
|
5135
5288
|
stack['delete'](array);
|
5289
|
+
stack['delete'](other);
|
5136
5290
|
return result;
|
5137
5291
|
}
|
5138
5292
|
|
@@ -5173,18 +5327,14 @@
|
|
5173
5327
|
|
5174
5328
|
case boolTag:
|
5175
5329
|
case dateTag:
|
5176
|
-
|
5177
|
-
// booleans to `1` or `0`
|
5178
|
-
//
|
5179
|
-
return +object
|
5330
|
+
case numberTag:
|
5331
|
+
// Coerce booleans to `1` or `0` and dates to milliseconds.
|
5332
|
+
// Invalid dates are coerced to `NaN`.
|
5333
|
+
return eq(+object, +other);
|
5180
5334
|
|
5181
5335
|
case errorTag:
|
5182
5336
|
return object.name == other.name && object.message == other.message;
|
5183
5337
|
|
5184
|
-
case numberTag:
|
5185
|
-
// Treat `NaN` vs. `NaN` as equal.
|
5186
|
-
return (object != +object) ? other != +other : object == +other;
|
5187
|
-
|
5188
5338
|
case regexpTag:
|
5189
5339
|
case stringTag:
|
5190
5340
|
// Coerce regexes to strings and treat strings, primitives and objects,
|
@@ -5208,10 +5358,12 @@
|
|
5208
5358
|
return stacked == other;
|
5209
5359
|
}
|
5210
5360
|
bitmask |= UNORDERED_COMPARE_FLAG;
|
5211
|
-
stack.set(object, other);
|
5212
5361
|
|
5213
5362
|
// Recursively compare objects (susceptible to call stack limits).
|
5214
|
-
|
5363
|
+
stack.set(object, other);
|
5364
|
+
var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
|
5365
|
+
stack['delete'](object);
|
5366
|
+
return result;
|
5215
5367
|
|
5216
5368
|
case symbolTag:
|
5217
5369
|
if (symbolValueOf) {
|
@@ -5254,11 +5406,12 @@
|
|
5254
5406
|
}
|
5255
5407
|
// Assume cyclic values are equal.
|
5256
5408
|
var stacked = stack.get(object);
|
5257
|
-
if (stacked) {
|
5409
|
+
if (stacked && stack.get(other)) {
|
5258
5410
|
return stacked == other;
|
5259
5411
|
}
|
5260
5412
|
var result = true;
|
5261
5413
|
stack.set(object, other);
|
5414
|
+
stack.set(other, object);
|
5262
5415
|
|
5263
5416
|
var skipCtor = isPartial;
|
5264
5417
|
while (++index < objLength) {
|
@@ -5294,6 +5447,7 @@
|
|
5294
5447
|
}
|
5295
5448
|
}
|
5296
5449
|
stack['delete'](object);
|
5450
|
+
stack['delete'](other);
|
5297
5451
|
return result;
|
5298
5452
|
}
|
5299
5453
|
|
@@ -5450,9 +5604,7 @@
|
|
5450
5604
|
* @param {*} value The value to query.
|
5451
5605
|
* @returns {null|Object} Returns the `[[Prototype]]`.
|
5452
5606
|
*/
|
5453
|
-
|
5454
|
-
return nativeGetPrototype(Object(value));
|
5455
|
-
}
|
5607
|
+
var getPrototype = overArg(nativeGetPrototype, Object);
|
5456
5608
|
|
5457
5609
|
/**
|
5458
5610
|
* Creates an array of the own enumerable symbol properties of `object`.
|
@@ -5461,16 +5613,7 @@
|
|
5461
5613
|
* @param {Object} object The object to query.
|
5462
5614
|
* @returns {Array} Returns the array of symbols.
|
5463
5615
|
*/
|
5464
|
-
|
5465
|
-
// Coerce `object` to an object to avoid non-object errors in V8.
|
5466
|
-
// See https://bugs.chromium.org/p/v8/issues/detail?id=3443 for more details.
|
5467
|
-
return getOwnPropertySymbols(Object(object));
|
5468
|
-
}
|
5469
|
-
|
5470
|
-
// Fallback for IE < 11.
|
5471
|
-
if (!getOwnPropertySymbols) {
|
5472
|
-
getSymbols = stubArray;
|
5473
|
-
}
|
5616
|
+
var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;
|
5474
5617
|
|
5475
5618
|
/**
|
5476
5619
|
* Creates an array of the own and inherited enumerable symbol properties
|
@@ -5480,7 +5623,7 @@
|
|
5480
5623
|
* @param {Object} object The object to query.
|
5481
5624
|
* @returns {Array} Returns the array of symbols.
|
5482
5625
|
*/
|
5483
|
-
var getSymbolsIn = !
|
5626
|
+
var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
|
5484
5627
|
var result = [];
|
5485
5628
|
while (object) {
|
5486
5629
|
arrayPush(result, getSymbols(object));
|
@@ -5496,9 +5639,7 @@
|
|
5496
5639
|
* @param {*} value The value to query.
|
5497
5640
|
* @returns {string} Returns the `toStringTag`.
|
5498
5641
|
*/
|
5499
|
-
|
5500
|
-
return objectToString.call(value);
|
5501
|
-
}
|
5642
|
+
var getTag = baseGetTag;
|
5502
5643
|
|
5503
5644
|
// Fallback for data views, maps, sets, and weak maps in IE 11,
|
5504
5645
|
// for data views in Edge, and promises in Node.js.
|
@@ -5553,6 +5694,18 @@
|
|
5553
5694
|
return { 'start': start, 'end': end };
|
5554
5695
|
}
|
5555
5696
|
|
5697
|
+
/**
|
5698
|
+
* Extracts wrapper details from the `source` body comment.
|
5699
|
+
*
|
5700
|
+
* @private
|
5701
|
+
* @param {string} source The source to inspect.
|
5702
|
+
* @returns {Array} Returns the wrapper details.
|
5703
|
+
*/
|
5704
|
+
function getWrapDetails(source) {
|
5705
|
+
var match = source.match(reWrapDetails);
|
5706
|
+
return match ? match[1].split(reSplitDetails) : [];
|
5707
|
+
}
|
5708
|
+
|
5556
5709
|
/**
|
5557
5710
|
* Checks if `path` exists on `object`.
|
5558
5711
|
*
|
@@ -5683,26 +5836,32 @@
|
|
5683
5836
|
}
|
5684
5837
|
|
5685
5838
|
/**
|
5686
|
-
*
|
5839
|
+
* Inserts wrapper `details` in a comment at the top of the `source` body.
|
5687
5840
|
*
|
5688
5841
|
* @private
|
5689
|
-
* @param {
|
5690
|
-
* @returns {
|
5842
|
+
* @param {string} source The source to modify.
|
5843
|
+
* @returns {Array} details The details to insert.
|
5844
|
+
* @returns {string} Returns the modified source.
|
5691
5845
|
*/
|
5692
|
-
function
|
5693
|
-
|
5846
|
+
function insertWrapDetails(source, details) {
|
5847
|
+
var length = details.length,
|
5848
|
+
lastIndex = length - 1;
|
5849
|
+
|
5850
|
+
details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
|
5851
|
+
details = details.join(length > 2 ? ', ' : ' ');
|
5852
|
+
return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
|
5694
5853
|
}
|
5695
5854
|
|
5696
5855
|
/**
|
5697
|
-
* Checks if `value` is a flattenable
|
5698
|
-
* iteratee shorthand.
|
5856
|
+
* Checks if `value` is a flattenable `arguments` object or array.
|
5699
5857
|
*
|
5700
5858
|
* @private
|
5701
5859
|
* @param {*} value The value to check.
|
5702
5860
|
* @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
|
5703
5861
|
*/
|
5704
|
-
function
|
5705
|
-
return isArray(value)
|
5862
|
+
function isFlattenable(value) {
|
5863
|
+
return isArray(value) || isArguments(value) ||
|
5864
|
+
!!(spreadableSymbol && value && value[spreadableSymbol]);
|
5706
5865
|
}
|
5707
5866
|
|
5708
5867
|
/**
|
@@ -5952,7 +6111,10 @@
|
|
5952
6111
|
*/
|
5953
6112
|
function mergeDefaults(objValue, srcValue, key, object, source, stack) {
|
5954
6113
|
if (isObject(objValue) && isObject(srcValue)) {
|
5955
|
-
|
6114
|
+
// Recursively merge objects and arrays (susceptible to call stack limits).
|
6115
|
+
stack.set(srcValue, objValue);
|
6116
|
+
baseMerge(objValue, srcValue, undefined, mergeDefaults, stack);
|
6117
|
+
stack['delete'](srcValue);
|
5956
6118
|
}
|
5957
6119
|
return objValue;
|
5958
6120
|
}
|
@@ -6025,6 +6187,25 @@
|
|
6025
6187
|
};
|
6026
6188
|
}());
|
6027
6189
|
|
6190
|
+
/**
|
6191
|
+
* Sets the `toString` method of `wrapper` to mimic the source of `reference`
|
6192
|
+
* with wrapper details in a comment at the top of the source body.
|
6193
|
+
*
|
6194
|
+
* @private
|
6195
|
+
* @param {Function} wrapper The function to modify.
|
6196
|
+
* @param {Function} reference The reference function.
|
6197
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
6198
|
+
* @returns {Function} Returns `wrapper`.
|
6199
|
+
*/
|
6200
|
+
var setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) {
|
6201
|
+
var source = (reference + '');
|
6202
|
+
return defineProperty(wrapper, 'toString', {
|
6203
|
+
'configurable': true,
|
6204
|
+
'enumerable': false,
|
6205
|
+
'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)))
|
6206
|
+
});
|
6207
|
+
};
|
6208
|
+
|
6028
6209
|
/**
|
6029
6210
|
* Converts `string` to a property path array.
|
6030
6211
|
*
|
@@ -6033,8 +6214,13 @@
|
|
6033
6214
|
* @returns {Array} Returns the property path array.
|
6034
6215
|
*/
|
6035
6216
|
var stringToPath = memoize(function(string) {
|
6217
|
+
string = toString(string);
|
6218
|
+
|
6036
6219
|
var result = [];
|
6037
|
-
|
6220
|
+
if (reLeadingDot.test(string)) {
|
6221
|
+
result.push('');
|
6222
|
+
}
|
6223
|
+
string.replace(rePropName, function(match, number, quote, string) {
|
6038
6224
|
result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
|
6039
6225
|
});
|
6040
6226
|
return result;
|
@@ -6074,6 +6260,24 @@
|
|
6074
6260
|
return '';
|
6075
6261
|
}
|
6076
6262
|
|
6263
|
+
/**
|
6264
|
+
* Updates wrapper `details` based on `bitmask` flags.
|
6265
|
+
*
|
6266
|
+
* @private
|
6267
|
+
* @returns {Array} details The details to modify.
|
6268
|
+
* @param {number} bitmask The bitmask flags. See `createWrap` for more details.
|
6269
|
+
* @returns {Array} Returns `details`.
|
6270
|
+
*/
|
6271
|
+
function updateWrapDetails(details, bitmask) {
|
6272
|
+
arrayEach(wrapFlags, function(pair) {
|
6273
|
+
var value = '_.' + pair[0];
|
6274
|
+
if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
|
6275
|
+
details.push(value);
|
6276
|
+
}
|
6277
|
+
});
|
6278
|
+
return details.sort();
|
6279
|
+
}
|
6280
|
+
|
6077
6281
|
/**
|
6078
6282
|
* Creates a clone of `wrapper`.
|
6079
6283
|
*
|
@@ -6202,11 +6406,13 @@
|
|
6202
6406
|
}
|
6203
6407
|
|
6204
6408
|
/**
|
6205
|
-
* Creates an array of
|
6206
|
-
*
|
6409
|
+
* Creates an array of `array` values not included in the other given arrays
|
6410
|
+
* using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
6207
6411
|
* for equality comparisons. The order of result values is determined by the
|
6208
6412
|
* order they occur in the first array.
|
6209
6413
|
*
|
6414
|
+
* **Note:** Unlike `_.pullAll`, this method returns a new array.
|
6415
|
+
*
|
6210
6416
|
* @static
|
6211
6417
|
* @memberOf _
|
6212
6418
|
* @since 0.1.0
|
@@ -6220,7 +6426,7 @@
|
|
6220
6426
|
* _.difference([2, 1], [2, 3]);
|
6221
6427
|
* // => [1]
|
6222
6428
|
*/
|
6223
|
-
var difference =
|
6429
|
+
var difference = baseRest(function(array, values) {
|
6224
6430
|
return isArrayLikeObject(array)
|
6225
6431
|
? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
|
6226
6432
|
: [];
|
@@ -6232,14 +6438,15 @@
|
|
6232
6438
|
* by which they're compared. Result values are chosen from the first array.
|
6233
6439
|
* The iteratee is invoked with one argument: (value).
|
6234
6440
|
*
|
6441
|
+
* **Note:** Unlike `_.pullAllBy`, this method returns a new array.
|
6442
|
+
*
|
6235
6443
|
* @static
|
6236
6444
|
* @memberOf _
|
6237
6445
|
* @since 4.0.0
|
6238
6446
|
* @category Array
|
6239
6447
|
* @param {Array} array The array to inspect.
|
6240
6448
|
* @param {...Array} [values] The values to exclude.
|
6241
|
-
* @param {
|
6242
|
-
* The iteratee invoked per element.
|
6449
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
6243
6450
|
* @returns {Array} Returns the new array of filtered values.
|
6244
6451
|
* @example
|
6245
6452
|
*
|
@@ -6250,13 +6457,13 @@
|
|
6250
6457
|
* _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
|
6251
6458
|
* // => [{ 'x': 2 }]
|
6252
6459
|
*/
|
6253
|
-
var differenceBy =
|
6460
|
+
var differenceBy = baseRest(function(array, values) {
|
6254
6461
|
var iteratee = last(values);
|
6255
6462
|
if (isArrayLikeObject(iteratee)) {
|
6256
6463
|
iteratee = undefined;
|
6257
6464
|
}
|
6258
6465
|
return isArrayLikeObject(array)
|
6259
|
-
? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee))
|
6466
|
+
? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
|
6260
6467
|
: [];
|
6261
6468
|
});
|
6262
6469
|
|
@@ -6266,6 +6473,8 @@
|
|
6266
6473
|
* are chosen from the first array. The comparator is invoked with two arguments:
|
6267
6474
|
* (arrVal, othVal).
|
6268
6475
|
*
|
6476
|
+
* **Note:** Unlike `_.pullAllWith`, this method returns a new array.
|
6477
|
+
*
|
6269
6478
|
* @static
|
6270
6479
|
* @memberOf _
|
6271
6480
|
* @since 4.0.0
|
@@ -6281,7 +6490,7 @@
|
|
6281
6490
|
* _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
|
6282
6491
|
* // => [{ 'x': 2, 'y': 1 }]
|
6283
6492
|
*/
|
6284
|
-
var differenceWith =
|
6493
|
+
var differenceWith = baseRest(function(array, values) {
|
6285
6494
|
var comparator = last(values);
|
6286
6495
|
if (isArrayLikeObject(comparator)) {
|
6287
6496
|
comparator = undefined;
|
@@ -6370,8 +6579,7 @@
|
|
6370
6579
|
* @since 3.0.0
|
6371
6580
|
* @category Array
|
6372
6581
|
* @param {Array} array The array to query.
|
6373
|
-
* @param {
|
6374
|
-
* The function invoked per iteration.
|
6582
|
+
* @param {Function} [predicate=_.identity] The function invoked per iteration.
|
6375
6583
|
* @returns {Array} Returns the slice of `array`.
|
6376
6584
|
* @example
|
6377
6585
|
*
|
@@ -6412,7 +6620,7 @@
|
|
6412
6620
|
* @since 3.0.0
|
6413
6621
|
* @category Array
|
6414
6622
|
* @param {Array} array The array to query.
|
6415
|
-
* @param {
|
6623
|
+
* @param {Function} [predicate=_.identity]
|
6416
6624
|
* The function invoked per iteration.
|
6417
6625
|
* @returns {Array} Returns the slice of `array`.
|
6418
6626
|
* @example
|
@@ -6494,7 +6702,7 @@
|
|
6494
6702
|
* @since 1.1.0
|
6495
6703
|
* @category Array
|
6496
6704
|
* @param {Array} array The array to search.
|
6497
|
-
* @param {
|
6705
|
+
* @param {Function} [predicate=_.identity]
|
6498
6706
|
* The function invoked per iteration.
|
6499
6707
|
* @param {number} [fromIndex=0] The index to search from.
|
6500
6708
|
* @returns {number} Returns the index of the found element, else `-1`.
|
@@ -6542,7 +6750,7 @@
|
|
6542
6750
|
* @since 2.0.0
|
6543
6751
|
* @category Array
|
6544
6752
|
* @param {Array} array The array to search.
|
6545
|
-
* @param {
|
6753
|
+
* @param {Function} [predicate=_.identity]
|
6546
6754
|
* The function invoked per iteration.
|
6547
6755
|
* @param {number} [fromIndex=array.length-1] The index to search from.
|
6548
6756
|
* @returns {number} Returns the index of the found element, else `-1`.
|
@@ -6663,8 +6871,8 @@
|
|
6663
6871
|
* @returns {Object} Returns the new object.
|
6664
6872
|
* @example
|
6665
6873
|
*
|
6666
|
-
* _.fromPairs([['
|
6667
|
-
* // => { '
|
6874
|
+
* _.fromPairs([['a', 1], ['b', 2]]);
|
6875
|
+
* // => { 'a': 1, 'b': 2 }
|
6668
6876
|
*/
|
6669
6877
|
function fromPairs(pairs) {
|
6670
6878
|
var index = -1,
|
@@ -6770,7 +6978,7 @@
|
|
6770
6978
|
* _.intersection([2, 1], [2, 3]);
|
6771
6979
|
* // => [2]
|
6772
6980
|
*/
|
6773
|
-
var intersection =
|
6981
|
+
var intersection = baseRest(function(arrays) {
|
6774
6982
|
var mapped = arrayMap(arrays, castArrayLikeObject);
|
6775
6983
|
return (mapped.length && mapped[0] === arrays[0])
|
6776
6984
|
? baseIntersection(mapped)
|
@@ -6788,8 +6996,7 @@
|
|
6788
6996
|
* @since 4.0.0
|
6789
6997
|
* @category Array
|
6790
6998
|
* @param {...Array} [arrays] The arrays to inspect.
|
6791
|
-
* @param {
|
6792
|
-
* The iteratee invoked per element.
|
6999
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
6793
7000
|
* @returns {Array} Returns the new array of intersecting values.
|
6794
7001
|
* @example
|
6795
7002
|
*
|
@@ -6800,7 +7007,7 @@
|
|
6800
7007
|
* _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
|
6801
7008
|
* // => [{ 'x': 1 }]
|
6802
7009
|
*/
|
6803
|
-
var intersectionBy =
|
7010
|
+
var intersectionBy = baseRest(function(arrays) {
|
6804
7011
|
var iteratee = last(arrays),
|
6805
7012
|
mapped = arrayMap(arrays, castArrayLikeObject);
|
6806
7013
|
|
@@ -6810,7 +7017,7 @@
|
|
6810
7017
|
mapped.pop();
|
6811
7018
|
}
|
6812
7019
|
return (mapped.length && mapped[0] === arrays[0])
|
6813
|
-
? baseIntersection(mapped, getIteratee(iteratee))
|
7020
|
+
? baseIntersection(mapped, getIteratee(iteratee, 2))
|
6814
7021
|
: [];
|
6815
7022
|
});
|
6816
7023
|
|
@@ -6835,7 +7042,7 @@
|
|
6835
7042
|
* _.intersectionWith(objects, others, _.isEqual);
|
6836
7043
|
* // => [{ 'x': 1, 'y': 2 }]
|
6837
7044
|
*/
|
6838
|
-
var intersectionWith =
|
7045
|
+
var intersectionWith = baseRest(function(arrays) {
|
6839
7046
|
var comparator = last(arrays),
|
6840
7047
|
mapped = arrayMap(arrays, castArrayLikeObject);
|
6841
7048
|
|
@@ -6923,7 +7130,7 @@
|
|
6923
7130
|
) + 1;
|
6924
7131
|
}
|
6925
7132
|
if (value !== value) {
|
6926
|
-
return
|
7133
|
+
return baseFindIndex(array, baseIsNaN, index - 1, true);
|
6927
7134
|
}
|
6928
7135
|
while (index--) {
|
6929
7136
|
if (array[index] === value) {
|
@@ -6981,7 +7188,7 @@
|
|
6981
7188
|
* console.log(array);
|
6982
7189
|
* // => ['b', 'b']
|
6983
7190
|
*/
|
6984
|
-
var pull =
|
7191
|
+
var pull = baseRest(pullAll);
|
6985
7192
|
|
6986
7193
|
/**
|
6987
7194
|
* This method is like `_.pull` except that it accepts an array of values to remove.
|
@@ -7022,7 +7229,7 @@
|
|
7022
7229
|
* @category Array
|
7023
7230
|
* @param {Array} array The array to modify.
|
7024
7231
|
* @param {Array} values The values to remove.
|
7025
|
-
* @param {
|
7232
|
+
* @param {Function} [iteratee=_.identity]
|
7026
7233
|
* The iteratee invoked per element.
|
7027
7234
|
* @returns {Array} Returns `array`.
|
7028
7235
|
* @example
|
@@ -7035,7 +7242,7 @@
|
|
7035
7242
|
*/
|
7036
7243
|
function pullAllBy(array, values, iteratee) {
|
7037
7244
|
return (array && array.length && values && values.length)
|
7038
|
-
? basePullAll(array, values, getIteratee(iteratee))
|
7245
|
+
? basePullAll(array, values, getIteratee(iteratee, 2))
|
7039
7246
|
: array;
|
7040
7247
|
}
|
7041
7248
|
|
@@ -7092,7 +7299,7 @@
|
|
7092
7299
|
* console.log(pulled);
|
7093
7300
|
* // => ['b', 'd']
|
7094
7301
|
*/
|
7095
|
-
var pullAt =
|
7302
|
+
var pullAt = baseRest(function(array, indexes) {
|
7096
7303
|
indexes = baseFlatten(indexes, 1);
|
7097
7304
|
|
7098
7305
|
var length = array ? array.length : 0,
|
@@ -7118,7 +7325,7 @@
|
|
7118
7325
|
* @since 2.0.0
|
7119
7326
|
* @category Array
|
7120
7327
|
* @param {Array} array The array to modify.
|
7121
|
-
* @param {
|
7328
|
+
* @param {Function} [predicate=_.identity]
|
7122
7329
|
* The function invoked per iteration.
|
7123
7330
|
* @returns {Array} Returns the new array of removed elements.
|
7124
7331
|
* @example
|
@@ -7246,7 +7453,7 @@
|
|
7246
7453
|
* @category Array
|
7247
7454
|
* @param {Array} array The sorted array to inspect.
|
7248
7455
|
* @param {*} value The value to evaluate.
|
7249
|
-
* @param {
|
7456
|
+
* @param {Function} [iteratee=_.identity]
|
7250
7457
|
* The iteratee invoked per element.
|
7251
7458
|
* @returns {number} Returns the index at which `value` should be inserted
|
7252
7459
|
* into `array`.
|
@@ -7262,7 +7469,7 @@
|
|
7262
7469
|
* // => 0
|
7263
7470
|
*/
|
7264
7471
|
function sortedIndexBy(array, value, iteratee) {
|
7265
|
-
return baseSortedIndexBy(array, value, getIteratee(iteratee));
|
7472
|
+
return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
|
7266
7473
|
}
|
7267
7474
|
|
7268
7475
|
/**
|
@@ -7325,7 +7532,7 @@
|
|
7325
7532
|
* @category Array
|
7326
7533
|
* @param {Array} array The sorted array to inspect.
|
7327
7534
|
* @param {*} value The value to evaluate.
|
7328
|
-
* @param {
|
7535
|
+
* @param {Function} [iteratee=_.identity]
|
7329
7536
|
* The iteratee invoked per element.
|
7330
7537
|
* @returns {number} Returns the index at which `value` should be inserted
|
7331
7538
|
* into `array`.
|
@@ -7341,7 +7548,7 @@
|
|
7341
7548
|
* // => 1
|
7342
7549
|
*/
|
7343
7550
|
function sortedLastIndexBy(array, value, iteratee) {
|
7344
|
-
return baseSortedIndexBy(array, value, getIteratee(iteratee), true);
|
7551
|
+
return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
|
7345
7552
|
}
|
7346
7553
|
|
7347
7554
|
/**
|
@@ -7410,7 +7617,7 @@
|
|
7410
7617
|
*/
|
7411
7618
|
function sortedUniqBy(array, iteratee) {
|
7412
7619
|
return (array && array.length)
|
7413
|
-
? baseSortedUniq(array, getIteratee(iteratee))
|
7620
|
+
? baseSortedUniq(array, getIteratee(iteratee, 2))
|
7414
7621
|
: [];
|
7415
7622
|
}
|
7416
7623
|
|
@@ -7510,7 +7717,7 @@
|
|
7510
7717
|
* @since 3.0.0
|
7511
7718
|
* @category Array
|
7512
7719
|
* @param {Array} array The array to query.
|
7513
|
-
* @param {
|
7720
|
+
* @param {Function} [predicate=_.identity]
|
7514
7721
|
* The function invoked per iteration.
|
7515
7722
|
* @returns {Array} Returns the slice of `array`.
|
7516
7723
|
* @example
|
@@ -7552,7 +7759,7 @@
|
|
7552
7759
|
* @since 3.0.0
|
7553
7760
|
* @category Array
|
7554
7761
|
* @param {Array} array The array to query.
|
7555
|
-
* @param {
|
7762
|
+
* @param {Function} [predicate=_.identity]
|
7556
7763
|
* The function invoked per iteration.
|
7557
7764
|
* @returns {Array} Returns the slice of `array`.
|
7558
7765
|
* @example
|
@@ -7600,14 +7807,15 @@
|
|
7600
7807
|
* _.union([2], [1, 2]);
|
7601
7808
|
* // => [2, 1]
|
7602
7809
|
*/
|
7603
|
-
var union =
|
7810
|
+
var union = baseRest(function(arrays) {
|
7604
7811
|
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
|
7605
7812
|
});
|
7606
7813
|
|
7607
7814
|
/**
|
7608
7815
|
* This method is like `_.union` except that it accepts `iteratee` which is
|
7609
7816
|
* invoked for each element of each `arrays` to generate the criterion by
|
7610
|
-
* which uniqueness is computed.
|
7817
|
+
* which uniqueness is computed. Result values are chosen from the first
|
7818
|
+
* array in which the value occurs. The iteratee is invoked with one argument:
|
7611
7819
|
* (value).
|
7612
7820
|
*
|
7613
7821
|
* @static
|
@@ -7615,7 +7823,7 @@
|
|
7615
7823
|
* @since 4.0.0
|
7616
7824
|
* @category Array
|
7617
7825
|
* @param {...Array} [arrays] The arrays to inspect.
|
7618
|
-
* @param {
|
7826
|
+
* @param {Function} [iteratee=_.identity]
|
7619
7827
|
* The iteratee invoked per element.
|
7620
7828
|
* @returns {Array} Returns the new array of combined values.
|
7621
7829
|
* @example
|
@@ -7627,17 +7835,18 @@
|
|
7627
7835
|
* _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
|
7628
7836
|
* // => [{ 'x': 1 }, { 'x': 2 }]
|
7629
7837
|
*/
|
7630
|
-
var unionBy =
|
7838
|
+
var unionBy = baseRest(function(arrays) {
|
7631
7839
|
var iteratee = last(arrays);
|
7632
7840
|
if (isArrayLikeObject(iteratee)) {
|
7633
7841
|
iteratee = undefined;
|
7634
7842
|
}
|
7635
|
-
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee));
|
7843
|
+
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
|
7636
7844
|
});
|
7637
7845
|
|
7638
7846
|
/**
|
7639
7847
|
* This method is like `_.union` except that it accepts `comparator` which
|
7640
|
-
* is invoked to compare elements of `arrays`.
|
7848
|
+
* is invoked to compare elements of `arrays`. Result values are chosen from
|
7849
|
+
* the first array in which the value occurs. The comparator is invoked
|
7641
7850
|
* with two arguments: (arrVal, othVal).
|
7642
7851
|
*
|
7643
7852
|
* @static
|
@@ -7655,7 +7864,7 @@
|
|
7655
7864
|
* _.unionWith(objects, others, _.isEqual);
|
7656
7865
|
* // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
|
7657
7866
|
*/
|
7658
|
-
var unionWith =
|
7867
|
+
var unionWith = baseRest(function(arrays) {
|
7659
7868
|
var comparator = last(arrays);
|
7660
7869
|
if (isArrayLikeObject(comparator)) {
|
7661
7870
|
comparator = undefined;
|
@@ -7696,7 +7905,7 @@
|
|
7696
7905
|
* @since 4.0.0
|
7697
7906
|
* @category Array
|
7698
7907
|
* @param {Array} array The array to inspect.
|
7699
|
-
* @param {
|
7908
|
+
* @param {Function} [iteratee=_.identity]
|
7700
7909
|
* The iteratee invoked per element.
|
7701
7910
|
* @returns {Array} Returns the new duplicate free array.
|
7702
7911
|
* @example
|
@@ -7710,7 +7919,7 @@
|
|
7710
7919
|
*/
|
7711
7920
|
function uniqBy(array, iteratee) {
|
7712
7921
|
return (array && array.length)
|
7713
|
-
? baseUniq(array, getIteratee(iteratee))
|
7922
|
+
? baseUniq(array, getIteratee(iteratee, 2))
|
7714
7923
|
: [];
|
7715
7924
|
}
|
7716
7925
|
|
@@ -7752,11 +7961,11 @@
|
|
7752
7961
|
* @returns {Array} Returns the new array of regrouped elements.
|
7753
7962
|
* @example
|
7754
7963
|
*
|
7755
|
-
* var zipped = _.zip(['
|
7756
|
-
* // => [['
|
7964
|
+
* var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
|
7965
|
+
* // => [['a', 1, true], ['b', 2, false]]
|
7757
7966
|
*
|
7758
7967
|
* _.unzip(zipped);
|
7759
|
-
* // => [['
|
7968
|
+
* // => [['a', 'b'], [1, 2], [true, false]]
|
7760
7969
|
*/
|
7761
7970
|
function unzip(array) {
|
7762
7971
|
if (!(array && array.length)) {
|
@@ -7813,6 +8022,8 @@
|
|
7813
8022
|
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
7814
8023
|
* for equality comparisons.
|
7815
8024
|
*
|
8025
|
+
* **Note:** Unlike `_.pull`, this method returns a new array.
|
8026
|
+
*
|
7816
8027
|
* @static
|
7817
8028
|
* @memberOf _
|
7818
8029
|
* @since 0.1.0
|
@@ -7826,7 +8037,7 @@
|
|
7826
8037
|
* _.without([2, 1, 2, 3], 1, 2);
|
7827
8038
|
* // => [3]
|
7828
8039
|
*/
|
7829
|
-
var without =
|
8040
|
+
var without = baseRest(function(array, values) {
|
7830
8041
|
return isArrayLikeObject(array)
|
7831
8042
|
? baseDifference(array, values)
|
7832
8043
|
: [];
|
@@ -7850,7 +8061,7 @@
|
|
7850
8061
|
* _.xor([2, 1], [2, 3]);
|
7851
8062
|
* // => [1, 3]
|
7852
8063
|
*/
|
7853
|
-
var xor =
|
8064
|
+
var xor = baseRest(function(arrays) {
|
7854
8065
|
return baseXor(arrayFilter(arrays, isArrayLikeObject));
|
7855
8066
|
});
|
7856
8067
|
|
@@ -7865,7 +8076,7 @@
|
|
7865
8076
|
* @since 4.0.0
|
7866
8077
|
* @category Array
|
7867
8078
|
* @param {...Array} [arrays] The arrays to inspect.
|
7868
|
-
* @param {
|
8079
|
+
* @param {Function} [iteratee=_.identity]
|
7869
8080
|
* The iteratee invoked per element.
|
7870
8081
|
* @returns {Array} Returns the new array of filtered values.
|
7871
8082
|
* @example
|
@@ -7877,12 +8088,12 @@
|
|
7877
8088
|
* _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
|
7878
8089
|
* // => [{ 'x': 2 }]
|
7879
8090
|
*/
|
7880
|
-
var xorBy =
|
8091
|
+
var xorBy = baseRest(function(arrays) {
|
7881
8092
|
var iteratee = last(arrays);
|
7882
8093
|
if (isArrayLikeObject(iteratee)) {
|
7883
8094
|
iteratee = undefined;
|
7884
8095
|
}
|
7885
|
-
return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee));
|
8096
|
+
return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
|
7886
8097
|
});
|
7887
8098
|
|
7888
8099
|
/**
|
@@ -7905,7 +8116,7 @@
|
|
7905
8116
|
* _.xorWith(objects, others, _.isEqual);
|
7906
8117
|
* // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
|
7907
8118
|
*/
|
7908
|
-
var xorWith =
|
8119
|
+
var xorWith = baseRest(function(arrays) {
|
7909
8120
|
var comparator = last(arrays);
|
7910
8121
|
if (isArrayLikeObject(comparator)) {
|
7911
8122
|
comparator = undefined;
|
@@ -7926,10 +8137,10 @@
|
|
7926
8137
|
* @returns {Array} Returns the new array of grouped elements.
|
7927
8138
|
* @example
|
7928
8139
|
*
|
7929
|
-
* _.zip(['
|
7930
|
-
* // => [['
|
8140
|
+
* _.zip(['a', 'b'], [1, 2], [true, false]);
|
8141
|
+
* // => [['a', 1, true], ['b', 2, false]]
|
7931
8142
|
*/
|
7932
|
-
var zip =
|
8143
|
+
var zip = baseRest(unzip);
|
7933
8144
|
|
7934
8145
|
/**
|
7935
8146
|
* This method is like `_.fromPairs` except that it accepts two arrays,
|
@@ -7989,7 +8200,7 @@
|
|
7989
8200
|
* });
|
7990
8201
|
* // => [111, 222]
|
7991
8202
|
*/
|
7992
|
-
var zipWith =
|
8203
|
+
var zipWith = baseRest(function(arrays) {
|
7993
8204
|
var length = arrays.length,
|
7994
8205
|
iteratee = length > 1 ? arrays[length - 1] : undefined;
|
7995
8206
|
|
@@ -8105,7 +8316,7 @@
|
|
8105
8316
|
* _(object).at(['a[0].b.c', 'a[1]']).value();
|
8106
8317
|
* // => [3, 4]
|
8107
8318
|
*/
|
8108
|
-
var wrapperAt =
|
8319
|
+
var wrapperAt = baseRest(function(paths) {
|
8109
8320
|
paths = baseFlatten(paths, 1);
|
8110
8321
|
var length = paths.length,
|
8111
8322
|
start = length ? paths[0] : 0,
|
@@ -8358,7 +8569,7 @@
|
|
8358
8569
|
* @since 0.5.0
|
8359
8570
|
* @category Collection
|
8360
8571
|
* @param {Array|Object} collection The collection to iterate over.
|
8361
|
-
* @param {
|
8572
|
+
* @param {Function} [iteratee=_.identity]
|
8362
8573
|
* The iteratee to transform keys.
|
8363
8574
|
* @returns {Object} Returns the composed aggregate object.
|
8364
8575
|
* @example
|
@@ -8384,7 +8595,7 @@
|
|
8384
8595
|
* @since 0.1.0
|
8385
8596
|
* @category Collection
|
8386
8597
|
* @param {Array|Object} collection The collection to iterate over.
|
8387
|
-
* @param {
|
8598
|
+
* @param {Function} [predicate=_.identity]
|
8388
8599
|
* The function invoked per iteration.
|
8389
8600
|
* @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
|
8390
8601
|
* @returns {boolean} Returns `true` if all elements pass the predicate check,
|
@@ -8424,12 +8635,14 @@
|
|
8424
8635
|
* `predicate` returns truthy for. The predicate is invoked with three
|
8425
8636
|
* arguments: (value, index|key, collection).
|
8426
8637
|
*
|
8638
|
+
* **Note:** Unlike `_.remove`, this method returns a new array.
|
8639
|
+
*
|
8427
8640
|
* @static
|
8428
8641
|
* @memberOf _
|
8429
8642
|
* @since 0.1.0
|
8430
8643
|
* @category Collection
|
8431
8644
|
* @param {Array|Object} collection The collection to iterate over.
|
8432
|
-
* @param {
|
8645
|
+
* @param {Function} [predicate=_.identity]
|
8433
8646
|
* The function invoked per iteration.
|
8434
8647
|
* @returns {Array} Returns the new filtered array.
|
8435
8648
|
* @see _.reject
|
@@ -8470,7 +8683,7 @@
|
|
8470
8683
|
* @since 0.1.0
|
8471
8684
|
* @category Collection
|
8472
8685
|
* @param {Array|Object} collection The collection to search.
|
8473
|
-
* @param {
|
8686
|
+
* @param {Function} [predicate=_.identity]
|
8474
8687
|
* The function invoked per iteration.
|
8475
8688
|
* @param {number} [fromIndex=0] The index to search from.
|
8476
8689
|
* @returns {*} Returns the matched element, else `undefined`.
|
@@ -8508,7 +8721,7 @@
|
|
8508
8721
|
* @since 2.0.0
|
8509
8722
|
* @category Collection
|
8510
8723
|
* @param {Array|Object} collection The collection to search.
|
8511
|
-
* @param {
|
8724
|
+
* @param {Function} [predicate=_.identity]
|
8512
8725
|
* The function invoked per iteration.
|
8513
8726
|
* @param {number} [fromIndex=collection.length-1] The index to search from.
|
8514
8727
|
* @returns {*} Returns the matched element, else `undefined`.
|
@@ -8531,7 +8744,7 @@
|
|
8531
8744
|
* @since 4.0.0
|
8532
8745
|
* @category Collection
|
8533
8746
|
* @param {Array|Object} collection The collection to iterate over.
|
8534
|
-
* @param {
|
8747
|
+
* @param {Function} [iteratee=_.identity]
|
8535
8748
|
* The function invoked per iteration.
|
8536
8749
|
* @returns {Array} Returns the new flattened array.
|
8537
8750
|
* @example
|
@@ -8556,7 +8769,7 @@
|
|
8556
8769
|
* @since 4.7.0
|
8557
8770
|
* @category Collection
|
8558
8771
|
* @param {Array|Object} collection The collection to iterate over.
|
8559
|
-
* @param {
|
8772
|
+
* @param {Function} [iteratee=_.identity]
|
8560
8773
|
* The function invoked per iteration.
|
8561
8774
|
* @returns {Array} Returns the new flattened array.
|
8562
8775
|
* @example
|
@@ -8581,7 +8794,7 @@
|
|
8581
8794
|
* @since 4.7.0
|
8582
8795
|
* @category Collection
|
8583
8796
|
* @param {Array|Object} collection The collection to iterate over.
|
8584
|
-
* @param {
|
8797
|
+
* @param {Function} [iteratee=_.identity]
|
8585
8798
|
* The function invoked per iteration.
|
8586
8799
|
* @param {number} [depth=1] The maximum recursion depth.
|
8587
8800
|
* @returns {Array} Returns the new flattened array.
|
@@ -8671,7 +8884,7 @@
|
|
8671
8884
|
* @since 0.1.0
|
8672
8885
|
* @category Collection
|
8673
8886
|
* @param {Array|Object} collection The collection to iterate over.
|
8674
|
-
* @param {
|
8887
|
+
* @param {Function} [iteratee=_.identity]
|
8675
8888
|
* The iteratee to transform keys.
|
8676
8889
|
* @returns {Object} Returns the composed aggregate object.
|
8677
8890
|
* @example
|
@@ -8715,10 +8928,10 @@
|
|
8715
8928
|
* _.includes([1, 2, 3], 1, 2);
|
8716
8929
|
* // => false
|
8717
8930
|
*
|
8718
|
-
* _.includes({ '
|
8931
|
+
* _.includes({ 'a': 1, 'b': 2 }, 1);
|
8719
8932
|
* // => true
|
8720
8933
|
*
|
8721
|
-
* _.includes('
|
8934
|
+
* _.includes('abcd', 'bc');
|
8722
8935
|
* // => true
|
8723
8936
|
*/
|
8724
8937
|
function includes(collection, value, fromIndex, guard) {
|
@@ -8737,8 +8950,8 @@
|
|
8737
8950
|
/**
|
8738
8951
|
* Invokes the method at `path` of each element in `collection`, returning
|
8739
8952
|
* an array of the results of each invoked method. Any additional arguments
|
8740
|
-
* are provided to each invoked method. If `
|
8741
|
-
*
|
8953
|
+
* are provided to each invoked method. If `path` is a function, it's invoked
|
8954
|
+
* for, and `this` bound to, each element in `collection`.
|
8742
8955
|
*
|
8743
8956
|
* @static
|
8744
8957
|
* @memberOf _
|
@@ -8757,7 +8970,7 @@
|
|
8757
8970
|
* _.invokeMap([123, 456], String.prototype.split, '');
|
8758
8971
|
* // => [['1', '2', '3'], ['4', '5', '6']]
|
8759
8972
|
*/
|
8760
|
-
var invokeMap =
|
8973
|
+
var invokeMap = baseRest(function(collection, path, args) {
|
8761
8974
|
var index = -1,
|
8762
8975
|
isFunc = typeof path == 'function',
|
8763
8976
|
isProp = isKey(path),
|
@@ -8781,7 +8994,7 @@
|
|
8781
8994
|
* @since 4.0.0
|
8782
8995
|
* @category Collection
|
8783
8996
|
* @param {Array|Object} collection The collection to iterate over.
|
8784
|
-
* @param {
|
8997
|
+
* @param {Function} [iteratee=_.identity]
|
8785
8998
|
* The iteratee to transform keys.
|
8786
8999
|
* @returns {Object} Returns the composed aggregate object.
|
8787
9000
|
* @example
|
@@ -8822,8 +9035,7 @@
|
|
8822
9035
|
* @since 0.1.0
|
8823
9036
|
* @category Collection
|
8824
9037
|
* @param {Array|Object} collection The collection to iterate over.
|
8825
|
-
* @param {
|
8826
|
-
* The function invoked per iteration.
|
9038
|
+
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
|
8827
9039
|
* @returns {Array} Returns the new mapped array.
|
8828
9040
|
* @example
|
8829
9041
|
*
|
@@ -8905,8 +9117,7 @@
|
|
8905
9117
|
* @since 3.0.0
|
8906
9118
|
* @category Collection
|
8907
9119
|
* @param {Array|Object} collection The collection to iterate over.
|
8908
|
-
* @param {
|
8909
|
-
* The function invoked per iteration.
|
9120
|
+
* @param {Function} [predicate=_.identity] The function invoked per iteration.
|
8910
9121
|
* @returns {Array} Returns the array of grouped elements.
|
8911
9122
|
* @example
|
8912
9123
|
*
|
@@ -9017,8 +9228,7 @@
|
|
9017
9228
|
* @since 0.1.0
|
9018
9229
|
* @category Collection
|
9019
9230
|
* @param {Array|Object} collection The collection to iterate over.
|
9020
|
-
* @param {
|
9021
|
-
* The function invoked per iteration.
|
9231
|
+
* @param {Function} [predicate=_.identity] The function invoked per iteration.
|
9022
9232
|
* @returns {Array} Returns the new filtered array.
|
9023
9233
|
* @see _.filter
|
9024
9234
|
* @example
|
@@ -9045,10 +9255,7 @@
|
|
9045
9255
|
*/
|
9046
9256
|
function reject(collection, predicate) {
|
9047
9257
|
var func = isArray(collection) ? arrayFilter : baseFilter;
|
9048
|
-
|
9049
|
-
return func(collection, function(value, index, collection) {
|
9050
|
-
return !predicate(value, index, collection);
|
9051
|
-
});
|
9258
|
+
return func(collection, negate(getIteratee(predicate, 3)));
|
9052
9259
|
}
|
9053
9260
|
|
9054
9261
|
/**
|
@@ -9181,8 +9388,7 @@
|
|
9181
9388
|
* @since 0.1.0
|
9182
9389
|
* @category Collection
|
9183
9390
|
* @param {Array|Object} collection The collection to iterate over.
|
9184
|
-
* @param {
|
9185
|
-
* The function invoked per iteration.
|
9391
|
+
* @param {Function} [predicate=_.identity] The function invoked per iteration.
|
9186
9392
|
* @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
|
9187
9393
|
* @returns {boolean} Returns `true` if any element passes the predicate check,
|
9188
9394
|
* else `false`.
|
@@ -9227,8 +9433,8 @@
|
|
9227
9433
|
* @since 0.1.0
|
9228
9434
|
* @category Collection
|
9229
9435
|
* @param {Array|Object} collection The collection to iterate over.
|
9230
|
-
* @param {...(
|
9231
|
-
*
|
9436
|
+
* @param {...(Function|Function[])} [iteratees=[_.identity]]
|
9437
|
+
* The iteratees to sort by.
|
9232
9438
|
* @returns {Array} Returns the new sorted array.
|
9233
9439
|
* @example
|
9234
9440
|
*
|
@@ -9250,7 +9456,7 @@
|
|
9250
9456
|
* });
|
9251
9457
|
* // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
|
9252
9458
|
*/
|
9253
|
-
var sortBy =
|
9459
|
+
var sortBy = baseRest(function(collection, iteratees) {
|
9254
9460
|
if (collection == null) {
|
9255
9461
|
return [];
|
9256
9462
|
}
|
@@ -9260,11 +9466,7 @@
|
|
9260
9466
|
} else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
|
9261
9467
|
iteratees = [iteratees[0]];
|
9262
9468
|
}
|
9263
|
-
|
9264
|
-
? iteratees[0]
|
9265
|
-
: baseFlatten(iteratees, 1, isFlattenableIteratee);
|
9266
|
-
|
9267
|
-
return baseOrderBy(collection, iteratees, []);
|
9469
|
+
return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
|
9268
9470
|
});
|
9269
9471
|
|
9270
9472
|
/*------------------------------------------------------------------------*/
|
@@ -9347,7 +9549,7 @@
|
|
9347
9549
|
function ary(func, n, guard) {
|
9348
9550
|
n = guard ? undefined : n;
|
9349
9551
|
n = (func && n == null) ? func.length : n;
|
9350
|
-
return
|
9552
|
+
return createWrap(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);
|
9351
9553
|
}
|
9352
9554
|
|
9353
9555
|
/**
|
@@ -9365,7 +9567,7 @@
|
|
9365
9567
|
* @example
|
9366
9568
|
*
|
9367
9569
|
* jQuery(element).on('click', _.before(5, addContactToList));
|
9368
|
-
* // =>
|
9570
|
+
* // => Allows adding up to 4 contacts to the list.
|
9369
9571
|
*/
|
9370
9572
|
function before(n, func) {
|
9371
9573
|
var result;
|
@@ -9404,9 +9606,9 @@
|
|
9404
9606
|
* @returns {Function} Returns the new bound function.
|
9405
9607
|
* @example
|
9406
9608
|
*
|
9407
|
-
*
|
9609
|
+
* function greet(greeting, punctuation) {
|
9408
9610
|
* return greeting + ' ' + this.user + punctuation;
|
9409
|
-
* }
|
9611
|
+
* }
|
9410
9612
|
*
|
9411
9613
|
* var object = { 'user': 'fred' };
|
9412
9614
|
*
|
@@ -9419,13 +9621,13 @@
|
|
9419
9621
|
* bound('hi');
|
9420
9622
|
* // => 'hi fred!'
|
9421
9623
|
*/
|
9422
|
-
var bind =
|
9624
|
+
var bind = baseRest(function(func, thisArg, partials) {
|
9423
9625
|
var bitmask = BIND_FLAG;
|
9424
9626
|
if (partials.length) {
|
9425
9627
|
var holders = replaceHolders(partials, getHolder(bind));
|
9426
9628
|
bitmask |= PARTIAL_FLAG;
|
9427
9629
|
}
|
9428
|
-
return
|
9630
|
+
return createWrap(func, bitmask, thisArg, partials, holders);
|
9429
9631
|
});
|
9430
9632
|
|
9431
9633
|
/**
|
@@ -9473,13 +9675,13 @@
|
|
9473
9675
|
* bound('hi');
|
9474
9676
|
* // => 'hiya fred!'
|
9475
9677
|
*/
|
9476
|
-
var bindKey =
|
9678
|
+
var bindKey = baseRest(function(object, key, partials) {
|
9477
9679
|
var bitmask = BIND_FLAG | BIND_KEY_FLAG;
|
9478
9680
|
if (partials.length) {
|
9479
9681
|
var holders = replaceHolders(partials, getHolder(bindKey));
|
9480
9682
|
bitmask |= PARTIAL_FLAG;
|
9481
9683
|
}
|
9482
|
-
return
|
9684
|
+
return createWrap(key, bitmask, object, partials, holders);
|
9483
9685
|
});
|
9484
9686
|
|
9485
9687
|
/**
|
@@ -9525,7 +9727,7 @@
|
|
9525
9727
|
*/
|
9526
9728
|
function curry(func, arity, guard) {
|
9527
9729
|
arity = guard ? undefined : arity;
|
9528
|
-
var result =
|
9730
|
+
var result = createWrap(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
|
9529
9731
|
result.placeholder = curry.placeholder;
|
9530
9732
|
return result;
|
9531
9733
|
}
|
@@ -9570,7 +9772,7 @@
|
|
9570
9772
|
*/
|
9571
9773
|
function curryRight(func, arity, guard) {
|
9572
9774
|
arity = guard ? undefined : arity;
|
9573
|
-
var result =
|
9775
|
+
var result = createWrap(func, CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
|
9574
9776
|
result.placeholder = curryRight.placeholder;
|
9575
9777
|
return result;
|
9576
9778
|
}
|
@@ -9580,14 +9782,18 @@
|
|
9580
9782
|
* milliseconds have elapsed since the last time the debounced function was
|
9581
9783
|
* invoked. The debounced function comes with a `cancel` method to cancel
|
9582
9784
|
* delayed `func` invocations and a `flush` method to immediately invoke them.
|
9583
|
-
* Provide
|
9584
|
-
*
|
9585
|
-
* with the last arguments provided to the debounced function. Subsequent
|
9586
|
-
* to the debounced function return the result of the last `func`
|
9785
|
+
* Provide `options` to indicate whether `func` should be invoked on the
|
9786
|
+
* leading and/or trailing edge of the `wait` timeout. The `func` is invoked
|
9787
|
+
* with the last arguments provided to the debounced function. Subsequent
|
9788
|
+
* calls to the debounced function return the result of the last `func`
|
9789
|
+
* invocation.
|
9587
9790
|
*
|
9588
|
-
* **Note:** If `leading` and `trailing` options are `true`, `func` is
|
9589
|
-
* on the trailing edge of the timeout only if the debounced function
|
9590
|
-
* invoked more than once during the `wait` timeout.
|
9791
|
+
* **Note:** If `leading` and `trailing` options are `true`, `func` is
|
9792
|
+
* invoked on the trailing edge of the timeout only if the debounced function
|
9793
|
+
* is invoked more than once during the `wait` timeout.
|
9794
|
+
*
|
9795
|
+
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
|
9796
|
+
* until to the next tick, similar to `setTimeout` with a timeout of `0`.
|
9591
9797
|
*
|
9592
9798
|
* See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
|
9593
9799
|
* for details over the differences between `_.debounce` and `_.throttle`.
|
@@ -9708,6 +9914,9 @@
|
|
9708
9914
|
}
|
9709
9915
|
|
9710
9916
|
function cancel() {
|
9917
|
+
if (timerId !== undefined) {
|
9918
|
+
clearTimeout(timerId);
|
9919
|
+
}
|
9711
9920
|
lastInvokeTime = 0;
|
9712
9921
|
lastArgs = lastCallTime = lastThis = timerId = undefined;
|
9713
9922
|
}
|
@@ -9762,7 +9971,7 @@
|
|
9762
9971
|
* }, 'deferred');
|
9763
9972
|
* // => Logs 'deferred' after one or more milliseconds.
|
9764
9973
|
*/
|
9765
|
-
var defer =
|
9974
|
+
var defer = baseRest(function(func, args) {
|
9766
9975
|
return baseDelay(func, 1, args);
|
9767
9976
|
});
|
9768
9977
|
|
@@ -9785,7 +9994,7 @@
|
|
9785
9994
|
* }, 1000, 'later');
|
9786
9995
|
* // => Logs 'later' after one second.
|
9787
9996
|
*/
|
9788
|
-
var delay =
|
9997
|
+
var delay = baseRest(function(func, wait, args) {
|
9789
9998
|
return baseDelay(func, toNumber(wait) || 0, args);
|
9790
9999
|
});
|
9791
10000
|
|
@@ -9808,7 +10017,7 @@
|
|
9808
10017
|
* // => ['d', 'c', 'b', 'a']
|
9809
10018
|
*/
|
9810
10019
|
function flip(func) {
|
9811
|
-
return
|
10020
|
+
return createWrap(func, FLIP_FLAG);
|
9812
10021
|
}
|
9813
10022
|
|
9814
10023
|
/**
|
@@ -9903,7 +10112,14 @@
|
|
9903
10112
|
throw new TypeError(FUNC_ERROR_TEXT);
|
9904
10113
|
}
|
9905
10114
|
return function() {
|
9906
|
-
|
10115
|
+
var args = arguments;
|
10116
|
+
switch (args.length) {
|
10117
|
+
case 0: return !predicate.call(this);
|
10118
|
+
case 1: return !predicate.call(this, args[0]);
|
10119
|
+
case 2: return !predicate.call(this, args[0], args[1]);
|
10120
|
+
case 3: return !predicate.call(this, args[0], args[1], args[2]);
|
10121
|
+
}
|
10122
|
+
return !predicate.apply(this, args);
|
9907
10123
|
};
|
9908
10124
|
}
|
9909
10125
|
|
@@ -9923,23 +10139,22 @@
|
|
9923
10139
|
* var initialize = _.once(createApplication);
|
9924
10140
|
* initialize();
|
9925
10141
|
* initialize();
|
9926
|
-
* //
|
10142
|
+
* // => `createApplication` is invoked once
|
9927
10143
|
*/
|
9928
10144
|
function once(func) {
|
9929
10145
|
return before(2, func);
|
9930
10146
|
}
|
9931
10147
|
|
9932
10148
|
/**
|
9933
|
-
* Creates a function that invokes `func` with arguments transformed
|
9934
|
-
* corresponding `transforms`.
|
10149
|
+
* Creates a function that invokes `func` with its arguments transformed.
|
9935
10150
|
*
|
9936
10151
|
* @static
|
9937
10152
|
* @since 4.0.0
|
9938
10153
|
* @memberOf _
|
9939
10154
|
* @category Function
|
9940
10155
|
* @param {Function} func The function to wrap.
|
9941
|
-
* @param {...(
|
9942
|
-
*
|
10156
|
+
* @param {...(Function|Function[])} [transforms=[_.identity]]
|
10157
|
+
* The argument transforms.
|
9943
10158
|
* @returns {Function} Returns the new function.
|
9944
10159
|
* @example
|
9945
10160
|
*
|
@@ -9961,13 +10176,13 @@
|
|
9961
10176
|
* func(10, 5);
|
9962
10177
|
* // => [100, 10]
|
9963
10178
|
*/
|
9964
|
-
var overArgs =
|
10179
|
+
var overArgs = baseRest(function(func, transforms) {
|
9965
10180
|
transforms = (transforms.length == 1 && isArray(transforms[0]))
|
9966
10181
|
? arrayMap(transforms[0], baseUnary(getIteratee()))
|
9967
|
-
: arrayMap(baseFlatten(transforms, 1
|
10182
|
+
: arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
|
9968
10183
|
|
9969
10184
|
var funcsLength = transforms.length;
|
9970
|
-
return
|
10185
|
+
return baseRest(function(args) {
|
9971
10186
|
var index = -1,
|
9972
10187
|
length = nativeMin(args.length, funcsLength);
|
9973
10188
|
|
@@ -9998,9 +10213,9 @@
|
|
9998
10213
|
* @returns {Function} Returns the new partially applied function.
|
9999
10214
|
* @example
|
10000
10215
|
*
|
10001
|
-
*
|
10216
|
+
* function greet(greeting, name) {
|
10002
10217
|
* return greeting + ' ' + name;
|
10003
|
-
* }
|
10218
|
+
* }
|
10004
10219
|
*
|
10005
10220
|
* var sayHelloTo = _.partial(greet, 'hello');
|
10006
10221
|
* sayHelloTo('fred');
|
@@ -10011,9 +10226,9 @@
|
|
10011
10226
|
* greetFred('hi');
|
10012
10227
|
* // => 'hi fred'
|
10013
10228
|
*/
|
10014
|
-
var partial =
|
10229
|
+
var partial = baseRest(function(func, partials) {
|
10015
10230
|
var holders = replaceHolders(partials, getHolder(partial));
|
10016
|
-
return
|
10231
|
+
return createWrap(func, PARTIAL_FLAG, undefined, partials, holders);
|
10017
10232
|
});
|
10018
10233
|
|
10019
10234
|
/**
|
@@ -10035,9 +10250,9 @@
|
|
10035
10250
|
* @returns {Function} Returns the new partially applied function.
|
10036
10251
|
* @example
|
10037
10252
|
*
|
10038
|
-
*
|
10253
|
+
* function greet(greeting, name) {
|
10039
10254
|
* return greeting + ' ' + name;
|
10040
|
-
* }
|
10255
|
+
* }
|
10041
10256
|
*
|
10042
10257
|
* var greetFred = _.partialRight(greet, 'fred');
|
10043
10258
|
* greetFred('hi');
|
@@ -10048,9 +10263,9 @@
|
|
10048
10263
|
* sayHelloTo('fred');
|
10049
10264
|
* // => 'hello fred'
|
10050
10265
|
*/
|
10051
|
-
var partialRight =
|
10266
|
+
var partialRight = baseRest(function(func, partials) {
|
10052
10267
|
var holders = replaceHolders(partials, getHolder(partialRight));
|
10053
|
-
return
|
10268
|
+
return createWrap(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders);
|
10054
10269
|
});
|
10055
10270
|
|
10056
10271
|
/**
|
@@ -10075,8 +10290,8 @@
|
|
10075
10290
|
* rearged('b', 'c', 'a')
|
10076
10291
|
* // => ['a', 'b', 'c']
|
10077
10292
|
*/
|
10078
|
-
var rearg =
|
10079
|
-
return
|
10293
|
+
var rearg = baseRest(function(func, indexes) {
|
10294
|
+
return createWrap(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes, 1));
|
10080
10295
|
});
|
10081
10296
|
|
10082
10297
|
/**
|
@@ -10108,29 +10323,8 @@
|
|
10108
10323
|
if (typeof func != 'function') {
|
10109
10324
|
throw new TypeError(FUNC_ERROR_TEXT);
|
10110
10325
|
}
|
10111
|
-
start =
|
10112
|
-
return
|
10113
|
-
var args = arguments,
|
10114
|
-
index = -1,
|
10115
|
-
length = nativeMax(args.length - start, 0),
|
10116
|
-
array = Array(length);
|
10117
|
-
|
10118
|
-
while (++index < length) {
|
10119
|
-
array[index] = args[start + index];
|
10120
|
-
}
|
10121
|
-
switch (start) {
|
10122
|
-
case 0: return func.call(this, array);
|
10123
|
-
case 1: return func.call(this, args[0], array);
|
10124
|
-
case 2: return func.call(this, args[0], args[1], array);
|
10125
|
-
}
|
10126
|
-
var otherArgs = Array(start + 1);
|
10127
|
-
index = -1;
|
10128
|
-
while (++index < start) {
|
10129
|
-
otherArgs[index] = args[index];
|
10130
|
-
}
|
10131
|
-
otherArgs[start] = array;
|
10132
|
-
return apply(func, this, otherArgs);
|
10133
|
-
};
|
10326
|
+
start = start === undefined ? start : toInteger(start);
|
10327
|
+
return baseRest(func, start);
|
10134
10328
|
}
|
10135
10329
|
|
10136
10330
|
/**
|
@@ -10172,7 +10366,7 @@
|
|
10172
10366
|
throw new TypeError(FUNC_ERROR_TEXT);
|
10173
10367
|
}
|
10174
10368
|
start = start === undefined ? 0 : nativeMax(toInteger(start), 0);
|
10175
|
-
return
|
10369
|
+
return baseRest(function(args) {
|
10176
10370
|
var array = args[start],
|
10177
10371
|
otherArgs = castSlice(args, 0, start);
|
10178
10372
|
|
@@ -10187,8 +10381,8 @@
|
|
10187
10381
|
* Creates a throttled function that only invokes `func` at most once per
|
10188
10382
|
* every `wait` milliseconds. The throttled function comes with a `cancel`
|
10189
10383
|
* method to cancel delayed `func` invocations and a `flush` method to
|
10190
|
-
* immediately invoke them. Provide
|
10191
|
-
*
|
10384
|
+
* immediately invoke them. Provide `options` to indicate whether `func`
|
10385
|
+
* should be invoked on the leading and/or trailing edge of the `wait`
|
10192
10386
|
* timeout. The `func` is invoked with the last arguments provided to the
|
10193
10387
|
* throttled function. Subsequent calls to the throttled function return the
|
10194
10388
|
* result of the last `func` invocation.
|
@@ -10197,6 +10391,9 @@
|
|
10197
10391
|
* invoked on the trailing edge of the timeout only if the throttled function
|
10198
10392
|
* is invoked more than once during the `wait` timeout.
|
10199
10393
|
*
|
10394
|
+
* If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
|
10395
|
+
* until to the next tick, similar to `setTimeout` with a timeout of `0`.
|
10396
|
+
*
|
10200
10397
|
* See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
|
10201
10398
|
* for details over the differences between `_.throttle` and `_.debounce`.
|
10202
10399
|
*
|
@@ -10262,10 +10459,10 @@
|
|
10262
10459
|
}
|
10263
10460
|
|
10264
10461
|
/**
|
10265
|
-
* Creates a function that provides `value` to
|
10266
|
-
*
|
10267
|
-
*
|
10268
|
-
*
|
10462
|
+
* Creates a function that provides `value` to `wrapper` as its first
|
10463
|
+
* argument. Any additional arguments provided to the function are appended
|
10464
|
+
* to those provided to the `wrapper`. The wrapper is invoked with the `this`
|
10465
|
+
* binding of the created function.
|
10269
10466
|
*
|
10270
10467
|
* @static
|
10271
10468
|
* @memberOf _
|
@@ -10450,6 +10647,34 @@
|
|
10450
10647
|
return baseClone(value, true, true, customizer);
|
10451
10648
|
}
|
10452
10649
|
|
10650
|
+
/**
|
10651
|
+
* Checks if `object` conforms to `source` by invoking the predicate
|
10652
|
+
* properties of `source` with the corresponding property values of `object`.
|
10653
|
+
*
|
10654
|
+
* **Note:** This method is equivalent to `_.conforms` when `source` is
|
10655
|
+
* partially applied.
|
10656
|
+
*
|
10657
|
+
* @static
|
10658
|
+
* @memberOf _
|
10659
|
+
* @since 4.14.0
|
10660
|
+
* @category Lang
|
10661
|
+
* @param {Object} object The object to inspect.
|
10662
|
+
* @param {Object} source The object of property predicates to conform to.
|
10663
|
+
* @returns {boolean} Returns `true` if `object` conforms, else `false`.
|
10664
|
+
* @example
|
10665
|
+
*
|
10666
|
+
* var object = { 'a': 1, 'b': 2 };
|
10667
|
+
*
|
10668
|
+
* _.conformsTo(object, { 'b': function(n) { return n > 1; } });
|
10669
|
+
* // => true
|
10670
|
+
*
|
10671
|
+
* _.conformsTo(object, { 'b': function(n) { return n > 2; } });
|
10672
|
+
* // => false
|
10673
|
+
*/
|
10674
|
+
function conformsTo(object, source) {
|
10675
|
+
return source == null || baseConformsTo(object, source, keys(source));
|
10676
|
+
}
|
10677
|
+
|
10453
10678
|
/**
|
10454
10679
|
* Performs a
|
10455
10680
|
* [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)
|
@@ -10464,8 +10689,8 @@
|
|
10464
10689
|
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
10465
10690
|
* @example
|
10466
10691
|
*
|
10467
|
-
* var object = { '
|
10468
|
-
* var other = { '
|
10692
|
+
* var object = { 'a': 1 };
|
10693
|
+
* var other = { 'a': 1 };
|
10469
10694
|
*
|
10470
10695
|
* _.eq(object, object);
|
10471
10696
|
* // => true
|
@@ -10546,7 +10771,7 @@
|
|
10546
10771
|
* @since 0.1.0
|
10547
10772
|
* @category Lang
|
10548
10773
|
* @param {*} value The value to check.
|
10549
|
-
* @returns {boolean} Returns `true` if `value` is
|
10774
|
+
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
|
10550
10775
|
* else `false`.
|
10551
10776
|
* @example
|
10552
10777
|
*
|
@@ -10568,11 +10793,9 @@
|
|
10568
10793
|
* @static
|
10569
10794
|
* @memberOf _
|
10570
10795
|
* @since 0.1.0
|
10571
|
-
* @type {Function}
|
10572
10796
|
* @category Lang
|
10573
10797
|
* @param {*} value The value to check.
|
10574
|
-
* @returns {boolean} Returns `true` if `value` is
|
10575
|
-
* else `false`.
|
10798
|
+
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
|
10576
10799
|
* @example
|
10577
10800
|
*
|
10578
10801
|
* _.isArray([1, 2, 3]);
|
@@ -10597,8 +10820,7 @@
|
|
10597
10820
|
* @since 4.3.0
|
10598
10821
|
* @category Lang
|
10599
10822
|
* @param {*} value The value to check.
|
10600
|
-
* @returns {boolean} Returns `true` if `value` is
|
10601
|
-
* else `false`.
|
10823
|
+
* @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
|
10602
10824
|
* @example
|
10603
10825
|
*
|
10604
10826
|
* _.isArrayBuffer(new ArrayBuffer(2));
|
@@ -10607,9 +10829,7 @@
|
|
10607
10829
|
* _.isArrayBuffer(new Array(2));
|
10608
10830
|
* // => false
|
10609
10831
|
*/
|
10610
|
-
|
10611
|
-
return isObjectLike(value) && objectToString.call(value) == arrayBufferTag;
|
10612
|
-
}
|
10832
|
+
var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
|
10613
10833
|
|
10614
10834
|
/**
|
10615
10835
|
* Checks if `value` is array-like. A value is considered array-like if it's
|
@@ -10677,8 +10897,7 @@
|
|
10677
10897
|
* @since 0.1.0
|
10678
10898
|
* @category Lang
|
10679
10899
|
* @param {*} value The value to check.
|
10680
|
-
* @returns {boolean} Returns `true` if `value` is
|
10681
|
-
* else `false`.
|
10900
|
+
* @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
|
10682
10901
|
* @example
|
10683
10902
|
*
|
10684
10903
|
* _.isBoolean(false);
|
@@ -10709,9 +10928,7 @@
|
|
10709
10928
|
* _.isBuffer(new Uint8Array(2));
|
10710
10929
|
* // => false
|
10711
10930
|
*/
|
10712
|
-
var isBuffer =
|
10713
|
-
return value instanceof Buffer;
|
10714
|
-
};
|
10931
|
+
var isBuffer = nativeIsBuffer || stubFalse;
|
10715
10932
|
|
10716
10933
|
/**
|
10717
10934
|
* Checks if `value` is classified as a `Date` object.
|
@@ -10721,8 +10938,7 @@
|
|
10721
10938
|
* @since 0.1.0
|
10722
10939
|
* @category Lang
|
10723
10940
|
* @param {*} value The value to check.
|
10724
|
-
* @returns {boolean} Returns `true` if `value` is
|
10725
|
-
* else `false`.
|
10941
|
+
* @returns {boolean} Returns `true` if `value` is a date object, else `false`.
|
10726
10942
|
* @example
|
10727
10943
|
*
|
10728
10944
|
* _.isDate(new Date);
|
@@ -10731,9 +10947,7 @@
|
|
10731
10947
|
* _.isDate('Mon April 23 2012');
|
10732
10948
|
* // => false
|
10733
10949
|
*/
|
10734
|
-
|
10735
|
-
return isObjectLike(value) && objectToString.call(value) == dateTag;
|
10736
|
-
}
|
10950
|
+
var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
|
10737
10951
|
|
10738
10952
|
/**
|
10739
10953
|
* Checks if `value` is likely a DOM element.
|
@@ -10830,8 +11044,8 @@
|
|
10830
11044
|
* else `false`.
|
10831
11045
|
* @example
|
10832
11046
|
*
|
10833
|
-
* var object = { '
|
10834
|
-
* var other = { '
|
11047
|
+
* var object = { 'a': 1 };
|
11048
|
+
* var other = { 'a': 1 };
|
10835
11049
|
*
|
10836
11050
|
* _.isEqual(object, other);
|
10837
11051
|
* // => true
|
@@ -10948,8 +11162,7 @@
|
|
10948
11162
|
* @since 0.1.0
|
10949
11163
|
* @category Lang
|
10950
11164
|
* @param {*} value The value to check.
|
10951
|
-
* @returns {boolean} Returns `true` if `value` is
|
10952
|
-
* else `false`.
|
11165
|
+
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
|
10953
11166
|
* @example
|
10954
11167
|
*
|
10955
11168
|
* _.isFunction(_);
|
@@ -11094,8 +11307,7 @@
|
|
11094
11307
|
* @since 4.3.0
|
11095
11308
|
* @category Lang
|
11096
11309
|
* @param {*} value The value to check.
|
11097
|
-
* @returns {boolean} Returns `true` if `value` is
|
11098
|
-
* else `false`.
|
11310
|
+
* @returns {boolean} Returns `true` if `value` is a map, else `false`.
|
11099
11311
|
* @example
|
11100
11312
|
*
|
11101
11313
|
* _.isMap(new Map);
|
@@ -11104,16 +11316,14 @@
|
|
11104
11316
|
* _.isMap(new WeakMap);
|
11105
11317
|
* // => false
|
11106
11318
|
*/
|
11107
|
-
|
11108
|
-
return isObjectLike(value) && getTag(value) == mapTag;
|
11109
|
-
}
|
11319
|
+
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
|
11110
11320
|
|
11111
11321
|
/**
|
11112
11322
|
* Performs a partial deep comparison between `object` and `source` to
|
11113
|
-
* determine if `object` contains equivalent property values.
|
11114
|
-
* equivalent to a `_.matches` function when `source` is partially applied.
|
11323
|
+
* determine if `object` contains equivalent property values.
|
11115
11324
|
*
|
11116
|
-
* **Note:** This method supports comparing the same values as `_.isEqual
|
11325
|
+
* **Note:** This method supports comparing the same values as `_.isEqual`
|
11326
|
+
* and is equivalent to `_.matches` when `source` is partially applied.
|
11117
11327
|
*
|
11118
11328
|
* @static
|
11119
11329
|
* @memberOf _
|
@@ -11124,12 +11334,12 @@
|
|
11124
11334
|
* @returns {boolean} Returns `true` if `object` is a match, else `false`.
|
11125
11335
|
* @example
|
11126
11336
|
*
|
11127
|
-
* var object = { '
|
11337
|
+
* var object = { 'a': 1, 'b': 2 };
|
11128
11338
|
*
|
11129
|
-
* _.isMatch(object, { '
|
11339
|
+
* _.isMatch(object, { 'b': 2 });
|
11130
11340
|
* // => true
|
11131
11341
|
*
|
11132
|
-
* _.isMatch(object, { '
|
11342
|
+
* _.isMatch(object, { 'b': 1 });
|
11133
11343
|
* // => false
|
11134
11344
|
*/
|
11135
11345
|
function isMatch(object, source) {
|
@@ -11211,13 +11421,13 @@
|
|
11211
11421
|
/**
|
11212
11422
|
* Checks if `value` is a pristine native function.
|
11213
11423
|
*
|
11214
|
-
* **Note:** This method can't reliably detect native functions in the
|
11215
|
-
*
|
11216
|
-
*
|
11217
|
-
*
|
11218
|
-
*
|
11219
|
-
*
|
11220
|
-
* which rely on
|
11424
|
+
* **Note:** This method can't reliably detect native functions in the presence
|
11425
|
+
* of the core-js package because core-js circumvents this kind of detection.
|
11426
|
+
* Despite multiple requests, the core-js maintainer has made it clear: any
|
11427
|
+
* attempt to fix the detection will be obstructed. As a result, we're left
|
11428
|
+
* with little choice but to throw an error. Unfortunately, this also affects
|
11429
|
+
* packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
|
11430
|
+
* which rely on core-js.
|
11221
11431
|
*
|
11222
11432
|
* @static
|
11223
11433
|
* @memberOf _
|
@@ -11236,7 +11446,7 @@
|
|
11236
11446
|
*/
|
11237
11447
|
function isNative(value) {
|
11238
11448
|
if (isMaskable(value)) {
|
11239
|
-
throw new Error('This method is not supported with
|
11449
|
+
throw new Error('This method is not supported with core-js. Try https://github.com/es-shims.');
|
11240
11450
|
}
|
11241
11451
|
return baseIsNative(value);
|
11242
11452
|
}
|
@@ -11297,8 +11507,7 @@
|
|
11297
11507
|
* @since 0.1.0
|
11298
11508
|
* @category Lang
|
11299
11509
|
* @param {*} value The value to check.
|
11300
|
-
* @returns {boolean} Returns `true` if `value` is
|
11301
|
-
* else `false`.
|
11510
|
+
* @returns {boolean} Returns `true` if `value` is a number, else `false`.
|
11302
11511
|
* @example
|
11303
11512
|
*
|
11304
11513
|
* _.isNumber(3);
|
@@ -11369,8 +11578,7 @@
|
|
11369
11578
|
* @since 0.1.0
|
11370
11579
|
* @category Lang
|
11371
11580
|
* @param {*} value The value to check.
|
11372
|
-
* @returns {boolean} Returns `true` if `value` is
|
11373
|
-
* else `false`.
|
11581
|
+
* @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
|
11374
11582
|
* @example
|
11375
11583
|
*
|
11376
11584
|
* _.isRegExp(/abc/);
|
@@ -11379,9 +11587,7 @@
|
|
11379
11587
|
* _.isRegExp('/abc/');
|
11380
11588
|
* // => false
|
11381
11589
|
*/
|
11382
|
-
|
11383
|
-
return isObject(value) && objectToString.call(value) == regexpTag;
|
11384
|
-
}
|
11590
|
+
var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
|
11385
11591
|
|
11386
11592
|
/**
|
11387
11593
|
* Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
|
@@ -11423,8 +11629,7 @@
|
|
11423
11629
|
* @since 4.3.0
|
11424
11630
|
* @category Lang
|
11425
11631
|
* @param {*} value The value to check.
|
11426
|
-
* @returns {boolean} Returns `true` if `value` is
|
11427
|
-
* else `false`.
|
11632
|
+
* @returns {boolean} Returns `true` if `value` is a set, else `false`.
|
11428
11633
|
* @example
|
11429
11634
|
*
|
11430
11635
|
* _.isSet(new Set);
|
@@ -11433,9 +11638,7 @@
|
|
11433
11638
|
* _.isSet(new WeakSet);
|
11434
11639
|
* // => false
|
11435
11640
|
*/
|
11436
|
-
|
11437
|
-
return isObjectLike(value) && getTag(value) == setTag;
|
11438
|
-
}
|
11641
|
+
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
|
11439
11642
|
|
11440
11643
|
/**
|
11441
11644
|
* Checks if `value` is classified as a `String` primitive or object.
|
@@ -11445,8 +11648,7 @@
|
|
11445
11648
|
* @memberOf _
|
11446
11649
|
* @category Lang
|
11447
11650
|
* @param {*} value The value to check.
|
11448
|
-
* @returns {boolean} Returns `true` if `value` is
|
11449
|
-
* else `false`.
|
11651
|
+
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
|
11450
11652
|
* @example
|
11451
11653
|
*
|
11452
11654
|
* _.isString('abc');
|
@@ -11468,8 +11670,7 @@
|
|
11468
11670
|
* @since 4.0.0
|
11469
11671
|
* @category Lang
|
11470
11672
|
* @param {*} value The value to check.
|
11471
|
-
* @returns {boolean} Returns `true` if `value` is
|
11472
|
-
* else `false`.
|
11673
|
+
* @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
|
11473
11674
|
* @example
|
11474
11675
|
*
|
11475
11676
|
* _.isSymbol(Symbol.iterator);
|
@@ -11491,8 +11692,7 @@
|
|
11491
11692
|
* @since 3.0.0
|
11492
11693
|
* @category Lang
|
11493
11694
|
* @param {*} value The value to check.
|
11494
|
-
* @returns {boolean} Returns `true` if `value` is
|
11495
|
-
* else `false`.
|
11695
|
+
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
|
11496
11696
|
* @example
|
11497
11697
|
*
|
11498
11698
|
* _.isTypedArray(new Uint8Array);
|
@@ -11501,10 +11701,7 @@
|
|
11501
11701
|
* _.isTypedArray([]);
|
11502
11702
|
* // => false
|
11503
11703
|
*/
|
11504
|
-
|
11505
|
-
return isObjectLike(value) &&
|
11506
|
-
isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
|
11507
|
-
}
|
11704
|
+
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
|
11508
11705
|
|
11509
11706
|
/**
|
11510
11707
|
* Checks if `value` is `undefined`.
|
@@ -11535,8 +11732,7 @@
|
|
11535
11732
|
* @since 4.3.0
|
11536
11733
|
* @category Lang
|
11537
11734
|
* @param {*} value The value to check.
|
11538
|
-
* @returns {boolean} Returns `true` if `value` is
|
11539
|
-
* else `false`.
|
11735
|
+
* @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
|
11540
11736
|
* @example
|
11541
11737
|
*
|
11542
11738
|
* _.isWeakMap(new WeakMap);
|
@@ -11557,8 +11753,7 @@
|
|
11557
11753
|
* @since 4.3.0
|
11558
11754
|
* @category Lang
|
11559
11755
|
* @param {*} value The value to check.
|
11560
|
-
* @returns {boolean} Returns `true` if `value` is
|
11561
|
-
* else `false`.
|
11756
|
+
* @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
|
11562
11757
|
* @example
|
11563
11758
|
*
|
11564
11759
|
* _.isWeakSet(new WeakSet);
|
@@ -11907,18 +12102,18 @@
|
|
11907
12102
|
* @example
|
11908
12103
|
*
|
11909
12104
|
* function Foo() {
|
11910
|
-
* this.
|
12105
|
+
* this.a = 1;
|
11911
12106
|
* }
|
11912
12107
|
*
|
11913
12108
|
* function Bar() {
|
11914
|
-
* this.
|
12109
|
+
* this.c = 3;
|
11915
12110
|
* }
|
11916
12111
|
*
|
11917
|
-
* Foo.prototype.
|
11918
|
-
* Bar.prototype.
|
12112
|
+
* Foo.prototype.b = 2;
|
12113
|
+
* Bar.prototype.d = 4;
|
11919
12114
|
*
|
11920
|
-
* _.assign({ 'a':
|
11921
|
-
* // => { 'a': 1, 'c': 3
|
12115
|
+
* _.assign({ 'a': 0 }, new Foo, new Bar);
|
12116
|
+
* // => { 'a': 1, 'c': 3 }
|
11922
12117
|
*/
|
11923
12118
|
var assign = createAssigner(function(object, source) {
|
11924
12119
|
if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {
|
@@ -11950,18 +12145,18 @@
|
|
11950
12145
|
* @example
|
11951
12146
|
*
|
11952
12147
|
* function Foo() {
|
11953
|
-
* this.
|
12148
|
+
* this.a = 1;
|
11954
12149
|
* }
|
11955
12150
|
*
|
11956
12151
|
* function Bar() {
|
11957
|
-
* this.
|
12152
|
+
* this.c = 3;
|
11958
12153
|
* }
|
11959
12154
|
*
|
11960
|
-
* Foo.prototype.
|
11961
|
-
* Bar.prototype.
|
12155
|
+
* Foo.prototype.b = 2;
|
12156
|
+
* Bar.prototype.d = 4;
|
11962
12157
|
*
|
11963
|
-
* _.assignIn({ 'a':
|
11964
|
-
* // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4
|
12158
|
+
* _.assignIn({ 'a': 0 }, new Foo, new Bar);
|
12159
|
+
* // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
|
11965
12160
|
*/
|
11966
12161
|
var assignIn = createAssigner(function(object, source) {
|
11967
12162
|
if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {
|
@@ -12055,7 +12250,7 @@
|
|
12055
12250
|
* _.at(object, ['a[0].b.c', 'a[1]']);
|
12056
12251
|
* // => [3, 4]
|
12057
12252
|
*/
|
12058
|
-
var at =
|
12253
|
+
var at = baseRest(function(object, paths) {
|
12059
12254
|
return baseAt(object, baseFlatten(paths, 1));
|
12060
12255
|
});
|
12061
12256
|
|
@@ -12116,10 +12311,10 @@
|
|
12116
12311
|
* @see _.defaultsDeep
|
12117
12312
|
* @example
|
12118
12313
|
*
|
12119
|
-
* _.defaults({ '
|
12120
|
-
* // => { '
|
12314
|
+
* _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
|
12315
|
+
* // => { 'a': 1, 'b': 2 }
|
12121
12316
|
*/
|
12122
|
-
var defaults =
|
12317
|
+
var defaults = baseRest(function(args) {
|
12123
12318
|
args.push(undefined, assignInDefaults);
|
12124
12319
|
return apply(assignInWith, undefined, args);
|
12125
12320
|
});
|
@@ -12140,11 +12335,10 @@
|
|
12140
12335
|
* @see _.defaults
|
12141
12336
|
* @example
|
12142
12337
|
*
|
12143
|
-
* _.defaultsDeep({ '
|
12144
|
-
* // => { '
|
12145
|
-
*
|
12338
|
+
* _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
|
12339
|
+
* // => { 'a': { 'b': 2, 'c': 3 } }
|
12146
12340
|
*/
|
12147
|
-
var defaultsDeep =
|
12341
|
+
var defaultsDeep = baseRest(function(args) {
|
12148
12342
|
args.push(undefined, mergeDefaults);
|
12149
12343
|
return apply(mergeWith, undefined, args);
|
12150
12344
|
});
|
@@ -12158,8 +12352,7 @@
|
|
12158
12352
|
* @since 1.1.0
|
12159
12353
|
* @category Object
|
12160
12354
|
* @param {Object} object The object to search.
|
12161
|
-
* @param {
|
12162
|
-
* The function invoked per iteration.
|
12355
|
+
* @param {Function} [predicate=_.identity] The function invoked per iteration.
|
12163
12356
|
* @returns {string|undefined} Returns the key of the matched element,
|
12164
12357
|
* else `undefined`.
|
12165
12358
|
* @example
|
@@ -12198,8 +12391,7 @@
|
|
12198
12391
|
* @since 2.0.0
|
12199
12392
|
* @category Object
|
12200
12393
|
* @param {Object} object The object to search.
|
12201
|
-
* @param {
|
12202
|
-
* The function invoked per iteration.
|
12394
|
+
* @param {Function} [predicate=_.identity] The function invoked per iteration.
|
12203
12395
|
* @returns {string|undefined} Returns the key of the matched element,
|
12204
12396
|
* else `undefined`.
|
12205
12397
|
* @example
|
@@ -12413,7 +12605,7 @@
|
|
12413
12605
|
|
12414
12606
|
/**
|
12415
12607
|
* Gets the value at `path` of `object`. If the resolved value is
|
12416
|
-
* `undefined`, the `defaultValue` is
|
12608
|
+
* `undefined`, the `defaultValue` is returned in its place.
|
12417
12609
|
*
|
12418
12610
|
* @static
|
12419
12611
|
* @memberOf _
|
@@ -12536,8 +12728,7 @@
|
|
12536
12728
|
* @since 4.1.0
|
12537
12729
|
* @category Object
|
12538
12730
|
* @param {Object} object The object to invert.
|
12539
|
-
* @param {
|
12540
|
-
* The iteratee invoked per element.
|
12731
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
12541
12732
|
* @returns {Object} Returns the new inverted object.
|
12542
12733
|
* @example
|
12543
12734
|
*
|
@@ -12577,7 +12768,7 @@
|
|
12577
12768
|
* _.invoke(object, 'a[0].b.c.slice', 1, 3);
|
12578
12769
|
* // => [2, 3]
|
12579
12770
|
*/
|
12580
|
-
var invoke =
|
12771
|
+
var invoke = baseRest(baseInvoke);
|
12581
12772
|
|
12582
12773
|
/**
|
12583
12774
|
* Creates an array of the own enumerable property names of `object`.
|
@@ -12681,8 +12872,7 @@
|
|
12681
12872
|
* @since 3.8.0
|
12682
12873
|
* @category Object
|
12683
12874
|
* @param {Object} object The object to iterate over.
|
12684
|
-
* @param {
|
12685
|
-
* The function invoked per iteration.
|
12875
|
+
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
|
12686
12876
|
* @returns {Object} Returns the new mapped object.
|
12687
12877
|
* @see _.mapValues
|
12688
12878
|
* @example
|
@@ -12713,8 +12903,7 @@
|
|
12713
12903
|
* @since 2.4.0
|
12714
12904
|
* @category Object
|
12715
12905
|
* @param {Object} object The object to iterate over.
|
12716
|
-
* @param {
|
12717
|
-
* The function invoked per iteration.
|
12906
|
+
* @param {Function} [iteratee=_.identity] The function invoked per iteration.
|
12718
12907
|
* @returns {Object} Returns the new mapped object.
|
12719
12908
|
* @see _.mapKeys
|
12720
12909
|
* @example
|
@@ -12761,16 +12950,16 @@
|
|
12761
12950
|
* @returns {Object} Returns `object`.
|
12762
12951
|
* @example
|
12763
12952
|
*
|
12764
|
-
* var
|
12765
|
-
* '
|
12953
|
+
* var object = {
|
12954
|
+
* 'a': [{ 'b': 2 }, { 'd': 4 }]
|
12766
12955
|
* };
|
12767
12956
|
*
|
12768
|
-
* var
|
12769
|
-
* '
|
12957
|
+
* var other = {
|
12958
|
+
* 'a': [{ 'c': 3 }, { 'e': 5 }]
|
12770
12959
|
* };
|
12771
12960
|
*
|
12772
|
-
* _.merge(
|
12773
|
-
* // => { '
|
12961
|
+
* _.merge(object, other);
|
12962
|
+
* // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
|
12774
12963
|
*/
|
12775
12964
|
var merge = createAssigner(function(object, source, srcIndex) {
|
12776
12965
|
baseMerge(object, source, srcIndex);
|
@@ -12801,18 +12990,11 @@
|
|
12801
12990
|
* }
|
12802
12991
|
* }
|
12803
12992
|
*
|
12804
|
-
* var object = {
|
12805
|
-
*
|
12806
|
-
* 'vegetables': ['beet']
|
12807
|
-
* };
|
12808
|
-
*
|
12809
|
-
* var other = {
|
12810
|
-
* 'fruits': ['banana'],
|
12811
|
-
* 'vegetables': ['carrot']
|
12812
|
-
* };
|
12993
|
+
* var object = { 'a': [1], 'b': [2] };
|
12994
|
+
* var other = { 'a': [3], 'b': [4] };
|
12813
12995
|
*
|
12814
12996
|
* _.mergeWith(object, other, customizer);
|
12815
|
-
* // => { '
|
12997
|
+
* // => { 'a': [1, 3], 'b': [2, 4] }
|
12816
12998
|
*/
|
12817
12999
|
var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
|
12818
13000
|
baseMerge(object, source, srcIndex, customizer);
|
@@ -12837,7 +13019,7 @@
|
|
12837
13019
|
* _.omit(object, ['a', 'c']);
|
12838
13020
|
* // => { 'b': '2' }
|
12839
13021
|
*/
|
12840
|
-
var omit =
|
13022
|
+
var omit = baseRest(function(object, props) {
|
12841
13023
|
if (object == null) {
|
12842
13024
|
return {};
|
12843
13025
|
}
|
@@ -12856,8 +13038,7 @@
|
|
12856
13038
|
* @since 4.0.0
|
12857
13039
|
* @category Object
|
12858
13040
|
* @param {Object} object The source object.
|
12859
|
-
* @param {
|
12860
|
-
* The function invoked per property.
|
13041
|
+
* @param {Function} [predicate=_.identity] The function invoked per property.
|
12861
13042
|
* @returns {Object} Returns the new object.
|
12862
13043
|
* @example
|
12863
13044
|
*
|
@@ -12867,10 +13048,7 @@
|
|
12867
13048
|
* // => { 'b': '2' }
|
12868
13049
|
*/
|
12869
13050
|
function omitBy(object, predicate) {
|
12870
|
-
|
12871
|
-
return basePickBy(object, function(value, key) {
|
12872
|
-
return !predicate(value, key);
|
12873
|
-
});
|
13051
|
+
return pickBy(object, negate(getIteratee(predicate)));
|
12874
13052
|
}
|
12875
13053
|
|
12876
13054
|
/**
|
@@ -12890,7 +13068,7 @@
|
|
12890
13068
|
* _.pick(object, ['a', 'c']);
|
12891
13069
|
* // => { 'a': 1, 'c': 3 }
|
12892
13070
|
*/
|
12893
|
-
var pick =
|
13071
|
+
var pick = baseRest(function(object, props) {
|
12894
13072
|
return object == null ? {} : basePick(object, arrayMap(baseFlatten(props, 1), toKey));
|
12895
13073
|
});
|
12896
13074
|
|
@@ -12903,8 +13081,7 @@
|
|
12903
13081
|
* @since 4.0.0
|
12904
13082
|
* @category Object
|
12905
13083
|
* @param {Object} object The source object.
|
12906
|
-
* @param {
|
12907
|
-
* The function invoked per property.
|
13084
|
+
* @param {Function} [predicate=_.identity] The function invoked per property.
|
12908
13085
|
* @returns {Object} Returns the new object.
|
12909
13086
|
* @example
|
12910
13087
|
*
|
@@ -12914,7 +13091,7 @@
|
|
12914
13091
|
* // => { 'a': 1, 'c': 3 }
|
12915
13092
|
*/
|
12916
13093
|
function pickBy(object, predicate) {
|
12917
|
-
return object == null ? {} : basePickBy(object, getIteratee(predicate));
|
13094
|
+
return object == null ? {} : basePickBy(object, getAllKeysIn(object), getIteratee(predicate));
|
12918
13095
|
}
|
12919
13096
|
|
12920
13097
|
/**
|
@@ -13358,12 +13535,12 @@
|
|
13358
13535
|
* // => true
|
13359
13536
|
*/
|
13360
13537
|
function inRange(number, start, end) {
|
13361
|
-
start =
|
13538
|
+
start = toFinite(start);
|
13362
13539
|
if (end === undefined) {
|
13363
13540
|
end = start;
|
13364
13541
|
start = 0;
|
13365
13542
|
} else {
|
13366
|
-
end =
|
13543
|
+
end = toFinite(end);
|
13367
13544
|
}
|
13368
13545
|
number = toNumber(number);
|
13369
13546
|
return baseInRange(number, start, end);
|
@@ -13419,12 +13596,12 @@
|
|
13419
13596
|
upper = 1;
|
13420
13597
|
}
|
13421
13598
|
else {
|
13422
|
-
lower =
|
13599
|
+
lower = toFinite(lower);
|
13423
13600
|
if (upper === undefined) {
|
13424
13601
|
upper = lower;
|
13425
13602
|
lower = 0;
|
13426
13603
|
} else {
|
13427
|
-
upper =
|
13604
|
+
upper = toFinite(upper);
|
13428
13605
|
}
|
13429
13606
|
}
|
13430
13607
|
if (lower > upper) {
|
@@ -13539,8 +13716,9 @@
|
|
13539
13716
|
? length
|
13540
13717
|
: baseClamp(toInteger(position), 0, length);
|
13541
13718
|
|
13719
|
+
var end = position;
|
13542
13720
|
position -= target.length;
|
13543
|
-
return position >= 0 && string.
|
13721
|
+
return position >= 0 && string.slice(position, end) == target;
|
13544
13722
|
}
|
13545
13723
|
|
13546
13724
|
/**
|
@@ -13988,7 +14166,8 @@
|
|
13988
14166
|
function startsWith(string, target, position) {
|
13989
14167
|
string = toString(string);
|
13990
14168
|
position = baseClamp(toInteger(position), 0, string.length);
|
13991
|
-
|
14169
|
+
target = baseToString(target);
|
14170
|
+
return string.slice(position, position + target.length) == target;
|
13992
14171
|
}
|
13993
14172
|
|
13994
14173
|
/**
|
@@ -14571,7 +14750,7 @@
|
|
14571
14750
|
* elements = [];
|
14572
14751
|
* }
|
14573
14752
|
*/
|
14574
|
-
var attempt =
|
14753
|
+
var attempt = baseRest(function(func, args) {
|
14575
14754
|
try {
|
14576
14755
|
return apply(func, undefined, args);
|
14577
14756
|
} catch (e) {
|
@@ -14596,16 +14775,16 @@
|
|
14596
14775
|
*
|
14597
14776
|
* var view = {
|
14598
14777
|
* 'label': 'docs',
|
14599
|
-
* '
|
14778
|
+
* 'click': function() {
|
14600
14779
|
* console.log('clicked ' + this.label);
|
14601
14780
|
* }
|
14602
14781
|
* };
|
14603
14782
|
*
|
14604
|
-
* _.bindAll(view, ['
|
14605
|
-
* jQuery(element).on('click', view.
|
14783
|
+
* _.bindAll(view, ['click']);
|
14784
|
+
* jQuery(element).on('click', view.click);
|
14606
14785
|
* // => Logs 'clicked docs' when clicked.
|
14607
14786
|
*/
|
14608
|
-
var bindAll =
|
14787
|
+
var bindAll = baseRest(function(object, methodNames) {
|
14609
14788
|
arrayEach(baseFlatten(methodNames, 1), function(key) {
|
14610
14789
|
key = toKey(key);
|
14611
14790
|
object[key] = bind(object[key], object);
|
@@ -14630,7 +14809,7 @@
|
|
14630
14809
|
* var func = _.cond([
|
14631
14810
|
* [_.matches({ 'a': 1 }), _.constant('matches A')],
|
14632
14811
|
* [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
|
14633
|
-
* [_.
|
14812
|
+
* [_.stubTrue, _.constant('no match')]
|
14634
14813
|
* ]);
|
14635
14814
|
*
|
14636
14815
|
* func({ 'a': 1, 'b': 2 });
|
@@ -14653,7 +14832,7 @@
|
|
14653
14832
|
return [toIteratee(pair[0]), pair[1]];
|
14654
14833
|
});
|
14655
14834
|
|
14656
|
-
return
|
14835
|
+
return baseRest(function(args) {
|
14657
14836
|
var index = -1;
|
14658
14837
|
while (++index < length) {
|
14659
14838
|
var pair = pairs[index];
|
@@ -14669,6 +14848,9 @@
|
|
14669
14848
|
* the corresponding property values of a given object, returning `true` if
|
14670
14849
|
* all predicates return truthy, else `false`.
|
14671
14850
|
*
|
14851
|
+
* **Note:** The created function is equivalent to `_.conformsTo` with
|
14852
|
+
* `source` partially applied.
|
14853
|
+
*
|
14672
14854
|
* @static
|
14673
14855
|
* @memberOf _
|
14674
14856
|
* @since 4.0.0
|
@@ -14677,13 +14859,13 @@
|
|
14677
14859
|
* @returns {Function} Returns the new spec function.
|
14678
14860
|
* @example
|
14679
14861
|
*
|
14680
|
-
* var
|
14681
|
-
* { '
|
14682
|
-
* { '
|
14862
|
+
* var objects = [
|
14863
|
+
* { 'a': 2, 'b': 1 },
|
14864
|
+
* { 'a': 1, 'b': 2 }
|
14683
14865
|
* ];
|
14684
14866
|
*
|
14685
|
-
* _.filter(
|
14686
|
-
* // => [{ '
|
14867
|
+
* _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
|
14868
|
+
* // => [{ 'a': 1, 'b': 2 }]
|
14687
14869
|
*/
|
14688
14870
|
function conforms(source) {
|
14689
14871
|
return baseConforms(baseClone(source, true));
|
@@ -14714,6 +14896,30 @@
|
|
14714
14896
|
};
|
14715
14897
|
}
|
14716
14898
|
|
14899
|
+
/**
|
14900
|
+
* Checks `value` to determine whether a default value should be returned in
|
14901
|
+
* its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
|
14902
|
+
* or `undefined`.
|
14903
|
+
*
|
14904
|
+
* @static
|
14905
|
+
* @memberOf _
|
14906
|
+
* @since 4.14.0
|
14907
|
+
* @category Util
|
14908
|
+
* @param {*} value The value to check.
|
14909
|
+
* @param {*} defaultValue The default value.
|
14910
|
+
* @returns {*} Returns the resolved value.
|
14911
|
+
* @example
|
14912
|
+
*
|
14913
|
+
* _.defaultTo(1, 10);
|
14914
|
+
* // => 1
|
14915
|
+
*
|
14916
|
+
* _.defaultTo(undefined, 10);
|
14917
|
+
* // => 10
|
14918
|
+
*/
|
14919
|
+
function defaultTo(value, defaultValue) {
|
14920
|
+
return (value == null || value !== value) ? defaultValue : value;
|
14921
|
+
}
|
14922
|
+
|
14717
14923
|
/**
|
14718
14924
|
* Creates a function that returns the result of invoking the given functions
|
14719
14925
|
* with the `this` binding of the created function, where each successive
|
@@ -14723,7 +14929,7 @@
|
|
14723
14929
|
* @memberOf _
|
14724
14930
|
* @since 3.0.0
|
14725
14931
|
* @category Util
|
14726
|
-
* @param {...(Function|Function[])} [funcs]
|
14932
|
+
* @param {...(Function|Function[])} [funcs] The functions to invoke.
|
14727
14933
|
* @returns {Function} Returns the new composite function.
|
14728
14934
|
* @see _.flowRight
|
14729
14935
|
* @example
|
@@ -14746,7 +14952,7 @@
|
|
14746
14952
|
* @since 3.0.0
|
14747
14953
|
* @memberOf _
|
14748
14954
|
* @category Util
|
14749
|
-
* @param {...(Function|Function[])} [funcs]
|
14955
|
+
* @param {...(Function|Function[])} [funcs] The functions to invoke.
|
14750
14956
|
* @returns {Function} Returns the new composite function.
|
14751
14957
|
* @see _.flow
|
14752
14958
|
* @example
|
@@ -14762,7 +14968,7 @@
|
|
14762
14968
|
var flowRight = createFlow(true);
|
14763
14969
|
|
14764
14970
|
/**
|
14765
|
-
* This method returns the first argument
|
14971
|
+
* This method returns the first argument it receives.
|
14766
14972
|
*
|
14767
14973
|
* @static
|
14768
14974
|
* @since 0.1.0
|
@@ -14772,7 +14978,7 @@
|
|
14772
14978
|
* @returns {*} Returns `value`.
|
14773
14979
|
* @example
|
14774
14980
|
*
|
14775
|
-
* var object = { '
|
14981
|
+
* var object = { 'a': 1 };
|
14776
14982
|
*
|
14777
14983
|
* console.log(_.identity(object) === object);
|
14778
14984
|
* // => true
|
@@ -14830,10 +15036,10 @@
|
|
14830
15036
|
/**
|
14831
15037
|
* Creates a function that performs a partial deep comparison between a given
|
14832
15038
|
* object and `source`, returning `true` if the given object has equivalent
|
14833
|
-
* property values, else `false`.
|
14834
|
-
* `_.isMatch` with a `source` partially applied.
|
15039
|
+
* property values, else `false`.
|
14835
15040
|
*
|
14836
|
-
* **Note:**
|
15041
|
+
* **Note:** The created function supports comparing the same values as
|
15042
|
+
* `_.isEqual` is equivalent to `_.isMatch` with `source` partially applied.
|
14837
15043
|
*
|
14838
15044
|
* @static
|
14839
15045
|
* @memberOf _
|
@@ -14843,13 +15049,13 @@
|
|
14843
15049
|
* @returns {Function} Returns the new spec function.
|
14844
15050
|
* @example
|
14845
15051
|
*
|
14846
|
-
* var
|
14847
|
-
* { '
|
14848
|
-
* { '
|
15052
|
+
* var objects = [
|
15053
|
+
* { 'a': 1, 'b': 2, 'c': 3 },
|
15054
|
+
* { 'a': 4, 'b': 5, 'c': 6 }
|
14849
15055
|
* ];
|
14850
15056
|
*
|
14851
|
-
* _.filter(
|
14852
|
-
* // => [{ '
|
15057
|
+
* _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
|
15058
|
+
* // => [{ 'a': 4, 'b': 5, 'c': 6 }]
|
14853
15059
|
*/
|
14854
15060
|
function matches(source) {
|
14855
15061
|
return baseMatches(baseClone(source, true));
|
@@ -14871,13 +15077,13 @@
|
|
14871
15077
|
* @returns {Function} Returns the new spec function.
|
14872
15078
|
* @example
|
14873
15079
|
*
|
14874
|
-
* var
|
14875
|
-
* { '
|
14876
|
-
* { '
|
15080
|
+
* var objects = [
|
15081
|
+
* { 'a': 1, 'b': 2, 'c': 3 },
|
15082
|
+
* { 'a': 4, 'b': 5, 'c': 6 }
|
14877
15083
|
* ];
|
14878
15084
|
*
|
14879
|
-
* _.find(
|
14880
|
-
* // => { '
|
15085
|
+
* _.find(objects, _.matchesProperty('a', 4));
|
15086
|
+
* // => { 'a': 4, 'b': 5, 'c': 6 }
|
14881
15087
|
*/
|
14882
15088
|
function matchesProperty(path, srcValue) {
|
14883
15089
|
return baseMatchesProperty(path, baseClone(srcValue, true));
|
@@ -14907,7 +15113,7 @@
|
|
14907
15113
|
* _.map(objects, _.method(['a', 'b']));
|
14908
15114
|
* // => [2, 1]
|
14909
15115
|
*/
|
14910
|
-
var method =
|
15116
|
+
var method = baseRest(function(path, args) {
|
14911
15117
|
return function(object) {
|
14912
15118
|
return baseInvoke(object, path, args);
|
14913
15119
|
};
|
@@ -14936,7 +15142,7 @@
|
|
14936
15142
|
* _.map([['a', '2'], ['c', '0']], _.methodOf(object));
|
14937
15143
|
* // => [2, 0]
|
14938
15144
|
*/
|
14939
|
-
var methodOf =
|
15145
|
+
var methodOf = baseRest(function(object, args) {
|
14940
15146
|
return function(path) {
|
14941
15147
|
return baseInvoke(object, path, args);
|
14942
15148
|
};
|
@@ -15035,7 +15241,7 @@
|
|
15035
15241
|
}
|
15036
15242
|
|
15037
15243
|
/**
|
15038
|
-
*
|
15244
|
+
* This method returns `undefined`.
|
15039
15245
|
*
|
15040
15246
|
* @static
|
15041
15247
|
* @memberOf _
|
@@ -15072,7 +15278,7 @@
|
|
15072
15278
|
*/
|
15073
15279
|
function nthArg(n) {
|
15074
15280
|
n = toInteger(n);
|
15075
|
-
return
|
15281
|
+
return baseRest(function(args) {
|
15076
15282
|
return baseNth(args, n);
|
15077
15283
|
});
|
15078
15284
|
}
|
@@ -15085,8 +15291,8 @@
|
|
15085
15291
|
* @memberOf _
|
15086
15292
|
* @since 4.0.0
|
15087
15293
|
* @category Util
|
15088
|
-
* @param {...(
|
15089
|
-
*
|
15294
|
+
* @param {...(Function|Function[])} [iteratees=[_.identity]]
|
15295
|
+
* The iteratees to invoke.
|
15090
15296
|
* @returns {Function} Returns the new function.
|
15091
15297
|
* @example
|
15092
15298
|
*
|
@@ -15105,8 +15311,8 @@
|
|
15105
15311
|
* @memberOf _
|
15106
15312
|
* @since 4.0.0
|
15107
15313
|
* @category Util
|
15108
|
-
* @param {...(
|
15109
|
-
*
|
15314
|
+
* @param {...(Function|Function[])} [predicates=[_.identity]]
|
15315
|
+
* The predicates to check.
|
15110
15316
|
* @returns {Function} Returns the new function.
|
15111
15317
|
* @example
|
15112
15318
|
*
|
@@ -15131,8 +15337,8 @@
|
|
15131
15337
|
* @memberOf _
|
15132
15338
|
* @since 4.0.0
|
15133
15339
|
* @category Util
|
15134
|
-
* @param {...(
|
15135
|
-
*
|
15340
|
+
* @param {...(Function|Function[])} [predicates=[_.identity]]
|
15341
|
+
* The predicates to check.
|
15136
15342
|
* @returns {Function} Returns the new function.
|
15137
15343
|
* @example
|
15138
15344
|
*
|
@@ -15284,7 +15490,7 @@
|
|
15284
15490
|
var rangeRight = createRange(true);
|
15285
15491
|
|
15286
15492
|
/**
|
15287
|
-
*
|
15493
|
+
* This method returns a new empty array.
|
15288
15494
|
*
|
15289
15495
|
* @static
|
15290
15496
|
* @memberOf _
|
@@ -15306,7 +15512,7 @@
|
|
15306
15512
|
}
|
15307
15513
|
|
15308
15514
|
/**
|
15309
|
-
*
|
15515
|
+
* This method returns `false`.
|
15310
15516
|
*
|
15311
15517
|
* @static
|
15312
15518
|
* @memberOf _
|
@@ -15323,7 +15529,7 @@
|
|
15323
15529
|
}
|
15324
15530
|
|
15325
15531
|
/**
|
15326
|
-
*
|
15532
|
+
* This method returns a new empty object.
|
15327
15533
|
*
|
15328
15534
|
* @static
|
15329
15535
|
* @memberOf _
|
@@ -15345,7 +15551,7 @@
|
|
15345
15551
|
}
|
15346
15552
|
|
15347
15553
|
/**
|
15348
|
-
*
|
15554
|
+
* This method returns an empty string.
|
15349
15555
|
*
|
15350
15556
|
* @static
|
15351
15557
|
* @memberOf _
|
@@ -15362,7 +15568,7 @@
|
|
15362
15568
|
}
|
15363
15569
|
|
15364
15570
|
/**
|
15365
|
-
*
|
15571
|
+
* This method returns `true`.
|
15366
15572
|
*
|
15367
15573
|
* @static
|
15368
15574
|
* @memberOf _
|
@@ -15480,7 +15686,7 @@
|
|
15480
15686
|
*/
|
15481
15687
|
var add = createMathOperation(function(augend, addend) {
|
15482
15688
|
return augend + addend;
|
15483
|
-
});
|
15689
|
+
}, 0);
|
15484
15690
|
|
15485
15691
|
/**
|
15486
15692
|
* Computes `number` rounded up to `precision`.
|
@@ -15522,7 +15728,7 @@
|
|
15522
15728
|
*/
|
15523
15729
|
var divide = createMathOperation(function(dividend, divisor) {
|
15524
15730
|
return dividend / divisor;
|
15525
|
-
});
|
15731
|
+
}, 1);
|
15526
15732
|
|
15527
15733
|
/**
|
15528
15734
|
* Computes `number` rounded down to `precision`.
|
@@ -15581,8 +15787,7 @@
|
|
15581
15787
|
* @since 4.0.0
|
15582
15788
|
* @category Math
|
15583
15789
|
* @param {Array} array The array to iterate over.
|
15584
|
-
* @param {
|
15585
|
-
* The iteratee invoked per element.
|
15790
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
15586
15791
|
* @returns {*} Returns the maximum value.
|
15587
15792
|
* @example
|
15588
15793
|
*
|
@@ -15597,7 +15802,7 @@
|
|
15597
15802
|
*/
|
15598
15803
|
function maxBy(array, iteratee) {
|
15599
15804
|
return (array && array.length)
|
15600
|
-
? baseExtremum(array, getIteratee(iteratee), baseGt)
|
15805
|
+
? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
|
15601
15806
|
: undefined;
|
15602
15807
|
}
|
15603
15808
|
|
@@ -15629,8 +15834,7 @@
|
|
15629
15834
|
* @since 4.7.0
|
15630
15835
|
* @category Math
|
15631
15836
|
* @param {Array} array The array to iterate over.
|
15632
|
-
* @param {
|
15633
|
-
* The iteratee invoked per element.
|
15837
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
15634
15838
|
* @returns {number} Returns the mean.
|
15635
15839
|
* @example
|
15636
15840
|
*
|
@@ -15644,7 +15848,7 @@
|
|
15644
15848
|
* // => 5
|
15645
15849
|
*/
|
15646
15850
|
function meanBy(array, iteratee) {
|
15647
|
-
return baseMean(array, getIteratee(iteratee));
|
15851
|
+
return baseMean(array, getIteratee(iteratee, 2));
|
15648
15852
|
}
|
15649
15853
|
|
15650
15854
|
/**
|
@@ -15681,8 +15885,7 @@
|
|
15681
15885
|
* @since 4.0.0
|
15682
15886
|
* @category Math
|
15683
15887
|
* @param {Array} array The array to iterate over.
|
15684
|
-
* @param {
|
15685
|
-
* The iteratee invoked per element.
|
15888
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
15686
15889
|
* @returns {*} Returns the minimum value.
|
15687
15890
|
* @example
|
15688
15891
|
*
|
@@ -15697,7 +15900,7 @@
|
|
15697
15900
|
*/
|
15698
15901
|
function minBy(array, iteratee) {
|
15699
15902
|
return (array && array.length)
|
15700
|
-
? baseExtremum(array, getIteratee(iteratee), baseLt)
|
15903
|
+
? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
|
15701
15904
|
: undefined;
|
15702
15905
|
}
|
15703
15906
|
|
@@ -15718,7 +15921,7 @@
|
|
15718
15921
|
*/
|
15719
15922
|
var multiply = createMathOperation(function(multiplier, multiplicand) {
|
15720
15923
|
return multiplier * multiplicand;
|
15721
|
-
});
|
15924
|
+
}, 1);
|
15722
15925
|
|
15723
15926
|
/**
|
15724
15927
|
* Computes `number` rounded to `precision`.
|
@@ -15760,7 +15963,7 @@
|
|
15760
15963
|
*/
|
15761
15964
|
var subtract = createMathOperation(function(minuend, subtrahend) {
|
15762
15965
|
return minuend - subtrahend;
|
15763
|
-
});
|
15966
|
+
}, 0);
|
15764
15967
|
|
15765
15968
|
/**
|
15766
15969
|
* Computes the sum of the values in `array`.
|
@@ -15792,8 +15995,7 @@
|
|
15792
15995
|
* @since 4.0.0
|
15793
15996
|
* @category Math
|
15794
15997
|
* @param {Array} array The array to iterate over.
|
15795
|
-
* @param {
|
15796
|
-
* The iteratee invoked per element.
|
15998
|
+
* @param {Function} [iteratee=_.identity] The iteratee invoked per element.
|
15797
15999
|
* @returns {number} Returns the sum.
|
15798
16000
|
* @example
|
15799
16001
|
*
|
@@ -15808,7 +16010,7 @@
|
|
15808
16010
|
*/
|
15809
16011
|
function sumBy(array, iteratee) {
|
15810
16012
|
return (array && array.length)
|
15811
|
-
? baseSum(array, getIteratee(iteratee))
|
16013
|
+
? baseSum(array, getIteratee(iteratee, 2))
|
15812
16014
|
: 0;
|
15813
16015
|
}
|
15814
16016
|
|
@@ -15987,7 +16189,9 @@
|
|
15987
16189
|
lodash.cloneDeep = cloneDeep;
|
15988
16190
|
lodash.cloneDeepWith = cloneDeepWith;
|
15989
16191
|
lodash.cloneWith = cloneWith;
|
16192
|
+
lodash.conformsTo = conformsTo;
|
15990
16193
|
lodash.deburr = deburr;
|
16194
|
+
lodash.defaultTo = defaultTo;
|
15991
16195
|
lodash.divide = divide;
|
15992
16196
|
lodash.endsWith = endsWith;
|
15993
16197
|
lodash.eq = eq;
|
@@ -16228,7 +16432,7 @@
|
|
16228
16432
|
return this.reverse().find(predicate);
|
16229
16433
|
};
|
16230
16434
|
|
16231
|
-
LazyWrapper.prototype.invokeMap =
|
16435
|
+
LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
|
16232
16436
|
if (typeof path == 'function') {
|
16233
16437
|
return new LazyWrapper(this);
|
16234
16438
|
}
|
@@ -16238,10 +16442,7 @@
|
|
16238
16442
|
});
|
16239
16443
|
|
16240
16444
|
LazyWrapper.prototype.reject = function(predicate) {
|
16241
|
-
|
16242
|
-
return this.filter(function(value) {
|
16243
|
-
return !predicate(value);
|
16244
|
-
});
|
16445
|
+
return this.filter(negate(getIteratee(predicate)));
|
16245
16446
|
};
|
16246
16447
|
|
16247
16448
|
LazyWrapper.prototype.slice = function(start, end) {
|
@@ -16345,7 +16546,7 @@
|
|
16345
16546
|
}
|
16346
16547
|
});
|
16347
16548
|
|
16348
|
-
realNames[
|
16549
|
+
realNames[createHybrid(undefined, BIND_KEY_FLAG).name] = [{
|
16349
16550
|
'name': 'wrapper',
|
16350
16551
|
'func': undefined
|
16351
16552
|
}];
|
@@ -16364,6 +16565,9 @@
|
|
16364
16565
|
lodash.prototype.reverse = wrapperReverse;
|
16365
16566
|
lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
|
16366
16567
|
|
16568
|
+
// Add lazy aliases.
|
16569
|
+
lodash.prototype.first = lodash.prototype.head;
|
16570
|
+
|
16367
16571
|
if (iteratorSymbol) {
|
16368
16572
|
lodash.prototype[iteratorSymbol] = wrapperToIterator;
|
16369
16573
|
}
|
@@ -16375,22 +16579,21 @@
|
|
16375
16579
|
// Export lodash.
|
16376
16580
|
var _ = runInContext();
|
16377
16581
|
|
16378
|
-
//
|
16379
|
-
// globally accessible, even when bundled with Browserify, Webpack, etc. This
|
16380
|
-
// also prevents errors in cases where Lodash is loaded by a script tag in the
|
16381
|
-
// presence of an AMD loader. See http://requirejs.org/docs/errors.html#mismatch
|
16382
|
-
// for more details. Use `_.noConflict` to remove Lodash from the global object.
|
16383
|
-
(freeSelf || {})._ = _;
|
16384
|
-
|
16385
|
-
// Some AMD build optimizers like r.js check for condition patterns like the following:
|
16582
|
+
// Some AMD build optimizers, like r.js, check for condition patterns like:
|
16386
16583
|
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
|
16584
|
+
// Expose Lodash on the global object to prevent errors when Lodash is
|
16585
|
+
// loaded by a script tag in the presence of an AMD loader.
|
16586
|
+
// See http://requirejs.org/docs/errors.html#mismatch for more details.
|
16587
|
+
// Use `_.noConflict` to remove Lodash from the global object.
|
16588
|
+
root._ = _;
|
16589
|
+
|
16387
16590
|
// Define as an anonymous module so, through path mapping, it can be
|
16388
16591
|
// referenced as the "underscore" module.
|
16389
16592
|
define(function() {
|
16390
16593
|
return _;
|
16391
16594
|
});
|
16392
16595
|
}
|
16393
|
-
// Check for `exports` after `define` in case a build optimizer adds
|
16596
|
+
// Check for `exports` after `define` in case a build optimizer adds it.
|
16394
16597
|
else if (freeModule) {
|
16395
16598
|
// Export for Node.js.
|
16396
16599
|
(freeModule.exports = _)._ = _;
|