Compare commits

...

5062 Commits

Author SHA1 Message Date
Benjamin Tan
f299b52f39 Bump to v4.17.21 2021-02-20 23:33:48 +08:00
Michał Lipiński
c4847ebe7d Improve performance of toNumber, trim and trimEnd on large input strings
This prevents potential ReDoS attacks using `_.toNumber` and `_.trim*`
as potential attack vectors.

Closes #5065.
2021-02-20 17:18:39 +08:00
Christophe Coevoet
3469357cff Prevent command injection through _.template's variable option
Closes #5085.
2021-02-20 16:28:01 +08:00
Benjamin Tan
ded9bc6658 Bump to v4.17.20. 2020-08-14 00:52:55 +08:00
Benjamin Tan
63150ef764 Documentation fixes. 2020-08-14 00:36:26 +08:00
Benjamin Tan
00f0f62a97 test.js: Remove trailing comma. 2020-07-26 19:38:01 +08:00
Benjamin Tan
846e434c7a Temporarily use a custom fork of lodash-cli. 2020-07-26 19:37:20 +08:00
Benjamin Tan
5d046f39cb Re-enable Travis tests on 4.17 branch. 2020-07-26 19:35:19 +08:00
Benjamin Tan
aa816b36d4 Remove /npm-package. 2020-07-26 19:34:22 +08:00
Mathias Bynens
d7fbc52ee0 Bump to v4.17.19 2020-07-08 19:14:09 +02:00
Mathias Bynens
2e1c0f22f4 Add npm-package 2020-07-08 19:10:23 +02:00
Mathias Bynens
1b6c282299 Bump to v4.17.18 2020-07-08 18:04:03 +02:00
Mathias Bynens
a370ac8140 Bump to v4.17.17 2020-07-08 14:00:48 +02:00
Mathias Bynens
1144918f35 Rebuild lodash and docs 2020-07-08 10:08:29 +02:00
Mathias Bynens
3a3b0fd339 Bump to v4.17.16 2020-07-08 09:44:35 +02:00
Jakub Mikulas
c84fe82760 fix(zipObjectDeep): prototype pollution (#4759) 2020-07-02 14:47:49 -07:00
Alex Brasetvik
e7b28ea6cb Sanitize sourceURL so it cannot affect evaled code (#4518) 2020-06-03 23:36:12 -07:00
Chinedum Ukejianya
0cec225778 Fix lodash.isEqual for circular references (#4320) (#4515) 2019-10-16 14:43:11 -07:00
Artemy Tregubenko
94c3a8133c Document matches* shorthands for over* methods (#4510) (#4514) 2019-10-13 10:54:27 -07:00
Michał Lipiński
659e8c019c Ensure orderBy will accept iteratee path arrays #4438 (#4513) 2019-10-10 13:04:37 -07:00
Graeme Yeates
602cc3f03d (4.17) Short circuit sortedIndexBy methods for empty arrays (#4497) 2019-10-04 10:23:55 -07:00
max
b281ddecc4 change documentation, show clearly how sortBy work with two iteratees (#4467) 2019-09-16 21:31:36 -07:00
John-David Dalton
ddfd9b11a0 Bump to v4.17.15. 2019-07-17 10:06:33 -07:00
John-David Dalton
b185fcee26 Rebuild lodash and docs. 2019-07-17 10:05:47 -07:00
John-David Dalton
be87d30394 Bump to v4.17.14. 2019-07-10 06:33:09 -07:00
John-David Dalton
a6fe6b1e17 Rebuild lodash and docs. 2019-07-10 06:32:17 -07:00
John-David Dalton
e37182845f Bump to v4.17.13. 2019-07-09 15:16:26 -07:00
John-David Dalton
357e899e68 Rebuild lodash and docs. 2019-07-09 15:15:19 -07:00
John-David Dalton
fd9a062d57 Bump to v4.17.12. 2019-07-09 13:42:00 -07:00
John-David Dalton
e77d68121f Rebuild lodash and docs. 2019-07-09 13:34:41 -07:00
John-David Dalton
629d186579 Update OpenJS references. 2019-07-09 13:31:30 -07:00
John-David Dalton
2406eac542 Fix minified build. 2019-07-09 13:30:56 -07:00
John-David Dalton
17a34bc585 Fix test bootstrap for core build. 2019-07-09 12:48:18 -07:00
John-David Dalton
53838a38f8 Fix tests in older browsers. 2019-07-09 12:43:33 -07:00
John-David Dalton
29e258497b Fix style:test lint nits. 2019-07-09 09:53:48 -07:00
John-David Dalton
8f4d3eb018 Update deps. 2019-07-09 09:36:22 -07:00
John-David Dalton
02b3295a63 Format nit. 2019-07-09 09:34:08 -07:00
John-David Dalton
52ab48c054 Use nativeIsFinite() instead of Number.isFinite(). 2019-07-09 09:33:04 -07:00
John-David Dalton
f8dc2149f7 Whitespace nit. 2019-07-09 09:32:38 -07:00
John-David Dalton
deb65de218 Revert "perf(toNumber): use +value to convert binary/octal/hexadecimal string (#4230)"
This reverts commit 7084300d34.
2019-07-09 09:29:54 -07:00
Alex Brasetvik
60eb517911 Prevent prototype pollution chaining to code execution via _.template (#4355) 2019-07-09 09:09:55 -07:00
Kirill
1f8ea07746 fix: prototype pollution in _.defaultsDeep (#4336) 2019-06-24 09:17:55 -07:00
Erick Calder
e42cd97dae Fixes issue with Object prototype and the chaining syntax. [closes #4247] 2019-05-09 13:54:13 -07:00
Jeff Friesen
343456d696 Round Infinity with a precision argument returns Infinity (#4272)
* Round Infinity with a precision argument returns Infinity

* Also making sure this is true for -Infinity
* Tested with _.round(), _.floor() and _.ceil()

* Switch to using isFinite to check if number should be rounded

* Add tests for rounding NaN now that there is an isFinite check
2019-04-18 13:04:18 -07:00
Marc Hassan
0b8592a35c mergeWith: stack passed to customizer should always be defined (#4244)
Summary:
If the first values encountered in the `object` in mergeWith are not objects, `stack` is undefined when passed to the `customizer`. Once the first object-ish value is encountered, `stack` gets initialized, and all further calls to `customizer` include a defined `stack`. This PR makes `stack` always defined, even before the first object-ish value is encountered.
2019-03-21 20:54:53 -07:00
Amu
7084300d34 perf(toNumber): use +value to convert binary/octal/hexadecimal string (#4230) 2019-03-13 22:47:28 -07:00
liang feng
15b156512f cancel old timer (#4139) 2019-02-11 22:49:02 -08:00
John-David Dalton
bda6f2795f Update wording of fp wiki template for method spread rule exceptions. 2018-12-04 20:26:22 -08:00
John-David Dalton
1cb18dfada Revert "Ensure _.pick paths aren't interpolated twice. [closes #3952]"
This reverts commit 39a7eae40d.
2018-11-21 10:23:00 -06:00
John-David Dalton
39a7eae40d Ensure _.pick paths aren't interpolated twice. [closes #3952] 2018-09-17 22:38:33 -07:00
John-David Dalton
e0cbb4c8e6 Ensure map and set clones contain custom properties of source values. [closes #3951] 2018-09-17 22:31:34 -07:00
John-David Dalton
0843bd46ef Bump to v4.17.11. 2018-09-12 10:44:07 -07:00
John-David Dalton
3ac4b261e4 Rebuild lodash and docs. 2018-09-12 10:44:01 -07:00
John-David Dalton
eaa9f36e91 Commit package-lock.json. 2018-08-31 16:22:41 -07:00
John-David Dalton
552f94a7db Lint nits. 2018-08-31 15:35:06 -07:00
John-David Dalton
d8ddc1a15f Add test for indirectly merging Object properties. 2018-08-31 15:34:45 -07:00
John-David Dalton
e5f9af5418 Remove prototype property check in safeGet(). 2018-08-31 15:22:17 -07:00
John-David Dalton
2de676fe76 Ensure placeholder properties are set for fp.convert() results. [closes #3440] 2018-08-30 23:57:31 -07:00
John-David Dalton
278c6dd33d Cleanup _.merge tests for function properties. 2018-08-30 22:58:11 -07:00
sina
79b9d20a91 Fix inconsistent merging of multiple sources to function property 2018-08-30 22:35:04 -07:00
John-David Dalton
6e62e1e8df Cleanup ReDoS test. 2018-08-30 22:33:55 -07:00
Manuel Jasso
5c08f18d36 Prevent ReDoS
To fix https://github.com/lodash/lodash/issues/3359, modified reHasUnicodeWord to remove an unnecessary comma which made the regex greedy, this is only a test regex and not a matching regex. Added unit tests, this now should run under 5 ms instead of over 1000 ms for huge 50k+ char words.
2018-08-30 22:07:27 -07:00
John-David Dalton
90e6199a16 Ensure Object.prototype is not augmented by _.merge. 2018-08-30 22:06:15 -07:00
John-David Dalton
67389a8c78 Bump to v4.17.10. 2018-04-24 15:27:33 -07:00
John-David Dalton
a65fd33603 Rebuild lodash and docs. 2018-04-24 15:26:43 -07:00
John-David Dalton
b002100433 Bump to v4.17.9. 2018-04-24 10:29:57 -07:00
John-David Dalton
4680cdacc0 Rebuild lodash and docs. 2018-04-24 10:29:50 -07:00
John-David Dalton
852988e04a Use util.types to migrate DEP0103 in Node.js.
PR: #3704
2018-04-24 10:28:01 -07:00
John-David Dalton
97e9edc53d Bump to v4.17.5. 2018-02-03 22:35:31 -08:00
John-David Dalton
ce32a89e3e Rebuild lodash and docs. 2018-02-03 22:35:25 -08:00
John-David Dalton
5e58cd216c Fix style nits. 2018-02-03 21:25:41 -08:00
John-David Dalton
5adb4ee95c Make _.defaults avoid accessing property values it doesn't need to. [closes #2983] 2018-02-03 21:25:41 -08:00
John-David Dalton
a73b92b58e Avoid using the values toString method in _.invert if it’s not a function. [closes #3260] 2018-02-03 21:25:41 -08:00
John-David Dalton
a1b53054d6 Add 4.17.5 branch to travis. 2018-02-03 21:25:31 -08:00
John-David Dalton
dac890a211 Enable _.words to detect ordinals in compound words. [closes #3561] 2018-02-02 18:10:02 -08:00
John-David Dalton
7167a78644 Replacing a regex in stringToPath with a quick character code check. (#3308) 2018-02-02 18:10:01 -08:00
John-David Dalton
f83197727b Avoid shadowing result in remainingWait. (#3280) 2018-02-02 18:10:01 -08:00
John-David Dalton
20c5307542 stringToPath: avoid shadowing variable. (#3226) 2018-02-02 18:10:01 -08:00
John-David Dalton
45ac7f3bcc Support symbols in property paths of set. [closes #3189] 2018-02-02 18:10:01 -08:00
John-David Dalton
7cb477a3a0 Use new to create the array clone. 2018-02-02 18:10:01 -08:00
John-David Dalton
b8c719d3be Fix cloneDeep with circularly dependent Sets/Maps. [closes #3122] 2018-02-02 18:09:54 -08:00
John-David Dalton
d8e069cc34 Avoid merging properties on to __proto__ objects. 2018-01-30 23:21:12 -08:00
John-David Dalton
5a3ff73997 Ensure cloneByPath preserves uncloneable values. [closes #3203] 2017-06-14 07:17:44 -07:00
John-David Dalton
912d6b04a1 Bump to v4.17.4. 2017-01-06 07:51:17 -08:00
John-David Dalton
165572022d Rebuild lodash and docs. 2017-01-06 07:50:36 -08:00
John-David Dalton
ae467c7313 Update deps. 2017-01-06 07:50:36 -08:00
John-David Dalton
1e80c19b0f Remove dead “modern environments” link from readme. [ci skip] 2017-01-06 07:50:29 -08:00
John-David Dalton
6eeafd3dc2 Update kitchen sink size. [ci skip] 2016-12-31 00:52:52 -06:00
John-David Dalton
e33b15674d Ensure _.omit doesn’t mutate object with deep paths. [closes #2912] 2016-12-30 18:09:11 -06:00
John-David Dalton
a23b918bef Increment package version to enable ci tests. 2016-12-30 18:07:58 -06:00
John-David Dalton
ef618992b5 Bump to v4.17.3. 2016-12-26 10:43:11 -06:00
John-David Dalton
708b962860 Rebuild lodash and docs. 2016-12-26 10:43:11 -06:00
John-David Dalton
da2d08d771 Update deps. 2016-12-26 10:43:11 -06:00
John-David Dalton
30863e5fa6 Fix conversion of npm package and source doc links. [ci skip] 2016-12-26 10:43:05 -06:00
John-David Dalton
6672a4f942 Update fp doc template for fp.reduceRight iteratee argument order. [ci skip] 2016-12-24 11:21:51 -06:00
John-David Dalton
f7263047bf Use a strict undefined check for arity in createWrap. 2016-12-21 15:23:54 -06:00
John-David Dalton
02fdf4e673 Wrap in ternary value within hashHas in parens for clarity. 2016-12-21 15:23:54 -06:00
John-David Dalton
e2c703a96f Avoid more coercion. 2016-12-21 15:23:54 -06:00
John-David Dalton
32fdfcc1e5 Avoid coercing position in _.startsWith, if it’s undefined. 2016-12-21 12:34:28 -06:00
John-David Dalton
6c1ae0b54d Update Safari in sauce. 2016-12-21 00:19:59 -06:00
John-David Dalton
0c1c87b046 Update Firefox in sauce. 2016-12-20 16:54:40 -06:00
John-David Dalton
b51786e72e Fix lazy sequence test fails. 2016-12-20 16:54:40 -06:00
John-David Dalton
5ee5099af1 Update code skipped on the coverage run. 2016-12-20 16:54:40 -06:00
John-David Dalton
482dc9478b Remove array length limit for lay evaluation. [closes #2874] 2016-12-20 16:54:40 -06:00
John-David Dalton
528b6a98a9 Minor doc space nit. [ci skip] 2016-12-06 15:15:09 +09:00
John-David Dalton
a8bcb5f3d5 ES6 to ES2015 nit. [ci skip] 2016-12-06 15:15:09 +09:00
Dave Wasmer
d429f90ec5 Mention ES6 delimiters in templateSettings docs (#2857) 2016-12-06 15:15:09 +09:00
John-David Dalton
72f559e1a3 Exit early from getSymbols if object is nullish. 2016-11-25 00:16:37 -06:00
Ophir LOJKINE
2f92d55024 Clarify _.isEqual docs on comparing functions and DOM nodes. [closes #2849] [ci skip] 2016-11-25 00:16:05 -06:00
John-David Dalton
5a86b67263 Minor engines field format nit. 2016-11-24 23:58:40 -06:00
John-David Dalton
bea4b29bc4 Remove unneeded Object coercions. 2016-11-24 23:41:10 -06:00
John-David Dalton
0cd4134bc6 Fix Android 5.1 test fails. 2016-11-24 23:41:10 -06:00
John-David Dalton
ec74813be6 Add non-enumerable symbol tests. 2016-11-24 00:07:26 -06:00
John-David Dalton
67926a4df2 Minor test nit. 2016-11-24 00:07:26 -06:00
John-David Dalton
40a591d0c0 Test _.isEqual crawls symbol properties. 2016-11-24 00:07:26 -06:00
John-David Dalton
783e03ffa3 Simplify baseIsEqualDeep now that getSymbols returns only enumerable symbols. 2016-11-24 00:07:26 -06:00
John-David Dalton
1dddf27a39 Include only enumerable symbols in getSymbols result. [closes #2845] 2016-11-24 00:07:26 -06:00
John-David Dalton
2890eabf66 Replace isObject use with isObjectLike in baseIsEqual. 2016-11-21 23:34:21 -06:00
John-David Dalton
a3e077324a Add support for comparing symbol properties to _.isEqual. [closes #2840] 2016-11-21 23:34:21 -06:00
John-David Dalton
86ee93650d Flip iteratee arguments for fp.reduceRight. 2016-11-21 23:34:21 -06:00
John-David Dalton
dd0d984d37 Add customOmitClone helper. 2016-11-21 23:34:21 -06:00
John-David Dalton
eba18891e5 Rename private spread helper to flatSpread. 2016-11-21 23:34:20 -06:00
John-David Dalton
5cb80a0a84 Disable headings link icons in marky-markdown. 2016-11-19 23:39:27 -06:00
John-David Dalton
db14f324f6 Increment package version to enable ci tests. 2016-11-19 23:39:27 -06:00
John-David Dalton
238defb150 Bump to v4.17.2. 2016-11-19 23:39:27 -06:00
John-David Dalton
53ba1e0c3c Rebuild lodash and docs. 2016-11-19 23:39:19 -06:00
John-David Dalton
95d3477c22 Fix code style nits. 2016-11-15 22:04:15 -08:00
John-David Dalton
a06d1a0313 Add _.omit and _.pick tests for keys over paths. 2016-11-15 21:47:03 -08:00
John-David Dalton
330c8cb46e Cleanup path tests. 2016-11-15 21:46:14 -08:00
John-David Dalton
da2e8a1030 Minor var order nit. 2016-11-15 20:18:53 -08:00
John-David Dalton
5bc9e6b8bd Avoid double cloning for the common case in _.omit. 2016-11-15 18:19:11 -08:00
John-David Dalton
9a02bd5fc7 Simplify baseUnset. 2016-11-15 18:07:27 -08:00
John-David Dalton
89656fdf4a Don’t treat a picked path as deep if it exists as a property of the object. [closes #2826] 2016-11-15 10:41:11 -08:00
John-David Dalton
4cb7bea97d Ensure _.spread doesn’t include arguments after those spread. [closes #2825] 2016-11-15 10:41:11 -08:00
John-David Dalton
eb4861c3cd Increment package version to enable ci tests. 2016-11-15 10:41:11 -08:00
John-David Dalton
170c13b5ba Bump to v4.17.1. 2016-11-14 20:37:42 -08:00
John-David Dalton
26a6117889 Rebuild lodash and docs. 2016-11-14 20:31:46 -08:00
John-David Dalton
014982cb2c Remove isKey use from invokeMap. 2016-11-14 17:32:52 -08:00
John-David Dalton
058361e222 Move the isKey check into castPath. 2016-11-14 15:37:46 -08:00
John-David Dalton
e344b66af9 Cleanup _.omit. 2016-11-14 12:04:52 -08:00
John-David Dalton
54cb3599e3 Fix yarn runs in travis by pinning to v0.16.1. 2016-11-14 10:41:38 -08:00
John-David Dalton
6c427b7a26 Avoid deep cloning of _.omit result. 2016-11-14 09:57:39 -08:00
John-David Dalton
ce093845e1 Ensure _.pick supports path arrays. [closes #2809] 2016-11-14 01:06:35 -08:00
John-David Dalton
102c5f00d7 Ensure _.pickBy doesn’t treat keys with dots as deep paths. [closes #2808] 2016-11-14 00:49:47 -08:00
John-David Dalton
13d315a93b Increment package version to enable ci tests. 2016-11-14 00:49:41 -08:00
John-David Dalton
2cc247ddf8 Bump to v4.17.0. 2016-11-13 22:49:29 -08:00
John-David Dalton
5488644658 Rebuild lodash and docs. 2016-11-11 09:40:37 -08:00
John-David Dalton
1fe9042953 Update coveralls and platform.js deps. 2016-11-11 09:40:33 -08:00
John-David Dalton
8bde34dda0 Update optional marky-markdown dep to 9.0.1. 2016-11-10 13:50:35 -08:00
greenkeeper[bot]
98720bea4a Update optional-dev-dependency to 2.0.0. 2016-11-10 13:32:10 -08:00
John-David Dalton
032637bba1 Update core error text. [ci skip] 2016-11-10 11:39:18 -08:00
John-David Dalton
dadde87cab Consolidate ternary in baseClone. 2016-11-08 08:36:02 -08:00
John-David Dalton
fcd0bbfc56 Correct bitmask flag order. [ci skip] 2016-11-08 07:35:20 -08:00
John-David Dalton
600fbbadfb Cleanup _.omit. 2016-11-08 01:03:41 -08:00
John-David Dalton
3d0df11e50 Add bitmask to baseClone. 2016-11-07 23:00:31 -08:00
John-David Dalton
2e4c997dba Use more clear condition in unclonable test. 2016-11-07 23:00:31 -08:00
John-David Dalton
5aaf7e40ae Cleanup deep path tests. 2016-11-07 23:00:21 -08:00
John-David Dalton
57703b040d Rename param props to paths. 2016-11-06 18:07:49 -08:00
John-David Dalton
c6ff776147 Use baseGet and baseSet in basePickBy. 2016-11-06 17:15:38 -08:00
Aviv Rosental
9ac729e1bc Add deep functionality for _.omit and _.pick. (#2794) 2016-11-06 17:02:41 -08:00
Jhen-Jie Hong
6d951ccc87 Fix freeProcess.binding(util) usage (#2793) 2016-11-06 11:11:01 -08:00
John-David Dalton
3217118fab Add more _.spread tests. 2016-11-06 00:39:13 -07:00
John-David Dalton
6ef973ae33 Avoid trailing slice unless needed. 2016-11-06 00:13:16 -07:00
John-David Dalton
e0a65ac34a Cleanup fp tests. 2016-11-06 00:11:53 -07:00
John-David Dalton
b833d83a3e Add tests for “AllWith” fp methods. 2016-11-06 00:11:53 -07:00
John-David Dalton
220713109c Capitalize Lodash in header. [ci skip] 2016-11-06 00:11:53 -07:00
John-David Dalton
cafb9822ce Refine combo mark ranges. 2016-11-06 00:11:48 -07:00
John-David Dalton
1b3815928d Ensure fp.mergeAllWith accepts more than 2 sources. [closes #2786] 2016-11-04 01:10:54 -07:00
greenkeeper[bot]
fbb67f9dbe Update deps. 2016-11-03 08:24:04 -07:00
John-David Dalton
8d24f393ac Increment package version to enable ci tests. 2016-11-01 00:55:43 -07:00
John-David Dalton
7759376b91 Bump to v4.16.6. 2016-10-31 23:00:14 -07:00
John-David Dalton
ccc3081be0 Rebuild lodash and docs. 2016-10-31 22:58:47 -07:00
John-David Dalton
62b66305f2 Adjust conditional assignments. 2016-10-31 20:34:49 -07:00
John-David Dalton
65daae2043 Remove unneeded var assignment in baseXor. 2016-10-31 16:32:58 -07:00
John-David Dalton
0fcf43b02b Ensure _.xor returns an empty array when comparing the same array. [closes #2776] 2016-10-31 16:32:58 -07:00
John-David Dalton
46d1f53ee9 Increment package version to enable ci tests. 2016-10-31 16:32:52 -07:00
John-David Dalton
fc22665dd8 Bump to v4.16.5. 2016-10-30 22:56:07 -07:00
John-David Dalton
7862e5ce2d Rebuild lodash and docs. 2016-10-30 22:56:04 -07:00
John-David Dalton
7cbffd5ebf Update deps. 2016-10-30 22:55:59 -07:00
John-David Dalton
5028267c72 Fix broken builds. 2016-10-29 18:32:24 -07:00
John-David Dalton
6f03ef955c Drop Node 4 testing in travis. 2016-10-29 18:32:24 -07:00
John-David Dalton
f75bf13ad1 Use ~ instead of $HOME. 2016-10-29 18:32:23 -07:00
John-David Dalton
d7dbf0951d Add another _.xor test for multiple arrays. 2016-10-29 18:32:23 -07:00
John-David Dalton
daf6de6a46 Add uncloneable Proxy constructor test. 2016-10-29 18:32:23 -07:00
John-David Dalton
7d4c3ed404 Add async function detection to _.isFunction. 2016-10-29 18:32:23 -07:00
John-David Dalton
a9fd17950a Add clear to the Map interface note of _.memoize. [ci skip] 2016-10-29 18:32:23 -07:00
John-David Dalton
b91a515258 Cleanup test labels. 2016-10-27 00:06:59 -07:00
John-David Dalton
bc5729a9de Use consistent nullish checks. 2016-10-27 00:06:59 -07:00
John-David Dalton
729d1a57aa Ensure _.xor works with more than two arrays. [closes #2758] 2016-10-27 00:06:59 -07:00
John-David Dalton
73e2562cd1 Add Node 7 testing to travis. 2016-10-26 00:51:34 -07:00
John-David Dalton
849423c9d8 Param doc format nits. [ci skip] 2016-10-25 23:13:40 -07:00
Richard Gibson
1c9a9f364d Avoid object mutation in getRawTag. [closes #2755] 2016-10-25 23:13:34 -07:00
John-David Dalton
e485e16d28 Update deps. 2016-10-25 14:30:33 -07:00
John-David Dalton
bc49e7fe18 Bump Chrome testing in Sauce. 2016-10-24 16:15:31 -07:00
John-David Dalton
6a9337434f Use travis jwt addon. 2016-10-24 16:15:31 -07:00
John-David Dalton
0c89b9aeb5 Update uglify-js to 2.7.4. 2016-10-24 10:17:49 -07:00
Josh Soref
6f7a8501cb Spelling. (#2745) 2016-10-20 12:15:15 -07:00
John-David Dalton
7a03898ffe Bump HOT_COUNT limit to improve fp debugging. 2016-10-19 16:22:32 -07:00
John-David Dalton
609ae34b4e Rename jQuery Foundation to JS Foundation. [ci skip] 2016-10-19 08:41:40 -07:00
John-David Dalton
2d21faf68a Update async to 2.1.2. 2016-10-19 08:41:36 -07:00
John-David Dalton
26ee0c5c2a Cleanup PhantomJS upgrade. 2016-10-15 23:32:13 -07:00
John-David Dalton
cafb5e1331 Avoid leaked var in _.before test. 2016-10-15 18:10:55 -07:00
John-David Dalton
7717b8aa64 Remove more quotes. 2016-10-15 18:10:55 -07:00
John-David Dalton
c82322c490 Fix amd test fails. 2016-10-15 18:10:50 -07:00
John-David Dalton
4af0c066ec Update async to 2.1.1. 2016-10-15 12:17:20 -07:00
John-David Dalton
d2b10de40b Bump Edge testing in Sauce. 2016-10-13 12:30:51 -07:00
John-David Dalton
26bfb74a60 Continue to configure npm. 2016-10-13 00:59:02 -07:00
John-David Dalton
ef129e4c8c Use semicolons in place of &&. 2016-10-13 00:48:07 -07:00
John-David Dalton
0b04309ea5 Use yarn. 2016-10-12 22:42:58 -07:00
John-David Dalton
fb4852f6db More travis cleanup. 2016-10-12 22:21:35 -07:00
John-David Dalton
5046943020 Remove extraneous quotes from travis.yml. 2016-10-12 19:50:55 -07:00
John-David Dalton
14d7f89f75 Remove mapping shortcut references. 2016-10-12 07:03:02 -07:00
John-David Dalton
d431e97030 fp.convert should handle aliased and remapped methods. [closes #2728] 2016-10-11 22:40:20 -07:00
John-David Dalton
8f06ea259a Tweak exit early in _.isFunction. 2016-10-10 10:34:38 -07:00
John-David Dalton
0a0fa58e2d Use isObjectLike instead of isObject. 2016-10-10 10:28:16 -07:00
John-David Dalton
286f1abb87 Use empty string instead of undefined. 2016-10-10 10:27:57 -07:00
John-David Dalton
a621ba236a Remove try-catches in tests where possible. 2016-10-10 08:13:15 -07:00
John-David Dalton
a041a3782d Remove unneeded IE conditional comments test. 2016-10-10 08:12:35 -07:00
John-David Dalton
9f8064a8b5 Add read-only Symbol.toStringTag test. 2016-10-09 23:35:46 -07:00
John-David Dalton
729f424622 Minor formatting nit. [ci skip] 2016-10-09 22:40:40 -07:00
John-David Dalton
6a8e978fd7 Remove unneeded _.isPlainObject test. 2016-10-09 22:32:20 -07:00
John-David Dalton
aea509c230 Add Symbol.toStringTag test for _.isPlainObject. 2016-10-09 22:25:33 -07:00
John-David Dalton
21113b8c87 Minor hyphen nit. [ci skip] 2016-10-09 22:25:01 -07:00
John-David Dalton
dcf6d382c4 Add missing realm.element. 2016-10-09 21:27:25 -07:00
John-David Dalton
c541598f40 Cleanup testing arguments objects. 2016-10-09 21:09:50 -07:00
John-David Dalton
bd8e38518f Add more _.isElement tests. 2016-10-09 20:24:48 -07:00
John-David Dalton
067036a359 Simplify isElement. 2016-10-09 20:24:36 -07:00
John-David Dalton
22b51ed232 Refine _.isError checks to avoid false positives on plain objects. 2016-10-09 20:06:03 -07:00
John-David Dalton
054e78572b Add support for ordinals to _.words. 2016-10-09 16:43:44 -07:00
John-David Dalton
31cb06a643 Move Symbol.toStringTag workaround to getRawTag. 2016-10-09 16:43:36 -07:00
John-David Dalton
ee4a5a2604 Make objectToString its own helper function. 2016-10-09 12:59:28 -07:00
John-David Dalton
05b60871c5 Minor toSource param description nit. [ci skip] 2016-10-09 12:37:22 -07:00
John-David Dalton
03a194fcb9 Make toStringTag checks resistant to spoofing. 2016-10-08 10:59:01 -07:00
John-David Dalton
52e96c38dc Exit early from _.isEmpty for nullish values. 2016-10-08 10:42:21 -07:00
John-David Dalton
f5dd98cac4 Clarify lodash build. 2016-10-08 10:41:35 -07:00
John-David Dalton
b890d40b54 Remove unneeded capture phase param from addEventListener. 2016-10-08 10:41:21 -07:00
John-David Dalton
457a0dc703 Update glob to 7.1.1. 2016-10-07 15:31:47 -07:00
John-David Dalton
e4837cd75d Increment package version to enable ci tests. 2016-10-07 08:15:21 -07:00
John-David Dalton
67b2c6f900 Bump to v4.16.4. 2016-10-05 23:20:11 -07:00
John-David Dalton
260a84c4d8 Rebuild lodash and docs. 2016-10-05 23:19:24 -07:00
John-David Dalton
4b0db6ec6c Update qunit-extras to 3.0.0. 2016-10-05 23:19:24 -07:00
John-David Dalton
9c4c194bb5 Replace Object.create mock with undefined to hit more bizarro code paths. 2016-10-05 23:19:24 -07:00
John-David Dalton
ac74a1ea15 Remove unneeded shim juggle. 2016-10-05 23:19:24 -07:00
John-David Dalton
e4ddf3e155 Add nested check to _.merge test for non-plain object source values. 2016-10-05 23:19:23 -07:00
John-David Dalton
896b27ef73 Remove unneeded bizarro tests. 2016-10-05 23:19:23 -07:00
John-David Dalton
bdf0b9f288 Cleanup Babel workaround. 2016-10-05 23:19:10 -07:00
John-David Dalton
1665e5cbff Add bizarro _.create test. 2016-10-05 17:22:31 -07:00
John-David Dalton
6e8c0de1ff Add buffer test for _.merge. 2016-10-05 15:36:36 -07:00
John-David Dalton
4fb41ac6a9 Update removed snippets for the coverage run. 2016-10-05 12:13:25 -07:00
John-David Dalton
af983b2dd3 Ensure _.negate test for multiple arguments hits the 4 arguments case. 2016-10-05 11:09:37 -07:00
John-David Dalton
405d5875b8 Add _.isEmpty test for prototype objects. 2016-10-05 11:09:37 -07:00
John-David Dalton
b30f979ec7 Wrap arguments in case IIFE is removed. 2016-10-05 10:34:20 -07:00
John-David Dalton
836bd258a0 Ensure _.toString works on an array of symbols. 2016-10-05 09:07:51 -07:00
John-David Dalton
d2f74ee245 Minor _.toString doc typo fix. [ci skip] 2016-10-05 08:16:03 -07:00
John-David Dalton
45f668b416 Add baseIsArguments. 2016-10-04 22:28:17 -07:00
John-David Dalton
d29d74f687 Move baseClamp use to arraySampleSize and baseSampleSize. 2016-10-04 22:28:16 -07:00
John-David Dalton
9fba7be296 Add comments to arrayLikeKeys. [ci skip] 2016-10-04 08:41:32 -07:00
John-David Dalton
f30851bac1 Simplify _.isArguments more. 2016-10-04 01:08:05 -07:00
John-David Dalton
d308bce09f Add isTypedArray check to _.isEmpty. 2016-10-04 00:32:15 -07:00
John-David Dalton
3d7dbd140c Remove unused variable. 2016-10-04 00:23:34 -07:00
John-David Dalton
15bd64a1b4 Normalize keys of buffers and typed arrays. 2016-10-04 00:23:00 -07:00
John-David Dalton
3c30100837 Use baseFor in baseMerge. 2016-10-03 22:32:30 -07:00
John-David Dalton
81bdb9da43 Cleanup array type juggling. 2016-10-03 20:34:37 -07:00
John-David Dalton
60e3a93a30 Simplify _.isArguments. 2016-10-03 20:33:39 -07:00
John-David Dalton
158f2839fd Remove Safari 8.1 note. [ci skip] 2016-10-03 20:30:46 -07:00
John-David Dalton
c7b9df4286 Cleanup branching for array-likes in baseMergeDeep. 2016-10-03 18:06:07 -07:00
John-David Dalton
0eca941e22 Add isBuffer checks to baseMerge and _.transform. 2016-10-03 18:05:32 -07:00
John-David Dalton
8592f4163f Fix _.merge regression with buffers. [closes #2699] 2016-10-03 17:07:45 -07:00
John-David Dalton
29e2598a39 Remove duplicate operator. [ci skip] 2016-10-03 14:57:06 -07:00
John-David Dalton
32e75acb9f Indentation nit. [ci skip] 2016-10-03 14:56:32 -07:00
John-David Dalton
b54501a771 Increment package version to enable ci tests. 2016-10-03 10:34:46 -07:00
John-David Dalton
6062860628 Bump to v4.16.3. 2016-10-02 20:22:53 -07:00
John-David Dalton
a12c3797fb Rebuild lodash and docs. 2016-10-02 20:22:06 -07:00
John-David Dalton
48bc8b4f1a Update Firefox in sauce. 2016-10-02 19:19:10 -07:00
John-David Dalton
e861681963 Cleanup buffer tests. 2016-10-02 13:57:42 -07:00
John-David Dalton
9985e81808 Add _.isEqual test for buffers. 2016-10-02 13:37:47 -07:00
John-David Dalton
ffde99b216 Minor test formatting nit. [ci skip] 2016-10-01 23:35:30 -07:00
John-David Dalton
492caa4fd2 Add _.isFunction test for the Proxy constructor. 2016-10-01 23:34:45 -07:00
John-David Dalton
01c0950ae8 Add existence check for runInContext. [closes #2694] 2016-09-30 15:33:12 -07:00
John-David Dalton
20fa52309c Add proxyTag check to _.isFunction for Safari 10 support of the Proxy constructor. [closes #2689] 2016-09-29 14:54:09 -07:00
John-David Dalton
7a345b5606 Clarify fp spread methods description. [closes #2687] [ci skip] 2016-09-29 13:06:04 -07:00
John-David Dalton
b6d8116882 Indentation nit in readme. [ci skip] 2016-09-28 14:03:24 -07:00
John-David Dalton
4495e74f77 Treat buffers separately from typed arrays. 2016-09-28 12:54:11 -07:00
John-David Dalton
c009349d99 Use only one defineProperty reference. 2016-09-27 14:36:41 -07:00
John-David Dalton
26d5ba992c Fix prototype typo. 2016-09-27 14:04:06 -07:00
John-David Dalton
320ef6f933 Cleanup assignment test. 2016-09-26 21:43:49 -07:00
John-David Dalton
b678bb4a74 Make _.defaultsDeep and _.merge consistent with _.defaults in assigning undefined values. [closes #2676] 2016-09-26 21:43:49 -07:00
John-David Dalton
c1c394ac60 Increment package version to enable ci tests. 2016-09-26 21:43:49 -07:00
John-David Dalton
70d3057e17 Bump to v4.16.2. 2016-09-25 13:24:51 -07:00
John-David Dalton
3d27920226 Rebuild lodash and docs. 2016-09-25 13:24:51 -07:00
John-David Dalton
33a43a5f93 Update Node usage example. [ci skip] 2016-09-25 13:24:51 -07:00
John-David Dalton
fac9501840 Refine ext detection. 2016-09-25 13:19:48 -07:00
John-David Dalton
4d6aade733 Rename param to size. 2016-09-25 13:19:48 -07:00
John-David Dalton
d9e2c1cc34 Remove MAX_ARRAY_LENGTH use in arrayShuffle and baseShuffle. 2016-09-25 13:19:48 -07:00
John-David Dalton
c8c6a7e7b1 Fix arraySample description. [ci skip] 2016-09-25 13:19:48 -07:00
John-David Dalton
69addb855e Add baseSample, baseSampleSize, and baseShuffle. 2016-09-25 13:19:48 -07:00
John-David Dalton
55fb0172c0 Move thrower from v4 to move to v3. 2016-09-25 13:19:43 -07:00
John-David Dalton
2026cbeebd Add thrower helper. 2016-09-24 10:57:38 -07:00
John-David Dalton
d6d01cdfa0 Remove the need for es-sham. 2016-09-23 19:25:46 -07:00
John-David Dalton
cb07604dc6 Fix local failing PhantomJS 2 test. 2016-09-23 16:51:21 -07:00
John-David Dalton
549def0e48 Use Buffer.allocUnsafe when available. 2016-09-23 16:48:36 -07:00
John-David Dalton
a3c215919d Create more error text constants. 2016-09-23 16:48:02 -07:00
John-David Dalton
ab904a1047 Add error to encourage users to shim when needed. 2016-09-23 14:39:03 -07:00
John-David Dalton
60381f4d6c Update deps. 2016-09-22 16:02:49 -07:00
John-David Dalton
8f607295ae Increment package version to enable ci tests. 2016-09-20 15:13:43 -07:00
John-David Dalton
27218a95af Bump to v4.16.1. 2016-09-20 09:40:52 -07:00
John-David Dalton
8e150ad6bc Rebuild lodash and docs. 2016-09-20 09:40:52 -07:00
John-David Dalton
c8914a890c Excuse more Underscore _.escape tests. 2016-09-20 09:40:52 -07:00
John-David Dalton
b25a86f352 Use lodashStable.escape in more places. 2016-09-20 07:49:59 -07:00
John-David Dalton
ec8e279235 Add _.escape and _.unescape tests for backticks. 2016-09-20 07:49:40 -07:00
John-David Dalton
1cc16029db Avoid attempting to (un)escape backticks. [closes #2660] 2016-09-20 07:31:21 -07:00
John-David Dalton
5c912bcc62 Wrap runInContext in parentheses as a hint to avoid deferred parsing. 2016-09-19 17:13:18 -07:00
John-David Dalton
b3742c8d3c Update coveralls to 2.11.14. 2016-09-19 17:13:18 -07:00
John-David Dalton
c3a7516712 Increment package version to enable ci tests. 2016-09-19 17:13:18 -07:00
John-David Dalton
12319d5775 Bump to v4.16.0. 2016-09-17 22:13:04 -07:00
John-David Dalton
45e1965936 Rebuild lodash and docs. 2016-09-17 22:10:52 -07:00
John-David Dalton
6091c8ec49 Remove outdated _.runInContext example. [ci skip] 2016-09-17 19:12:45 -07:00
John-David Dalton
cfb7dab0f3 Update deps. 2016-09-17 18:42:43 -07:00
John-David Dalton
2d9f3cde0f Add greenkeeper ignore field to packagre.json. [ci skip] 2016-09-17 16:28:15 -07:00
John-David Dalton
e5f4770247 Break out _.sampleSize and _.shuffle into array helpers. 2016-09-16 08:27:46 -07:00
Greenkeeper
dc7c321514 Update coveralls to 2.11.13. 2016-09-15 10:55:21 -07:00
John-David Dalton
40164659b1 Simplify changelog reference. [ci skip] 2016-09-15 10:16:59 -07:00
Mark Stosberg
7829f3d224 Add CHANGELOG in the expected place and link it to where it's actually maintained. (#2648)
Ref: https://github.com/lodash/lodash/issues/875
2016-09-15 10:10:09 -07:00
John-David Dalton
92359257c1 Update tested Chrome version in sauce. 2016-09-14 11:15:34 -07:00
John-David Dalton
d2a2b3a8c4 Reduce n_ note. [ci skip] 2016-09-10 21:05:32 -07:00
John-David Dalton
4019eb65f2 Use jsdelivr combo src for fp example. [ci skip] 2016-09-10 14:22:38 -07:00
John-David Dalton
4c5bead5c6 Update Node usage comments. [ci skip] 2016-09-10 13:34:07 -07:00
John-David Dalton
0163aae357 Trim code snippet comments. 2016-09-10 13:08:45 -07:00
John-David Dalton
8fa23a94a0 Use nullish checks instead of coercing to booleans. 2016-09-10 10:48:36 -07:00
John-David Dalton
8176d56c72 Move arraySample definition to fix builds. 2016-09-06 14:24:53 -07:00
John-David Dalton
5add168743 Update requirejs. 2016-09-06 13:00:59 -07:00
John-David Dalton
27e59404d3 Add engines field to package.json. 2016-09-06 12:43:28 -07:00
John-David Dalton
54f5ac7b8d Simplify nested highlights selector. 2016-09-06 08:04:38 -07:00
John-David Dalton
5c688cc0b7 Remove rogue html-minifier reference. 2016-09-05 23:20:37 -07:00
John-David Dalton
86efb0ea09 Use an arrow function. 2016-09-05 23:18:39 -07:00
John-David Dalton
bc13666222 Reduce highlights further. 2016-09-05 22:49:26 -07:00
John-David Dalton
d1abde7d1a Remove broken HTML escaping. 2016-09-05 02:08:07 -07:00
John-David Dalton
691db4d406 Refine the auto-link selector. 2016-09-05 01:54:33 -07:00
John-David Dalton
fb833b0c19 Cleanup build-site.js. 2016-09-04 22:32:21 -07:00
John-David Dalton
4d2181ad83 Use template string literals in build-doc.js. 2016-09-04 22:26:48 -07:00
John-David Dalton
9dd291a96e Move html-minifier use to lodash.github.io. 2016-09-04 01:23:16 -07:00
John-David Dalton
1344803e7e Minify highlights snippets. 2016-09-03 09:22:57 -07:00
John-David Dalton
4a5f8fa974 Split _.sample out to arraySample. 2016-09-01 20:03:40 -07:00
John-David Dalton
212e4a6407 Add more doc notes on the order of results. [ci skip] [closes #2622] 2016-09-01 11:41:38 -07:00
John-David Dalton
d47123779e Avoid inserting empty details. 2016-09-01 01:30:29 -07:00
John-David Dalton
fc734a6371 Increase the HOT_COUNT to avoid shorting out setting fp toString methods. 2016-09-01 01:12:12 -07:00
John-David Dalton
02be5b808e Rename “_” id references to “lodash”. 2016-08-30 22:32:32 -07:00
John-David Dalton
0d757fdc40 Ensure _.has returns the correct result for nested sparse arrays. [closes #2614] 2016-08-30 19:20:52 -07:00
John-David Dalton
0263a879c4 Add _.template note for disabling the ES template literal delimiter. [ci skip] 2016-08-29 16:19:23 -07:00
John-David Dalton
c309ed1c49 Add collapse_vars to the Uglify options. 2016-08-29 08:23:37 -07:00
John-David Dalton
e58de14437 Add memoizeCapped. 2016-08-29 08:07:34 -07:00
John-David Dalton
78a7fa1d14 Add Node.js test note. [ci skip] 2016-08-29 08:07:34 -07:00
John-David Dalton
77178a9583 Replace chaining _.forEach doc example with regular usage. [ci skip] 2016-08-29 07:37:47 -07:00
Georgii Dolzhykov
d2ab33eb52 Minor doc fix for mergeWith. [closes #2610] [ci skip] 2016-08-29 07:23:14 -07:00
John-David Dalton
7b3194660c Fix failing _.memoize test in IE 11. 2016-08-28 18:46:19 -07:00
John-David Dalton
f627b25e9d Remove cache.clear existance check. 2016-08-28 18:46:19 -07:00
John-David Dalton
1bbb7c9d3b Add _.memoize tests for max cache size and immutable maps. 2016-08-28 18:46:19 -07:00
John-David Dalton
08a4ae1f56 Add _.memoize tests for max cache size. 2016-08-28 18:46:19 -07:00
John-David Dalton
7c398f8019 Add Stack#size. 2016-08-28 18:46:03 -07:00
John-David Dalton
6651023f7f Unescape delete properties. 2016-08-27 19:58:03 -07:00
John-David Dalton
021df666a3 Cleanup test method flags. 2016-08-27 19:43:44 -07:00
John-David Dalton
d7e60cb6d0 Add more object assignments tests. 2016-08-27 19:29:41 -07:00
John-David Dalton
4cd26e6860 Add more “__proto__” assignment tests. 2016-08-27 19:17:11 -07:00
John-David Dalton
946a3bf5c8 Remove unneeded value guards in tests. 2016-08-27 18:36:40 -07:00
John-David Dalton
b10e6a01b2 Add _.memoize cache limit. 2016-08-27 18:21:42 -07:00
John-David Dalton
e23341a118 Fix deburred long S value. [closes #2606] 2016-08-27 16:52:46 -07:00
John-David Dalton
4446fb13a3 Change postfix increment operators to prefix. 2016-08-27 15:46:40 -07:00
John-David Dalton
4dfbde7716 Add shortOut helper. 2016-08-27 15:35:36 -07:00
John-David Dalton
3c03d4a1f3 Add castRest, flatRest, and overRest helpers. 2016-08-27 11:26:42 -07:00
John-David Dalton
a0ecdfff0b Minor _.defer doc example nit. [ci skip] 2016-08-27 11:26:41 -07:00
John-David Dalton
60023a23df Exit concat early if no arguments are provided. 2016-08-27 10:44:18 -07:00
John-David Dalton
e96442631c Scope markdown-doctest to the doc folder. 2016-08-27 09:17:45 -07:00
John-David Dalton
94750bfa3c Use ES6 in lib files. 2016-08-27 08:54:37 -07:00
John-David Dalton
5cc02555d0 Update Chrome and Firefox in sauce. 2016-08-25 15:44:26 -07:00
John-David Dalton
6e2f7e2f38 Update glob to 7.0.6. 2016-08-25 07:29:29 -07:00
John-David Dalton
de92cc32e6 Add __proto__ guards to more methods. 2016-08-25 07:00:40 -07:00
John-David Dalton
e97205409d Make the readme mimic the homepage more. [ci skip] 2016-08-24 08:22:27 -07:00
Zakaria Ridouh
091d8e3dbf add npm install guide (#2592) 2016-08-23 17:04:03 -07:00
John-David Dalton
171ca53c29 Split defineProperty to nativeDefineProperty. 2016-08-23 12:26:44 -07:00
John-David Dalton
5be61796d9 Use quotes instead of backticks. 2016-08-22 23:24:10 -07:00
John-David Dalton
1aee1c6cb8 Fix IE11 test fail. 2016-08-22 23:09:41 -07:00
John-David Dalton
343f48b08c Ensure __proto__ is treated as a regular key in assignments. [closes #2591] 2016-08-22 11:06:02 -07:00
John-David Dalton
358ecfd2eb Add writable descriptor to setToString. 2016-08-22 10:56:07 -07:00
John-David Dalton
8066ad7e65 Rename bash to shell. [ci skip] 2016-08-22 00:09:05 -07:00
John-David Dalton
7ae0d0099d Reduce highlights class names. 2016-08-21 23:58:28 -07:00
John-David Dalton
2e4fc41c9b Update marky-markdown to 8.1.0. 2016-08-21 21:04:37 -07:00
Greenkeeper
71247ff556 Update deps. 2016-08-21 19:07:06 -07:00
John-David Dalton
5ef163f143 Drop lesser used or soon to be unsupported Node.js versions from travis. 2016-08-21 19:06:24 -07:00
John-David Dalton
510cbfaa3f Cleanup fp test labels. 2016-08-18 10:45:08 -07:00
John-David Dalton
bd3fcab9c0 Add fp.rangeStep and fp.rangeStepRight. [closes #2584] 2016-08-18 10:45:08 -07:00
John-David Dalton
9841e6aa4c Use cacheHas in equalArrays. 2016-08-17 12:04:07 -07:00
John-David Dalton
1bf125eebd Add strictIndexOf and strictLastIndexOf helpers. 2016-08-17 12:04:06 -07:00
John-David Dalton
f9936b8b54 Add setToString helper. 2016-08-17 12:04:06 -07:00
John-David Dalton
d11aa6de06 Update _.sortBy doc example with preferred usage. [ci skip] 2016-08-17 12:04:06 -07:00
John-David Dalton
1c4fccc0fd Remove Edge note since it’s covered by the IE 11 note. [ci skip] 2016-08-17 12:04:06 -07:00
John-David Dalton
aa0323f04d Update Node.js compat comment. [ci skip] 2016-08-17 12:04:06 -07:00
John-David Dalton
2916e9dd11 Remove nonEnumShadows. 2016-08-13 14:17:41 -07:00
John-David Dalton
6958d7abd4 Newline nits. [ci skip] 2016-08-13 14:13:46 -07:00
John-David Dalton
9e661cb858 Excuse more Underscore tests. 2016-08-13 14:13:34 -07:00
John-David Dalton
a972026c67 Drop Node 0.10 testing in travis. 2016-08-13 13:52:20 -07:00
John-David Dalton
2b1bda7418 Remove old Chrome and Firefox fixes. 2016-08-13 13:50:21 -07:00
John-David Dalton
a6a3f3ed80 Remove isHostObject helper. 2016-08-13 13:29:41 -07:00
John-David Dalton
5cca51e978 Remove escaping backticks. 2016-08-13 13:29:41 -07:00
John-David Dalton
7c971587dc Increment package version to enable ci tests. 2016-08-13 13:29:41 -07:00
John-David Dalton
40a13d4b86 Bump to v4.15.0. 2016-08-12 07:20:51 -07:00
John-David Dalton
a0971d016d Rebuild lodash and docs. 2016-08-11 23:09:09 -07:00
John-David Dalton
410e9e3eb8 Update _.deburr tests. 2016-08-11 23:05:31 -07:00
John-David Dalton
37813c3826 Add _.negate test for accepting multiple arguments. 2016-08-11 23:05:28 -07:00
John-David Dalton
e00c243662 Update bug comments. [ci skip] 2016-08-11 23:05:27 -07:00
John-David Dalton
f504f5aac5 Minor comment nit. [ci skip] 2016-08-10 23:51:13 -07:00
John-David Dalton
0b63f2c259 Implement reAsciiWord by a negated character class to match more when unicode is dropped. 2016-08-10 23:18:15 -07:00
John-David Dalton
14fb27ce77 Update _.debounce test to hit code branch. 2016-08-10 18:44:46 -07:00
John-David Dalton
7da7d7b7e0 Update ecstatic to 2.1.0. 2016-08-10 18:44:21 -07:00
John-David Dalton
907add6acc Have travis cache the npm cache instead of node_modules. 2016-08-10 12:51:04 -07:00
John-David Dalton
f110e3ddcd Add Latin Extended-A support to comments/docs. [ci skip] 2016-08-10 12:51:04 -07:00
John-David Dalton
ed206e5611 Added latin extended-a block support to _.deburr. [closes #2511] 2016-08-10 12:50:57 -07:00
John-David Dalton
e4d8af175b Remove String reference. 2016-08-09 20:15:51 -07:00
John-David Dalton
ba7ddc8cdc Minor format nit. [ci skip] 2016-08-09 18:18:45 -07:00
John-David Dalton
389f5790a7 Remove npm update —dev from travis. 2016-08-09 18:17:59 -07:00
John-David Dalton
6071982dd9 Rework ascii and unicode helpers. 2016-08-09 18:08:20 -07:00
Greenkeeper
f71c0bd4c3 Update ecstatic to 2.0.0. 2016-08-09 12:22:47 -07:00
John-David Dalton
50b45d013a Fix typo in FP doc template. [ci skip] 2016-08-09 07:49:17 -07:00
John-David Dalton
93a047e77c Remove chatty npm update from lodash-cli in travis. 2016-08-09 00:01:22 -07:00
John-David Dalton
a3bf0e8888 Simplify _.size. 2016-08-08 23:39:02 -07:00
John-David Dalton
d8fa2f3e89 Fix safari test. 2016-08-08 20:47:21 -07:00
John-David Dalton
e361c5a5b3 Preserve lodash-cli node_modules in travis. 2016-08-08 18:58:46 -07:00
John-David Dalton
3ef032cbaf Add npm prune and update to travis. 2016-08-08 17:14:12 -07:00
John-David Dalton
36cf5a7ff3 Remove _.isFunction use from _.toNumber. 2016-08-08 16:38:56 -07:00
John-David Dalton
6d930d6920 Simplify _.isEmpty. 2016-08-08 16:38:51 -07:00
John-David Dalton
f676a8c9c1 Increment package version to enable ci tests. 2016-08-08 15:52:44 -07:00
John-David Dalton
941ffee2d3 Bump to v4.14.2. 2016-08-07 21:46:32 -07:00
John-David Dalton
0a71f3372f Rebuild lodash and docs. 2016-08-07 20:56:55 -07:00
John-David Dalton
f817f68487 Update docdown to 0.7.1. 2016-08-07 16:07:06 -07:00
John-David Dalton
826975f392 Add trailing newline to generated docs. 2016-08-07 14:40:28 -07:00
John-David Dalton
5f244d3c31 Remove em elements from code blocks. 2016-08-07 14:14:23 -07:00
John-David Dalton
71be34859f Wrap doc site in raw tags. 2016-08-07 13:55:38 -07:00
John-David Dalton
f9a4705c9c Add node_modules to travis cache. 2016-08-06 23:01:52 -07:00
John-David Dalton
a546842792 Upgrade travis to phantom.js v2. 2016-08-06 20:38:08 -07:00
John-David Dalton
ba86e20179 Fix IE 9 test fails. 2016-08-06 20:08:43 -07:00
John-David Dalton
b32fc6f6e6 Minor function/method nit. [ci skip] 2016-08-06 17:15:54 -07:00
John-David Dalton
1f13a34687 Add nativeKeysIn and cleanup object coercion. 2016-08-06 17:07:45 -07:00
John-David Dalton
f212b4850d Update links to ecma-262/7.0. [ci skip] 2016-08-04 21:54:03 -07:00
John-David Dalton
1b4555afb6 Restructure keys methods. 2016-08-04 21:53:55 -07:00
John-David Dalton
358013c67e Cleanup overArg description. [ci skip] 2016-08-04 09:40:01 -07:00
John-David Dalton
a98667ca05 Remove old JIT and engine bug guards. 2016-08-03 22:06:03 -07:00
John-David Dalton
02e9f4c333 Simplify _.isEmpty. 2016-08-03 21:42:52 -07:00
John-David Dalton
d7951db01b Fix test fail in es builds. 2016-08-03 17:22:20 -07:00
John-David Dalton
21fba2df9f Reduce deps of _.initial and _.tail. 2016-08-03 13:04:10 -07:00
John-David Dalton
a4947139a6 Overwrite primitives in paths of set methods. [closes #2558] 2016-08-03 10:48:22 -07:00
John-David Dalton
c01e7580cd Avoid error in Edge accessing localStorage when loading tests via the file: protocol. 2016-08-03 08:34:40 -07:00
John-David Dalton
8b4f22ed75 Update marky-markdown wrapping fix. 2016-08-02 12:07:06 -07:00
John-David Dalton
669b76bf99 Update marky-markdown. 2016-08-02 00:16:07 -07:00
Greenkeeper
efee02ace7 Update docdown to 0.7.0. 2016-08-01 20:20:31 -07:00
John-David Dalton
cd8adf5611 Minor doc formatting nits. [ci skip] 2016-08-01 17:28:22 -07:00
John-David Dalton
d216106b88 Add private tag to unexposed functions. [ci skip] 2016-08-01 17:25:16 -07:00
John-David Dalton
6dd8fb12ad Ensure fp.nthArg returns a curried function. 2016-08-01 16:55:12 -07:00
John-David Dalton
a4999575d0 Cleanup npm link creation. 2016-08-01 14:39:37 -07:00
John-David Dalton
fcaff8ff28 Update timeout related doc type tags. [closes #2553] [ci skip] 2016-08-01 08:53:30 -07:00
John-David Dalton
cf0b3e3212 Update docdown options. 2016-07-31 22:16:11 -07:00
John-David Dalton
bccb4150fd Add _.every doc note on matching empty collections. [ci skip] 2016-07-31 16:32:55 -07:00
John-David Dalton
9a297b0eb5 Cleanup partial comparison notes. [ci skip] 2016-07-31 16:32:08 -07:00
Dan J Miller
9c4baf7645 Clarify how comparison with empty sources is handled by _.matches, _.isMatch and _.matchesProperty. (#2548) 2016-07-31 00:54:48 -07:00
John-David Dalton
73b2f20509 Use lodash-doc-globals. 2016-07-30 23:48:17 -07:00
John-David Dalton
642690e692 Fix failing amd test. 2016-07-30 12:10:46 -07:00
John-David Dalton
1468c74c36 Make doubley sure Date.now, clearTimeout, and setTimeout are mockable. 2016-07-30 12:10:46 -07:00
Greenkeeper
0bfa1ec2d0 Update lodash to 4.14.1. 2016-07-30 12:10:46 -07:00
John-David Dalton
7c74464d7a Remove prepublish hook because we don’ publish this branch. [ci skip] 2016-07-30 12:10:46 -07:00
John-David Dalton
de051ac1ac Increment package version to enable ci tests. 2016-07-30 12:10:46 -07:00
John-David Dalton
ba0c4c413d Bump to v4.14.1. 2016-07-29 00:40:38 -07:00
John-David Dalton
7e6f5ef4f5 Rebuild lodash and docs. 2016-07-29 00:40:38 -07:00
John-David Dalton
712eeb009f Add missing semicolon. [ci skip] 2016-07-29 00:40:38 -07:00
Johannes Scharlach
b54e28deb7 Prevent failing circular reference detection. (#2543) 2016-07-28 23:12:53 -07:00
John-David Dalton
1f44cebac3 Update coveralls to 2.11.12. 2016-07-28 23:12:53 -07:00
John-David Dalton
9c05e8392b Add stack.delete for other in equalArrays and equalObjects. 2016-07-28 23:12:53 -07:00
John-David Dalton
9a67fec48a Remove stack.delete from baseMergeDeep. 2016-07-28 23:12:53 -07:00
John-David Dalton
1966ac7979 Prevent failed circular reference detection in _.defaultsDeep. [closes #2537] 2016-07-28 23:12:53 -07:00
John-David Dalton
8b624217c5 Cleanup _.debounce and _.throttle docs. [ci skip] 2016-07-28 23:12:53 -07:00
John-David Dalton
40499af9b9 Fix freeModule typo. 2016-07-28 23:12:53 -07:00
John-David Dalton
b3bd359a0d Use stubArray for easier readability. 2016-07-28 23:12:52 -07:00
John-David Dalton
de07e3f874 Add keys methods tests for array-like values. 2016-07-28 23:12:52 -07:00
John-David Dalton
c7e8953b68 Cleanup array-like tests. 2016-07-28 23:12:52 -07:00
John-David Dalton
80e7fe4bf9 Remove freeGlobal prerequisite for freeExports. [closes #2527] 2016-07-28 23:12:52 -07:00
John-David Dalton
2bc199d7fc Move method equivalence notes. [ci skip] 2016-07-28 23:12:52 -07:00
John-David Dalton
9b710d8e81 Use _.toFinite in random and range methods. 2016-07-28 23:12:52 -07:00
John-David Dalton
cc6a0ee98d Minor .gitignore cleanup. 2016-07-28 23:12:52 -07:00
Brad Buchanan
c9492d79a1 Document behavior of _.debounce when wait is 0 (#2530)
Clarify that when `leading` is false a debounced method with `wait=0` will not invoke immediately, but on the next tick (like `setTimeout`), but when `leading` is true the invocation will be immediate.
2016-07-28 23:12:52 -07:00
Brad Buchanan
94c4719c0d Fix missing semicolon (#2529)
I started on a documentation change but `npm run validate` after my initial pull revealed this linting error:

```
> jscs lodash.js

requireSemicolons: Missing semicolon after statement at lodash.js :
  5864 |    function isFlattenable(value) {
  5865 |      return isArray(value) || isArguments(value) ||
  5866 |        !!(spreadableSymbol && value && value[spreadableSymbol])
-----------------------------------------------------------------------^
  5867 |    }
  5868 |
```
2016-07-28 23:12:51 -07:00
John-David Dalton
c253e8d7b8 Ensure paths with consecutive empty brackets or dots are parsed correctly. 2016-07-28 23:12:51 -07:00
John-David Dalton
98f12fb8e1 Update qunitjs to 2.0.1. 2016-07-28 23:12:51 -07:00
John-David Dalton
e05a40bb16 Bump to v4.14.0. 2016-07-28 23:12:51 -07:00
John-David Dalton
c73bb67486 Rebuild lodash and docs. 2016-07-28 23:12:40 -07:00
John-David Dalton
3ad0cbc86d Minor _.includes test cleanup. 2016-07-24 08:38:09 -07:00
John-David Dalton
6402af7db9 Use String#slice instead of String#indexOf for _.endsWith and _.startsWith. 2016-07-24 08:38:09 -07:00
John-David Dalton
6a41a79ded Move switch optimization to negate. 2016-07-23 23:33:30 -07:00
John-David Dalton
fbd9a804a9 Use negate in reject. 2016-07-23 22:11:34 -07:00
John-David Dalton
694e1175a1 Remove arity hint from lazy reject. 2016-07-23 22:11:34 -07:00
John-David Dalton
80dbd4cbfa Add props param to basePickBy. 2016-07-23 22:11:34 -07:00
John-David Dalton
d459f4ac7c Add more arity hints. 2016-07-23 22:11:34 -07:00
John-David Dalton
2c5c4bfbea Remove switch statement from baseRest. 2016-07-22 21:06:15 -07:00
John-David Dalton
a1a68bb5d7 Update async to 2.0.1 and request to 2.74.0. 2016-07-22 18:51:57 -07:00
John-David Dalton
984a10c1b1 Add isConcatSpreadable to flatten methods. 2016-07-22 18:51:57 -07:00
John-David Dalton
3c4c06cb5e Update benchmark.js to 2.1.1. 2016-07-21 08:39:58 -07:00
John-David Dalton
8d28a5ca3f Minor var palcement nit. 2016-07-19 17:58:58 -07:00
John-David Dalton
801c4a56c3 Remove old browser addListener helper. 2016-07-19 17:58:26 -07:00
John-David Dalton
ea000e6ce7 Style nit in sauce helper. 2016-07-19 17:58:26 -07:00
John-David Dalton
6723cdfa07 Update tested firefox version in sauce. 2016-07-18 11:29:43 -07:00
John-David Dalton
2cf10711f5 Remove toc links from site. 2016-07-18 09:01:25 -07:00
John-David Dalton
bde171e947 Update doc options. 2016-07-18 09:01:25 -07:00
John-David Dalton
2696615523 Update docdown to 0.6.1 and jscs to 3.0.7. 2016-07-18 09:01:13 -07:00
John-David Dalton
f98028d1d8 Cleanup doc notes. [ci skip] 2016-07-17 21:33:41 -07:00
John-David Dalton
97475fc365 Remove checkGlobal helper. 2016-07-17 20:10:01 -07:00
John-David Dalton
ea7aa52ea3 Cleanup “coerce arguments” bits of function descriptions. 2016-07-17 20:10:01 -07:00
John-David Dalton
ec4ae5978b Add baseRest. 2016-07-17 20:10:01 -07:00
Samuel Greene
90d73143e1 Don't rearg zipObjectDeep (#2503) 2016-07-17 20:10:01 -07:00
John-David Dalton
249f0cd72c Add _.isEqual test for transitive equivalence. 2016-07-17 20:10:01 -07:00
John-David Dalton
232cc1ab34 Minor comment typo. [ci skip] 2016-07-17 20:10:01 -07:00
Greenkeeper
2cea31cb1b Update async to version 2.0.0 and coveralls to 2.11.11. 2016-07-17 20:10:01 -07:00
John-David Dalton
02c4d60861 Remove thisGlobal use. 2016-07-17 20:10:01 -07:00
John-David Dalton
8c9073308a Add back excused Underscore isSet test for IE11. 2016-07-17 20:10:01 -07:00
John-David Dalton
8cb5455671 Add fp.zipAll. 2016-07-17 20:10:00 -07:00
John-David Dalton
8bc44e3bff Update qunit-extras to 2.1.0. 2016-07-17 20:10:00 -07:00
John-David Dalton
73f84baaec Add more excused underscore debounce tests. 2016-07-17 20:10:00 -07:00
John-David Dalton
d3acace1c4 Update uglify options to disable negate_iffe. 2016-07-17 20:10:00 -07:00
Greenkeeper
7f3539d001 Update request to 2.73.0. 2016-07-17 20:10:00 -07:00
John-David Dalton
3ef19f1ab1 Add lodash-webpack-plugin reference to readme. [ci skip] 2016-07-17 20:10:00 -07:00
John-David Dalton
749b2db846 Update jquery to 3.1.0 and marky-markdown to 7.0.2.
chore(package): update jquery to version 3.1.0 (#2483)

https://greenkeeper.io/
2016-07-17 20:10:00 -07:00
John-David Dalton
a3e99b5d89 Use optional-dev-dependency. 2016-07-17 20:10:00 -07:00
John-David Dalton
dbbb3fbb55 Add comments and cleanup build-site.js. 2016-07-17 20:10:00 -07:00
John-David Dalton
6eeac45d23 Update vendors. 2016-07-17 20:10:00 -07:00
John-David Dalton
5669cc0a0b Remove hrs. 2016-07-17 20:09:59 -07:00
John-David Dalton
d986901a1c Narrow header anchor selector. 2016-07-17 20:09:59 -07:00
John-David Dalton
5394bbf06a Make newline formatting explicit. 2016-07-17 20:09:59 -07:00
John-David Dalton
d7b2f922b5 Remove "v" prefix from version. 2016-07-17 20:09:59 -07:00
John-David Dalton
9ab55443eb Fix _.isEqualWith and _.isMatchWith test fails. 2016-07-17 20:09:59 -07:00
John-David Dalton
67c7a43e6f Move marky-markdown to an optional dep. 2016-07-17 20:09:59 -07:00
Alex Wachira
26a4bfb838 Make "lodash/fp" doc link point to untagged branch. [ci skip] 2016-07-17 20:09:59 -07:00
John-David Dalton
e7a16b2e64 Make "Contributing" doc link point to untagged branch. [ci skip] 2016-07-17 20:09:45 -07:00
John-David Dalton
a5612ed668 Update uglify-js to 2.7.0 and jscs to 3.0.6. 2016-07-17 20:09:03 -07:00
John-David Dalton
f55d15692b Remove more markymark meta data. 2016-07-17 20:08:13 -07:00
John-David Dalton
107994859b Remove markymark links from h4s. 2016-07-17 20:08:13 -07:00
John-David Dalton
a8d3689061 Ensure _.isEqual works more consistently with circular references. 2016-07-17 20:08:12 -07:00
Y-Less
4fb4ec5328 Links to creation equivalents for in-place modification functions. (#2468)
See issue #2467
2016-07-17 20:08:12 -07:00
John-David Dalton
9bc8519656 Cleanup build-site script. 2016-07-17 20:08:12 -07:00
Benjamin Tan
af36d2d8e5 Ensure proper tags are generated. (#2465) 2016-07-17 20:08:12 -07:00
Zack Hall
6b0069f10f Add doc-site build script (#2461) 2016-07-17 20:08:12 -07:00
John-David Dalton
a64b629333 Combine _.isMatch and _.matches tests. 2016-06-29 12:31:07 -07:00
John-David Dalton
fc4cc977ed Remove backticks from package name. 2016-06-29 12:31:07 -07:00
John-David Dalton
7483520c8c Cleanup .gitignore. 2016-06-29 12:31:07 -07:00
John-David Dalton
5d18fb8c70 Simplify uglify options. 2016-06-29 12:31:07 -07:00
John-David Dalton
1163bfac5c Add _.conformsTo tests. 2016-06-29 12:31:07 -07:00
John-David Dalton
d643bbd7e4 Add conformsTo to lodash doc block. [ci skip] 2016-06-26 09:55:47 -07:00
Dan J Miller
32158935f8 Change second param of _.invokeMap as path in docs. [ci skip] 2016-06-24 19:41:01 -07:00
John-David Dalton
50bf1ea784 Ensure _.first supports shortcut fusion. [closes #2447] 2016-06-24 07:05:27 -07:00
Greenkeeper
fa29123c5e Update deps. 2016-06-22 07:15:55 -07:00
John-David Dalton
314c652818 Update Chrome versions in sauce. 2016-06-22 07:15:45 -07:00
John-David Dalton
a3dd60370e Cleanup fp tests. 2016-06-18 22:31:45 -07:00
John-David Dalton
3d82567118 Add isEvenIndex helper to fp tests. 2016-06-18 22:31:45 -07:00
John-David Dalton
eaac5e02c0 Add fp.propertyOf test. 2016-06-18 21:59:56 -07:00
John-David Dalton
3bd5703bdb Downgrade QUnit for Backbone test support. 2016-06-18 21:30:38 -07:00
John-David Dalton
bf80a75474 Make fp.propertyOf and remap of fp.get. 2016-06-18 12:49:48 -07:00
John-David Dalton
bea7016223 Make fp.property and alias of fp.get. 2016-06-18 12:49:48 -07:00
John-David Dalton
c8ff2b4612 Update qunit to 2.0.0. 2016-06-18 12:49:48 -07:00
John-David Dalton
6c673cd19b Cleanup wrapper details helpers. 2016-06-18 12:49:47 -07:00
John-David Dalton
c1ae43e041 Update glob to 7.0.4 and markdown-doctest to 0.8.0. 2016-06-18 12:49:38 -07:00
Brandon Horst
9605072200 Formalize which value is picked by _.unionBy and _.unionWith to pick the result from the first array in which it occurs. 2016-06-18 12:47:44 -07:00
John-David Dalton
9cabc7c222 Ensute _.assignWith respects customizer results of undefined. [closes #2424] 2016-06-18 12:47:44 -07:00
Dan J Miller
b2b3391827 Fixed display of transforms param in overArgs docs. (#2422) 2016-06-18 12:47:43 -07:00
John-David Dalton
19e94b8889 Move split out functions. 2016-06-18 12:47:43 -07:00
John-David Dalton
4bee8c9ead Add docs for split out functions. [ci skip] 2016-06-18 12:47:43 -07:00
John-David Dalton
3f1ae77306 Assign pair[0] to a variable. 2016-06-18 12:47:43 -07:00
John-David Dalton
9f6d6d7b37 Remove isFlattenableIteratee predicate to resolve regression. [closes #2418] 2016-06-18 12:47:43 -07:00
John-David Dalton
adac412f58 Split out setWrapToString. 2016-06-18 12:47:43 -07:00
John-David Dalton
31ca38515a Make wrap functions more debuggable. 2016-06-18 12:47:43 -07:00
John-David Dalton
4a35929979 Cleanup wrap comments. 2016-06-18 12:47:42 -07:00
John-David Dalton
4a0610f107 Replace _.result use with _.get. 2016-06-18 12:47:42 -07:00
John-David Dalton
9a1b3d813a Rename wrapper function. 2016-06-18 12:47:42 -07:00
John-David Dalton
a7a4862491 Add missing context references. 2016-06-18 12:47:42 -07:00
John-David Dalton
5783536837 Update dojo to 1.11.2 and jquery to 3.0.0. 2016-06-18 12:47:42 -07:00
John-David Dalton
f8646d1a5d Minor space nit. 2016-06-10 12:19:28 -07:00
John-David Dalton
39bb7064e7 Minor doc nits. [ci skip] 2016-06-10 12:19:28 -07:00
John-David Dalton
388bf6934d Ensure fp.rearg returns a curried function. [closes #2413] 2016-06-08 23:55:25 -07:00
John-David Dalton
5122e9271c Add conforms to aliasToReal fp mapping. 2016-06-08 23:26:57 -07:00
John-David Dalton
32b36435f8 Add baseIsXyz helpers. 2016-06-08 10:53:49 -07:00
John-David Dalton
807ad48bbc Add compat note to addSetEntry. [ci skip] 2016-06-07 12:19:35 -07:00
John-David Dalton
b5842314b4 Make LARGE_ARRAY_SIZE check in stackSet align with others. 2016-06-07 08:33:48 -07:00
John-David Dalton
efb4db2b86 Isolate caches of tests. 2016-06-07 07:20:01 -07:00
John-David Dalton
ecbf8cd722 Add map cache test for changing values. 2016-06-07 07:08:33 -07:00
John-David Dalton
9992144130 Cleanup clone tests. 2016-06-07 07:08:14 -07:00
Greenkeeper
1f9cba6f53 Update markdown-doctest to 0.7.0. 2016-06-06 23:46:34 -07:00
John-David Dalton
2465a6bdbd Add fp.mergeAllWith test. 2016-06-06 23:46:06 -07:00
John-David Dalton
1a7199fd6b Cleanup fp tests. 2016-06-06 23:20:13 -07:00
John-David Dalton
57f0a4c6d7 Add conformsTo to fp aryMethod mapping. 2016-06-06 20:00:15 -07:00
John-David Dalton
138cf77916 Add fp.assignAllWith, fp.extendAllWith, and fp.mergeAllWith. 2016-06-06 19:58:51 -07:00
John-David Dalton
43d1ca89c2 Add _.ary and _.unary tests for this binding and minimum arg count. 2016-06-06 17:49:33 -07:00
John-David Dalton
51e619b18f Cleanup this binding test labels. 2016-06-06 17:48:35 -07:00
John-David Dalton
21df7426e2 Ensure _.divide and _.multiply return 1 when no arguments are specified. [closes #2405] 2016-06-06 15:58:24 -07:00
John-David Dalton
2f6b2ca0c7 Add back clearTimeout use for debounced.cancel. 2016-06-06 10:03:43 -07:00
John-David Dalton
cf1b9f9595 Update jscs to 3.0.4. 2016-06-05 22:55:57 -07:00
John-David Dalton
b0ec8339fa Cleanup and simplify doc examples. [ci skip] 2016-06-05 16:43:19 -07:00
John-David Dalton
762748684e Add _.conformsTo. 2016-06-05 15:08:39 -07:00
John-David Dalton
bdfd5880e9 Adjust freeExports and freeModule assignment. 2016-06-03 10:01:46 -07:00
John-David Dalton
9e55e5bcea Move root exposure back to the AMD branch. 2016-06-03 06:27:30 -07:00
John-David Dalton
887576e4a5 Update sauce-tunnel to 2.5.0. 2016-06-02 15:31:48 -07:00
John-David Dalton
ccd1d6ab29 Simplify _.isBuffer. 2016-06-02 14:48:25 -07:00
John-David Dalton
fcbb63ad60 Ensure helpers work when provided < 1 or > 1 argument. 2016-06-02 09:06:02 -07:00
John-David Dalton
1607e7914c Use faster C++ helpers when available. 2016-06-02 08:42:00 -07:00
John-David Dalton
68e98397ab Add matches to aliasToReal fp mapping. 2016-06-01 07:33:57 -07:00
John-David Dalton
3983d4f473 Update whereEq alias. 2016-06-01 00:19:19 -07:00
John-David Dalton
9eda959489 Another round of fp aliases. 2016-06-01 00:18:49 -07:00
John-David Dalton
4880f9923c Add fp.assignAll, fp.assignInAll, fp.defaultsAll, fp.defaultsDeepAll, and fp.mergeAll. 2016-06-01 00:02:23 -07:00
John-David Dalton
87e8a4290e Add more fp aliases. 2016-05-31 20:37:50 -07:00
John-David Dalton
fd96d59963 Add strict mode directive to a few more files. 2016-05-31 10:47:29 -07:00
John-David Dalton
1a1771f0b5 Align method descriptions with "This method" instead of "A method". [ci skip] 2016-05-31 10:46:57 -07:00
John-David Dalton
22ed53260f Add basePropertyOf helper. 2016-05-31 08:27:24 -07:00
John-David Dalton
77cf88a3bf Add util.pitch. 2016-05-30 22:00:20 -07:00
John-David Dalton
695d74d7c5 Add jsdocs to fp build modules. 2016-05-29 17:14:01 -07:00
John-David Dalton
a164735369 Shorten return statement descriptions for isXyz methods. [ci skip] 2016-05-29 17:14:00 -07:00
John-David Dalton
6ccea636b1 Remove argument number specifier in methodSpread note. [closes #2390] [ci skip] 2016-05-29 15:02:27 -07:00
John-David Dalton
0ccaf76661 Cleanup common lib docs. [ci skip] 2016-05-28 23:15:12 -07:00
John-David Dalton
593f6f9f86 Correct doc block for overArg helper in _baseConvert. [ci skip] 2016-05-28 10:16:28 -07:00
John-David Dalton
fbdda6df03 Add overArg helper. 2016-05-27 15:36:48 -07:00
John-David Dalton
a7dcce3e8d Simplify jsdoc arg signatures. 2016-05-27 14:38:32 -07:00
John-David Dalton
ee5718003b Simplify getSymbols fallback. 2016-05-27 13:46:00 -07:00
John-David Dalton
a43065ec08 Add baseGetTag helper. 2016-05-26 08:59:01 -07:00
John-David Dalton
1740ee91da Minor space nit. [ci skip] 2016-05-26 07:15:18 -07:00
John-David Dalton
90f95306f9 Make _.defaultTo return the defaultValue for NaN and nullish values. 2016-05-26 07:15:18 -07:00
John-David Dalton
0964f9175e Cleanup test descriptions with NaN. [ci skip] 2016-05-26 07:15:17 -07:00
John-David Dalton
dbde3f8826 Add link for sorted feature requests to contributing.md. [ci skip] 2016-05-26 07:15:17 -07:00
John-David Dalton
33e08baf3f Update umd doc note. [ci skip] 2016-05-26 07:15:12 -07:00
John-David Dalton
6e67ebab05 Cleanup _.defaultTo. 2016-05-25 08:46:14 -07:00
Mateo Calle
5fbc5303ff Added _.defaultTo. (#2381) 2016-05-24 21:35:56 -07:00
John-David Dalton
e582ad226a Use heavy round-tipped rightwards arrow instead of the plain rightwards arrow. 2016-05-24 21:19:50 -07:00
John-David Dalton
dfb71a3a50 Pop stacks when possible. 2016-05-24 21:15:23 -07:00
John-David Dalton
5355f4f25e Remove indexOfNaN in favor of baseFindIndex. 2016-05-24 12:42:14 -07:00
John-David Dalton
98c422d227 Avoid inspecting the entire key-value array when adding values to a stack. 2016-05-24 09:43:00 -07:00
John-David Dalton
e18b577d20 Add Map guard to stackSet. 2016-05-24 00:23:21 -07:00
John-David Dalton
7226df593e Clarify createSet doc description. [ci skip] 2016-05-24 00:22:59 -07:00
John-David Dalton
8a376f647e Cleanup iteratee arguments test labels. 2016-05-23 23:56:55 -07:00
John-David Dalton
050087f6c4 Cleanup "find" tests. 2016-05-23 23:56:23 -07:00
John-David Dalton
c67e347255 Make _.isEqual treat invalid dates as equiv. 2016-05-23 16:39:54 -07:00
John-David Dalton
3fdac985c7 Reduce createFind. 2016-05-23 16:39:04 -07:00
John-David Dalton
02ff3e6258 Remove "unique" mention from _.difference docs. [ci skip] [closes #2372] 2016-05-23 11:03:10 -07:00
John-David Dalton
65ce1b0bb5 Remove unnecessary type tag. [ci skip] 2016-05-23 10:07:25 -07:00
John-David Dalton
7e8528104b Increment package version to enable ci tests. 2016-05-23 10:07:25 -07:00
John-David Dalton
40ac55acb6 Bump to v4.13.1. 2016-05-23 08:58:01 -07:00
John-David Dalton
42c639d252 Rebuild lodash and docs. 2016-05-23 08:57:55 -07:00
John-David Dalton
d110b64ee4 Ensure _.find and _.findLast pass the correct key param to predicate. [closes #2367] 2016-05-23 08:47:43 -07:00
John-David Dalton
a2617d810c Add failing tests for #2367. 2016-05-23 08:47:24 -07:00
John-David Dalton
90d07bc04c Simplify isMaskable assignment. 2016-05-22 22:11:15 -07:00
John-David Dalton
013d9db86f Bump to v4.13.0. 2016-05-22 19:30:21 -07:00
John-David Dalton
9d4d725bc7 Rebuild lodash and docs. 2016-05-22 19:30:13 -07:00
John-David Dalton
9881cc9e10 Add fp.unionBy, fp.unionWith, fp.uniqWith, fp.xorBy, and fp.xorWith tests. 2016-05-22 19:28:32 -07:00
John-David Dalton
01474fed0b Add fp.intersectionBy and fp.intersectionWith tests. 2016-05-22 19:06:32 -07:00
John-David Dalton
024e6d8ae8 Add fp.differenceBy and fp.differenceWith tests. 2016-05-22 19:05:54 -07:00
John-David Dalton
607ba653f7 Update doc examples and tests for _.difference, _.intersection, _.union, _.uniq, and _.xor methods. 2016-05-22 19:04:32 -07:00
John-David Dalton
9090c1904f Add _.property shorthand note to _.countBy docs. [ci skip] 2016-05-22 19:04:31 -07:00
John-David Dalton
158b762367 Split up "mutation" and "with" method tests. 2016-05-22 01:08:26 -07:00
John-David Dalton
e8b3b2dc31 Use isEven in _.remove test. 2016-05-22 01:08:26 -07:00
John-David Dalton
5d72eec742 Reorg find tests. 2016-05-22 01:08:26 -07:00
John-David Dalton
6fe020c920 Add fp.findFrom and fp.findLastFrom tests. 2016-05-22 01:08:26 -07:00
John-David Dalton
40c5a6af49 Remove without from skipRearg mapping. [closes #2365] 2016-05-21 14:26:54 -07:00
John-David Dalton
803dce242b Update sortedIndex method doc examples. [ci skip] 2016-05-21 11:57:02 -07:00
John-David Dalton
4ed722ccd8 Prefer array use for doc examples of params that accept arrays. [ci skip] 2016-05-21 11:57:02 -07:00
John-David Dalton
f35d479d5e Update jquery to 2.2.4 and webpack to 1.13.1. 2016-05-20 21:52:55 -07:00
John-David Dalton
f3af61de97 Use stubs in mask functions. 2016-05-20 21:32:03 -07:00
John-David Dalton
077fb89083 Simplify getNative. 2016-05-20 21:32:03 -07:00
John-David Dalton
d4d4390846 Use _.stubFalse in _.isBuffer. 2016-05-20 21:32:03 -07:00
John-David Dalton
33e54546fe Make stub functions hoistable. 2016-05-20 21:31:58 -07:00
John-David Dalton
bf008e0680 Add fp methodRearg mappings for set "with" and "by" methods. [closes #2359] 2016-05-20 10:36:18 -07:00
John-David Dalton
08694bd709 Fix markdown-doctest run. 2016-05-20 09:00:45 -07:00
John-David Dalton
91242440fc Should not ignore empty brackes and dots. 2016-05-20 08:42:03 -07:00
John-David Dalton
68ae6fc212 Ensure round methods don't return NaN for large precision values. 2016-05-20 08:15:24 -07:00
John-David Dalton
14a16c2a7a Remove unnecessary doctrine fixes. 2016-05-19 22:18:51 -07:00
John-David Dalton
9cbb50d3a6 Remove unnecessary defineProperty guards. 2016-05-19 21:36:29 -07:00
John-David Dalton
47635b9978 Assign setTimeout to itself to avoid leak detection. 2016-05-19 21:35:44 -07:00
John-David Dalton
f90c3f2483 Ensure _.pullAll works with the same value for array and values. [closes #2356] 2016-05-19 19:47:20 -07:00
John-David Dalton
5a67ecc142 Use setProperty to mock setTimeout to avoid global leak fails in older browsers. 2016-05-19 16:15:53 -07:00
John-David Dalton
a542f8ab54 Remove clearTimeout use. 2016-05-19 13:52:18 -07:00
John-David Dalton
f32349db7d Skip setTimout mock test in PhantomJS. 2016-05-19 13:39:36 -07:00
John-David Dalton
32f5db3f72 Fix failing _.delay test. 2016-05-19 13:39:36 -07:00
John-David Dalton
670e3983b4 Cleanup _.delay and _.defer tests. 2016-05-19 13:39:35 -07:00
John-David Dalton
e1cc4d8552 Add mock Date.now and setTimeout tests. 2016-05-19 13:39:31 -07:00
John-David Dalton
8422bb37b0 Group clearTimeout and setTimeout. 2016-05-19 08:28:49 -07:00
Arend van Beelen jr
ebf9b64062 Little doc correction for _.endsWith(). (#2355) 2016-05-19 08:01:17 -07:00
John-David Dalton
56b397b506 Simplify _.conforms doc example. [ci skip] 2016-05-18 17:40:12 -07:00
John-David Dalton
de6cc79ac8 Shorten _.defer doc comment. [ci skip] 2016-05-18 17:39:37 -07:00
John-David Dalton
d28395fdb9 Replace toPairs with keys in getMatchData. 2016-05-18 14:51:54 -07:00
John-David Dalton
84b8ee7bda Allow clearTimeout, setTimeout, and Date.now to be mocked. 2016-05-18 13:50:07 -07:00
John-David Dalton
b56c732332 Cleanup fp.findFrom and fp.indexOfFrom tests. 2016-05-18 00:31:25 -07:00
John-David Dalton
041c1b4586 Simplify find tests expected. 2016-05-17 23:23:53 -07:00
John-David Dalton
0edc480d17 Increment package version to enable ci tests. 2016-05-17 13:14:20 -07:00
John-David Dalton
1a3bcb4ebd Add _.findLast tests for fromIndex values. 2016-05-17 00:52:38 -07:00
John-David Dalton
7d8c2a84b7 Cleanup up from fromIndex and length test labels. 2016-05-17 00:52:25 -07:00
John-David Dalton
4faac431c4 Make _.debounce and _.throttle tests align on dummy args. 2016-05-16 18:34:10 -07:00
John-David Dalton
df9ded3282 Fix _.throttle test for system time of 0. 2016-05-16 18:33:36 -07:00
John-David Dalton
1fe8d1679e Add nullish guards to private methods used by lodash-webpack-plugin. 2016-05-16 18:31:33 -07:00
John-David Dalton
708505f2b1 Minor doc note fixes. [ci skip] 2016-05-16 18:31:02 -07:00
John-David Dalton
b2da5ee1a7 Add backticks to error message. [ci skip] 2016-05-16 18:30:12 -07:00
John-David Dalton
315e751f43 Add _.isNative doc note. [ci skip] 2016-05-16 18:29:30 -07:00
John-David Dalton
dc5544223f Use new operator when throwing an error for consistency. 2016-05-16 15:56:03 -07:00
John-David Dalton
c14728d31a More test cleanup. 2016-05-16 13:35:05 -07:00
John-David Dalton
7d4b154866 Use consistent results var name in debounce & throttle tests. 2016-05-16 10:47:27 -07:00
John-David Dalton
b69647a0c3 Add isModularize check for _.throttle test for system time of 0. 2016-05-16 10:37:00 -07:00
John-David Dalton
d054442e2c Cleanup date mocks. 2016-05-16 10:31:20 -07:00
John-David Dalton
e50bf1fb44 Add _.throttle test for a system time of 0. 2016-05-16 08:38:20 -07:00
John-David Dalton
d40b6a75da Test label cleanup for find methods. 2016-05-16 08:17:15 -07:00
John-David Dalton
e124e7fb5f Init lastCallTime as undefined to avoid issues when the sytem time is 0. [closes #2342] 2016-05-16 01:00:26 -07:00
John-David Dalton
7c3a163f9c Add back _.includes test for strings with a fromIndex. 2016-05-15 22:29:32 -07:00
John-David Dalton
03af0791aa Remove dead code from tests. 2016-05-15 21:46:33 -07:00
John-David Dalton
464885a539 Add getValue helper. 2016-05-15 20:57:10 -07:00
John-David Dalton
346579ac7a Add interopRequire test helper. 2016-05-15 15:48:52 -07:00
John-David Dalton
76ed206e9b Make _.isNative throw if core-js is detected. 2016-05-15 15:48:47 -07:00
John-David Dalton
06e7c963ef Combine _.find and _.includes tests for fromIndex. 2016-05-14 23:16:38 -07:00
John-David Dalton
573d902026 Simplify umd and exports. 2016-05-14 13:11:58 -07:00
John-David Dalton
66cdfe5896 Update markdown-doctest to 0.6.0. 2016-05-13 20:04:36 -07:00
John-David Dalton
9afd4659c7 Add fake source key detection. 2016-05-13 20:03:13 -07:00
John-David Dalton
7249217600 Add "findFrom" methods to fp dep mappings. 2016-05-12 22:44:26 -07:00
John-David Dalton
2f20c672e0 Update _.times doc example to not duplicate _.stubTrue. [ci skip] 2016-05-12 16:29:16 -07:00
John-David Dalton
6d02a64c47 Add fromIndex param to _.find and _.findLast. 2016-05-12 16:19:35 -07:00
Jeroen Engels
3d078383cb Add findIndexFrom, findLastIndexFrom, indexOfFrom, & lastIndexOfFrom in FP. 2016-05-12 15:08:05 -07:00
John-David Dalton
64e765bf7a Fix _.stubFalse doc example typo. [ci skip] 2016-05-12 13:57:14 -07:00
John-David Dalton
b5b6125730 Minor space nit. [ci skip] 2016-05-12 13:54:56 -07:00
John-David Dalton
e45984f6b8 Add npm prepublish hook. 2016-05-12 07:59:42 -07:00
John-David Dalton
a95cf1c26c Rename mock to stub. 2016-05-12 07:53:34 -07:00
Greenkeeper
4a19913726 Update markdown-doctest to 0.5.0. 2016-05-12 06:37:23 -07:00
John-David Dalton
52ae769bfa Add default accumulator note to _.transform docs. [ci skip] 2016-05-11 22:11:08 -07:00
John-David Dalton
44d7c3887d Rename test helper prop to resolve. 2016-05-11 00:28:36 -07:00
John-David Dalton
315271996c Cleanup _.constant tests. 2016-05-11 00:28:36 -07:00
John-David Dalton
2357704540 Add _.mockArray, _.mockFalse, _.mockObject, _.mockString, and _.mockTrue. 2016-05-11 00:28:31 -07:00
John-David Dalton
262049f737 Remove extraneous _.toPath examples. [ci skip] 2016-05-10 23:33:27 -07:00
John-David Dalton
04d6e351a6 Add fromIndex param to _.findIndex and _.findLastIndex. 2016-05-10 23:33:21 -07:00
Greenkeeper
9fa86ec712 Update ecstatic to 1.4.1. 2016-05-10 19:09:47 -07:00
John-David Dalton
901e3dcff2 Flip "n" and "index" in _.nth and _.nthArg docs. [ci skip] 2016-05-08 16:50:38 -07:00
John-David Dalton
43fffe3200 Bump to v4.12.0. 2016-05-07 22:02:47 -07:00
John-David Dalton
1123e13072 Rebuild lodash and docs. 2016-05-07 22:02:40 -07:00
John-David Dalton
996636d25b Update lodash dep. 2016-05-07 19:31:52 -07:00
John-David Dalton
8864095bab Update firefox version in sauce. 2016-05-07 19:31:52 -07:00
John-David Dalton
def9f5d84a Fix doc typo for _.toPairsIn. [closes #2314] 2016-05-07 10:07:10 -07:00
John-David Dalton
47d024ae7b Use "index" instead of "nth". [closes #2313] [ci skip] 2016-05-07 06:55:24 -07:00
John-David Dalton
05135ca171 Update chrome version in sauce. 2016-05-06 22:58:22 -07:00
John-David Dalton
ca1f22a7c6 Ensure trailing function sources aren't skipping for _.assign, _.assignIn, _.defaults, & _.merge. [closes #2311] 2016-05-06 21:24:57 -07:00
John-David Dalton
9a461a5e48 Add _.toFinite. 2016-05-04 21:09:28 -07:00
John-David Dalton
73e7bab839 Add tooling section. [ci skip] 2016-05-04 17:17:14 -07:00
John-David Dalton
572060aedc Update fp description. [ci skip] 2016-05-04 17:17:01 -07:00
John-David Dalton
f1b63d41f8 Fix test fails for npm package builds. 2016-05-02 21:34:19 -07:00
John-David Dalton
9ee423edcf Add _.toPairs test for sets. 2016-05-02 21:04:00 -07:00
John-David Dalton
70c8651182 Use consistent b values. 2016-05-02 21:03:13 -07:00
John-David Dalton
2b54f23dad Add more stack tests. 2016-05-02 20:17:41 -07:00
John-David Dalton
67ef2bb008 Cleanup customizer test labels. 2016-05-02 20:17:13 -07:00
John-David Dalton
f2b5e58500 Minor hyphen nit. 2016-05-02 19:42:33 -07:00
John-David Dalton
b8fa0d9b29 Add large stack test to other cache tests. 2016-05-02 19:42:23 -07:00
John-David Dalton
264d68dec9 Add support for sets to _.toPairs methods. 2016-05-02 16:53:17 -07:00
John-David Dalton
71f5264ee1 Cleanup returns tags. [ci skip] 2016-05-02 16:51:59 -07:00
John-David Dalton
ce8a1feb94 Avoid paving modified lodash for coverage runs in travis. 2016-05-02 13:31:03 -07:00
John-David Dalton
05c32044e9 Remove extraneous isArrayLikeObject check from isFlattenable. 2016-05-02 13:08:51 -07:00
John-David Dalton
44927be6e2 Drop version from license header. [ci skip] 2016-05-02 10:52:53 -07:00
John-David Dalton
d1779d6cdd Fix phantomjs test fails. 2016-05-02 10:01:17 -07:00
John-David Dalton
a13d640bcc Test internal caches instead of cache modules. 2016-05-02 08:51:44 -07:00
John-David Dalton
c7d4106f66 Add private tags back to map methods. [ci skip] 2016-05-02 07:15:32 -07:00
John-David Dalton
2e59faad8f Fix module paths. 2016-05-02 00:34:58 -07:00
John-David Dalton
6d70b64b2e Ensure module tests ran for coverage. 2016-05-02 00:00:19 -07:00
John-David Dalton
767f9c6bce Simplify module assignment. 2016-05-01 23:37:13 -07:00
John-David Dalton
edd7c2f0b1 Cleanup travis tests. 2016-05-01 23:24:30 -07:00
John-David Dalton
b9cfd31bd5 Add modular build to coverage tests. 2016-05-01 21:00:58 -07:00
John-David Dalton
6883f99141 Add tests for map caches. 2016-05-01 19:12:03 -07:00
John-David Dalton
c2aee218d2 Add promise case to code removal for coverage run. 2016-05-01 19:11:49 -07:00
Greenkeeper
8e44d73705 Update markdown-doctest to 0.4.0. 2016-05-01 19:10:44 -07:00
Anders D. Johnson
9e30cc4542 Fix docs typo space after sentence in _.merge. 2016-05-01 19:09:18 -07:00
John-David Dalton
963e2c23b0 Upgrade to qunit-extras 2.0. 2016-04-30 11:59:06 -07:00
Jeroen Engels
7ee4bf8d02 Remove duplicate method from FP mapping. 2016-04-30 10:43:42 -07:00
John-David Dalton
c3c6bc9666 Cleanup markdown-doctest-setup. 2016-04-29 11:57:41 -07:00
Nick Johnstone
ef1024bb60 Test documentation with markdown-doctest. 2016-04-29 10:32:43 -07:00
John-David Dalton
6c6e1c2be3 Use array and iteratee. [ci skip] 2016-04-28 22:08:28 -07:00
John-David Dalton
e9a08ba9a9 Use https for Alex's blog. [ci skip] 2016-04-28 21:30:22 -07:00
John-David Dalton
59546b9989 Update conduct link in contributing text. [ci skip] 2016-04-28 21:26:46 -07:00
John-David Dalton
816edcce2e Rename getPlaceholder to getHolder. 2016-04-28 14:55:25 -07:00
Greenkeeper
8accfb3372 Update fs-extra to 0.30.0. 2016-04-28 10:56:16 -07:00
John-David Dalton
da146a9afd Add map doc note to _.toPairs and _.toPairsIn. [ci skip] 2016-04-28 10:56:15 -07:00
John-David Dalton
cbcd5ffdc4 Add node_js v6 to travis. 2016-04-27 08:04:33 -07:00
Clinton Montague
6f600ebeac Add _.flip bitmask value to createWrapper documentation. [ci skip] 2016-04-26 16:58:50 -07:00
John-David Dalton
9aa456f26f Use lodashStable.toArray in more places. 2016-04-25 00:04:33 -07:00
John-David Dalton
dc77d7605d Add _.toArray tests for maps. 2016-04-24 23:56:22 -07:00
John-David Dalton
f7c4410f41 Add support for converting maps to _.toPairs and _.toPairsIn. 2016-04-24 23:56:00 -07:00
John-David Dalton
9fa0ec00b8 Remove unneeded var assignment. 2016-04-23 11:43:15 -07:00
John-David Dalton
0125ff7303 Cleanup fp test labels and args tests. 2016-04-23 11:31:14 -07:00
John-David Dalton
fbc91cf7ae Add iteratee arity hints to forEach methods. [closes #2277] 2016-04-23 11:29:52 -07:00
John-David Dalton
43c26b5d6f Ensure matches methods match arrays with duplicate values. [closes #2270] 2016-04-22 23:02:54 -07:00
John-David Dalton
4e38f70e0e Update cache implementations. 2016-04-22 23:02:46 -07:00
John-David Dalton
e2c86dac63 Ensure fp.update does not convert end of path to an object. [closes #2271] 2016-04-22 08:46:35 -07:00
John-David Dalton
aebc0650f8 Simplify _.concat. 2016-04-22 08:32:19 -07:00
John-David Dalton
44cf971405 Bump to v4.11.2. 2016-04-21 08:29:44 -07:00
John-David Dalton
c0d7418054 Rebuild lodash and docs. 2016-04-21 08:29:44 -07:00
John-David Dalton
a0db54b53f Add tests for _.sortedIndex with nulls and symbols. 2016-04-21 08:29:44 -07:00
John-David Dalton
32b813e42b Ensure sortedIndex methods align with sortBy for symbols. 2016-04-21 06:56:07 -07:00
John-David Dalton
3c144b8601 Ensure _.sortBy moves symbols to the end. 2016-04-21 01:01:00 -07:00
John-David Dalton
076e4e6db5 Add math operator method tests for objects. 2016-04-21 01:00:59 -07:00
John-David Dalton
2ea08ccd36 Add math operator method tests for symbols. 2016-04-21 00:44:56 -07:00
John-David Dalton
fc48518f2b Move toKey from baseProperty to property. 2016-04-20 18:12:16 -07:00
John-David Dalton
594c3b3406 Update @see tags. [ci skip] 2016-04-20 17:25:04 -07:00
John-David Dalton
38edd713e4 Ensure punctuation is not treated as words. [closes #2268] 2016-04-20 16:23:46 -07:00
John-David Dalton
6987d70dc2 Only avoid converting -0 to 0 if comparator is provided. 2016-04-20 16:05:21 -07:00
John-David Dalton
0e4b307585 Update full build kb. [ci skip] 2016-04-20 07:49:45 -07:00
John-David Dalton
c81bbe95c6 Use an anchor title. [ci skip] 2016-04-20 07:49:44 -07:00
John-David Dalton
b21a87b50f Fix createSet feature test for Safari 8. 2016-04-20 07:49:44 -07:00
John-David Dalton
e3566eb1ce Use Set only if it coerces -0 correctly. 2016-04-20 01:24:00 -07:00
John-David Dalton
0429434dbb Ensure -0 is treated as 0. 2016-04-20 00:51:25 -07:00
John-David Dalton
80f35ee713 Add _.uniq tests for -0. 2016-04-20 00:25:31 -07:00
John-David Dalton
224595c837 Move links to the top of the readme. 2016-04-19 23:59:20 -07:00
John-David Dalton
61ace9a24b Remove code of conduct doc. 2016-04-19 23:59:14 -07:00
John-David Dalton
8c630ede7e Cleanup package.json. 2016-04-19 23:07:06 -07:00
John-David Dalton
ca3b583695 Add wrapped values tests. 2016-04-19 17:42:46 -07:00
John-David Dalton
c2cbb06d57 Add _.difference and _.intersection tests for -0. 2016-04-19 16:57:41 -07:00
John-David Dalton
f6bf8d2e6d Cleanup -0 tests. 2016-04-19 12:38:00 -07:00
John-David Dalton
60c89b2754 Add _.invoke test for -0 key. 2016-04-19 12:37:47 -07:00
John-David Dalton
b72fba911d Cleanup wrapper resets and add assert for returning function object values. 2016-04-19 11:26:55 -07:00
John-David Dalton
3930c388e4 Fix Safari 9.0 flaky test fail. 2016-04-19 10:23:03 -07:00
John-David Dalton
ddf5ef0839 Add even more -0 tests. 2016-04-19 08:24:33 -07:00
John-David Dalton
c66947405b Add omit and pick tests for -0 keys. 2016-04-19 00:24:09 -07:00
John-David Dalton
ad27b62343 Add tests for -0 keys. 2016-04-19 00:23:16 -07:00
John-David Dalton
5283b0f407 Use _.startCase. 2016-04-18 22:30:24 -07:00
John-David Dalton
af41f9267a Add test for combining enclosing circle backslash. 2016-04-18 22:03:56 -07:00
John-David Dalton
6e8c984250 Use toKey in more functions. 2016-04-18 21:33:32 -07:00
John-David Dalton
c2e018b2ac Avoid rate limiting by Sauce. 2016-04-18 21:23:09 -07:00
John-David Dalton
a47ce3cf13 Simplify building lodash. 2016-04-18 20:56:58 -07:00
John-David Dalton
ba58f35f37 Add arguments object test for values methods. 2016-04-18 17:48:26 -07:00
Greenkeeper
30fd1693ee Update fs-extra to 0.28.0. 2016-04-18 08:30:33 -07:00
John-David Dalton
161c17ce7f Consolidate returns in trim methods. 2016-04-17 21:55:43 -07:00
John-David Dalton
27dfe542bd Use baseToString in _.truncate. 2016-04-17 07:18:39 -07:00
John-David Dalton
353113f17f Start to add @see tags. [ci skip] 2016-04-16 21:48:22 -07:00
John-David Dalton
762e858c48 Use isSymbol instead of baseToNumber to fix _.toNumber test fails. 2016-04-16 20:45:10 -07:00
John-David Dalton
db49702046 Remove unsafe_comps uglify option to fix minified builds. 2016-04-16 20:16:38 -07:00
John-David Dalton
7239bf791f Comma nit in _.inRange doc. [ci skip] 2016-04-16 18:16:27 -07:00
John-David Dalton
9cb75cae1d Add jsdocs for baseToNumber and baseToString. 2016-04-16 18:00:31 -07:00
John-David Dalton
fdb4cf1208 Use baseToString in more places and refactor isIndex and isKeyable. 2016-04-16 07:32:06 -07:00
John-David Dalton
714cf7b18c Add baseGt, baseLt, baseToNumber, baseToString, and createRelationalOperation. 2016-04-15 07:17:48 -07:00
John-David Dalton
1a1e0e1a6b Ensure _.pullAt sorts indexes greater than 9 correctly. [closes #2254] 2016-04-15 07:17:48 -07:00
John-David Dalton
f6c14ec31f Add jscs "disallowUnusedVariables" rule. 2016-04-15 07:17:48 -07:00
John-David Dalton
da7f413f6f Update jscs to 3.0.1 and fs-extra to 0.27.0. 2016-04-15 07:17:34 -07:00
John-David Dalton
3cf28953a7 Update code of conduct to point to the jQuery Foundation's policy. [ci skip] 2016-04-14 11:11:08 -07:00
John-David Dalton
080b761f7f Update export doc note. [ci skip] 2016-04-14 08:37:19 -07:00
John-David Dalton
7f6ad484ec Bump to v4.11.1. 2016-04-13 22:09:00 -07:00
John-David Dalton
391a930d49 Rebuild lodash and docs. 2016-04-13 22:09:00 -07:00
John-David Dalton
a532773703 Cleanup debounce and throttle tests. 2016-04-13 22:08:55 -07:00
John-David Dalton
49f8aa4289 Fix failing debounce test. 2016-04-13 18:17:07 -07:00
ben robbins
44b9b085c0 Add test for _.debounce with a wait of 0. 2016-04-13 18:16:50 -07:00
John-David Dalton
a447353977 Add pluck fp alias of map. 2016-04-13 14:22:40 -07:00
John-David Dalton
dea6ccbf43 Bump to v4.11.0. 2016-04-13 09:57:13 -07:00
John-David Dalton
0c4d8836e7 Rebuild lodash and docs. 2016-04-13 09:57:03 -07:00
Jeroen Engels
ef67e07732 Fix doc nits for _.nth. [ci skip] 2016-04-13 09:52:37 -07:00
John-David Dalton
7e885a4ddd Add _.words unit test for contractions. 2016-04-13 08:21:17 -07:00
John-David Dalton
a3c1f42708 Add _.nth and _.nthArg tests. 2016-04-13 01:09:12 -07:00
John-David Dalton
d3ef5a3acb Use noop instead of alwaysUndefined. 2016-04-13 01:09:12 -07:00
John-David Dalton
5098d63a22 Update qunit to 1.23.1. 2016-04-12 22:38:49 -07:00
John-David Dalton
4275a73170 Add support for contractions to case methods. 2016-04-12 21:48:52 -07:00
John-David Dalton
78a157d675 Move _.map test order around. 2016-04-12 21:48:52 -07:00
John-David Dalton
97a437e8e6 Return implicit undefined. 2016-04-12 10:02:24 -07:00
John-David Dalton
3c37f290a8 Add unwrapped chain test for nth. 2016-04-12 09:38:22 -07:00
John-David Dalton
dcd5d470e0 Use baseUnary to avoid passing incorrect arity hints to baseIteratee. 2016-04-12 08:27:41 -07:00
John-David Dalton
b424f3b60f Ensure fp.over doesn't cap its iteratee args. 2016-04-12 08:14:04 -07:00
John-David Dalton
201ea9a9f0 Add shorthand tests for sortBy and over methods. 2016-04-11 22:46:38 -07:00
John-David Dalton
2469af6c3f Add _.nth. 2016-04-11 22:46:33 -07:00
John-David Dalton
bfe6e06b5a Ensure _.sortBy works with the matchesProperty shorthand. 2016-04-11 17:38:03 -07:00
John-David Dalton
091b5fbe30 Make _.head avoid accessing array when its length is 0. 2016-04-11 17:34:49 -07:00
John-David Dalton
93168e6018 Use references to String#replace and String#split. 2016-04-11 17:29:22 -07:00
John-David Dalton
16ed081818 Absorb copyObjectWith into copyObject. 2016-04-11 17:28:19 -07:00
John-David Dalton
c38b4b29cf Avoid unnecessary array cloning in createRecurryWrapper and mergeData. 2016-04-11 17:27:04 -07:00
John-David Dalton
a20b88d114 Bump to v4.10.0. 2016-04-10 22:44:04 -07:00
John-David Dalton
87912a3b3f Rebuild lodash and docs. 2016-04-10 22:42:52 -07:00
John-David Dalton
53bde1238c Replace "invoking" with "and invokes". [ci skip] 2016-04-10 22:40:38 -07:00
John-David Dalton
fd365c27e2 Add doc comments to the minify file util. [ci skip] 2016-04-10 22:40:38 -07:00
John-David Dalton
4f43841699 Add doc comments to the common file util. [ci skip] 2016-04-10 22:40:38 -07:00
John-David Dalton
e60e97c03f Ensure _.debounce queues a trailing call after maxWait. [closes #2229] 2016-04-10 20:50:51 -07:00
Greenkeeper
e619f8ca83 Update webpack to 1.12.15. 2016-04-10 20:02:01 -07:00
John-David Dalton
cf2f538167 Add castSlice and rename cast related helpers. 2016-04-09 13:57:45 -07:00
John-David Dalton
17e1a6dbe8 Ensure _.slice handles a limit of 0 in Node 0.10. 2016-04-09 00:53:07 -07:00
John-David Dalton
74f6af8686 Update fp aliases. 2016-04-08 17:59:18 -07:00
John-David Dalton
351236f526 Rearrange regexp vars. 2016-04-08 16:32:15 -07:00
John-David Dalton
51ad056710 Remove redundant param descriptions. [ci skip] 2016-04-08 15:04:07 -07:00
John-David Dalton
6512b7f925 Update "over" method iteratee descriptions. [ci skip] 2016-04-08 15:03:06 -07:00
John-David Dalton
c7264e3f1f Add isIterateeCall check to _.split. 2016-04-08 11:03:18 -07:00
John-David Dalton
349ec35c48 Add flow test for handling an empty array. 2016-04-08 11:03:18 -07:00
John-David Dalton
057dd5b0a8 Minor escapeRegExp test nit. 2016-04-08 11:03:18 -07:00
John-David Dalton
f6ac7cb1a1 Shorten chars string coersion. 2016-04-08 11:03:18 -07:00
John-David Dalton
c1958daf65 Update handling of limit to the current es6 draft. 2016-04-08 11:03:10 -07:00
John-David Dalton
ee73c9b436 Bump to v4.9.0. 2016-04-08 02:07:13 -07:00
John-David Dalton
fac5e727e6 Rebuild lodash and docs. 2016-04-08 02:07:13 -07:00
John-David Dalton
977264f55b Fix split test fails across enviros. 2016-04-08 02:07:13 -07:00
John-David Dalton
e776e679af Ensure _.split works with emojis. 2016-04-08 01:20:49 -07:00
John-David Dalton
23901dfd45 Update docdown. 2016-04-07 21:43:33 -07:00
John-David Dalton
87444e1a45 Add sumBy tests. 2016-04-07 21:43:33 -07:00
John-David Dalton
dc63bc2bd9 Fix dynamic test labels for groups of methods. 2016-04-07 21:43:33 -07:00
John-David Dalton
f4ff4f29b1 Simplify toSource. 2016-04-07 21:43:32 -07:00
John-David Dalton
06412d5f12 Remove Hash use from Uglify options because it breaks it. 2016-04-07 21:43:32 -07:00
John-David Dalton
bbc84903a7 Update istanbul to 0.4.3. 2016-04-07 21:43:32 -07:00
John-David Dalton
e014592ea0 Fix typo in Hash descripton. [ci skip] 2016-04-07 21:43:32 -07:00
John-David Dalton
4305ffde18 Add commas. [ci skip] 2016-04-07 21:43:32 -07:00
John-David Dalton
0588dcb3e9 Add Hash util and split out file helper. 2016-04-07 21:43:27 -07:00
John-David Dalton
58afd8c364 Update debounce article links. [ci skip] 2016-04-06 14:10:56 -07:00
John-David Dalton
e120d63ee2 Add doc note about group ordering of _.groupBy. [ci skip] [closes #2212] 2016-04-06 07:59:05 -07:00
John-David Dalton
d7f43eba6a Make exceptions to fp argument ordering stand out. [ci skip] 2016-04-05 23:53:05 -07:00
John-David Dalton
786a92669e Update chaining note. [ci skip] 2016-04-05 23:53:05 -07:00
John-David Dalton
504aead673 Add placeholders section. [ci skip] 2016-04-05 23:52:49 -07:00
John-David Dalton
8c72ffc583 Add more fp browser usage examples. [ci skip] 2016-04-05 23:50:18 -07:00
John-David Dalton
27d3311b6a Don't spell out two hundred. [ci skip] 2016-04-05 23:50:18 -07:00
John-David Dalton
5e2f113d50 Update vendor/backbone to v1.3.3. 2016-04-05 23:50:18 -07:00
Greenkeeper
55e7b8764e Update jquery to 2.2.3. 2016-04-05 23:50:18 -07:00
John-David Dalton
513c0ae64d Update list of fp methods with spread arguments. [ci skip] 2016-04-05 23:50:17 -07:00
John-David Dalton
f0f6a1e382 Simplify deep path doc examples. [ci skip] 2016-04-05 08:44:14 -07:00
John-David Dalton
6f3fb587e2 Simplify deep property tests. 2016-04-05 08:39:09 -07:00
John-David Dalton
083c5b703a Add _.matchesProperty test for matching undefined values of nested objects. 2016-04-05 08:23:34 -07:00
John-David Dalton
3583c56067 Replace double quotes with ticks. [ci skip] 2016-04-05 08:08:31 -07:00
John-David Dalton
9999199d2b Enable over methods to accept matchesProperty shorthands. 2016-04-05 08:06:44 -07:00
John-David Dalton
c084e358bd Bump to v4.8.2. 2016-04-04 15:48:17 -07:00
John-David Dalton
238d45a2cb Rebuild lodash and docs. 2016-04-04 15:48:17 -07:00
John-David Dalton
21d056c470 Break code comments up to display better in the wiki. [ci skip] 2016-04-04 15:48:16 -07:00
John-David Dalton
0308d4de62 Remove skipFixed methods from fixed arity listings. [ci skip] 2016-04-04 11:47:52 -07:00
John-David Dalton
f2a6f6ce6a Update lodash dev dep. 2016-04-04 11:47:52 -07:00
John-David Dalton
cf5d6b5bc8 Revert #2193. 2016-04-04 11:47:46 -07:00
John-David Dalton
7a6b64b2f6 Bump to v4.8.1. 2016-04-04 11:43:03 -07:00
John-David Dalton
bca11bd21e Rebuild lodash and docs. 2016-04-04 11:42:50 -07:00
John-David Dalton
bf39a31907 Fix typo in _falseOptions.jst. 2016-04-04 08:51:04 -07:00
John-David Dalton
792bfbb604 Bump to v4.8.0. 2016-04-03 23:47:26 -07:00
John-David Dalton
1ef96896d5 Rebuild lodash and docs. 2016-04-03 23:47:26 -07:00
John-David Dalton
2293de07a7 Add _falseOptions module. 2016-04-03 23:47:26 -07:00
John-David Dalton
804ad3d805 Move private key higher. [ci skip] 2016-04-03 22:44:28 -07:00
John-David Dalton
c797f83ca5 Add fp convert test for unconverted methods. 2016-04-03 21:55:30 -07:00
John-David Dalton
a71ac53fa7 Add jsdoc comments to fp/_baseConvert. [ci skip] 2016-04-03 21:55:30 -07:00
John-David Dalton
7165ef6f5e Minor doc tweak to _.rearg. [ci skip] 2016-04-03 21:55:30 -07:00
John-David Dalton
c01e0cd7d1 Simplify references to partial or provided arguments. [ci skip] 2016-04-03 21:55:30 -07:00
John-David Dalton
a5990a4c4e Use thru instead of through in docs. [ci skip] 2016-04-03 21:55:30 -07:00
John-David Dalton
75d196b01b Allow convert to work on methods that aren't converted by default. 2016-04-03 21:55:08 -07:00
John-David Dalton
69ce7cde7d Convert methods not found in aryMethod mapping. 2016-04-02 22:49:17 -07:00
John-David Dalton
6861734010 Add matchesStrictComparable helper. 2016-04-02 14:49:25 -07:00
John-David Dalton
0f75d967d0 Add convert method to modules that pass thru. 2016-04-02 14:19:19 -07:00
John-David Dalton
012bff97e0 Add fp/placeholder module. 2016-04-02 14:19:13 -07:00
John-David Dalton
2b58525816 Update many es5 spec links to es6. [ci skip] 2016-04-02 10:33:13 -07:00
John-David Dalton
579cf00d10 Update _.isNaN doc note with a reference to Number.isNaN. [ci skip] 2016-04-02 08:02:36 -07:00
John-David Dalton
cfd25cec75 Minor Lodash letter case nit in readme. [ci skip] 2016-04-02 08:01:35 -07:00
John-David Dalton
c267c4e06b Excuse Underscore _.chunk test. 2016-04-01 20:56:19 -07:00
John-David Dalton
c4a78445b3 Add _.isNative test for Promise. 2016-04-01 19:17:52 -07:00
John-David Dalton
4c8836a24a Cleanup _.isNative. 2016-04-01 19:06:36 -07:00
John-David Dalton
972624297b Add variation to falsey _.slice test. 2016-04-01 18:18:37 -07:00
John-David Dalton
ebf9904e8a Add toSource helper. 2016-04-01 18:18:37 -07:00
John-David Dalton
64652c263f Update _.map doc note on guarded methods. [ci skip] 2016-04-01 18:18:37 -07:00
John-David Dalton
58f93567fc Make _.sampleSize default n to 1 instead of 0. 2016-04-01 18:18:37 -07:00
John-David Dalton
f599c4817a Make _.chunk default size to 1 instead of 0. 2016-04-01 18:18:36 -07:00
John-David Dalton
930b034da5 Make _.repeat default n to 1 instead of 0. 2016-04-01 18:18:36 -07:00
John-David Dalton
c21174f7f9 Add bizarro test for _.isEmpty. 2016-04-01 18:18:36 -07:00
John-David Dalton
e22be612e2 Remove dataViewCtorString branch of getTag for coverage tests. 2016-04-01 18:18:36 -07:00
Craig Martin
669bc1520e Run scripts synchronous in foreground. 2016-04-01 18:18:27 -07:00
John-David Dalton
b257bb9c9e Allow over, overEvery, and overSome to accept matchesProperty shorthands. [closes #2193] 2016-04-01 09:14:13 -07:00
John-David Dalton
b8096df6d8 Fix leaked var. 2016-04-01 09:13:54 -07:00
greenkeeperio-bot
43d530ead9 Update dojo to 1.11.1. 2016-04-01 09:10:36 -07:00
John-David Dalton
9dbd665d05 Space nit in _.toNumber. [ci skip] 2016-04-01 09:10:36 -07:00
John-David Dalton
3902fd1a67 Ensure has treats nested sparse arrays consistently. 2016-04-01 09:10:35 -07:00
John-David Dalton
642d248f99 Cleanup deep property tests of has methods. 2016-04-01 09:10:35 -07:00
John-David Dalton
8bd9a4d2c3 Ensure _.has returns false for nullish objects. [closes #2190] 2016-04-01 09:10:24 -07:00
John-David Dalton
e96ee69f1c Remove rogue comment delimiter from fp wiki template. [ci skip] 2016-04-01 09:10:24 -07:00
John-David Dalton
5bb899a700 Add array path examples to _.set and _.unset docs. [ci skip] 2016-04-01 09:10:24 -07:00
John-David Dalton
431e0fa2f6 Add line number to error message in web worker. 2016-04-01 09:10:24 -07:00
John-David Dalton
ec92292c38 Wrap funcToString call in _.isNative in a try-catch. 2016-04-01 09:10:24 -07:00
Oskar Segersvärd
45953b2ac1 Set the jsdoc type of apply's args parameter to Array. [ci skip] 2016-04-01 09:10:24 -07:00
John-David Dalton
d9f93d0895 Increment package version to enable ci tests. 2016-04-01 09:10:24 -07:00
John-David Dalton
252ea445ca Bump to v4.7.0. 2016-03-31 00:51:19 -07:00
John-David Dalton
9826d9bd46 Rebuild lodash and docs. 2016-03-31 00:51:19 -07:00
John-David Dalton
b53f178c46 Sort reargs and aliases in fp wiki template. 2016-03-31 00:51:19 -07:00
John-David Dalton
5ad5eb8f5d Add divide and multiply to lodash doc block. [ci skip] 2016-03-31 00:28:04 -07:00
John-David Dalton
7add87739a Add _.concat test for shallow cloning array. 2016-03-30 23:32:21 -07:00
John-David Dalton
2cd12c38e3 Temporarily remove ghooks. 2016-03-30 21:27:19 -07:00
Jordan Eldredge
ad72b5b565 Simplify _.result. 2016-03-30 19:52:46 -07:00
Craig Martin
608e74a111 Ensure all background jobs finish before continuing. 2016-03-30 19:50:23 -07:00
John-David Dalton
c36d0af5cd Avoid a JIT bug in Safari 9 for baseIteratee. 2016-03-30 19:50:13 -07:00
John-David Dalton
55c3299d5c Use getIteratee in more places. 2016-03-30 12:17:28 -07:00
greenkeeperio-bot
7a3dda6105 Update ghooks to 1.1.1. 2016-03-30 08:43:30 -07:00
John-David Dalton
171d9eab78 Use copyArray in concat. 2016-03-30 08:43:30 -07:00
John-David Dalton
ab9d2056da Add bindKey to fp aryMethod mapping. 2016-03-30 08:43:30 -07:00
John-David Dalton
4310329971 Add bind and bindKey to fp skipRearg mapping. 2016-03-30 08:43:30 -07:00
John-David Dalton
d038315f61 Add link to github reactions. [ci skip] 2016-03-30 00:54:28 -07:00
John-David Dalton
c0f91c9169 Minor newline nits. 2016-03-29 22:51:25 -07:00
John-David Dalton
519a02ff34 Update fred ages in doc examples. [ci skip] 2016-03-29 22:33:43 -07:00
John-David Dalton
643ce1da74 Revert createPadding behavior for chars that coerce to empty strings. 2016-03-29 22:23:00 -07:00
greenkeeperio-bot
4c789197f9 Update chalk to 1.1.3 and opt-cli to 1.4.0. 2016-03-29 22:22:12 -07:00
John-David Dalton
277c9bdc7c Make shouldInvoke explicitly return true if it's the first call. 2016-03-29 09:53:35 -07:00
John-David Dalton
455eace9c5 Cleanup _.debounce tests. 2016-03-29 00:28:43 -07:00
John-David Dalton
f263a87983 Update excused Underscore tests. 2016-03-28 22:11:56 -07:00
John-David Dalton
4f92fb7007 Ensure cancel resets lastCallTime and lastInvokeTime. 2016-03-28 21:06:11 -07:00
John-David Dalton
4fd43f7fe7 Minor value consistency nits. 2016-03-28 19:27:55 -07:00
John-David Dalton
3fe2efa311 Ensure _.concat cases wraps nullish array values in an array. 2016-03-28 17:44:13 -07:00
John-David Dalton
a7bf3352df Ensure _.concat casts non-array array values to arrays. 2016-03-28 12:34:09 -07:00
John-David Dalton
2ddd893ca2 Update vendor/underscore. 2016-03-28 09:35:41 -07:00
John-David Dalton
5d92b37550 Add updateWith to lodash sequence doc note. [ci skip] 2016-03-28 09:26:03 -07:00
John-David Dalton
dcec882262 Ensure _.words detects compound words where an all caps word is next to a capitalized word. [closes #2163] 2016-03-28 07:57:37 -07:00
John-David Dalton
de53132692 Add args param doc for _.attempt. [closes #2164] [ci skip] 2016-03-28 07:05:08 -07:00
greenkeeperio-bot
23a7871e2d Update docdown to 0.5.0. 2016-03-27 16:32:20 -07:00
John-David Dalton
792347978a Add shim path back to _.isEmpty. 2016-03-27 13:35:14 -07:00
John-David Dalton
61c740a4eb Move isObjectLike condition up in _.isEmpty. 2016-03-27 13:07:28 -07:00
John-David Dalton
c3a614858b Add support for maps and sets to _.isEmpty. [closes #2159] 2016-03-27 13:04:51 -07:00
John-David Dalton
75727d073b More pad optimizations. 2016-03-27 12:37:09 -07:00
John-David Dalton
b1d7450052 Fix typo in pad test label. 2016-03-27 12:31:14 -07:00
John-David Dalton
60e557b059 Reduce lines creeping over 80 characters in length. 2016-03-27 11:43:44 -07:00
John-David Dalton
071e13363c Add "Array" to predicate types. [ci skip] [closes #2157] 2016-03-27 09:59:48 -07:00
John-David Dalton
acf4651c0e Minor newline nit. [ci skip] 2016-03-27 09:59:37 -07:00
John-David Dalton
9b15dc2017 Fix fail in PhantomJS. 2016-03-27 01:23:58 -07:00
John-David Dalton
f4f0791e0c Fix fail in Node 0.10. 2016-03-27 01:23:58 -07:00
John-David Dalton
654976c826 Add DataView support to getTag. 2016-03-27 01:23:58 -07:00
John-David Dalton
50e86c70bd Add other realm tests for comparing array views with _.isEqual. 2016-03-27 01:23:58 -07:00
Dan Levy
d135b846db Adding support for cloning and comparing DataView. 2016-03-27 01:23:58 -07:00
John-David Dalton
ee2153364d Add bizarro Promise test. 2016-03-27 01:23:58 -07:00
John-David Dalton
6d76cdc1b7 Update snippet removals for coverage runs. 2016-03-27 01:23:52 -07:00
John-David Dalton
259bdb6151 Add realm tests for maps, promises, and sets. 2016-03-26 14:09:36 -07:00
John-David Dalton
12438fa0d7 Ensure _.isEqual compares promises by reference. 2016-03-26 13:59:53 -07:00
John-David Dalton
654df6f7f8 Optimize createPadding for the common case. 2016-03-26 13:21:54 -07:00
John-David Dalton
0dfe176fe6 Make pad methods default to a chars of " " if chars is an empty string. 2016-03-26 12:14:02 -07:00
John-David Dalton
0f3338013e Update sauce browsers. 2016-03-25 19:03:47 -07:00
John-David Dalton
dcc239b070 Add falsey iteratee tests. 2016-03-25 16:36:47 -07:00
John-David Dalton
613488eaf8 Use in instead of relying on behavior. 2016-03-25 15:50:49 -07:00
John-David Dalton
97193b9680 Update vendor/backbone. 2016-03-25 14:14:52 -07:00
greenkeeperio-bot
71c0861675 Update opt-cli to 1.3.0, coveralls to 2.11.9, & qunitjs to 1.23.0. 2016-03-25 14:13:42 -07:00
John-David Dalton
f3b35919ef Add baseMean helper. 2016-03-25 14:13:42 -07:00
Tucker Whitehouse
06316f1d47 Add _.meanBy. 2016-03-24 21:41:41 -07:00
Federico De Giuli
271f64ee3f Make _.isEmpty work as expected on buffers. 2016-03-24 21:41:41 -07:00
Kent C. Dodds
583b03ba5f Add git hook instructions to CONTRIBUTING.md. [ci skip] 2016-03-24 21:41:35 -07:00
John-David Dalton
16e2c06ab4 Remove dead code from baseClone. 2016-03-24 10:54:23 -07:00
John-David Dalton
016de80ce7 Add debounce/throttle test for calling cancel and flush without anything queued. 2016-03-24 10:54:23 -07:00
John-David Dalton
577226bbd0 Add number object tests to number coercion methods. 2016-03-24 10:54:23 -07:00
John-David Dalton
1670800df3 Add test for crawling functions with _.result. 2016-03-24 10:54:23 -07:00
Kent C. Dodds
9674d67693 add opt-in githook to config 2016-03-23 10:18:57 -06:00
John-David Dalton
f65d36b3c1 Make _.result resolve values of functions as it deep crawls over them. 2016-03-23 00:44:36 -07:00
John-David Dalton
8d93455076 Add more options docs. [ci skip] 2016-03-22 22:26:34 -07:00
John-David Dalton
cfe5ea264d Remove parens from default options value doc of _.truncate. [ci skip] 2016-03-22 08:44:23 -07:00
John-David Dalton
9a4e11f6f7 Add chars param fix to postprocess. [ci skip] 2016-03-21 22:11:40 -07:00
John-David Dalton
24cef1a919 Add other realm maps/sets tests for _.size. 2016-03-21 21:00:29 -07:00
John-David Dalton
5fe373f7aa Add support for deep cloning maps and sets. 2016-03-21 21:00:19 -07:00
John-David Dalton
25eb4df563 Add support for maps and sets to _.size. 2016-03-21 20:16:15 -07:00
John-David Dalton
6d587bdf34 Add -0 test for math operator methods. 2016-03-21 20:04:46 -07:00
John-David Dalton
03dd9df78e Remove unneeded assert in indexOf test. 2016-03-21 08:46:23 -07:00
greenkeeperio-bot
96c60bab46 Update dojo to 1.11.0. 2016-03-21 00:44:32 -07:00
John-David Dalton
811341efa1 Add code examples to fp wiki. [ci skip] 2016-03-20 14:18:24 -07:00
John-David Dalton
5f94723d7f Add always fp alias. 2016-03-20 11:53:38 -07:00
John-David Dalton
9d1536799b Add complement fp alias. 2016-03-20 11:43:32 -07:00
John-David Dalton
85057d588c Move "Chaining" section lower. [ci skip] 2016-03-20 11:40:34 -07:00
John-David Dalton
234e693d92 Flip priority of "object" and "collection" in _.isEmpty doc description. [ci skip] 2016-03-20 11:29:22 -07:00
John-David Dalton
51833b91d0 Add invertObj and juxt fp aliases. 2016-03-20 11:23:12 -07:00
John-David Dalton
dfb7a4c078 Don't make without an alias so it can be reverted with convert. 2016-03-20 11:16:18 -07:00
John-David Dalton
04ddaf49f5 Organize aliases. 2016-03-20 11:13:24 -07:00
John-David Dalton
b7a6560d90 Add identical fp alias. 2016-03-20 11:13:06 -07:00
John-David Dalton
7d8531d6ed Add _.divide and _.multiply tests. 2016-03-20 11:03:29 -07:00
John-David Dalton
ab77d9d83a Add more math operation method tests. 2016-03-20 10:16:03 -07:00
John-David Dalton
37454b8f42 Add eq and isEqual to fp skipRearg mapping. 2016-03-20 10:02:46 -07:00
John-David Dalton
ef95f165ff Fix npm build tests. 2016-03-20 01:10:23 -07:00
John-David Dalton
6494a072d2 Fix test fails in Safari. 2016-03-20 01:02:53 -07:00
John-David Dalton
984bcc556e Add fp.isMatchWith test. 2016-03-20 00:26:58 -07:00
John-David Dalton
be77e7366c Remove "with" methods from iterateeAry mapping. 2016-03-19 23:43:11 -07:00
John-David Dalton
01d961bad8 Ensure fp.isEqualWith rearg is (c,a,b). [closes #2131] 2016-03-19 23:40:14 -07:00
John-David Dalton
6eb0cb1565 Add _.divide and _.multiply. 2016-03-19 23:01:40 -07:00
John-David Dalton
b2bff1ad45 Ensure array sequence methods don't error for falsey values. 2016-03-19 22:51:32 -07:00
John-David Dalton
6ed9c005d7 Make fp.invokeArgs and fp.invokeArgsMap arg signature (b,c,a). 2016-03-18 08:29:41 -07:00
John-David Dalton
6ef8693bf0 Update case examples. 2016-03-17 21:11:32 -07:00
John-David Dalton
8c5025f935 Move upperFirst definition lower. 2016-03-17 21:11:32 -07:00
John-David Dalton
9735961090 Ensure _.startCase only uppercases the first character of each word. 2016-03-17 21:11:32 -07:00
greenkeeperio-bot
8d7058e6ad Update fs-extra to 0.26.7, jquery to 2.2.2, & requirejs to 2.2.0. 2016-03-17 21:10:36 -07:00
John-David Dalton
4d89d9a1b7 Add fp.convert to "Convert" section. 2016-03-17 21:10:36 -07:00
John-David Dalton
594f414b1a Move the "Convert" section to the bottom. 2016-03-17 21:10:36 -07:00
John-David Dalton
b61d30da1a Make fp.without an alias of fp.difference. [closes #2122] 2016-03-17 21:10:36 -07:00
John-David Dalton
412e19006b Fix fp aliases for all, any, and anyPass. 2016-03-17 21:10:36 -07:00
Jeroen Engels
b8ebceadaf Add missing param for _.reverse. [ci skip] 2016-03-17 21:10:36 -07:00
John-David Dalton
2b4f271899 Add fp.invokeArgsMap. 2016-03-17 21:10:36 -07:00
John-David Dalton
c83857c42a Minor non- nits. [ci skip] 2016-03-15 08:38:55 -07:00
John-David Dalton
b95d1d6123 Ensure _.mergeWith sources are cloned when customizer returns undefiend. [closes #2111] 2016-03-15 08:32:23 -07:00
John-David Dalton
7d1d7d909a Add fp padChars methods. 2016-03-14 22:17:46 -07:00
John-David Dalton
c89a80357c Cleanup fp convert tests. 2016-03-14 22:16:20 -07:00
John-David Dalton
1bbb24fa0c Add fp.convert. 2016-03-14 10:53:40 -07:00
John-David Dalton
dd0aa991ff Add since tag to _.isArray. [ci skip] 2016-03-13 19:59:50 -07:00
John-David Dalton
6f9b1b1822 Simplify _.method example. [ci skip] 2016-03-13 16:35:52 -07:00
John-David Dalton
65fd579ed2 Add fp.invokeArgs. 2016-03-13 16:34:07 -07:00
John-David Dalton
f3279b7ee1 Wrap fp.getOr test in an IIFE. 2016-03-13 15:30:32 -07:00
John-David Dalton
4d185ae7b5 Add fp.restFrom and fp.spreadFrom. 2016-03-13 15:30:01 -07:00
John-David Dalton
81ee5d76b8 Use "sequence" to descript chaining in more places. [ci skip] 2016-03-13 14:49:28 -07:00
John-David Dalton
8bed7137c7 Add chaining note to fp wiki template. [ci skip] 2016-03-13 14:44:58 -07:00
libreninja
f8bcc5b917 Break before unnecessary string concats in _.repeat. 2016-03-13 12:39:05 -07:00
John-David Dalton
81f8518d15 Simplify assocIndexOf description. [ci skip] 2016-03-12 09:01:06 -08:00
John-David Dalton
f88d27ccda Fix param descriptions for assocDelete, mapSet, and stackSet. [ci skip] 2016-03-11 20:00:08 -08:00
John-David Dalton
40ed92d2af More _.debounce cleanup. 2016-03-11 08:04:39 -08:00
John-David Dalton
c7319d004d Add non-function constructor tests for _.isMap, _.isSet, and _.isWeakMap. 2016-03-10 16:33:29 -08:00
John-David Dalton
51a3c5d4e8 Cleanup _.debounce. 2016-03-10 07:59:31 -08:00
John-David Dalton
ecfa002a05 Update Edge testing in Sauce. 2016-03-09 16:55:34 -08:00
John-David Dalton
62962791b3 Rename debounce helper to invokeFunc to fix builds. 2016-03-08 06:58:39 -08:00
Brandon Wallace
864e14cb20 Refactor debounce to simplify, reduce timers, fix bugs. 2016-03-07 22:24:04 -08:00
John-David Dalton
092f90d2fc Cleanup sorting test results. 2016-03-07 08:11:59 -08:00
John-David Dalton
49b33d667d Add toPairs test for inherited string keyed properties. 2016-03-07 08:04:11 -08:00
John-David Dalton
63b097329c Minor curried label nits. [ci skip] 2016-03-07 07:41:18 -08:00
John-David Dalton
2c3ab276ea Add _.entries and _.entriesIn aliases. 2016-03-06 22:56:48 -08:00
John-David Dalton
c30c43d69e Add more since tags. [ci skip] 2016-03-06 22:12:42 -08:00
John-David Dalton
230c18d5d6 Add fp.flatMapDepth test. 2016-03-06 19:13:43 -08:00
John-David Dalton
c16e64cd36 Remove unneeded flatMap lazy chaining tests. 2016-03-06 19:12:47 -08:00
John-David Dalton
64704e16c1 Add _.flatMapDeep and _.flatMapDepth. 2016-03-06 11:15:04 -08:00
greenkeeperio-bot
b41103ee6b Update glob to 7.0.3. 2016-03-05 18:35:22 -08:00
John-David Dalton
8ac1d54858 Add fast path for numbers in _.toNumber. 2016-03-05 16:56:59 -08:00
John-David Dalton
0a9af2968e Add primitives tests. 2016-03-05 16:54:37 -08:00
John-David Dalton
7eba5a2221 Ensure _.toNumber works with symbol objects without a valueOf method. 2016-03-05 16:16:49 -08:00
John-David Dalton
19a8b3886e Flip assignment order for consistency. [ci skip] 2016-03-05 08:43:42 -08:00
John-David Dalton
03716f62e8 Remove runInContext call in convert. 2016-03-05 08:39:00 -08:00
John-David Dalton
d38000bc33 Minor format nit for baseCastPath. [ci skip] 2016-03-05 08:38:34 -08:00
John-David Dalton
a6c88a173b Ensure _.toPath returns a new array. 2016-03-04 18:02:28 -08:00
John-David Dalton
0bad210dec Add tests for number coercion methods. 2016-03-04 18:00:05 -08:00
John-David Dalton
62cc7574fc Remove dead code branch from baseCastPath. 2016-03-04 10:41:09 -08:00
John-David Dalton
f5a134bcbd Remove unused baseForIn. 2016-03-04 10:37:29 -08:00
John-David Dalton
a7bb6b5383 Add getPrototype helper. 2016-03-04 09:17:00 -08:00
John-David Dalton
e02ce1ea8b Ensure _.toPath works with symbols. 2016-03-04 08:09:39 -08:00
John-David Dalton
760a00b82f Make a distinction between property names and identifiers. [ci skip] 2016-03-04 07:51:12 -08:00
John-David Dalton
e6929e801b Add getAllKeysIn helper. 2016-03-04 07:50:40 -08:00
John-David Dalton
8682da4962 Update V8 bug links. [ci skip] 2016-03-04 07:33:32 -08:00
John-David Dalton
8e6f3e48d0 Ensure getOwnPropertySymbols is passed an object to avoid errors in V8. 2016-03-04 07:33:16 -08:00
John-David Dalton
0589dd6909 Ensure _.omit works with symbols. 2016-03-04 02:03:23 -08:00
John-David Dalton
1b8071d2c4 Replace Dojo Foundation references with jQuery Foundation in contributing.md. [ci skip] 2016-03-04 01:24:43 -08:00
John-David Dalton
4debf155d7 Update and add tests for fp convert method. 2016-03-04 00:55:59 -08:00
John-David Dalton
f6df126c43 Cleanup license urls. 2016-03-03 22:58:41 -08:00
Esa-Matti Suuronen
c406e33fcc Add reconvert method to fp functions. 2016-03-03 22:47:30 -08:00
John-David Dalton
9e11ebb62a Ensure _.isPlainObject returns false for objects with a custom [[Prototype]]. [closes #2085] 2016-03-03 22:46:23 -08:00
John-David Dalton
16ed42b188 Add tests for symbol paths. 2016-03-03 22:42:58 -08:00
John-David Dalton
a19890469e Minor format nit. 2016-03-03 22:42:29 -08:00
John-David Dalton
cc1c1c127e Cleanup path test labels. 2016-03-03 22:41:56 -08:00
John-David Dalton
3c1e95a3c2 Cleanup foo references. 2016-03-03 22:41:22 -08:00
John-David Dalton
d4c0777d2c Minor format nits for Foo test functions. 2016-03-03 20:40:20 -08:00
John-David Dalton
8f00000676 Minor format nit of isIterateeCall. 2016-03-03 20:07:10 -08:00
John-David Dalton
4240f737d1 Add symbol support to baseCastPath, isKey, and toNumber. 2016-03-03 20:04:37 -08:00
John-David Dalton
25121a86bb Specify string keyed properties. [closes #2081] [ci skip] 2016-03-03 18:02:47 -08:00
John-David Dalton
e4b3cde0a4 Memoize stringToPath. 2016-03-03 15:58:23 -08:00
Dave Methvin
cf74ebeb71 Update license to the jQuery Foundation. [ci skip] 2016-03-03 12:03:26 -08:00
Jeroen Engels
d682357189 Add @since to the method jsdocs. [ci skip] 2016-03-03 07:47:26 -08:00
John-David Dalton
ddd4c391a1 Add _.updateWith test for a customizer. 2016-03-02 22:25:51 -08:00
greenkeeperio-bot
930ee1d650 Update jscs to 2.11.0. 2016-03-02 14:15:50 -08:00
John-David Dalton
c5344d5336 Ensure _.has returns false for nested inherited properties. [closes #2073] 2016-03-02 07:54:27 -08:00
John-David Dalton
d59c644a10 Use baseGet in parent and _.result. 2016-03-02 07:47:37 -08:00
John-David Dalton
28171945e9 Use smaller objects for _.assign bench. 2016-03-02 07:39:08 -08:00
John-David Dalton
ddf9354d26 Bump to v4.6.1. 2016-03-01 21:55:32 -08:00
John-David Dalton
5f58b65c04 Rebuild lodash and docs. 2016-03-01 21:55:09 -08:00
John-David Dalton
1ec20c5281 Use propertyIsEnumerable var. 2016-03-01 20:33:17 -08:00
John-David Dalton
3421fab58a Update lodash dev dep. 2016-03-01 19:40:05 -08:00
John-David Dalton
deeaf27b54 Avoid cloning symbols internally. 2016-03-01 19:37:44 -08:00
John-David Dalton
429be57b8a Bump to v4.6.0. 2016-03-01 10:58:13 -08:00
John-David Dalton
7f00e8f2f1 Rebuild lodash and docs. 2016-03-01 10:58:13 -08:00
John-David Dalton
89f891ac86 Ensure placeholder uses func when its a lib. 2016-03-01 10:58:13 -08:00
John-David Dalton
63147cd145 Update our code of conduct. [ci skip] 2016-02-29 22:04:07 -08:00
John-David Dalton
2c5f026d3c Add doc note to associate _.merge with _.assign. [ci skip] 2016-02-29 08:17:10 -08:00
John-David Dalton
c10146e2f0 Set constructor of lodash.prototype. 2016-02-29 00:02:13 -08:00
John-David Dalton
548fe881d6 Add _.pullAllWith comparator test. 2016-02-28 20:05:54 -08:00
John-David Dalton
b560b7047b Cleanup "With" tests. 2016-02-28 20:05:27 -08:00
John-David Dalton
6f470abdff Add _.pullAllWith test. 2016-02-28 12:23:32 -08:00
John-David Dalton
eabe95c4e3 Add _.updateWith fp support. 2016-02-28 12:16:21 -08:00
John-David Dalton
fab50ec384 Add _.updateWith tests. 2016-02-28 11:55:09 -08:00
John-David Dalton
0f298de36a Add _.updateWith. 2016-02-28 11:30:16 -08:00
John-David Dalton
f8132e3be4 Add more _.update tests. 2016-02-28 10:54:40 -08:00
John-David Dalton
dfd865dadc Only use SetCache in baseIntersection only when arrays[0] is large. 2016-02-27 21:26:51 -08:00
John-David Dalton
98bdd67cf2 Simplify array mapping in basePullAll and baseOrderBy. 2016-02-27 18:42:24 -08:00
John-David Dalton
e842bec025 Optimize _.intersection to stop search once it matches the size of its smallest array. 2016-02-27 18:35:18 -08:00
John-David Dalton
8278d38a8e Add update to lodash doc note. [ci skip] 2016-02-27 17:03:23 -08:00
John-David Dalton
0699d4cf3d Simplify regexp test. 2016-02-27 17:00:56 -08:00
John-David Dalton
8865633ccd Move baseUpdate and update definitions. 2016-02-27 17:00:46 -08:00
John-David Dalton
7066b9a5c7 Rearrange tests. 2016-02-27 17:00:11 -08:00
John-David Dalton
63f8b1dcec Ensure _.defaultsDeep does not overwrite regexp values. 2016-02-27 14:35:20 -08:00
John-David Dalton
2e790fb865 Add IE 11 doc note to addMapEntry. [ci skip] 2016-02-27 11:13:51 -08:00
John-David Dalton
ac62c24c4a Cleanup passing stack around since Stac#set returns the stack. 2016-02-27 11:06:01 -08:00
John-David Dalton
629de594d5 Avoid deep cloning source values if a customizer is provided. 2016-02-27 10:20:51 -08:00
John-David Dalton
7a69a45ccc Add template sentence tweaks from the wiki. 2016-02-27 10:20:51 -08:00
greenkeeperio-bot
916431118e Update coveralls to 2.11.8. 2016-02-27 10:20:50 -08:00
John-David Dalton
83e584d579 Split circular reference tests up. 2016-02-26 22:08:03 -08:00
Danny Fallon
bbd536fc04 Add test for mergeWith with multi-ref source object. 2016-02-26 22:07:24 -08:00
John-David Dalton
0b76654b71 Ensure stack is popped after recursive merge so that it doesn't affect sibling properties. [closes #2060] 2016-02-26 09:42:42 -08:00
Jeroen Engels
ff7d79d5fc Remove custom rearg for update. 2016-02-26 09:31:58 -08:00
Hassan Zamani
b40b555386 Add _.update. 2016-02-26 01:55:47 -08:00
John-David Dalton
efa1ebff16 Clarify result value order of _.xor. [ci skip] 2016-02-26 00:04:20 -08:00
John-David Dalton
8f0dcde98f Clarify result value origin and order of difference methods. [ci skip] 2016-02-26 00:01:52 -08:00
John-David Dalton
3b1efb635b Clarify result value origin and order of intersection methods. [ci skip] 2016-02-25 23:59:41 -08:00
John-David Dalton
055fdfa0b4 Add _.pullAllWith. 2016-02-25 23:24:13 -08:00
John-David Dalton
a5a21235dc Add mdn references to _.toLower and _.toUpper. [ci skip] 2016-02-25 08:34:43 -08:00
Francis De Brabandere
dfbcfdb0ae Clarify intersection docs on what is returned. [ci skip] 2016-02-24 10:24:40 -08:00
John-David Dalton
a1e917bac2 Remove the word "Added" from alias list. [ci skip] 2016-02-24 01:02:11 -08:00
John-David Dalton
62a9208944 Include aliases in lodash chain doc note. [ci skip] [closes #2044] 2016-02-24 00:48:57 -08:00
John-David Dalton
1bf8eb8cac Update qunit and qunit-extras. 2016-02-23 23:13:34 -08:00
John-David Dalton
893573485c Escape bang in pattern. 2016-02-23 21:22:07 -08:00
John-David Dalton
d5231ad94b Add source tests for _.assign and _.assignIn. 2016-02-23 21:16:32 -08:00
John-David Dalton
a578935621 Remove unhit condition in getNative. 2016-02-23 20:13:08 -08:00
Jeroen Engels
c88c7ff6bb Fix order of arguments in FP docs. [ci skip] 2016-02-23 14:19:48 -08:00
John-David Dalton
21f9cfa6d3 Remove unneeded Ctor variables. 2016-02-23 10:58:27 -08:00
John-David Dalton
45d2fb8a30 Fix _.transform test fail in Safari 8. 2016-02-23 10:58:27 -08:00
John-David Dalton
9c162624fe Cleanup symbolTag case in equalByTag. 2016-02-23 10:58:27 -08:00
John-David Dalton
80b5731709 Leak msWDfn in test/test-fp.js to prevent false fails in Edge on sauce. 2016-02-23 10:58:27 -08:00
John-David Dalton
bab4ffff62 Remove unstable test from local testing. 2016-02-23 08:31:04 -08:00
John-David Dalton
f644c82da4 Replace Symbol checks with Symbol methods as checks instead. [closes #2039] 2016-02-23 08:30:48 -08:00
John-David Dalton
54294f15ef Update _.assign and _.assignIn fast paths. 2016-02-23 08:23:13 -08:00
John-David Dalton
dfe77571fb Remove _.keys fast path. 2016-02-23 08:23:05 -08:00
John-David Dalton
f40f66d29b Remove a isTypedArray check and unnecessary stack creation from baseIsEqualDeep. 2016-02-22 23:38:19 -08:00
John-David Dalton
af06529283 Ensure _.isEqual works with maps and sets with circular references. 2016-02-22 23:38:18 -08:00
John-David Dalton
d8da7a2142 Use isFunction check without the typeof check. 2016-02-22 23:38:18 -08:00
John-David Dalton
c1f8e31775 Use typeof for function checks instead of isFunction. 2016-02-22 23:38:18 -08:00
John-David Dalton
cc4b49226b Use postfix increment operators. 2016-02-22 23:38:18 -08:00
John-David Dalton
f9a2f74716 Optimize _.assign, _.assignIn, & _.keys. 2016-02-22 23:38:18 -08:00
John-David Dalton
a326a6badf Update contributing text with 👍's. [ci skip] 2016-02-22 23:38:18 -08:00
John-David Dalton
e21f4862e1 Update contributing link to tagged release. [ci skip] 2016-02-22 23:38:18 -08:00
greenkeeperio-bot
f0c3ac1789 Update jquery to 2.2.1, uglify-js to 2.6.2, and webpack to 1.12.14. 2016-02-22 23:37:38 -08:00
John-David Dalton
e24513e6e2 Clarify _.isEmpty docs. [ci skip] 2016-02-22 12:19:08 -08:00
John-David Dalton
a224b6f1b0 Add core.min.js and lodash.min.js to the fp module ignored list. 2016-02-22 10:28:34 -08:00
John-David Dalton
26299eb364 Update _.isEmpty doc param type for value. [ci skip] 2016-02-22 10:24:20 -08:00
John-David Dalton
772c461a33 Bump to v4.5.1. 2016-02-21 22:58:49 -08:00
John-David Dalton
110ca4d1b5 Rebuild lodash and docs. 2016-02-21 22:58:49 -08:00
John-David Dalton
aafb05b675 Update for lodash v4 api. 2016-02-21 22:58:49 -08:00
John-David Dalton
ff6fc56a15 Use _baseConvert in fp module. 2016-02-21 21:07:21 -08:00
John-David Dalton
2dfbe9fe77 Use minified lodash in fp module. 2016-02-21 21:07:09 -08:00
John-David Dalton
4a0fe2c17b Use lodash in test/remove.js. 2016-02-21 19:35:08 -08:00
John-David Dalton
9f7e626b9a Make build-module create core.min.js and lodash.min.js. 2016-02-21 19:35:08 -08:00
John-David Dalton
f2985bda5f Add copyFile, minFile, and writeFile to lib/common/util.js. 2016-02-21 19:35:01 -08:00
John-David Dalton
1517745a6a Update placeholder param description of createRecurryWrapper. [ci skip] 2016-02-21 16:57:06 -08:00
John-David Dalton
887cb55919 Add _.placeholder tests. 2016-02-21 13:48:46 -08:00
John-David Dalton
5c42d0ef31 Add intersection tests for two arrays. 2016-02-21 09:59:51 -08:00
John-David Dalton
837d47a309 Update lodash paths travis.yml, test/test.js, and test/index.html. 2016-02-20 23:53:35 -08:00
John-David Dalton
f3766cf889 Add getPlaceholder helper. 2016-02-20 18:07:11 -08:00
John-David Dalton
2b8b63e59f Allow placeholders to persist through more than 1 curried call. 2016-02-20 18:07:05 -08:00
John-David Dalton
d64583b743 Cleanup bitmask groupings in mergeData. 2016-02-20 16:40:59 -08:00
John-David Dalton
9ec65d5ed5 Fix newHolders typo. 2016-02-20 11:28:11 -08:00
John-David Dalton
9fe6afcdcc Use lodashStable.bind in unzip/zip test. 2016-02-20 11:28:11 -08:00
Benjamim Sonntag
6a4e0fb41b Links _.remove and _.pull in the docs. [ci skip] 2016-02-20 11:28:00 -08:00
John-David Dalton
b570884bb3 Remove npm "prepublish" script to avoid running on npm i. 2016-02-19 10:51:48 -08:00
John-David Dalton
8f8f8e288c Update internal module references in tests. 2016-02-19 10:39:38 -08:00
John-David Dalton
8698a5e0e8 Add tests for setting the [[Prototype]] of clones for values where constructor is incorrect. 2016-02-19 08:18:56 -08:00
John-David Dalton
ad5e30e189 Move _.merge test for augmenting objects. 2016-02-19 08:17:44 -08:00
Benjamin Tan
19ee0c74f8 Update link to CONTRIBUTING.md in readme. [ci skip] 2016-02-19 08:02:57 -08:00
John-David Dalton
007e5aa27a Increment package version to enable ci tests. 2016-02-19 01:23:07 -08:00
John-David Dalton
2509f562b5 Update fp wiki template. 2016-02-19 01:23:02 -08:00
John-David Dalton
a58a276ffd Replace "iteratee function" with "iteratee". [ci skip] 2016-02-19 01:04:36 -08:00
John-David Dalton
1a5b9dcce1 Add iteratee signature to _.mapKeys. [ci skip] 2016-02-19 01:04:19 -08:00
John-David Dalton
1240a0dfdd Move contributing text to .github. [ci skip] 2016-02-19 00:46:06 -08:00
Henrik Hjelte
0194169e79 Clarify docs on omitBy predicate params. [ci skip] 2016-02-19 00:11:33 -08:00
John-David Dalton
a71c19e1b5 Avoid unnecessary cloning in fp set methods. [closes #2017] 2016-02-19 00:11:20 -08:00
John-David Dalton
bfbfa719ff Ensure assignValue assigns values if they aren't the same own value. [closes #2022] 2016-02-19 00:01:33 -08:00
John-David Dalton
49389d0a2f Ducktype in _.isError for ES6 support. 2016-02-18 21:52:53 -08:00
John-David Dalton
e380062403 Use getPrototypeOf to set inheritance when constructor is a function. [closes #2018] 2016-02-18 21:52:19 -08:00
John-David Dalton
b83abfa9c1 Make fp arity for orderBy three instead of two. [closes #2019] 2016-02-18 13:37:16 -08:00
John-David Dalton
48dbf203a5 Ensure fp pickBy and omitBy provide value and key arguments. 2016-02-18 01:08:19 -08:00
John-David Dalton
23768398c5 Add iterateeRearg fp mapping back for mapKeys. 2016-02-17 22:21:48 -08:00
John-David Dalton
ab73503859 Bump to v4.5.0. 2016-02-17 22:21:48 -08:00
John-David Dalton
a4f7d4cc2a Rebuild lodash and docs. 2016-02-17 22:21:47 -08:00
Myles Borins
cca5ac60d6 Fix npm-test by removing the call to test-docs. 2016-02-17 22:21:47 -08:00
John-David Dalton
9f7f9fc3c5 Adjust heading order. [ci skip] 2016-02-17 01:26:28 -08:00
John-David Dalton
6e2fb92e9a Remove unused baseArity. 2016-02-16 22:29:41 -08:00
John-David Dalton
4f702e2381 Specify utf8 encoding. 2016-02-16 22:04:47 -08:00
John-David Dalton
b188f903ce Add fp tests for iteratee shorthands. 2016-02-16 21:27:08 -08:00
John-David Dalton
7b93dc9c32 Ensure clone methods clone expando properties of boolean, number, & string objects. [closes #2008] 2016-02-16 21:27:03 -08:00
John-David Dalton
664d66a89e Make string tests more consistent. 2016-02-16 20:44:55 -08:00
John-David Dalton
d9dc0e6fd1 Add _.invertBy tests. 2016-02-16 19:30:23 -08:00
John-David Dalton
53168e4cfd Remove dup _.invertBy test. 2016-02-16 18:49:43 -08:00
John-David Dalton
7998632685 Add castArray chaining test. 2016-02-16 18:48:57 -08:00
John-David Dalton
86f2a1061c Simplify readme. [ci skip] 2016-02-16 18:48:11 -08:00
John-David Dalton
9ca02a448e Update cdn links. [ci skip] 2016-02-16 08:52:49 -08:00
John-David Dalton
17091d3a0e Simplify shorthand test labels. 2016-02-16 08:42:29 -08:00
John-David Dalton
c94b1488e9 Make iteraeeAry pass thru non-functions. [closes #2007] 2016-02-16 07:46:54 -08:00
John-David Dalton
7b2274cb44 Add methods to lodash doc notes. [ci skip] 2016-02-16 01:29:25 -08:00
John-David Dalton
7c27a6f51e Make wording of entries align closer to their titles. [ci skip] 2016-02-16 01:29:25 -08:00
John-David Dalton
e91371d406 Increment package version to enable ci tests. 2016-02-16 01:29:25 -08:00
John-David Dalton
e878559fb9 Bump to v4.4.0. 2016-02-15 23:08:19 -08:00
John-David Dalton
36af8de116 Rebuild lodash and docs. 2016-02-15 23:07:07 -08:00
John-David Dalton
09dd3a8fea Remove noConflict call from the node fp module template. 2016-02-15 23:07:07 -08:00
John-David Dalton
5dd6b90692 Minor comma nit from contributing.md. [ci skip] 2016-02-15 21:30:16 -08:00
John-David Dalton
97fd94744e Add mapping section to fp wiki template. [ci skip] 2016-02-15 17:38:30 -08:00
John-David Dalton
0da3674d5e Update fp doc template. 2016-02-15 17:00:01 -08:00
John-David Dalton
01d530d65e Cleanup fp/build-modules. 2016-02-15 16:59:43 -08:00
John-David Dalton
10dd42b6e4 Restore bizarro tests for Object.create. 2016-02-15 16:47:31 -08:00
John-David Dalton
ba2d3f7704 Use != instead of !== when value is guaranteed to be a string. 2016-02-15 16:36:20 -08:00
Graeme Yeates
607fe2a5f6 Use Object.create in baseCreate (even if shimmed). 2016-02-15 16:35:20 -08:00
John-David Dalton
4643679d79 Remove fp caps mapping. 2016-02-15 13:51:20 -08:00
greenkeeperio-bot
04180c7c96 Update jscs to 2.10.1. 2016-02-15 11:12:14 -08:00
John-David Dalton
3846348f8a Clarify how undefined source values are handled in _.merge. [ci skip] 2016-02-15 10:22:25 -08:00
John-David Dalton
dc2fc9428d Cross reference _.matches and _.isMatch in docs. [ci skip] 2016-02-15 10:22:04 -08:00
John-David Dalton
6e399ce311 Cleanup long lines in isEqualWith docs. [ci skip] 2016-02-15 10:21:19 -08:00
John-David Dalton
641b544801 Add castArray to lodash chaining doc note. [ci skip] 2016-02-15 10:20:40 -08:00
John-David Dalton
761a100397 Ensure _.valuesIn returns results. [closes #2000] 2016-02-15 09:14:10 -08:00
John-David Dalton
cf1a4f893f Update fp doc generation. 2016-02-15 00:18:12 -08:00
John-David Dalton
19613be861 Add isArray to _util.jst. 2016-02-14 23:47:45 -08:00
John-David Dalton
c163659713 Rename fp mapping rename to remap. 2016-02-14 23:47:45 -08:00
John-David Dalton
aae02af265 Cleanup Date shims. 2016-02-14 19:20:17 -08:00
John-David Dalton
cb96bf15b7 Reduce the length of some lines. 2016-02-14 19:14:17 -08:00
John-David Dalton
c006c28f55 Add lib/common/util. 2016-02-14 12:57:34 -08:00
John-David Dalton
d358d00531 Ensure fp castArray shallow clones arrays. 2016-02-14 12:09:17 -08:00
John-David Dalton
abcebb4f48 Remove exposed castFunction and castPath. 2016-02-14 11:02:11 -08:00
John-David Dalton
6e74724c0f Add _.compat test for lazy sequence with a custom _.iteratee. 2016-02-14 09:21:07 -08:00
John-David Dalton
c5f6c43326 Add default wrapper value to jsdoc of _.wrap. [ci skip] 2016-02-14 08:57:28 -08:00
John-David Dalton
a9e8c0ba76 Add changelog mention to the wiki link in readme. [ci skip] 2016-02-14 08:41:43 -08:00
John-David Dalton
5388d8a7b0 Rename _.asArray to _.castArray and add _.castFunction and _.castPath. 2016-02-13 13:40:04 -08:00
Graeme Yeates
ee499b36ea Add _.asArray method. 2016-02-13 09:04:19 -08:00
John-David Dalton
13e4b959a4 Rename skipTest to skipAssert. 2016-02-13 08:32:47 -08:00
John-David Dalton
5a336403f9 Fix fp browser test fails. 2016-02-13 08:31:04 -08:00
John-David Dalton
26265c011a Fix failing _.isError test in phantomjs. 2016-02-13 02:18:37 -08:00
John-David Dalton
4a390bca1c Update tests for es6. 2016-02-13 02:18:15 -08:00
John-David Dalton
af46ead30d Fix caller access in strict mode es6 modules. 2016-02-13 02:01:46 -08:00
John-David Dalton
de0f936e92 Ensure fp convert works with category modules. 2016-02-13 01:23:07 -08:00
John-David Dalton
bf9dcfe89c Add jsdoc constructor tags. [ci skip] 2016-02-12 22:51:26 -08:00
John-David Dalton
df0ecd2a93 Ensure _.isError works with subclasses values. [closes #1994] 2016-02-12 22:51:26 -08:00
John-David Dalton
b3ebb3c3d3 Add _.fromPairs to mention to _.toPairs and _.toPairsIn. [ci skip] 2016-02-12 22:51:26 -08:00
Jeroen Engels
0bead0c69a Update closed issue link in contributing.md to link to enhancement issues. [ci skip] 2016-02-12 22:51:26 -08:00
John-David Dalton
a055b0a04f Fix fp rearg order for zipWith. 2016-02-12 22:51:26 -08:00
John-David Dalton
d6f6007692 Add wiki link to "Further Reading" section of readme. [ci skip] 2016-02-12 22:51:26 -08:00
John-David Dalton
8ee7ffb2ab Add more currying to fp tests. 2016-02-12 22:51:26 -08:00
John-David Dalton
40ff04911e Remove unneeded copyArray from baseMergeDeep. 2016-02-12 22:51:25 -08:00
John-David Dalton
a3676618af Reorg templates. 2016-02-12 22:51:19 -08:00
John-David Dalton
b1ed66c6f5 Add another fp.inRange test. 2016-02-11 22:57:25 -08:00
John-David Dalton
53b3f81abe Ensure _.merge deep clones array/typed-array/plain-object sources. [closes #1987] 2016-02-11 22:56:33 -08:00
John-David Dalton
bd2428dde5 Remove fp doc to be simplified in a later commit. 2016-02-11 21:02:44 -08:00
Jeroen Engels
b7ae5f0885 Add paragraph about making feature requests in docs [ci skip] 2016-02-11 19:57:04 -08:00
John-David Dalton
8c5b64c7d7 Have browser fp convert auto wrap lodash if found. 2016-02-11 15:49:32 -08:00
John-David Dalton
641112dd4d Attempt two to fix bizarro buffer test in Node v0.12. 2016-02-11 10:55:26 -08:00
John-David Dalton
1c47acd040 Ensure maxWait isn't processed on a leading invocation ifleading is false and there isn't an max delay queued. [closes #1964] 2016-02-11 00:18:08 -08:00
greenkeeperio-bot
d58d6f45cc Update glob to 7.0.0. 2016-02-11 00:18:07 -08:00
Artur Baybulatov
7efa921bab Add a note about browser usage of lodash-fp. [ci skip] 2016-02-10 10:54:40 -08:00
John-David Dalton
feafdb3c6a Fix jsdoc type tags. [closes #1976] [ci skip] 2016-02-10 08:26:43 -08:00
John-David Dalton
784ee6a086 Remove fp iterateeRearg mapping. [closes #1971] 2016-02-10 08:19:59 -08:00
John-David Dalton
3014f20b6c Remove copyArray dep from _.flattenDepth. 2016-02-10 00:43:03 -08:00
John-David Dalton
40bb035b09 Minor label cleanup. 2016-02-10 00:15:08 -08:00
John-David Dalton
ba32bf3b8d Cleanup flatten methods and add more flattenDepth tests. 2016-02-10 00:14:10 -08:00
John-David Dalton
e9edc06aaf Enable convert to work when given lodash and options. 2016-02-09 21:56:49 -08:00
Jordan Eldredge
c91196d240 Run style checks before publishing. 2016-02-09 19:39:32 -08:00
Jeroen Engels
08c7bf3c85 Fix code style error and doc nit. [ci skip] 2016-02-09 19:39:32 -08:00
Michael Morgan
046470a8db Added _.flattenDepth for variable-depth flatten. 2016-02-09 19:39:32 -08:00
Billy Janitsch
2b1eedb036 Fix FP rearg for _.zipWith and _.inRange. 2016-02-09 19:39:31 -08:00
Jeroen Engels
02bea6534c fp docs - Remove notes about mutation in description. 2016-02-09 19:36:37 -08:00
Jeroen Engels
6f4099c20b fp docs - Split lib/doc/apply-fp-mapping into multiples files. 2016-02-09 19:36:37 -08:00
Jeroen Engels
39735df82f fp docs - Inject default values and cap args. 2016-02-09 19:36:37 -08:00
Jeroen Engels
5062f22839 fp docs - Remove console.log() from examples. 2016-02-09 19:36:36 -08:00
Jeroen Engels
e397707dc9 fp docs - translate ...args to args[] in example and params. 2016-02-09 19:36:36 -08:00
Jeroen Engels
66d6e226a9 Add scripts to generate the docs for lodash/fp. 2016-02-09 19:36:36 -08:00
Benjamin Tan
fbfa578c11 Write fp docs to a different file. 2016-02-09 19:36:36 -08:00
John-David Dalton
5cd7208ef3 Fix test fail in phantomjs. 2016-02-09 17:11:02 -08:00
John-David Dalton
e5bc6a0315 Fix bizarro buffer test in Node v0.12. 2016-02-09 17:11:02 -08:00
John-David Dalton
495c890aac Add bizarro test for _.isBuffer. 2016-02-09 17:11:02 -08:00
John-David Dalton
5fe4a1b05d Add fp placeholder test for converted partial. 2016-02-09 17:11:02 -08:00
John-David Dalton
d8bf62995b Ensure fp options works when applied individually. 2016-02-09 17:11:02 -08:00
John-David Dalton
e36f7e7161 Enable testing fp/convert in the browser. 2016-02-09 17:11:02 -08:00
John-David Dalton
285b667c3e Update "Why Lodash" section of readme. [ci skip] 2016-02-09 17:11:02 -08:00
John-David Dalton
aefbdbb6d5 Increment package version to enable ci tests. 2016-02-08 00:31:19 -08:00
John-David Dalton
8debfc6e6c Bump to v4.3.0. 2016-02-08 00:31:19 -08:00
John-David Dalton
c9ca772a32 Rebuild lodash and docs. 2016-02-08 00:31:19 -08:00
John-David Dalton
dc65792776 Add fp tests for add, subtract, gt, gte, lt, & lte. 2016-02-08 00:31:19 -08:00
John-David Dalton
18ae1d7c18 Ensure _.add and _.subtract return 0 when no arguments are given. 2016-02-08 00:31:19 -08:00
John-David Dalton
d790a1b3c6 Adjust "provided"/"given" use. [ci skip] 2016-02-08 00:31:18 -08:00
John-David Dalton
349c627110 Add options to baseConvert. 2016-02-08 00:31:13 -08:00
John-David Dalton
db23fcfe9f Rename num params to n. 2016-02-07 22:47:15 -08:00
John-David Dalton
d5a6a75639 Clarify pull request notes in contributing.md. [ci skip] 2016-02-07 22:47:15 -08:00
Robert T. Stewart
404a7181a8 Add 'What is Lodash' section to README.md. [ci skip] 2016-02-07 22:47:15 -08:00
Corbacho
e392b8e240 Improve accuracy of _.throttle. 2016-02-07 22:47:14 -08:00
John-David Dalton
6752d75ad0 Add _.isMap, _.isSet, _.isWeakMap, & _.isWeakSet. 2016-02-07 22:47:14 -08:00
John-David Dalton
e00d9821a8 Add gt, gte, lt, lte to fp skipRearg mapping. 2016-02-07 22:47:14 -08:00
John-David Dalton
1cf7093f46 Allow undefined realm values. 2016-02-07 22:47:14 -08:00
John-David Dalton
88708ec00f Minor test order nit. 2016-02-07 22:47:14 -08:00
John-David Dalton
984b0af883 Add deep clone test for buffers. 2016-02-07 22:47:14 -08:00
John-David Dalton
8810754ada Add _.isArrayBuffer test. 2016-02-07 22:47:14 -08:00
John-David Dalton
0d340b378b Add _.isBuffer test. 2016-02-07 22:47:14 -08:00
John-David Dalton
e30dc968ef Move _.isNull test. 2016-02-07 22:47:13 -08:00
John-David Dalton
ea942b0642 Upgrade sauce tested versions of Chrome and Firefox. 2016-02-07 22:47:13 -08:00
Tyler Garrett
7e9d49b300 Fix DevDoc link in readme. [ci skip] 2016-02-07 22:47:13 -08:00
John-David Dalton
ce60ac4274 Add isDeep flag to cloneBuffer. 2016-02-07 22:47:13 -08:00
John-David Dalton
a04fc310b4 Fix buffer test fails. 2016-02-07 22:47:13 -08:00
John-David Dalton
4a805ea666 Add _.isArrayBuffer and _.isBuffer. 2016-02-07 22:47:13 -08:00
John-David Dalton
1595651780 Add support for cloning buffers. [closes #1940] 2016-02-07 22:47:13 -08:00
John-David Dalton
fc85cac91d Update sauce-tunnel and webpack deps. 2016-02-07 22:47:13 -08:00
John-David Dalton
73134f9dcc Update the readme. 2016-02-07 22:47:13 -08:00
John-David Dalton
eb72bbe6f7 Update license to github formatting. 2016-02-07 22:47:12 -08:00
John-David Dalton
a5ae078f8f Increment package version to enable ci tests. 2016-02-05 00:24:51 -08:00
John-David Dalton
1cd9dc49a9 Bump to v4.2.1. 2016-02-03 01:31:34 -08:00
John-David Dalton
d64a97195b Rebuild lodash and docs. 2016-02-03 01:16:58 -08:00
John-David Dalton
c6a3ace553 Skip pseudo-private aliases. 2016-02-03 01:16:58 -08:00
John-David Dalton
497d57ca95 Ensure fp add and subtract don't have rearg applied. 2016-02-03 00:16:07 -08:00
John-David Dalton
3a07b411fb Add fp tests for placeholders. 2016-02-03 00:16:07 -08:00
John-David Dalton
b0c2a8d5fd Add fp _.partial tests for convert by name. 2016-02-03 00:16:06 -08:00
John-David Dalton
e404d214aa Add _.placeholder support so wrapped functions may support placeholders. 2016-02-03 00:16:06 -08:00
Nathan Tran
7f295dc6e8 Make _baseConvert use spread and not rest. 2016-02-03 00:16:06 -08:00
Prayag Verma
d2a8203efb Remove duplicate to and the words from docs. [ci skip] 2016-02-03 00:16:06 -08:00
John-David Dalton
33bfa8f961 Add trimChars fp mapping. 2016-02-03 00:16:06 -08:00
John-David Dalton
f944254cb8 Cleanup fp.curryN test label. 2016-02-03 00:16:06 -08:00
John-David Dalton
30339cfd86 Add fp.getOr test. 2016-02-03 00:16:06 -08:00
John-David Dalton
7dd5549b05 Increment lodash package version to enable ci tests. 2016-02-03 00:16:06 -08:00
John-David Dalton
b6b59d93d7 Bump to 4.2.0. 2016-02-02 00:33:16 -08:00
John-David Dalton
5af68bbf94 Rebuild lodash and docs. 2016-02-02 00:33:16 -08:00
John-David Dalton
db7debd3da Move benchmark.js to a dev dep. 2016-02-02 00:33:16 -08:00
laispace
29bc8d965b Fix _.sortedUniqBy doc example. [ci skip] 2016-02-01 23:55:34 -08:00
John-David Dalton
daeb55e99d Rename mapping rekey to rename. 2016-02-01 23:53:19 -08:00
John-David Dalton
fa4d85897c Add mutation notes to _.mergeWith, _.set, _.setWith, and _.unset. [ci skip] 2016-02-01 22:53:05 -08:00
John-David Dalton
983363e0cd Cleanup readme. [ci skip] 2016-02-01 22:37:56 -08:00
John-David Dalton
d95dad76b8 Remove dead code. 2016-02-01 22:37:56 -08:00
John-David Dalton
18f74aa5b2 Rename spreadArgs to otherArgs. 2016-02-01 22:37:56 -08:00
John-David Dalton
e96a8f7bc6 Cleanup map tests. 2016-02-01 22:37:56 -08:00
John-David Dalton
29f39be6ad Add _.flapMap tests for collections. 2016-02-01 22:37:56 -08:00
John-David Dalton
7a17967d79 Add _.spread tests for the start param. 2016-02-01 22:37:56 -08:00
John-David Dalton
de5bd32aba Rename rp vars to rest. 2016-02-01 22:37:56 -08:00
Jason Trill
199b2e1a3a Reword docs for _.tap and _.thru. [ci skip] 2016-02-01 22:37:56 -08:00
John-David Dalton
a43e4f10ef Update vendors. 2016-02-01 22:37:55 -08:00
Trevor Hudson
5522e4641d Update _.pickBy docs to include value as an iteratee param. [ci skip] 2016-02-01 22:37:55 -08:00
greenkeeperio-bot
6c82ea8fc3 Update qunitjs to 1.21.0. 2016-02-01 22:37:55 -08:00
John-David Dalton
b4b45b7139 Update docdown. 2016-02-01 22:37:55 -08:00
John-David Dalton
7ebb033016 Add _.at chaining test for objects with index keys. 2016-02-01 22:37:55 -08:00
John-David Dalton
163fdb46f0 Ensure fp _.partial and _.partialRight accept an args param. 2016-02-01 22:37:55 -08:00
John-David Dalton
b38cf204f7 Add start param to _.spread. 2016-02-01 22:37:55 -08:00
John-David Dalton
fe5381b0f4 Cleanup fp mapping. 2016-02-01 22:37:55 -08:00
John-David Dalton
c99e7f1337 Make _.flatMap a "Collection" method. 2016-02-01 22:37:55 -08:00
Mohammed Nauage
b61b674fec Remove sorted behavior from _.indexOf docs. [ci skip] 2016-02-01 22:37:55 -08:00
John-David Dalton
3bdaf99cfa Ensure _.iteratee clones sources for "_.matchesProperty" shorthand. 2016-02-01 22:37:54 -08:00
John-David Dalton
6c85e7015a Add assocPath and dissocPath fp aliases. 2016-02-01 22:37:54 -08:00
John-David Dalton
9788f7101b Ensure fp unset is immutable. [closes #1913] 2016-02-01 22:37:54 -08:00
Billy Janitsch
d0d5a3802d Alias set to assoc in FP. 2016-02-01 22:37:54 -08:00
John-David Dalton
1f160b31ff Make doc code sample comments match source comment style. [ci skip] 2016-01-30 01:02:49 -08:00
Ivan Tanev
13659e87cb Ensure _.attempt preserves custom errors. 2016-01-30 01:02:49 -08:00
John-David Dalton
ac9b0bfc1b Increment package version to enable ci tests. 2016-01-30 01:02:48 -08:00
John-David Dalton
07f7a3f3c5 Bump to 4.1.0. 2016-01-29 14:22:08 -08:00
John-David Dalton
22984f4eb2 Rebuild lodash and docs. 2016-01-29 14:21:44 -08:00
John-David Dalton
2286283f98 Add babel-plugin-lodash mention to readme. [ci skip] 2016-01-29 14:21:37 -08:00
Florent Cailhol
5ca26e6ae0 Remove V8 JIT bug fix for _.isObject. 2016-01-29 01:09:23 -08:00
John-David Dalton
e7c3afc1e5 Add index.js and lodash.js to the list of ignored files when generating fp modules. 2016-01-28 23:58:16 -08:00
John-David Dalton
82e9b4197b Add more fp mutation tests for deep objects. 2016-01-28 23:01:28 -08:00
John-David Dalton
820939f014 Update docdown. 2016-01-28 22:11:48 -08:00
John-David Dalton
e4c9916e17 Add default accumulator values to doc examples. [ci skip] 2016-01-28 22:11:43 -08:00
John-David Dalton
ce88b120eb Use npm config shorthand. 2016-01-28 18:11:53 -08:00
John-David Dalton
23c5101227 Make doc postprocess fix for symbol identifers more generic. 2016-01-28 14:45:15 -08:00
Craig Martin
de3eeb2d47 Use npm pretest hook. 2016-01-28 12:36:13 -08:00
John-David Dalton
03f7205e6d Ensure _.clone and _.cloneDeep work on prototype objects. 2016-01-28 01:05:25 -08:00
John-David Dalton
7bf7ab954b Update vendors and dev deps. 2016-01-28 01:05:25 -08:00
John-David Dalton
97612f3b31 Disable npm progress bar in travis for quicker installs. 2016-01-27 07:38:08 -08:00
John-David Dalton
71702d058c Ignore more files. 2016-01-27 01:19:03 -08:00
John-David Dalton
6a4164d9f3 Ensure remapped fp method modules are created. 2016-01-27 00:47:31 -08:00
John-David Dalton
d3b0eae84c Use mapping for aliasToReal. 2016-01-27 00:47:31 -08:00
John-David Dalton
0105b93f38 Ensure fp convert can work with aliases as name. 2016-01-27 00:19:06 -08:00
John-David Dalton
cae0d2c707 Add aliasToReal fp mapping. 2016-01-27 00:19:06 -08:00
John-David Dalton
dcb1572240 Reorg fp tests. 2016-01-27 00:19:06 -08:00
John-David Dalton
e20f43018b Separate fp _mapping into individual exports. 2016-01-27 00:19:06 -08:00
John-David Dalton
01e176694f Correct fp arg order of assignWith, assignInWith, merge, mergeWith, defaults, and defaultsDeep. 2016-01-27 00:19:06 -08:00
John-David Dalton
a239ccaa9a Add main:modules npm run script. 2016-01-26 21:32:22 -08:00
Jeroen Engels
b97a05b7f2 Add npm scripts to build docs. 2016-01-26 21:32:16 -08:00
John-David Dalton
c86754afde Cleanup hasPath and indexKeys. 2016-01-26 18:20:51 -08:00
John-David Dalton
95da9c0dd4 Optimize _.isEmpty. [closes #1888] 2016-01-26 18:20:50 -08:00
John-David Dalton
567171993b Define trim_trailing_whitespace rule for all files. 2016-01-26 18:20:50 -08:00
Kent C. Dodds
60a0d554a0 Run scripts in parallel. 2016-01-26 10:10:16 -08:00
John-David Dalton
f87af6c642 Add more npm run-scripts. 2016-01-26 08:41:38 -08:00
John-David Dalton
df849e8698 Fix style nits. 2016-01-26 08:41:38 -08:00
John-David Dalton
7a8ef7aeb7 Ensure _.sum and _.sumBy return 0 for empty arrays. [closes #1883] 2016-01-26 01:29:59 -08:00
John-David Dalton
25c7c8b153 Update dev deps. 2016-01-26 00:29:41 -08:00
John-David Dalton
8048f015e5 Ensure _.mergeWith overwrites primitives with source object clones. [closes #1880] 2016-01-26 00:28:38 -08:00
John-David Dalton
8a7fce41bb Add invokeMap to the excused methods in Backbone tests. 2016-01-26 00:28:38 -08:00
John-David Dalton
094a272443 Add _.invertBy. 2016-01-26 00:28:37 -08:00
John-David Dalton
552be2f5fb Remove multiVal param from _.invert. 2016-01-26 00:28:37 -08:00
John-David Dalton
d99954133c Add _.zipObjectDeep. 2016-01-26 00:28:37 -08:00
John-David Dalton
c49ace5587 Add back fp build-modules files. 2016-01-26 00:28:30 -08:00
John-David Dalton
258ad020ed Bump to 4.0.1. 2016-01-25 00:33:25 -08:00
John-David Dalton
59de939c1d Rebuild lodash and docs. 2016-01-25 00:33:25 -08:00
John-David Dalton
9d2d4f39bc Reorg build, fp, and lib files. 2016-01-25 00:32:37 -08:00
John-David Dalton
f555cd2303 Update map references in precompile.js. 2016-01-25 00:24:36 -08:00
Esa-Matti Suuronen
fcb80e926d Add precompile script for fp modules. 2016-01-25 00:24:36 -08:00
John-David Dalton
3f1fd98bef Doc cleanup of aggregator methods. [ci skip] 2016-01-25 00:24:36 -08:00
John-David Dalton
e2280db917 Fix documented iteratee arg count of _.partition. [ci skip] 2016-01-25 00:24:36 -08:00
John-David Dalton
627e92e7e0 Remove empty line in baseInvoke jsdoc. [ci skip] 2016-01-25 00:24:36 -08:00
John-David Dalton
5a9ca34a92 Rename initFromArray and initFromCollection vars to initAccum. 2016-01-25 00:24:36 -08:00
John-David Dalton
880ffcb1f6 Add more fp tests for key methods. 2016-01-25 00:24:36 -08:00
John-David Dalton
4e35d970af Avoid setting ary twice. 2016-01-25 00:24:36 -08:00
John-David Dalton
42a4e09f91 Minor capitalization nit in readme. [ci skip] 2016-01-25 00:24:36 -08:00
John-David Dalton
b13b17e801 Ensure fp key methods provide the key argument to their iteratees. [closes #1842] 2016-01-25 00:24:36 -08:00
John-David Dalton
68d0238044 Remove omitBy and pickBy from funcMethods. 2016-01-25 00:24:35 -08:00
John-David Dalton
82b4f4147e Add fp customizer test for _.setWith. 2016-01-25 00:24:35 -08:00
John-David Dalton
6cbd2c4188 Ensure _.concat treats nullish values as empty arrays. 2016-01-25 00:24:35 -08:00
John-David Dalton
78982f3074 Ensure _.concat returns an empty array for nullish array values. [closes #1856] 2016-01-25 00:24:35 -08:00
John-David Dalton
345746f7ab Add another test to help catch incorrect fp mapping. 2016-01-25 00:24:35 -08:00
John-David Dalton
741a7b9caa Remove mean from fp aryMethod map. 2016-01-25 00:24:35 -08:00
John-David Dalton
7544c8fac8 Add propOr fp alias. 2016-01-25 00:24:35 -08:00
John-David Dalton
a46169329d Fix fp test fails. 2016-01-25 00:24:35 -08:00
John-David Dalton
9aa56630ab Ensure _.noConflict only restores _ if lodash is the current _ value. 2016-01-25 00:24:35 -08:00
Billy Janitsch
01819e7a5a Disable fp concat rearg. 2016-01-25 00:24:34 -08:00
Billy Janitsch
bae497ec5a Update fp property and get aliases. 2016-01-25 00:24:34 -08:00
John-David Dalton
68e0c78602 Remove baseClone use from mergeDefaults. 2016-01-25 00:24:34 -08:00
John-David Dalton
6296afd279 Ensure _.words treats all-lower and all-upper postfixs as separate words. 2016-01-25 00:24:34 -08:00
John-David Dalton
6d58fe912d Ensure _.words captures all caped words. [closes #1833] 2016-01-25 00:24:34 -08:00
Nacho Martín
0c45957096 Fix iteratee arg count in _.partition docs. [ci skip]
If I am not mistaken, the docs for `partition` are wrong. It is only invoked with an argument, not three. See this fiddle https://jsfiddle.net/y8fcwa6m/
2016-01-25 00:24:34 -08:00
John-David Dalton
aa311bd792 Move unset to aryMethod[2] mapping. 2016-01-25 00:24:34 -08:00
John-David Dalton
8858cdbe8c Move position of _.keyBy doc example. [ci skip] 2016-01-25 00:24:34 -08:00
John-David Dalton
9d033247e9 Correct arg count in _.isEqualWit doc note. [ci skip] 2016-01-25 00:24:34 -08:00
Benjamin Tan
cacae31af3 Minor documentation fixes for stringSize, _.cond, _.intersection, and _.reverse. [ci skip] 2016-01-25 00:24:33 -08:00
John-David Dalton
759a44e2b8 Move omitBy and pickBy to aryMethod[2] mapping. [closes #1819] 2016-01-25 00:24:33 -08:00
think2011
2fb778413b Fix returns tag typo in _.toLength docs. [ci skip] 2016-01-25 00:24:33 -08:00
Ismaël Mejía
473d059efd Fix _.map doc example. [ci skip] 2016-01-25 00:24:33 -08:00
John-David Dalton
67cd43d97a Reduce description mentions of eachFunc. [ci skip] 2016-01-25 00:24:33 -08:00
John-David Dalton
b77248c975 Minor cleanup of contributing.md. [ci skip] 2016-01-25 00:24:33 -08:00
John-David Dalton
6bc58a16f6 Remove conditional exposure. 2016-01-25 00:24:33 -08:00
John-David Dalton
0edbd96bb5 Ensure mixinPrereqs is called before Backbone is loaded. 2016-01-25 00:24:33 -08:00
John-David Dalton
6ecc675670 Ensure Backbone test only adds missing methods. 2016-01-25 00:24:33 -08:00
John-David Dalton
c0a6f051fc Move getFuncName test. 2016-01-25 00:24:33 -08:00
John-David Dalton
6bc0aba800 Avoid chatty console.log. 2016-01-25 00:24:32 -08:00
Steven Sojka
6949f71516 Ensure getFuncName works when checking methods that shadow Object.prototype. 2016-01-25 00:24:32 -08:00
John-David Dalton
f6c6de40f1 Update fp mapping with a test to catch potentially missed wrappers. 2016-01-25 00:24:32 -08:00
John-David Dalton
fdea9a447f Revert_Symbol rename. 2016-01-25 00:24:32 -08:00
John-David Dalton
2e02636fc1 Revert lodash path in test/index.html. 2016-01-25 00:24:32 -08:00
John-David Dalton
17b9646c0b Add test warning about the lodash dependency. 2016-01-25 00:24:32 -08:00
John-David Dalton
0a3d7e7cbc Revert lodash dev dep bump. 2016-01-25 00:24:32 -08:00
John-David Dalton
a62d70e80c Add jsdoc name tag for flatMap. [closes #1811] 2016-01-25 00:24:32 -08:00
John-David Dalton
96bbf74207 Add has and hasIn to fp mapping. [closes #1805] 2016-01-25 00:24:32 -08:00
John-David Dalton
6cfe7fa5ea Move forEach and friends to the non-chaining section of the lodash doc note. [ci skip] 2016-01-25 00:24:32 -08:00
John-David Dalton
efc61ea70d Correct arg count typo in _.cloneWith docs. [ci skip] 2016-01-25 00:24:32 -08:00
John-David Dalton
e752b26f9e Clarify max size of _.sampleSize. [ci skp] [closes #1802] 2016-01-25 00:24:31 -08:00
Jeroen Engels
6b19ca1c11 Update contributing.md about how to launch tests. [ci skip] 2016-01-25 00:24:31 -08:00
John-David Dalton
42e01fd37b Add fp tests to npm test. 2016-01-25 00:24:31 -08:00
John-David Dalton
1df18a3e10 Make _.omitBy and _.pickBy pass a key param to iteratees. 2016-01-25 00:24:31 -08:00
John-David Dalton
f31fb8bd34 Add _.isEqual test for unordered object comparisons. 2016-01-25 00:24:31 -08:00
John-David Dalton
1d54d868e3 Fix merging functions and avoid augmenting sources. [closes #1794, #1801] 2016-01-25 00:24:31 -08:00
John-David Dalton
4b801f423b Update fp mapping to include uniqWith. [closes #1800] 2016-01-25 00:24:31 -08:00
John-David Dalton
96ef2110ce Add support for combining diacritical marks for symbols. 2016-01-25 00:24:31 -08:00
Beau Gunderson
84763cab26 Add failing test for Fitzpatrick modifiers. 2016-01-25 00:24:30 -08:00
Beau Gunderson
fc2ce9a021 Add test fails for keycap emoji (#1796). 2016-01-25 00:24:30 -08:00
John-David Dalton
a5c1421c6b Ensure _.fromPairs can consume results of _.toPairs. [closes #1790] 2016-01-25 00:24:30 -08:00
John-David Dalton
1a54e43a24 Add chunk to fp mapping. 2016-01-25 00:24:30 -08:00
John-David Dalton
1ab5a20784 Fix phantomjs test fails. 2016-01-25 00:24:30 -08:00
John-David Dalton
1634388534 Update fallback lodash module path. 2016-01-25 00:24:30 -08:00
Alon Niv
455afb0019 Fix ES5 parseInt link. [ci skip] 2016-01-14 07:46:29 -08:00
John-David Dalton
349dfbf182 Ensure core build slice has default start and end params. [closes #1789] 2016-01-14 01:34:34 -08:00
John-David Dalton
b081b3ae2d Cleanup intentation in baseIsMatch. 2016-01-13 23:09:46 -08:00
John-David Dalton
110f86f803 Fix lodash doc ticks. [ci skip] [closes #1787] 2016-01-13 23:08:56 -08:00
John-David Dalton
ace771d4e9 Add matches to core build. [closes #1784] 2016-01-13 22:41:48 -08:00
John-David Dalton
7544166d11 Add placeholders to fp wrapper. [closes #1780] 2016-01-13 22:07:50 -08:00
mori_9tarou
ff5f06b9f0 Fix _.pullAll doc example typo. [ci skip] 2016-01-13 22:07:12 -08:00
John-David Dalton
06395f8436 Simplify fp map. 2016-01-13 22:03:41 -08:00
John-David Dalton
fe3d86bf13 Ensure _.defaultsDeep doesn't convert function properties to objects. [closes #1783] 2016-01-13 21:20:05 -08:00
John-David Dalton
f92dc95c58 Add fp mapping for _.gt, _.gte, _.lt, and _.lte. [closes #1776] 2016-01-13 14:44:52 -08:00
John-David Dalton
9058c00cfe Add isEqual to fp mapping. [closes #1764] 2016-01-13 08:11:58 -08:00
think2011
8b6bd8442e Fix _.isMatchWith doc typo. [ci skip] 2016-01-13 08:11:37 -08:00
Strider
1ef22e976d Fix _.clone/_.cloneDeep doc typo. [ci skip] 2016-01-13 08:10:23 -08:00
Abhas Tandon
d0d86aecf8 Fix _.maxBy/_.minBy doc example. [ci skip] 2016-01-13 08:08:57 -08:00
John-David Dalton
1ef4807a8e Ensure object are compared unordered. [closes #1758] 2016-01-13 03:56:55 -08:00
John-David Dalton
846e813c99 Ensure each and eachRight have the correct chain behavior. 2016-01-13 03:45:15 -08:00
John-David Dalton
73405cf042 Update fp property alias mapping. [closes #1755] 2016-01-13 00:09:29 -08:00
John-David Dalton
79c873f3f8 Update fp map for assignment methods and set methods. [closes #1754] 2016-01-13 00:06:59 -08:00
greenkeeperio-bot
0fc6929dd4 Update lodash dev dep. 2016-01-13 00:06:59 -08:00
John-David Dalton
753a32bed7 Remove legacy doc note from _.range. [closes #1753] [ci skip] 2016-01-13 00:06:59 -08:00
John-David Dalton
027c572758 Add replace to fp map. 2016-01-13 00:06:59 -08:00
John-David Dalton
afb7d3e351 Add split to fp map. [closes #1752] 2016-01-13 00:06:59 -08:00
John-David Dalton
a5c3ae0a7e Remove run from jsdoc alias tag. [ci skip] 2016-01-13 00:06:59 -08:00
John-David Dalton
9477e46fb3 Fix typos in lodash doc note. [ci skip] 2016-01-13 00:06:58 -08:00
John-David Dalton
bf06df4475 Bump to v4.0.0. 2016-01-13 00:06:58 -08:00
John-David Dalton
e775a58496 Rebuild lodash and docs. 2016-01-13 00:06:58 -08:00
John-David Dalton
ad15e47d4d Update dev deps. 2016-01-13 00:06:58 -08:00
John-David Dalton
45f7a91780 Update fp modules. 2016-01-13 00:06:47 -08:00
John-David Dalton
b1401d03a1 Update fp/util module paths. 2016-01-12 08:00:35 -08:00
John-David Dalton
8b264e5c11 Add eq to fp mapping. 2016-01-11 23:33:44 -08:00
John-David Dalton
2fb4ec0d5f Rename conj and disj to overEvery and overSome in fp mapping. 2016-01-11 23:33:44 -08:00
John-David Dalton
ddd5318bb0 Change category names of "Utility" to "Util" and "Chain" to "Seq". 2016-01-11 22:55:14 -08:00
John-David Dalton
3d44135df5 Remove run alias. 2016-01-11 21:21:21 -08:00
John-David Dalton
a98fc802fc Cleanup _.maxBy and _.minBy doc example. [ci skip] 2016-01-11 16:14:26 -08:00
John-David Dalton
ed364ecfee Cleanup _.iteratee doc example. [ci skip] 2016-01-11 16:14:26 -08:00
John-David Dalton
434d217bfa Cleanup omit and pick doc examples. [ci skip] 2016-01-11 16:14:26 -08:00
John-David Dalton
2386557b5e Add more _.toArray doc examples. [ci skip] 2016-01-11 16:14:26 -08:00
John-David Dalton
f619a6666a Cleanup clone doc examples. [ci skip] 2016-01-11 16:14:26 -08:00
John-David Dalton
359ef9715e Cleanup resolve doc examples. [ci skip] 2016-01-11 16:14:25 -08:00
John-David Dalton
9211bc6329 Remove toInteger from baseSlice. 2016-01-11 08:17:00 -08:00
John-David Dalton
a26ef1a997 Remove unused variables. 2016-01-10 15:35:44 -08:00
John-David Dalton
c9f53b9a1c Remove .sauce.yml. 2016-01-10 13:44:54 -08:00
John-David Dalton
f9a3e66716 Update _.unzipWith and _.zipWith iteratee docs. [ci skip] 2016-01-10 12:38:02 -08:00
John-David Dalton
e5464fa199 Change "callback shorthand" to "iteratee shorthand". [ci skip] 2016-01-10 12:37:40 -08:00
John-David Dalton
9dc2f1ee29 Fix test for es build. 2016-01-09 13:56:56 -08:00
John-David Dalton
b27143aa15 Add missing bizarro labels. 2016-01-09 01:24:56 -08:00
John-David Dalton
07c38311ca Add _.clone test for objects without a constructor function. 2016-01-09 01:17:23 -08:00
John-David Dalton
4a0415a6bd Increase test coverage of symbols. 2016-01-09 01:17:16 -08:00
John-David Dalton
5d97cdbcfe Minor formatting nit. 2016-01-09 01:02:47 -08:00
John-David Dalton
7cce658fc4 Leak to avoid sporadic noglobals fails on Edge in Sauce Labs. 2016-01-08 23:46:48 -08:00
John-David Dalton
84879453b1 Add _.cond test for provided arguments. 2016-01-08 23:01:07 -08:00
John-David Dalton
9cc79db819 Add _.toLength test for -0. 2016-01-08 21:35:16 -08:00
John-David Dalton
17a1663513 Add default wait test for _.delay. 2016-01-08 21:35:16 -08:00
John-David Dalton
11538ccf90 Cleanup test labels. [ci skip] 2016-01-08 21:35:16 -08:00
John-David Dalton
5c51b1c4d1 Simplify baseInRange and baseRange description. [ci skip] 2016-01-08 21:35:16 -08:00
John-David Dalton
5a13fe28c9 Rename _.random params start and end to lower and upper. 2016-01-08 21:35:10 -08:00
John-David Dalton
946560c998 Add baseClamp. 2016-01-08 20:11:59 -08:00
John-David Dalton
7c5e032853 Simplify isNumber. 2016-01-08 11:47:17 -08:00
John-David Dalton
54ae91b2d9 Use freeParseFloat and freeParseInt. 2016-01-08 08:34:37 -08:00
John-David Dalton
8bd8aa3037 Assign methods should create an object when object is nullish. 2016-01-07 21:53:35 -08:00
John-David Dalton
6fa9490a13 Ensure uglify options are set correctly. 2016-01-07 21:20:22 -08:00
John-David Dalton
5dc48d1a83 Sync uglify options with lodash-cli. 2016-01-07 21:20:03 -08:00
John-David Dalton
9e56a92c8a Drop Node 0.8 testing. 2016-01-07 20:41:19 -08:00
John-David Dalton
ac98d81b85 Update deps. 2016-01-07 20:41:19 -08:00
John-David Dalton
05e80e32f7 Simplify trim methods. 2016-01-07 20:41:18 -08:00
John-David Dalton
7435058859 Rename Symbol var to _Symbol to avoid problems with Babel v6.4.0. 2016-01-07 20:41:18 -08:00
John-David Dalton
81b1d6e451 Change arguments passed to _.zipWith and _.unzipWith. 2016-01-07 20:41:18 -08:00
John-David Dalton
52754415e0 Remove support for flattening arrays with circular references. 2016-01-07 20:41:18 -08:00
John-David Dalton
d51d67a5c2 Add sauce.yml. 2016-01-07 20:40:57 -08:00
John-David Dalton
c62fbd811b Enable equalArrays and equalObjects to exit early before checking the stack. 2016-01-05 08:23:08 -08:00
John-David Dalton
1df780abba Add comment to createRange to avoid refactoring the way start is resolved. [ci skip] 2016-01-05 08:11:02 -08:00
John-David Dalton
150511b263 Add createRange. 2016-01-05 07:59:28 -08:00
John-David Dalton
7fefa954c8 Add baseInRange. 2016-01-05 07:40:57 -08:00
Christopher Hiller
030472cee4 Remove references to Bower, Component, and Volo. [ci skip] 2016-01-05 07:34:13 -08:00
John-David Dalton
00c0dc233e Move toNumber use out of baseRange. 2016-01-05 07:31:47 -08:00
greenkeeperio-bot
1013bccb9c Update async and platform dev deps. 2016-01-04 09:19:01 -06:00
John-David Dalton
0911e77c32 Fix _.transform test fail due to _.cloneDeep behavior change. 2016-01-04 09:18:32 -06:00
John-David Dalton
4cdd33b2aa Update tested browsers in sauce. 2016-01-04 09:18:32 -06:00
John-David Dalton
638f081390 Fix fp test fails due to _.cloneDeep behavior change. 2016-01-04 09:18:32 -06:00
John-David Dalton
21f28bfd0d Add missing semicolon. 2016-01-04 09:18:32 -06:00
John-David Dalton
941745cd06 Add _.cond test for this binding. 2016-01-04 09:18:32 -06:00
John-David Dalton
8bf6bcb8a7 Cleanup this binding tests. 2016-01-04 09:18:32 -06:00
John-David Dalton
e7b8fd8281 Add basic _.cond test and test for undefined return values. 2016-01-04 09:18:31 -06:00
John-David Dalton
b1ba01e85a Simplify _.once test. 2016-01-04 09:18:31 -06:00
John-David Dalton
a74c71e423 Add constant function helpers. 2016-01-04 09:18:31 -06:00
John-David Dalton
dba1bcf973 Simplify [[Prototype]] test labels. 2016-01-04 09:18:31 -06:00
John-David Dalton
ed3f8cc39d Add support for creating clones with the same [[Prototype]] as value. 2016-01-04 09:18:31 -06:00
John-David Dalton
f39fdc42f6 Remove legacy options param signature from _.template. 2016-01-04 09:18:31 -06:00
John-David Dalton
9ef191db33 Cleanup _.template tests. 2016-01-04 09:18:31 -06:00
John-David Dalton
9582f25835 Simplify source test labels. 2016-01-04 09:18:31 -06:00
John-David Dalton
4463975ace Add _.templateSettings.imports._.templateSettings tests. 2016-01-04 09:18:31 -06:00
John-David Dalton
33cf509822 Add _.cond test for shorthands. 2016-01-04 09:18:30 -06:00
John-David Dalton
34f44e8f25 Add parentheses to tests. 2016-01-03 10:08:10 -06:00
John-David Dalton
7fb738ab91 Add _.cond test for function checks. 2016-01-03 10:07:48 -06:00
John-David Dalton
973e0812ad Add TypeError check for methods that reject falsey params. 2016-01-02 13:53:30 -06:00
John-David Dalton
cd8218541a Tweak truthy test for memoize resolve. 2016-01-02 13:49:04 -06:00
John-David Dalton
2316dff1e0 Use lodashStable in more places. 2016-01-02 13:48:12 -06:00
John-David Dalton
15ce24db25 Add _.isSymbol tests. 2016-01-02 12:30:13 -06:00
John-David Dalton
b0e0a20e96 Fix realm assignments. 2016-01-02 11:41:18 -06:00
John-David Dalton
849f8e77ec Ensure _.toString does not throw on symbols. 2016-01-02 11:41:11 -06:00
John-David Dalton
f7c7dee8b0 Add _.isSymbol. 2016-01-02 11:04:41 -06:00
John-David Dalton
167fad9649 Cleanup doc note on lazy evaluation. [ci skip] 2016-01-02 10:32:36 -06:00
John-David Dalton
9d3a298895 Cleanup symbol tests. 2016-01-02 10:32:35 -06:00
John-David Dalton
19b5ef7c6f Cleanup _.transform realm test. 2016-01-02 10:32:35 -06:00
John-David Dalton
9b09caa463 Add symbol tests for isType methods. 2016-01-02 10:32:35 -06:00
John-David Dalton
f08b6e2690 Add _.cond doc example. [ci skip] 2016-01-02 10:32:26 -06:00
John-David Dalton
fa13cb5544 Add getIteratee to _.cond. 2016-01-01 23:50:13 -06:00
John-David Dalton
1427c99169 Add _.cond. 2016-01-01 23:18:40 -06:00
John-David Dalton
3e155bdbb9 Move _.bindAll to the utility category. 2016-01-01 16:18:02 -06:00
John-David Dalton
f830612f17 Update tab/spacing rules for html files. 2016-01-01 14:49:47 -06:00
John-David Dalton
3b86574b4d Remove bower.json. 2016-01-01 12:09:06 -06:00
John-David Dalton
30d9cb9a4a Move flow and flowRight to checkFuncs. 2016-01-01 11:15:54 -06:00
John-David Dalton
cfe05b7d34 Bump copyright year. [ci skip] 2016-01-01 10:04:36 -06:00
John-David Dalton
60a016ae39 Remove Rhino mention from comment. [ci skip] 2015-12-31 20:54:47 -06:00
John-David Dalton
6229e02806 Excuse root._ export from coverage. 2015-12-30 17:18:03 -06:00
John-David Dalton
5202294ae2 Add more excused coverage gaps. 2015-12-30 14:50:16 -06:00
John-David Dalton
5bc50c2ef0 Simplify CommonJS UMD. 2015-12-30 14:50:03 -06:00
John-David Dalton
22b0b942ae Simplify assocSet pattern. 2015-12-29 22:18:12 -06:00
John-David Dalton
41f86399f0 Remove coverage check for break in createBaseEach. 2015-12-29 22:15:13 -06:00
John-David Dalton
bc7f2af2ce Add _.orderBy test for string objects. 2015-12-29 21:26:00 -06:00
John-David Dalton
db04398e49 Add support for removing the last capture group. 2015-12-29 09:15:01 -06:00
John-David Dalton
56929e9725 Use == for the 'desc' check in compareMultiple. 2015-12-29 08:52:50 -06:00
John-David Dalton
6798259b84 Use eq in assignInDefaults. 2015-12-29 01:29:18 -06:00
John-David Dalton
20906c7bf7 Update vendors. 2015-12-29 00:25:14 -06:00
John-David Dalton
560ddac75a Simplify Stack test. 2015-12-28 22:33:45 -06:00
John-David Dalton
daecf5cf01 Simplify setProperty. 2015-12-28 22:33:40 -06:00
John-David Dalton
505f8d5cda Fix phantomjs test fails. 2015-12-28 21:54:50 -06:00
John-David Dalton
1d7fd0638d Add more Stack tests. 2015-12-28 20:34:44 -06:00
John-David Dalton
67ca691334 Use eq in assocIndexOf. 2015-12-28 20:34:32 -06:00
John-David Dalton
85da55d917 Add Stack#clear. 2015-12-28 20:34:17 -06:00
John-David Dalton
ee8567ab38 Cleanup MapCache tests. 2015-12-28 20:33:39 -06:00
John-David Dalton
4ca2740628 Add _.transform test to check that object constructor is a function before using its [[Prototype]]. 2015-12-28 16:40:29 -06:00
John-David Dalton
23e6302329 Cleanup tests. 2015-12-28 16:28:05 -06:00
John-David Dalton
95c6dd8992 Add tests for MapCache values. 2015-12-28 15:18:45 -06:00
John-David Dalton
a5b733998d Remove "Opera" from test labels. 2015-12-28 14:54:01 -06:00
John-David Dalton
68b7749a0f Add more MapCache tests. 2015-12-28 14:53:13 -06:00
John-David Dalton
fb37e0767a Add tests for skipping value assignments. 2015-12-28 13:16:05 -06:00
John-David Dalton
43469b9877 Simplify Object.defineProperty use. 2015-12-28 13:15:43 -06:00
John-David Dalton
5a53215506 Rename assignSymbols to copySymbols and implement by way of copyObject. 2015-12-28 11:36:53 -06:00
John-David Dalton
51ce9edcf3 Rearrange _.has and _.hasIn tests. 2015-12-28 11:12:14 -06:00
John-David Dalton
18481a40b2 Add _.has and _.hasIn tests for arguments objects and strings. 2015-12-28 11:11:20 -06:00
John-David Dalton
24c0221ec5 Expand common case check in mergeData. 2015-12-28 10:37:49 -06:00
John-David Dalton
0f928233ce Add _.ary test case for multiple applied arys. 2015-12-28 10:11:17 -06:00
John-David Dalton
e5730af949 Add _.zipObject test for extra keys. 2015-12-28 00:08:26 -06:00
John-David Dalton
ed23b6b89d Rearrange tests for consistency. 2015-12-27 23:59:04 -06:00
John-David Dalton
28420ac1fc Add _.conforms test for missing object properties. 2015-12-27 23:58:51 -06:00
John-David Dalton
6da255f786 Add more MapCache tests. 2015-12-27 23:29:15 -06:00
John-David Dalton
2396932846 Remove dead code from stringToArray. 2015-12-27 23:10:59 -06:00
John-David Dalton
89b9f46ad8 Increase coverage of _.random, _.template, and _.truncate. 2015-12-27 20:23:01 -06:00
John-David Dalton
7dd0bb5005 Use 'utf8', which Node uses, instead of 'utf-8'. 2015-12-27 18:41:21 -06:00
John-David Dalton
44ecbc944b Move _#reverse tests into _.reverse tests. 2015-12-27 18:40:37 -06:00
John-David Dalton
223460bbd2 Remove unneeded assertion from a _.xor chaining test. 2015-12-27 16:22:12 -06:00
John-David Dalton
1a0a9709f2 Add tests for chaining _.invokeMap. 2015-12-27 16:21:21 -06:00
John-David Dalton
a16c282f99 Add more test coverage to _.add, _.subtract, and _.transform. 2015-12-27 15:08:48 -06:00
John-David Dalton
aeac5b0203 Increase code coverage of partial lines. 2015-12-27 14:41:57 -06:00
John-David Dalton
afdc4b746a Remove dead code in createRecurryWrapper. 2015-12-27 14:41:34 -06:00
John-David Dalton
6c84ccd5c5 Remove dead code from baseIntersection and cloneSymbol. 2015-12-27 13:27:47 -06:00
John-David Dalton
916bfed84b Add bizarro tests for Object.getOwnPropertySymbols. 2015-12-27 11:19:36 -06:00
John-David Dalton
35bb3ac128 Remove dead code from baseClone. 2015-12-27 11:19:36 -06:00
John-David Dalton
4f1c3887f7 Remove 'utf-8' option because it's the default. 2015-12-27 11:19:30 -06:00
John-David Dalton
ce19067cfd Cleanup PATTERN use in travis.yml. 2015-12-27 10:10:05 -06:00
John-David Dalton
00f4ebe6aa Remove legacy filePath resolving code. 2015-12-27 00:12:06 -06:00
John-David Dalton
5add1cfd25 Add test/remove.js to remove snippets while preserving new lines. 2015-12-27 00:06:15 -06:00
John-David Dalton
c67092d72b Report coverage from lodash.js instead of dist/lodash.js. 2015-12-26 22:15:50 -06:00
John-David Dalton
4bb5402cca Try codecov. 2015-12-26 22:08:38 -06:00
John-David Dalton
837acf1394 Add "use strict" directive to strict mode test. 2015-12-26 22:08:24 -06:00
John-David Dalton
0d8779734d Cleanup comment. [ci skip] 2015-12-26 22:07:15 -06:00
John-David Dalton
d8213454c2 Use assignValue in assignSymbols. 2015-12-26 21:31:26 -06:00
John-David Dalton
e05c8677bf Search for srcValue in stack before objValue. 2015-12-26 21:31:02 -06:00
John-David Dalton
a5b9063088 Use objValue instead of oldValue. 2015-12-26 21:26:36 -06:00
John-David Dalton
83ea7ac136 Make eq comparisons new value vs. old value. 2015-12-26 21:24:45 -06:00
John-David Dalton
f3075d685e Only copy symbols on objects and nested objects. 2015-12-26 19:24:59 -06:00
John-David Dalton
a811476c1b Add tests for cloning properties that shadow those on Object.prototype. 2015-12-26 12:26:49 -06:00
John-David Dalton
64fe626fa6 Simplify supported comparision doc notes for _.isMatch, _.matches, and _.matchesProperty. [ci skip] 2015-12-26 11:04:17 -06:00
John-David Dalton
f8236c711f Use eq in more places. 2015-12-25 22:01:52 -06:00
Benjamin Tan
b1f6bc72f4 Fix minor doc typo in _.chunk. [ci skip] 2015-12-25 22:01:51 -06:00
John-David Dalton
300dee34bd Test cloning date objects. 2015-12-25 22:01:51 -06:00
John-David Dalton
1eaa112f7d Add tests for cloning symbol properties. 2015-12-25 22:01:51 -06:00
John-David Dalton
8228376160 Use assignValue in baseClone to avoid strict mode errors. 2015-12-25 22:01:45 -06:00
John-David Dalton
a58cd65db8 Add support for cloning symbol properties to _.clone and _.cloneDeep. 2015-12-24 13:35:15 -06:00
John-David Dalton
2df689524e Simplify _.times doc example. [ci skip] 2015-12-24 00:16:25 -06:00
John-David Dalton
a20ad60f13 Add "requireEarlyReturn" rule. 2015-12-23 18:36:13 -06:00
John-David Dalton
1c781389d2 Add support for comparing array buffers to _.isEqual. 2015-12-23 18:18:12 -06:00
flyyang
5e639d1704 Fix doc and test label typos. [ci skip] 2015-12-23 09:22:41 -06:00
John-David Dalton
8e64432e2c Add docs to clarify what values are supported by _.clone and _.isEqual. [ci skip] 2015-12-23 00:56:41 -06:00
John-David Dalton
a8de2ca410 Indent nit. [ci skip] 2015-12-23 00:54:59 -06:00
John-David Dalton
6343518bca Simplify instanbul invocation in travis.yml. 2015-12-22 23:27:16 -06:00
John-David Dalton
351e259174 Add coverage to the .gitignore. 2015-12-22 18:17:07 -06:00
greenkeeperio-bot
1d77e29c3c Update dev deps. 2015-12-22 18:16:45 -06:00
John-David Dalton
eba9b3d22a Avoid test fail in Edge. 2015-12-22 01:22:09 -06:00
John-David Dalton
844fe1d979 Make var name changes for consistency. 2015-12-22 01:04:26 -06:00
John-David Dalton
0971a7820f Add support for symbols to _.clone, _.cloneDeep, and _.isEqual. 2015-12-22 01:04:26 -06:00
John-David Dalton
06c6f180dc Simplify test descriptions. 2015-12-22 01:04:26 -06:00
John-David Dalton
33da30266c Ensure min and max of _.random are swapped if min > max. 2015-12-22 01:04:19 -06:00
John-David Dalton
ad8628f8e7 Avoid isIterateeCall check if step is a number. 2015-12-20 14:03:04 -06:00
John-David Dalton
f42446d22f Avoid isIterateeCall check if floating is a boolean. 2015-12-20 12:39:00 -06:00
John-David Dalton
4b77b7a8b3 Make _.add, _.subtract, and _.sum not skip NaN values. 2015-12-19 10:37:49 -06:00
John-David Dalton
9e99a57615 Make "asc" the default order of _.orderBy. 2015-12-18 23:32:43 -06:00
John-David Dalton
7e648741ad Remove unneeded _.memoize.Cache test. 2015-12-17 20:43:56 -08:00
John-David Dalton
b1d396bbbb Cleanup mapClear. 2015-12-17 20:43:32 -08:00
Aaron Hamid
380435d020 Add clear method to MapCache. 2015-12-17 20:01:17 -08:00
John-David Dalton
71fb66dc37 Rename _.sortByOrder to _.orderBy. 2015-12-16 20:14:52 -08:00
John-David Dalton
a53280f047 Remove volo from package.json. 2015-12-16 17:56:35 -08:00
John-David Dalton
ccfb968b8a Clarify arity param of _.curry. [ci skip] 2015-12-16 01:15:43 -08:00
John-David Dalton
db731e0c91 Cleanup fp mapping and tests. 2015-12-15 22:25:52 -08:00
Benjamin Tan
a4b86f8368 Limit sample to one argument. 2015-12-15 22:25:52 -08:00
Benjamin Tan
44c697908b Ensure curryN, curryRightN, curryRight, and sampleSize are defined. 2015-12-15 22:25:35 -08:00
John-David Dalton
e3c79bd24a Refine Object.prototype check in _.defaults. 2015-12-15 21:04:39 -08:00
John-David Dalton
fb1ed531e4 Cleanup param docs. [ci skip] 2015-12-15 20:55:44 -08:00
John-David Dalton
a6cb6d26a4 Add _.split test for limit. 2015-12-15 20:37:43 -08:00
John-David Dalton
003a5981d6 Cleanup jQuery doc references. [ci skip] 2015-12-15 00:28:47 -08:00
John-David Dalton
0bf38b826e Update dev deps. 2015-12-14 22:53:40 -08:00
John-David Dalton
4038d12f1b Move replace and split tests from chained to non-chained forms. 2015-12-14 21:44:36 -08:00
John-David Dalton
9d60e28aad Reset args to undefined. 2015-12-14 20:37:44 -08:00
John-David Dalton
ae92aa200f Add fp tests for cherry-picked reduce and reduce iterating an object. 2015-12-14 20:37:05 -08:00
John-David Dalton
4584b857ca Update vendor/underscore. 2015-12-14 11:54:17 -08:00
John-David Dalton
46bdf5d79d Simplify _.reduce and _.reduceRight. 2015-12-14 08:25:28 -08:00
John-David Dalton
83720f457e Remove custom lodash option from perf and test ui. 2015-12-14 08:25:10 -08:00
John-David Dalton
0706af1543 Ensure the fp iteratee wrapper enforces arity for functions with a length of 0. 2015-12-14 08:06:29 -08:00
John-David Dalton
41985d8c1a Ensure reduce and reduceRight use getIteratee for the array path. 2015-12-13 23:29:52 -08:00
John-David Dalton
440eb0876c Dry up lib/fp/base.js 2015-12-12 14:10:45 -08:00
John-David Dalton
ac0a0ea07e Add delete to Map interface note. [ci skip] 2015-12-12 11:03:34 -08:00
John-David Dalton
4a534da00a Use MDN for built-in method references. [ci skip] 2015-12-12 11:03:18 -08:00
John-David Dalton
ff4143b482 Expose _.replace and _.split. 2015-12-12 10:54:11 -08:00
John-David Dalton
f132c0024f Make fp versions of set and setWith immutable. 2015-12-11 01:39:33 -08:00
John-David Dalton
82a1010f64 Fix fp test fail when run from Node. 2015-12-11 01:29:14 -08:00
greenkeeperio-bot
d885a9afd0 Update coveralls to 2.11.6. 2015-12-10 22:40:19 -08:00
John-David Dalton
08568fcc8f Update vendor/backbone and vendor/underscore. 2015-12-10 18:32:57 -08:00
John-David Dalton
2192b7748e Remove test/asset/test-ui.js use from test/fp.html. 2015-12-09 23:36:40 -08:00
John-David Dalton
c96a579291 Simplify _.overArgs. 2015-12-09 01:37:34 -08:00
greenkeeperio-bot
095cf94c45 Update jscs to 2.7.0. 2015-12-09 01:28:10 -08:00
John-David Dalton
f7a49778ea Rename _.modArgs to _.overArgs and remove _.modArgsSet. 2015-12-08 23:23:34 -08:00
John-David Dalton
58b235b435 Fix fp test fails in IE10 and Firefox. 2015-12-07 00:58:03 -08:00
John-David Dalton
a7f1c3c883 Fix test fails in IE11. 2015-12-07 00:37:37 -08:00
John-David Dalton
268d411bb4 Update lodash builds in travis.yml. 2015-12-06 22:48:39 -08:00
John-David Dalton
7cdf708e3c Prevent false minified method name test fail. 2015-12-06 22:13:39 -08:00
John-David Dalton
42c077de02 Make fp tests browser runnable. 2015-12-05 23:44:09 -08:00
John-David Dalton
769f78a2b7 Rename test/test.fp.js to test/test-fp.js. 2015-12-05 22:01:05 -08:00
John-David Dalton
b69ba06db9 Add a doc on path creation for _.set. [ci skip] 2015-12-05 12:55:16 -08:00
John-David Dalton
42d5cc584e Simplify iteration in createBaseFor . 2015-12-05 12:55:15 -08:00
John-David Dalton
f3d54d0975 Add _.rangeRight tests. 2015-12-05 12:55:15 -08:00
John-David Dalton
39192ad388 Shorten flag vars. 2015-12-05 12:55:15 -08:00
John-David Dalton
19500d36c7 Avoid fails in flowRight setup. 2015-12-05 12:55:15 -08:00
John-David Dalton
229f0b48cd Update perf/perf.js to correctly load libs when running from the command line. 2015-12-05 12:55:15 -08:00
John-David Dalton
58736f743e Add rangeRight to fp mapping. 2015-12-05 12:55:10 -08:00
John-David Dalton
dc136cbf31 Remove perf/run-perf.sh. 2015-12-03 18:00:00 -08:00
John-David Dalton
81e39f7c4b Add _.rangeRight docs. [ci skip] 2015-12-03 17:59:46 -08:00
John-David Dalton
1cbb6f1405 Add doc note to _.includes about string values. [ci skip] 2015-12-03 11:54:27 -08:00
John-David Dalton
1ae6e67cdc Add _.rangeRight. 2015-12-03 08:41:55 -08:00
John-David Dalton
3d43cc1029 Use "IE" instead of "Internet Explorer" in comment. [ci skip] 2015-12-01 10:10:29 -08:00
John-David Dalton
230e8d0787 Make build expose fp mapping in the dist. 2015-11-30 20:19:56 -08:00
John-David Dalton
8154e5e521 Fix argument juggling. 2015-11-30 20:18:08 -08:00
greenkeeperio-bot
f4467f6033 Update sauce-tunnel to 2.3.0. 2015-11-30 10:34:46 -08:00
Brian Mock
562b04a763 Update email address in CoC. [ci skip] 2015-11-29 15:18:12 -08:00
John-David Dalton
9bcbcc5293 Ensure _.clone handles generators correctly. 2015-11-29 17:00:45 -06:00
John-David Dalton
fdc15df3b3 Remove rhino testing. 2015-11-29 12:00:53 -06:00
John-David Dalton
e778458f78 Minor style tweak to _.overEvery test. 2015-11-29 00:09:13 -06:00
John-David Dalton
0a55eff5d5 Fix spread test fail. 2015-11-29 00:07:43 -06:00
John-David Dalton
3874b5bf84 Add semicolons. 2015-11-29 00:01:28 -06:00
John-David Dalton
d07343a1aa Use apply in more places. 2015-11-28 23:13:55 -06:00
John-David Dalton
a37c6db377 Use apply in _.invokeMap. 2015-11-28 10:02:42 -06:00
John-David Dalton
1f991a7cdc Rename binaryIndex and binaryIndexBy to baseSortedIndex and baseSortedIndexBy. 2015-11-28 00:42:05 -06:00
John-David Dalton
e99a31c2fa Update call and invocation use. [ci skip] 2015-11-27 20:18:09 -06:00
John-David Dalton
876fe52efc Describe HOT vars a bit more. [ci skip] 2015-11-27 20:16:11 -06:00
John-David Dalton
8f190b1fb1 Update Firefox in test/saucelabs.js. 2015-11-27 18:33:56 -06:00
John-David Dalton
411f3ecb3e Update benchmarks. 2015-11-27 18:33:50 -06:00
John-David Dalton
3d31423eef Remove thisArg param benchmarks. 2015-11-27 16:24:13 -06:00
John-David Dalton
68c0eb5216 Remove java scaffolding from benchmarks. 2015-11-27 16:23:51 -06:00
John-David Dalton
39dae19974 Update vendor/benchmark.js. 2015-11-27 16:19:39 -06:00
John-David Dalton
2dd6f0124e Infer sign of range's step when only start and end are provided. 2015-11-27 01:01:44 -06:00
John-David Dalton
826af968c8 Add baseTrim. 2015-11-26 23:17:44 -06:00
John-David Dalton
70c3d325a0 Infer sign of range's step when only end is provided. 2015-11-26 23:17:30 -06:00
John-David Dalton
6289211910 Update test.fp with over methods. 2015-11-25 12:48:38 -08:00
John-David Dalton
86346291a7 Update fp mapping for invoke. 2015-11-25 12:25:45 -08:00
John-David Dalton
05d57b90a9 Rename _.invokePath to _.invoke. 2015-11-25 12:07:13 -08:00
John-David Dalton
dd64f5eac4 Ensure _.flattenDeep works on arrays with circular references. [closes #1664] 2015-11-25 09:20:05 -08:00
John-David Dalton
e6de183651 Update jsdoc params for stack. [ci skip] 2015-11-25 09:20:05 -08:00
John-David Dalton
7bd986337a Add lazy invokeMap. 2015-11-24 23:20:18 -08:00
John-David Dalton
6dc92df880 Add implicit chaining test for _.invokePath. 2015-11-24 16:22:44 -08:00
John-David Dalton
44abe46da4 Rename _.invoke to _.invokeMap. 2015-11-24 16:22:40 -08:00
greenkeeperio-bot
9e334b5ece Update webpack to 1.12.9 & istanbul to 0.4.1. 2015-11-24 12:02:57 -08:00
John-David Dalton
ee8a248086 Add large array test for _.uniqBy and _.sortedUniqBy. 2015-11-24 12:02:57 -08:00
John-David Dalton
8f1f98b003 Add _.invokePath tests. 2015-11-24 12:02:57 -08:00
John-David Dalton
a6bc1fa316 Avoid set optimization if iteratee is provided to baseUniq. 2015-11-24 00:33:28 -08:00
John-David Dalton
ce6c0f3082 Add array path test for _.zipObject. 2015-11-23 21:48:10 -08:00
John-David Dalton
393849384b Update _.result doc example. [ci skip] 2015-11-23 00:00:49 -08:00
John-David Dalton
618280340f Cleanup function doc descriptions and params. [ci skip] 2015-11-23 00:00:24 -08:00
John-David Dalton
6b77af4e5a Add baseInvokePath. 2015-11-22 23:53:13 -08:00
John-David Dalton
aa8524b8ad Add _.flatMap chain sequence test. 2015-11-22 20:31:02 -08:00
John-David Dalton
87a813566a Expose _.invokePath. 2015-11-21 21:57:54 -08:00
John-David Dalton
73a97d5762 Reword chain sequence to sequence. 2015-11-21 12:20:55 -08:00
John-David Dalton
ce4c6ec755 Add _.flatMap test. 2015-11-21 00:16:23 -08:00
John-David Dalton
21b5139d98 Update fp mapping. 2015-11-21 00:12:23 -08:00
John-David Dalton
7745c91c69 Split _.fromPairs into _.zipObject. 2015-11-21 00:02:08 -08:00
John-David Dalton
bce8f498b4 Update _.map doc note on guarded methods. [ci skip] 2015-11-20 21:58:03 -08:00
John-David Dalton
7eaacc3997 Simplify wrapperReverse docs. [ci skip] 2015-11-20 21:57:40 -08:00
John-David Dalton
c699ff7574 Cleanup wrapperAt. 2015-11-20 21:57:17 -08:00
John-David Dalton
11d8867d7a Add _.flatMap. 2015-11-20 21:56:56 -08:00
greenkeeperio-bot
d4eeb8d186 Update dep packages. 2015-11-20 18:01:06 -08:00
John-David Dalton
a562a20b4e Ensure _.bindKey funcs call object[key] when called with the new operator. 2015-11-20 08:13:58 -08:00
John-David Dalton
3ecf626ad0 Update fp mapping. 2015-11-20 08:13:58 -08:00
John-David Dalton
766c4315e6 Rename _.pairs and _.zipObject to _.toPairs and _.fromPairs. 2015-11-20 08:13:51 -08:00
John-David Dalton
b9f2855034 Rename _.conj, _.disj, and _.juxt to _.overEvery, _.overSome, and _.over. 2015-11-19 08:18:32 -08:00
John-David Dalton
44397f79a6 Rename padLeft, padRight, trimLeft, and trimRight to padStart, padEnd, trimStart, and trimEnd. 2015-11-18 15:52:17 -08:00
John-David Dalton
dcca9b82b1 Add doc note to debounce and throttle about the arguments provided to the invoked func. [ci skip] 2015-11-18 15:52:17 -08:00
John-David Dalton
ecef32a101 Minor travis.yml nit. 2015-11-18 15:52:17 -08:00
John-David Dalton
41d425319c Fix core builds and test them. 2015-11-18 15:52:17 -08:00
John-David Dalton
6a49f227b4 Move sauce enviro var higher in travis.yml. 2015-11-18 15:52:16 -08:00
John-David Dalton
a3ced39b12 Use caret for platform.js dep range. 2015-11-18 15:52:16 -08:00
John-David Dalton
b89045b20f Remove unused case in apply. 2015-11-18 15:52:16 -08:00
John-David Dalton
4e3f3899c4 Add at to the lodash shortcut fusion doc note. [ci skip] 2015-11-18 15:52:16 -08:00
John-David Dalton
a8d865a246 Expose _.join. 2015-11-16 08:13:48 -08:00
John-David Dalton
cad0fbfc4d Ensure _.at works with an out of range index when chaining. 2015-11-15 23:44:46 -08:00
John-David Dalton
45f07d5014 Ensure shortcut fusion works for _.at with no indexes specified. 2015-11-15 23:44:45 -08:00
John-David Dalton
64a7503196 Add lazy at tests to ensure it works with string index values. 2015-11-15 23:44:45 -08:00
John-David Dalton
783c23cbfb Make _.at support shortcut fusion in a chain sequence when operating on an array and selecting a single index. [closes #1636] 2015-11-15 23:44:45 -08:00
John-David Dalton
1c04dfe083 Minor wording nit in test description. [ci skip] 2015-11-15 23:44:45 -08:00
John-David Dalton
59ec97f59f Ensure _.keys and _.keysIn skip "length" keys for strict mode arguments objects in Safari 9. 2015-11-14 13:00:12 -08:00
John-David Dalton
c71d26c7e8 Update lodash paths in test-ui.js and perf-ui.js. 2015-11-14 13:00:12 -08:00
John-David Dalton
88e58aa8f9 Update our CoC. [ci skip] 2015-11-14 13:00:12 -08:00
John-David Dalton
40850f9cda Update core builds. 2015-11-14 13:00:12 -08:00
John-David Dalton
be3afcf668 Ensure correct param order in fp.zip. 2015-11-12 09:56:24 -08:00
John-David Dalton
c1b7679cac Make _.times implicitly end a chain sequence. 2015-11-11 23:37:18 -08:00
John-David Dalton
a370c48d9c Rename wrapper param to wrapFunc. 2015-11-11 23:37:18 -08:00
John-David Dalton
6c0e456a5e Description cleanup for Math methods. [ci skip] 2015-11-11 23:37:18 -08:00
John-David Dalton
ebb993b862 Fix code style nits. 2015-11-10 23:58:50 -08:00
Agus Pina
3408db91b6 Add _.mean. 2015-11-10 23:56:07 -08:00
John-David Dalton
f0e8371997 Simplify function descriptions. [ci skip] 2015-11-10 23:34:53 -08:00
John-David Dalton
55383b9de4 Add apply doc block. [ci skip] 2015-11-10 23:34:20 -08:00
John-David Dalton
5551a8365a Cleanup wrapper functions. 2015-11-10 23:33:27 -08:00
John-David Dalton
87fc16af19 Cleanup createPartialWrapper. 2015-11-10 07:40:16 -08:00
John-David Dalton
80d91b693a Optimize createPartialWrapper. 2015-11-09 23:16:22 -08:00
John-David Dalton
977438309b Remove partials cleanup in createWrapper and move it to bind and bindKey. 2015-11-09 23:15:31 -08:00
John-David Dalton
28b426f19d Move createRecurryWrapper lower in source. 2015-11-09 20:09:30 -08:00
John-David Dalton
d40c5d3de8 Add createSet. 2015-11-09 20:09:25 -08:00
Jason Karns
53702774d0 upport deep paths as keys in _.zipObject. 2015-11-09 08:41:21 -08:00
John-David Dalton
b36e659c56 Avoid a circular dependency in createHybridWrapper. 2015-11-09 07:13:41 -08:00
John-David Dalton
0dcf028592 Split createHybridWrapper into createCurryWrapper and createRecurryWrapper. 2015-11-08 23:22:14 -08:00
John-David Dalton
549918d7f9 Update fp test for zipObject. 2015-11-08 21:04:40 -08:00
John-David Dalton
dcb23f46a4 Add concat to fp mapping. 2015-11-08 21:00:52 -08:00
John-David Dalton
c152ae71e2 Add add and subtract to fp mapping. 2015-11-08 20:56:19 -08:00
John-David Dalton
32cd726bd0 Move _#concat to _.concat. 2015-11-08 20:50:21 -08:00
John-David Dalton
4f104d74ca Rename baseIncludes to arrayIncludes and includesWith to arrayIncludesWith. 2015-11-08 19:43:36 -08:00
John-David Dalton
9c44430975 Rename _.includes param target to value. 2015-11-08 19:42:54 -08:00
John-David Dalton
1309f37a7e Cleanup comparator and iteratee param descriptions. [ci skip] 2015-11-08 19:41:05 -08:00
John-David Dalton
3ed0cc14ea Add subtract to lodash doc block. [ci skip] 2015-11-08 13:35:16 -08:00
John-David Dalton
73a698151f Cleanup _.sortedIndexBy and _.sortedLastIndexBy test. 2015-11-08 12:23:18 -08:00
John-David Dalton
8a3842b788 Ensure _.defaults assigns properties that shadow those on Object.prototype. 2015-11-08 12:16:47 -08:00
John-David Dalton
73d68c9609 Simplify NaN checks in tests. 2015-11-08 12:13:37 -08:00
DARCHY Jeremy
f6d81e1bd8 Add _.subtract. 2015-11-07 22:05:34 -08:00
John-David Dalton
98e607e610 Update ecstatic to 1.2.0, webpack to 1.12.3, & jscs to 2.5.1. 2015-11-06 10:54:22 -08:00
John-David Dalton
a7ec0c2e93 Fix fp alias assignments. 2015-11-05 15:10:28 -06:00
John-David Dalton
0b3e19f56e Use argument in place of parameter for test descriptions. [ci skip] 2015-11-05 15:10:11 -06:00
John-David Dalton
60ac7cfe74 Add conj, disj, and juxt to aryMethodMap. 2015-11-05 15:09:23 -06:00
John-David Dalton
491102f221 Correct arity mapping for _.uniqueId. 2015-11-05 09:09:34 -06:00
Xotic750
9db252e55d Cleanup baseFill. 2015-11-04 23:59:42 -06:00
Xotic750
b9b94609f5 Enhance _.debounce to use toNumber. 2015-11-04 23:19:59 -06:00
Xotic750
fe910d01f6 The_.throttle method uses _.debounce so no coersion of wait required. 2015-11-04 23:13:36 -06:00
Xotic750
ea71539b7a Enhance delay with toNumber to use binary and octal strings. 2015-11-04 14:30:36 -06:00
John-David Dalton
3d9fd1d374 Add fast path for falsey values in _.toInteger, _.toLength, _.toNumber, and _.toSafeInteger. 2015-11-03 07:22:00 -06:00
Xotic750
3eda8e64f3 Enhance createRound by using toNumber to allow binary and octal strings. 2015-11-03 06:22:26 -06:00
Xotic750
ec8ccbcc55 Enhance clamp with toNumber to allow binary and octal strings. 2015-11-03 06:13:10 -06:00
Xotic750
1d58823405 Enhance inRange with toNumber to allow binary and octal strings. 2015-11-03 06:13:10 -06:00
Xotic750
19e0650c4f Enhance random with toNumber to allow binary and octal strings. 2015-11-03 06:13:10 -06:00
Xotic750
f45fc10cb1 Enhance range with toNumber to allow binary and octal strings. 2015-11-03 11:35:33 +01:00
greenkeeperio-bot
42dff0e5fb Update fs-extra to 0.26.2. 2015-11-02 22:03:55 -06:00
John-David Dalton
ee9339e73b Add shortcut fusion heuristic note to lodash docs. [ci skip] 2015-11-02 13:12:44 -06:00
John-David Dalton
611aaa5385 Update doc examples of isInteger, isLength, isNumber, isSafeInteger, toInteger, toLength, toNumber, toSafeInteger, and toString. [ci skip] 2015-11-02 13:12:17 -06:00
Xotic750
e25369a306 Improve documents for _.toString by including examples. [ci skip] 2015-11-02 08:38:15 -08:00
Xotic750
67701944f1 Improve toNumber documentation by including examples. [ci skip] 2015-11-02 08:37:47 -08:00
Xotic750
ecaee16d23 Improve documentation of toLength by including examples. [ci skip] 2015-11-02 08:32:43 -08:00
John-David Dalton
b84c336855 Add _.unary tests. 2015-11-01 17:30:06 -08:00
John-David Dalton
447bafaa5b Add _.differenceWith, _.intersectionWith, _.unionWith, _.uniqWith, and _.xorWith` tests. 2015-11-01 17:15:45 -08:00
John-David Dalton
2f93e0a499 Fix failing test in Node < 0.12. 2015-11-01 15:41:19 -08:00
John-David Dalton
6c2ada9ffc Expose _.unary. 2015-11-01 15:21:50 -08:00
John-David Dalton
982b9d2b0a Use hexadecimal instead of hex for consistency. [ci skip] 2015-11-01 15:01:59 -08:00
John-David Dalton
1fe87d0348 Simplify reIsBinary. 2015-11-01 14:56:55 -08:00
John-David Dalton
8d8d4fa3b1 Use MAX_INTEGER instead of Number.MAX_VALUE. 2015-11-01 14:51:44 -08:00
John-David Dalton
94fb8c6f92 Add toNumber use to _.toInteger. 2015-11-01 14:51:25 -08:00
John-David Dalton
04c7b33f90 Cleanup tests. 2015-11-01 14:03:09 -08:00
John-David Dalton
ae76c3ee71 Cleanup _.toNumber test. 2015-11-01 13:43:38 -08:00
John-David Dalton
7d1e24d07f Update to Node 5 in travis tests. 2015-10-31 14:30:42 -07:00
Xotic750
37955345ef Add _.toNumber. 2015-10-31 14:30:10 -07:00
John-David Dalton
4bc35e9ed4 Remove internal isLength test since it's exposed now. 2015-10-31 12:23:03 -07:00
John-David Dalton
c142cfc81d Add "loosely" qualify to the _.isLength spec note. [ci skip] 2015-10-31 11:01:13 -07:00
John-David Dalton
39a22bf15b Cleanup _.toInteger and max MAX_INTEGER equal to Number.MAX_VALUE. 2015-10-31 10:49:40 -07:00
John-David Dalton
eb636f9538 Cleanup _.toLength tests. 2015-10-31 10:46:48 -07:00
John-David Dalton
8a838633d1 Cleanup lodash, isLength, and toLength docs. [ci skip] 2015-10-31 10:46:32 -07:00
John-David Dalton
963e297c74 Cleanup _.isLengh tests. 2015-10-30 23:01:25 -07:00
John-David Dalton
d95dbf6ba8 Simplify reIsUint. 2015-10-30 22:27:21 -07:00
John-David Dalton
ae032c8523 Cleanup isIndex tests. 2015-10-30 21:57:46 -07:00
Xotic750
2b4a10c159 Expose _.toLength. 2015-10-30 21:41:17 -07:00
Xotic750
c7ef030ef5 Improve reIsUint to filter strings like '0001' and add tests. 2015-10-30 21:41:16 -07:00
Xotic750
7e726735ba Expose _.isLength. 2015-10-30 21:40:53 -07:00
John-David Dalton
3d25b2fd9b Add _.differenceWith, _.intersectionWith, _.unionWith, _.uniqWith, and _.xorWith. 2015-10-30 10:04:10 -07:00
John-David Dalton
96a22aaec0 Make fp convert call noConflict. 2015-10-30 01:01:10 -07:00
greenkeeperio-bot
ccef887f88 Update jscs to 2.5.0. 2015-10-29 11:06:49 -07:00
John-David Dalton
7d9c6527a4 Add and update mutation notes for _.assign and _.assignIn. [ci skip] 2015-10-28 07:43:48 -07:00
John-David Dalton
ef7191dbc1 Move assignIn and assignInWith closer to assign. 2015-10-28 07:40:16 -07:00
John-David Dalton
bc2adb208c Ensure _.toString produces the correct result for Object(-0). 2015-10-28 07:29:20 -07:00
Xotic750
cd371ac66f Preserve sign of 0 in _.toString. 2015-10-28 00:04:15 -07:00
John-David Dalton
9c342eb432 Move _.extend and _.extendWith to alias and add _.assignIn and _.assignInWith. 2015-10-27 16:59:44 -07:00
greenkeeperio-bot
95f5b39aed Update qunitjs to 1.20.0. 2015-10-27 16:35:19 -07:00
John-David Dalton
9ce38cb43c Space nit in test catch block. 2015-10-27 08:37:28 -07:00
John-David Dalton
8b57b3086e Newline nit in _.valuesIn description. [ci skip] 2015-10-27 06:50:38 -07:00
John-David Dalton
3fdec6d25e Add missing comma to baseFind description. [ci skip] 2015-10-27 06:50:37 -07:00
John-David Dalton
557af10067 Add _.functionsIn and _.pairsIn. 2015-10-27 06:50:30 -07:00
John-David Dalton
6b2645b310 Add ramda aliases to fp mapping. 2015-10-27 00:55:01 -07:00
John-David Dalton
c360ee0fa4 Use number values for fp cap mapping. 2015-10-26 21:22:29 -07:00
John-David Dalton
3ac5870530 Run travis in its faster container-based infrastructure. 2015-10-26 15:31:58 -07:00
Xotic750
5218fd2c24 Rename _.trunc to _.truncate. 2015-10-26 15:19:10 -07:00
fdegiuli
accb8e9b07 Fix typo in _.sumBy examples. [ci skip] 2015-10-26 15:18:53 -07:00
greenkeeperio-bot
e331ea5d82 Update async to 1.5.0. 2015-10-25 19:03:25 -07:00
John-David Dalton
ae804b8cc7 Cleanup labels for modified sources tests. 2015-10-25 12:43:28 -07:00
John-David Dalton
66d72345f2 Ensure _.conforms functions return true when comparing an empty source. 2015-10-25 12:42:58 -07:00
John-David Dalton
436d64f881 Update fs-extra to version 0.26.0. 2015-10-25 11:42:19 -07:00
John-David Dalton
c3ec32cc16 Add empty invocation test to string methods test. 2015-10-25 11:42:03 -07:00
John-David Dalton
4b86df4966 Add _.template test for empty strings. 2015-10-25 11:42:03 -07:00
John-David Dalton
9fbf1955f2 Add more _.conforms tests. 2015-10-25 11:42:03 -07:00
John-David Dalton
2008a82017 Add _.conforms test. 2015-10-25 11:42:03 -07:00
John-David Dalton
8c04a00177 Newline nit. 2015-10-25 11:42:02 -07:00
John-David Dalton
8370277352 Move flow tests. 2015-10-25 11:42:02 -07:00
John-David Dalton
89279009d8 Ensure _.defaultsDeep doesn't attempt a merge of a string into an array. [closes #1560] 2015-10-25 11:42:02 -07:00
John-David Dalton
182b29662d Cleanup n to integer tests. 2015-10-24 11:26:50 -07:00
John-David Dalton
8119bcdc61 Add _.nthArg tests. 2015-10-24 11:24:46 -07:00
John-David Dalton
b6d40f75c9 Remove slower ipad run from sauce testing. 2015-10-24 11:11:41 -07:00
John-David Dalton
d9570e8223 Simplify lib/fp/fp.js. 2015-10-24 09:58:01 -07:00
John-David Dalton
3a0fc24a6a Allow _.flow and _.flowRight to accept an array of functions. 2015-10-24 09:08:19 -07:00
John-David Dalton
04879d0fe5 Update fp mapping for nthArg, modArgs, and modArgsSet. 2015-10-24 09:08:11 -07:00
John-David Dalton
0d9b03ced2 Move juxt, flow, and flowRight to the Utility category mapping. 2015-10-24 08:05:27 -07:00
John-David Dalton
7be7acfe30 Add _.nthArg. 2015-10-24 00:38:29 -07:00
John-David Dalton
655f7918ea Add _.conj, _.disj, and _.conforms to the lodash doc block. [ci skip] 2015-10-23 23:52:43 -07:00
John-David Dalton
67e799ccb2 Correct jsdoc param indicators for _.omit and _.pick. [ci skip] 2015-10-23 23:05:22 -07:00
John-David Dalton
4c12319d19 Reclassify _.conj and _.disj to the Utility category. 2015-10-23 23:04:12 -07:00
John-David Dalton
3769719816 Use undefined instead of nullish checks in baseConvert. 2015-10-23 22:13:21 -07:00
John-David Dalton
cc8e4956f5 Clarify docs of _.matches and _.modArgs methods. [ci skip] 2015-10-23 22:12:17 -07:00
John-David Dalton
3ad67c754f Add _.conforms. 2015-10-23 22:08:47 -07:00
John-David Dalton
cabd4198b0 Remove nativeMax and nativeMin use from _.clamp. 2015-10-23 16:25:22 -07:00
John-David Dalton
2bf80673ae Cleanup customizer doc examples. [ci skip] 2015-10-23 16:21:29 -07:00
John-David Dalton
2182e0696d Remove unmatched PATTERN3 in travis.yml. 2015-10-23 10:16:53 -07:00
John-David Dalton
9c44b5c384 Remove commented-out tests from travis.yml. 2015-10-23 10:07:08 -07:00
John-David Dalton
d5f51f2881 Rebuild dist. 2015-10-22 22:58:31 -07:00
John-David Dalton
176e17c45d Cleanup lib/fp/fp.js. 2015-10-22 22:57:33 -07:00
John-David Dalton
7912b08c41 Rename restParam to rest in aryMethodMap. 2015-10-22 22:50:56 -07:00
John-David Dalton
643ffce289 Fix aliasMap typo. 2015-10-22 22:49:56 -07:00
John-David Dalton
0d4d740961 Add fp tests. 2015-10-22 22:49:29 -07:00
John-David Dalton
68473f08d6 Add ./lib files to the jscs style check. 2015-10-22 21:17:59 -07:00
John-David Dalton
6c09a69991 Add clamp to fp mapping. 2015-10-22 21:11:07 -07:00
John-David Dalton
ac16bc0e15 Update build scripts. 2015-10-22 21:06:08 -07:00
John-David Dalton
99287a89eb Update bower.json. 2015-10-22 18:37:01 -07:00
John-David Dalton
e0aaf876c2 Combine _.toInteger and _.toSafeInteger tests. 2015-10-22 17:39:57 -07:00
John-David Dalton
022f79beed Add lodash chaining doc notes for _.clamp and _.toSafeInteger. [ci skip] 2015-10-22 17:35:41 -07:00
John-David Dalton
a6aac88561 Cleanup IEEE-754 doc references. [ci skip] 2015-10-22 17:35:41 -07:00
John-David Dalton
87057095bc Cleanup _.isSafeInteger description. [ci skip] 2015-10-22 17:35:40 -07:00
Xotic750
5afa75ce51 Add _.toSafeInteger. 2015-10-22 17:35:36 -07:00
John-David Dalton
c525598fd9 Add _.clamp test for just passing the max param. 2015-10-22 17:08:45 -07:00
John-David Dalton
f54cfb0ea2 Simplify resolving start in _.range. 2015-10-22 17:08:22 -07:00
John-David Dalton
91fcf837f7 Use strict equality undefined checks instead of nullish param checks in _.random. 2015-10-22 17:07:50 -07:00
John-David Dalton
64e98d897f Update tested browsers in test/saucelabs.js. 2015-10-22 06:24:21 -07:00
John-David Dalton
99a5fcc665 Fix typos in _.clamp test labels. 2015-10-21 22:15:17 -07:00
John-David Dalton
f0c38a6419 Use _.clamp in _.sampleSize, _.endsWith, and _.startsWith. 2015-10-21 22:11:41 -07:00
John-David Dalton
14c2747e80 Make min optional for _.clamp. 2015-10-21 22:10:05 -07:00
John-David Dalton
3ee2a15cde Cleanup test labels for -0. 2015-10-21 22:07:19 -07:00
John-David Dalton
8982578edd Ensure a _.range result can start with -0. 2015-10-21 22:05:29 -07:00
John-David Dalton
5ec6f1085a Ensure _.toInteger can return -0. 2015-10-21 22:04:14 -07:00
John-David Dalton
1513e46605 Use strict undefined comparisons where nullish aren't required. 2015-10-21 20:25:50 -07:00
Xotic750
b95ed73e1d Add _.clamp and tests. 2015-10-21 18:21:36 -07:00
Xotic750
ff22efb3e2 Add doc notes on IEEE 754-2008 and floating-point oddness. [ci skip] 2015-10-21 17:48:21 -07:00
John-David Dalton
35c6db1289 Add flush to debounced methods. 2015-10-21 17:48:01 -07:00
John-David Dalton
602e5d2766 Use 'a' for string tests instead of 'x'. 2015-10-20 22:37:27 -07:00
John-David Dalton
247c4f1068 Add identity helper to tests. 2015-10-20 22:10:33 -07:00
John-David Dalton
bdb5e4642f Add fp files. 2015-10-20 21:43:42 -07:00
John-David Dalton
661e9b08b6 Update jscs to version 2.3.5 and update istanbul to version 0.4.0. 2015-10-19 21:04:17 -07:00
John-David Dalton
fdf6478bc9 Use helper methods from the stable lodash release to test unstable bits. 2015-10-19 20:59:12 -07:00
John-David Dalton
10229cd332 Rename npm script from lint to style. 2015-10-19 20:57:12 -07:00
Kris Borchers
33e2499006 Fix JSCS name typo in CONTRIBUTING.md. 2015-10-19 20:57:12 -07:00
sfinktah
6ae58e74c7 Changed references to _.include to _.includes. 2015-10-16 13:10:44 -04:00
Mathias Bynens
689b292c24 Add _.lowerCase, _.lowerFirst, _.toLower, _.toUpper, _.upperCase, _.upperFirst tests. 2015-10-16 13:10:00 -04:00
John-David Dalton
f6a4ab62b8 Add _.toPath test for consecutive brackets and dots. 2015-10-15 06:08:30 -07:00
John-David Dalton
e197884e07 Add _.upperFirst and _.lowerFirst. 2015-10-15 04:09:01 -07:00
John-David Dalton
ba095d11cc Use an MDN url shortener. [ci skip] 2015-10-14 23:24:41 -07:00
John-David Dalton
e22cb5f3b3 Rename _.first to _.head, _.rest to _.tail, & _.restParam to _.rest. 2015-10-14 17:55:01 -07:00
greenkeeperio-bot
da993ee48d Update requirejs to version 2.1.20 and jscs to version 2.3.1. 2015-10-14 17:25:02 -07:00
John-David Dalton
9458759810 Change n params to number where appropriate. 2015-10-13 22:48:46 -07:00
Tejo Kumar Reddy Chenchu
dd27a0adc7 Fix rounding issue with the precision param of _.floor. 2015-10-13 22:42:36 -07:00
John-David Dalton
3fd276f8a6 Change version to 4.0.0-pre. 2015-10-13 09:43:11 -07:00
John-David Dalton
33f454bb75 Correct the jsdoc @name tag of the chain wrapper Symbol.iterator function. [ci skip] 2015-10-13 06:20:19 -07:00
John-David Dalton
1fd5d501b0 Ensure dummy exports and module are reset. 2015-10-13 00:38:16 -07:00
John-David Dalton
e4220282c8 Add _.conj and _.disj test for early exits. 2015-10-12 23:23:51 -07:00
Miro Mannino
6dec9cb831 Clarify exit early behavior in _.every doc and refine related test. 2015-10-12 23:23:03 -07:00
greenkeeperio-bot
1ad55ec263 Update coveralls to version 2.11.4. 2015-10-12 09:30:20 -07:00
John-David Dalton
96f5dbfccf Add bizarro _.memoize.Cache test. 2015-10-12 06:57:33 -07:00
John-David Dalton
fd2aa1f51c Add docdown dev dep. 2015-10-12 06:57:33 -07:00
John-David Dalton
74137d4eab Fix _.differenceBy doc example. [ci skip] 2015-10-12 06:57:33 -07:00
John-David Dalton
02398e319d Update lodash chaining doc notes. [ci skip] 2015-10-12 06:57:27 -07:00
John-David Dalton
32d6a04107 Use array.pop() instead of array.length-- in _.zipWith. 2015-10-11 23:31:04 -07:00
John-David Dalton
6bff374e91 Ensure _.intersectionBy doesn't treat iteratee as an empty array. 2015-10-11 23:31:04 -07:00
John-David Dalton
18b5cb24c2 Ensure baseIntersection doesn't transform array. 2015-10-11 23:31:04 -07:00
John-David Dalton
04e8ca771b Add _.differenceBy, _.intersectionBy, _.pullAllBy, _.unionBy, and _.xorBy tests. 2015-10-11 23:31:04 -07:00
John-David Dalton
174f771612 Add _.reverse test. 2015-10-11 21:34:50 -07:00
John-David Dalton
4f0a5e937b Add _.juxt tests. 2015-10-11 21:22:50 -07:00
John-David Dalton
505f02fd72 Expose _.reverse. 2015-10-11 17:05:25 -07:00
John-David Dalton
a6c7ffd664 Update istanbul to version 0.3.22 and request to version 2.65.0. 2015-10-11 17:03:55 -07:00
John-David Dalton
a08d52eb48 Ensure _.defaultsDeep doesn't modify sources. 2015-10-11 01:39:30 -07:00
John-David Dalton
414ad602f2 Add more tests for _.differenceBy, _.intersectionBy, _.unionBy, and _.xorBy. 2015-10-10 17:50:05 -07:00
greenkeeperio-bot
e961505e0a Update chalk to version 1.1.1 and ecstatic to v1.1.3. 2015-10-10 13:49:13 -07:00
John-David Dalton
59278a7a85 Reduce baseExtremum. 2015-10-09 12:59:14 -07:00
John-David Dalton
adaf6d7955 Tighten reBasicWord and reHasComplexWord. 2015-10-09 08:44:31 -07:00
greenkeeperio-bot
f6624bf270 Update request to version 2.64.0. 2015-10-09 08:03:57 -07:00
John-David Dalton
cdf03228c2 Minor test label nit of param to argument. 2015-10-08 23:41:49 -07:00
John-David Dalton
1fd710e88d Add _.word tests. 2015-10-08 23:41:43 -07:00
John-David Dalton
dc2e760b5a Add reHasComplexWord checks. 2015-10-08 23:31:52 -07:00
John-David Dalton
150bd32f97 Add _.toLower and _.toUpper. 2015-10-08 21:50:30 -07:00
John-David Dalton
d9fc0f1e37 Move dev deps in travis.yml to package.json. 2015-10-08 16:22:26 -07:00
John-David Dalton
e2c7e3a107 Avoid require in comments. [ci skip] 2015-10-08 10:45:46 -07:00
John-David Dalton
4995aa0298 Add a couple more math op chars in the latin-1 block for completeness. 2015-10-08 09:14:48 -07:00
John-David Dalton
54b774e481 Update _.lowerCase and _.upperCase doc examples. [ci skip] 2015-10-08 00:00:00 -07:00
John-David Dalton
c85095d53f Remove unused functions, vars, and params. 2015-10-07 23:54:33 -07:00
John-David Dalton
8132ed52fd Rename var rsJoiner to rsOptJoin to align with others. 2015-10-07 23:22:41 -07:00
John-David Dalton
eb723422c1 Update reWords detection. 2015-10-07 23:09:51 -07:00
John-David Dalton
051e5a6308 Clear args and thisArg in debounce cancel. 2015-10-07 13:21:52 -07:00
John-David Dalton
2d3e64b51a Correct _.pullAllBy doc example. [ci skip] 2015-10-07 00:23:02 -07:00
John-David Dalton
a21b25f751 Add _.differenceBy, _.intersectionBy, _.pickAllBy, _.unionBy, and _.xorBy tests. 2015-10-07 00:18:42 -07:00
John-David Dalton
1d425b1731 Make MapCache, SetCache, and Stack add values left to right. 2015-10-06 23:16:56 -07:00
John-David Dalton
141630f557 Add more MapCache and Stack tests. 2015-10-06 23:16:02 -07:00
John-David Dalton
9fd48bab69 Add bizarro Map tests. 2015-10-06 22:29:24 -07:00
John-David Dalton
f880e39838 Clarify bug comment of baseHas. [ci skip] 2015-10-06 20:11:31 -07:00
John-David Dalton
afb66f4b8a Remove unnecessary Map tests. 2015-10-06 19:53:01 -07:00
John-David Dalton
7e09802565 Reorganize clone tests. 2015-10-06 19:52:25 -07:00
John-David Dalton
a8b3833580 Add Stack test. 2015-10-06 19:51:25 -07:00
John-David Dalton
bf1bcaf394 Add _.cloneDeep test for objects with lots of circular references. 2015-10-06 08:16:22 -07:00
John-David Dalton
7b61569d32 Add bizarro tests for Object.create. 2015-10-06 08:15:07 -07:00
John-David Dalton
9c27ed8bda Remove nullish checks from baseHas and baseHasIn. 2015-10-06 07:07:49 -07:00
John-David Dalton
c9cb64ac10 Remove shim script tag in test/backbone.html. 2015-10-05 23:34:36 -07:00
John-David Dalton
4bd5122462 Update excused Underscore tests. 2015-10-05 23:34:16 -07:00
John-David Dalton
4dac4328e6 Minor whitespace nit in toPath doc example. 2015-10-05 21:57:04 -07:00
John-David Dalton
f7a857744f No longer coerce values to integers in add, max, min, or sum methods. 2015-10-05 21:56:32 -07:00
Droogans
6725e7dc49 Add _.upperCase and _.lowerCase. 2015-10-05 21:32:25 -07:00
John-David Dalton
7da4ea5ecb Simplify _.isFunction. 2015-10-05 11:06:49 -07:00
John-David Dalton
6d5c6b2de7 Optimize _.intersection and _.intersectionBy for empty arrays. 2015-10-05 10:53:41 -07:00
John-David Dalton
ed462747bf Minor ternary formatting. 2015-10-05 10:52:58 -07:00
John-David Dalton
53b37ca98f Use isObjectLike insteadof isObject in isArrayLikeObject. 2015-10-05 07:18:32 -07:00
John-David Dalton
423320f235 Remove unused variable push. 2015-10-05 07:18:13 -07:00
John-David Dalton
020a8c864f Adjust docs param descriptions and examples for xyzBy methods. [ci skip] 2015-10-04 23:00:50 -07:00
John-David Dalton
69e6389369 Add _.differenceBy, _.intersectionBy, _.isArrayLikeObject, _.pullAllBy, _.unionBy, and _.xorBy. 2015-10-04 23:00:30 -07:00
John-David Dalton
0eaa10f578 Adjust stackSet array length check to be consistent with others like it. 2015-10-04 21:39:43 -07:00
John-David Dalton
2740dc5efa Move assocIndexOf closer to other assoc functions. 2015-10-04 14:40:00 -07:00
John-David Dalton
592824781c Make isArrayLike use isFunction. 2015-10-04 14:09:25 -07:00
John-David Dalton
4bef0e21e7 Create getTag helper. 2015-10-04 14:04:49 -07:00
John-David Dalton
7d7ce728ff Fix npm builds. 2015-10-04 00:17:05 -07:00
John-David Dalton
27159cfa00 Move Hash definition above MapCache. 2015-10-03 22:51:56 -07:00
John-David Dalton
d236e37652 Add Stack helpers. 2015-10-03 22:41:06 -07:00
John-David Dalton
940559fc76 Optimize cacheIndexOf, cachePush, and isKeyable. 2015-10-03 16:27:21 -07:00
John-David Dalton
5746169aec Replace createHash with a Hash constructor. 2015-10-03 11:42:30 -07:00
John-David Dalton
4aa6fdeb2a Move assoc and hash functions closer together. 2015-10-01 23:20:32 -07:00
John-David Dalton
77ab121c30 Cleanup bizarro scaffolding in test/test.js. 2015-10-01 22:34:33 -07:00
John-David Dalton
9558048906 Avoid a hasOwnProperty bug in IE 10-11 where objects with a [[Prototype]] of null incorrectly report false for own index properties. 2015-10-01 22:22:05 -07:00
John-David Dalton
b3f6426d36 Add assoc and hash helpers. 2015-10-01 22:21:58 -07:00
John-David Dalton
d407d8aa08 Ensure _.isFunction returns true for generator functions. [closes #1498] 2015-10-01 09:00:00 -07:00
John-David Dalton
8842fa209d Swap createWrapper with alternatives in _.bindAll and _.wrap. 2015-10-01 08:22:12 -07:00
John-David Dalton
bc252228e1 Add bizarro Map. 2015-09-30 23:08:11 -07:00
John-David Dalton
1b3cb0f184 Combine MemCache and Stack into MapCache. 2015-09-30 23:07:03 -07:00
John-David Dalton
f607c671f8 Add a Stack cache helper to avoid linear search of stacks in modern environments. 2015-09-30 20:46:18 -07:00
John-David Dalton
8f431cff52 Cleanup _.every and _.some tests. 2015-09-29 08:16:36 -07:00
John-David Dalton
6a81a7ba8e Add _.conj and _.disj tests. 2015-09-29 08:16:23 -07:00
John-David Dalton
1f713ed9d1 Add more wrapper tests. 2015-09-27 23:01:46 -07:00
John-David Dalton
2cb4829536 Make _.words chainable by default. 2015-09-27 23:01:46 -07:00
John-David Dalton
48d5110b5d Remove wrapperToString. 2015-09-27 23:01:46 -07:00
John-David Dalton
68a5e2017e Make _.drop, _.dropRight, _.take, _.takeRight coerce n of undefined to 0. 2015-09-27 23:01:46 -07:00
John-David Dalton
63c46a9aca Minor space nit in test/test.js. [ci skip] 2015-09-27 23:01:45 -07:00
John-David Dalton
528bec0bb1 Add _.sampleSize. 2015-09-27 23:01:40 -07:00
John-David Dalton
9c79cb7766 Add _.pullAll. 2015-09-27 16:33:10 -07:00
John-David Dalton
38ac518095 Add _#toString test for nullish values. 2015-09-27 10:03:43 -07:00
John-David Dalton
7488068d50 Add support for combining diacritical marks to _.toArray. 2015-09-25 22:27:31 -07:00
John-David Dalton
8e207196d3 Expose _.toString. 2015-09-25 19:51:41 -07:00
John-David Dalton
9c35db38a0 Exit early in baseToString if value is already a string. 2015-09-25 16:28:13 -07:00
John-David Dalton
2087736649 Add support for unicode modifiers. 2015-09-25 01:26:15 -07:00
Tim Ruffles
dd75deb27f Clarify the order in which sources are applied in docs of _.assign, _.defaults, and _.merge. [ci skip] 2015-09-24 08:21:57 -07:00
John-David Dalton
5f42a3d4db Minor createInvoker param description nit. [ci skip] 2015-09-24 00:56:17 -07:00
John-David Dalton
a569b723c5 Use getIteratee in createModArgs. 2015-09-23 23:53:50 -07:00
John-David Dalton
ee2078f3ea Add _.conj, _.disj, & _.juxt. 2015-09-23 22:45:55 -07:00
John-David Dalton
12af298e33 Cleanup doc descriptions for _.modArgs and _.modArgsSet. [ci skip] 2015-09-23 22:45:35 -07:00
John-David Dalton
0429f27c54 Cleanup doc examples for lodash and _.map. [ci skip] 2015-09-23 22:44:53 -07:00
John-David Dalton
5026f51dfd Add accumulator doc note to _.unzipWith and _.zipWith. [closes #1484] [ci skip] 2015-09-23 19:34:07 -07:00
Thomas Reggi
80abaafcae Fix typo "occurence" to "occurrence". [ci skip] 2015-09-23 19:05:19 -07:00
Anderson Aguiar
bc651e886d Fix typo in comment 2015-09-22 22:06:00 -03:00
John-David Dalton
ba9cfc3b26 Clarify baseToString and other converter method docs. [ci skip] 2015-09-22 00:35:24 -07:00
John-David Dalton
b5bbc18c89 Add _#next test for _.toArray results. 2015-09-20 17:09:48 -07:00
John-David Dalton
e35088f9e3 Add dingbat support to _.words. 2015-09-20 12:58:17 -07:00
John-David Dalton
1c3b325633 Cleanup astral tests. 2015-09-20 12:57:40 -07:00
John-David Dalton
0415701e50 Add tests for variation selectors. 2015-09-20 11:59:29 -07:00
John-David Dalton
cfe813fa08 Add regional indicator tests. 2015-09-20 11:59:23 -07:00
John-David Dalton
f4ff336636 Add _.trunc tests for astrals as separators. 2015-09-20 11:58:24 -07:00
John-David Dalton
a4b333ceb8 Use _.toArray in wrapperNext. 2015-09-19 10:34:14 -07:00
John-David Dalton
f029d7c943 Add support for variation selectors. 2015-09-19 10:34:14 -07:00
John-David Dalton
53bf94ce78 Expand existing support for zero-width-joiners. 2015-09-18 15:30:12 -07:00
John-David Dalton
406e36977e Add support for regional indicator symbols and zero-width-joiners. 2015-09-18 01:28:31 -07:00
John-David Dalton
98ee746ada Move _.isArguments checks further down. 2015-09-16 19:11:52 -07:00
John-David Dalton
9e0a22f771 Cleanup and formatting pass. 2015-09-16 19:10:19 -07:00
John-David Dalton
14e62ae8d2 Make _.isString use _.isArray to reduce usage patterns. 2015-09-16 19:09:16 -07:00
John-David Dalton
1162d2edd5 Update _.toInteger test to ensure proper rounding. 2015-09-16 08:33:56 -07:00
John-David Dalton
a84e44b2a3 Use MAX_ARRAY_LENGTH instead of INFINITY for the default __takeCount__ value. 2015-09-15 23:48:36 -07:00
John-David Dalton
cd4f278a16 Add _.toInteger test for negative floats. 2015-09-15 23:45:25 -07:00
John-David Dalton
c7f34e74ac Add _.isInteger and _.isSafeInteger tests. 2015-09-15 23:42:15 -07:00
John-David Dalton
00d26a6419 Attempt again to ensure again _.toInteger converts Infinity to an integer. 2015-09-15 23:41:53 -07:00
John-David Dalton
eb57e522aa Cleanup isXyz tests. 2015-09-15 23:38:36 -07:00
John-David Dalton
e9230463e8 Fix host object tests for _.isInteger and _.isSafeInteger. 2015-09-15 22:08:51 -07:00
John-David Dalton
d652f144b2 Continue astral symbol support in _.trunc. 2015-09-15 20:40:49 -07:00
John-David Dalton
e04a512c4c Update _.isFinite doc examples. [ci skip] 2015-09-15 20:39:51 -07:00
John-David Dalton
c276278767 Use stringToArray more in _.trimLeft and _.trimRight. 2015-09-15 20:39:31 -07:00
John-David Dalton
2e248d1ca8 Ensure _.toInteger converts Infinity to an integer. 2015-09-15 20:37:53 -07:00
John-David Dalton
a5df55a6e7 Update constant references. 2015-09-15 20:36:35 -07:00
John-David Dalton
f7e05e438e Avoid creating an array in stringSize. 2015-09-15 20:34:11 -07:00
John-David Dalton
49266dce89 Add _.isInteger and _.isSafeInteger. 2015-09-15 20:33:36 -07:00
John-David Dalton
3a81738455 Collapse ranges. 2015-09-15 01:09:47 -07:00
John-David Dalton
a4ff501bb1 Add _.toArray test for empty strings. 2015-09-15 00:41:03 -07:00
John-David Dalton
351c131764 Use more stringToArray. 2015-09-15 00:34:42 -07:00
John-David Dalton
799fcb354b Pass style linting. 2015-09-15 00:23:54 -07:00
John-David Dalton
16a29659b3 Add tests for lone surrogates. 2015-09-15 00:02:45 -07:00
John-David Dalton
55ef0f12cc Rework charsLeftIndex and charsRightIndex to pass tests. 2015-09-14 23:45:18 -07:00
John-David Dalton
925c489cf9 Add more astral symbol tests. 2015-09-14 22:47:06 -07:00
John-David Dalton
3f57236c19 Cleanup charsLeftIndex, charsRightIndex, capitalize, and trim methods. 2015-09-14 21:06:28 -07:00
John-David Dalton
b4dd21fc64 First pass at astral symbols tests. 2015-09-14 18:10:11 -07:00
John-David Dalton
8278b1e79f Make _.startCase use _.capitalize. 2015-09-14 18:03:32 -07:00
John-David Dalton
c313f0c135 Minor cleanup to reWords. 2015-09-14 13:24:06 -07:00
John-David Dalton
e9bfaa7d51 Add support for astral symbols to _.camelCase, _.capitalize, _.startCase, and _.words. 2015-09-14 10:38:00 -07:00
John-David Dalton
0ae254d6b4 Add stringToArray helper. 2015-09-14 08:21:48 -07:00
John-David Dalton
bbc7b0b59b Move _.repeat empty string check to the left. 2015-09-14 01:09:54 -07:00
John-David Dalton
7f284d6ed5 Reduce _.forEach iteration note. [ci skip] 2015-09-14 01:09:04 -07:00
John-David Dalton
4744f93a47 Remove unneeded _.runInContext comment block. [ci skip] 2015-09-14 01:07:51 -07:00
John-David Dalton
a2fe87a63a Make regexp var name singular. 2015-09-14 01:07:12 -07:00
John-David Dalton
fa61e30dd5 Add support for astral symbols in string methods. [closes #1463] 2015-09-14 01:06:40 -07:00
John-David Dalton
0fb94ad3c6 Minor formatting nit. 2015-09-13 22:08:14 -07:00
John-David Dalton
33a73fb0c4 Cleanup other realm tests. 2015-09-13 22:08:08 -07:00
John-David Dalton
a61eeeaa03 Minor formatting cleanup in travis.yml. 2015-09-13 10:19:49 -07:00
John-David Dalton
80f6990a43 Remove value guards in baseDifference and baseSortedUniqBy. 2015-09-12 22:29:19 -07:00
John-David Dalton
0d5f8437f5 Indentation nit in baseTimes. 2015-09-12 22:28:46 -07:00
John-David Dalton
5e968deb4e Add more source replacements to travis.yml. 2015-09-12 20:52:40 -07:00
John-David Dalton
ac1ffa2efe Cleanup _.merge tests. 2015-09-12 09:53:30 -07:00
John-David Dalton
ed2e6d16c8 Add more _.merge tests for arguments. 2015-09-12 09:53:30 -07:00
John-David Dalton
dafe807888 Ensure _.merge doesn't modify array/typed-array/plain-object source values. 2015-09-12 09:53:25 -07:00
John-David Dalton
1320706172 Make _.merge source object assignments align with source array assignments. 2015-09-12 00:00:13 -07:00
John-David Dalton
fb4cf9e78f Cleanup _.assign and _.extend docs. [ci skip] 2015-09-11 23:47:32 -07:00
Rhys van der Waerden
8cbb8befd4 Clarify _.merge description. [ci skip]
Mention behaviour difference between merging plain objects and objects with non-Object prototypes. As discussed in #1455.
2015-09-11 23:46:27 -07:00
John-David Dalton
aa303df387 Update core builds. 2015-09-11 18:25:03 -07:00
John-David Dalton
e42d29611c Ensure wrapper actions are copied in wrapperClone. 2015-09-11 18:22:34 -07:00
John-David Dalton
a5213f1291 Add strict equal fast path for object comparisons in equalObjects. 2015-09-11 18:03:20 -07:00
John-David Dalton
875dfec570 Add tag checks back to baseIsEqualDeep. 2015-09-11 18:02:49 -07:00
John-David Dalton
6edde288ee Add requireDotNotation rule to jscsrc. 2015-09-11 18:02:19 -07:00
John-David Dalton
a6ead18121 Avoid deep crawl if object and source are strict equal. 2015-09-11 12:57:34 -07:00
John-David Dalton
7245570405 Cleanup, organize, and group jscs rules. 2015-09-11 00:26:05 -07:00
John-David Dalton
38a37f1b18 Use === in _.isEqual doc example. [ci skip] 2015-09-10 19:08:07 -07:00
John-David Dalton
5c98ab4b8f Simplify doc examples that use Math methods. [ci skip] 2015-09-10 19:07:37 -07:00
John-David Dalton
5ddb1ef76d Remove duplicate jsdoc param from equalObjects docs. [ci skip] 2015-09-10 19:06:56 -07:00
John-David Dalton
8b320f913d Remove unneeded type check from createRound. 2015-09-10 19:06:08 -07:00
John-David Dalton
8e0011d07a Ensure clone methods create maps and sets from other realms. 2015-09-10 19:05:25 -07:00
John-David Dalton
e50734a6fb Update jscs rules. 2015-09-10 19:03:53 -07:00
John-David Dalton
307dae4fac Adjust _.omit and _.pickBy doc examples to show more of a difference between them. [ci skip] 2015-09-10 07:38:56 -07:00
John-David Dalton
d8c5f85cd2 Add _.modArgsSet tests. 2015-09-09 23:45:37 -07:00
John-David Dalton
94c95469e1 Minor test cleanup. 2015-09-09 22:59:37 -07:00
John-David Dalton
e8244f7f07 Adjust property descriptors in tests. 2015-09-09 22:59:37 -07:00
John-David Dalton
a48f48ca95 Ensure _.merge skips merging when object and source are the same value. 2015-09-09 22:59:29 -07:00
John-David Dalton
4a4e54479a Ensure _.merge assigns typed arrays directly. [closes #1453] 2015-09-09 22:10:23 -07:00
John-David Dalton
86d06e0a4c Cleanup _.merge tests. 2015-09-09 22:09:10 -07:00
John-David Dalton
9b41ae847b Consolidate this binding tests. 2015-09-09 20:44:58 -07:00
Ilya Mochalov
012cc521f5 Minor _.plant doc fix. [ci skip] 2015-09-09 18:11:40 -07:00
John-David Dalton
20695548f1 Use more pre-QUnit 2.0 APIs. 2015-09-09 18:05:48 -07:00
John-David Dalton
d77c5123c1 Add _.flip and _.modArgsSet to lodash doc note. [ci skip] 2015-09-09 10:34:50 -07:00
John-David Dalton
c32a6837e6 Update _.flip doc example and test to better show effect. 2015-09-09 10:29:43 -07:00
John-David Dalton
c604be31e0 Add _.flip test. 2015-09-09 08:31:28 -07:00
John-David Dalton
0a08edb6d7 Remove second _.rearg example. [ci skip] 2015-09-09 08:31:19 -07:00
John-David Dalton
4d7aeb8b96 Don't flip if there's less than 2 arguments. 2015-09-09 08:31:03 -07:00
John-David Dalton
6b09f1f233 Remove iojs from travis-yml tests. 2015-09-08 22:51:46 -07:00
Phillip Alexander
7364c84b6b Add Node.js v4 stable to Travis config.
NodeJS v4 was just released [NodeJS v4 announcement](https://nodejs.org/en/blog/release/v4.0.0/). This updates the CI build script to accommodate the release. Note: It should be "4", not "4.0" since Node will surely get a lot of minor updates before it goes LTS and reveal.js should test on the latest of them.
2015-09-08 22:49:16 -07:00
John-David Dalton
02a28d565b Add _.flip. [closes #1449] 2015-09-08 22:48:37 -07:00
John-David Dalton
2ac6e31cc3 Update QUnit to 1.19.0. 2015-09-08 22:34:19 -07:00
John-David Dalton
8bad4ae636 Rename multiValue param to multiVal. [ci skip] 2015-09-07 23:35:06 -07:00
John-David Dalton
f0010ea3a8 Add additional guard to isCombo check in mergeData. 2015-09-07 23:32:16 -07:00
John-David Dalton
f86bff3bf7 Minor _.modArgsSet doc example tweak. [ci skip] 2015-09-07 22:29:13 -07:00
John-David Dalton
99b0094dcd Minor code style nit in tests. [ci skip] 2015-09-07 22:14:20 -07:00
John-David Dalton
db86a6ff1c Simplify _.isMatch set test. 2015-09-07 22:05:44 -07:00
John-David Dalton
cbc188916d Fix typo and fail in _.isMatch test. 2015-09-07 21:59:57 -07:00
John-David Dalton
2f411230c5 Add _.isEqualWith and _.isMatchWith tests for maps and sets. 2015-09-07 21:36:49 -07:00
John-David Dalton
b9c8c877b7 Minor contributing text nit, new methods to functions. [ci skip] 2015-09-07 20:37:07 -07:00
John-David Dalton
13e4ba622e Add code of conduct doc. [ci skip] 2015-09-07 20:33:15 -07:00
John-David Dalton
7863256de5 Add map and set guards to tests to fix travis runs. 2015-09-06 22:41:07 -07:00
John-David Dalton
d81e029ec0 Add _.isMatchWith tests. 2015-09-06 22:32:09 -07:00
John-David Dalton
f6500eafb6 Cleanup _.isMatch tests. 2015-09-06 22:31:39 -07:00
John-David Dalton
9da03f529f Ensure equalByTag passing customizer to equalFunc. 2015-09-06 21:05:05 -07:00
John-David Dalton
1e1e4fd557 Add _.matches and _.matchesProperty tests for partial matching maps and sets. 2015-09-06 20:42:15 -07:00
John-David Dalton
08f8e659fd Cleanup _.matches and _.matchesProperty tests. 2015-09-06 20:35:43 -07:00
John-David Dalton
fc69fe1f21 Use map.size and set.size in mapToArray and setToArray. 2015-09-06 18:00:28 -07:00
John-David Dalton
38a16805ed Optimize map and set comparisons in _.isEqual. 2015-09-06 17:01:17 -07:00
John-David Dalton
dfd4ae9ea4 Add _.modArgsSet. 2015-09-05 22:29:38 -07:00
John-David Dalton
5c9585b2b0 Ensure correct execution order of _.modArgs transforms. 2015-09-05 22:29:11 -07:00
John-David Dalton
dc2e769d9a Ensure _.toPath converts array values to strings. 2015-09-05 11:25:06 -07:00
John-David Dalton
15a4fb7adf Add _.toPath tests. 2015-09-05 10:00:21 -07:00
John-David Dalton
7bb10d56f8 Add _.toPath doc examples. [ci skip] 2015-09-05 10:00:08 -07:00
John-David Dalton
650282b186 Add console.logs to doc examples. [ci skip] 2015-09-05 09:59:38 -07:00
John-David Dalton
ded3cfc251 Add _.toInteger tests. 2015-09-05 09:31:37 -07:00
John-David Dalton
a4fee3a3ad Add _.isObjectLike tests. 2015-09-05 09:26:09 -07:00
John-David Dalton
58d7404ee4 Add a _.memoize test for the this binding of resolver. 2015-09-05 09:14:38 -07:00
John-David Dalton
556eee8563 Use a create function helper for modArgs. 2015-09-05 09:04:46 -07:00
John-David Dalton
1422f50ee9 Remove isStrict guards from tests. 2015-09-05 01:05:39 -07:00
Philippe Lhoste
1be4adf365 Improve documentation for method chaining. [ci skip] 2015-09-05 01:05:39 -07:00
John-David Dalton
4510ada21e Update lodash doc block. [ci skip] 2015-09-05 01:05:39 -07:00
John-David Dalton
e516d99b2d Expose _.toInteger. 2015-09-04 08:35:36 -07:00
John-David Dalton
b534b83756 Fix failing tests in strict mode. 2015-09-04 01:02:47 -07:00
John-David Dalton
41b537249b Expose _.isObjectLike and _.toPath. 2015-09-04 00:55:34 -07:00
John-David Dalton
4a87acf1ac Remove "Number" and "String" from contextProps. 2015-09-04 00:55:16 -07:00
John-David Dalton
41d3b66867 Move NEGATIVE_INFINITY and POSITIVE_INFINITY out of runInContext. 2015-09-04 00:36:34 -07:00
John-David Dalton
3ef7ae24e5 Expose _.isArrayLike. 2015-09-03 22:08:02 -07:00
John-David Dalton
824d3b75f9 Add Safari 8.1 note to _.isArguments. [ci skip] 2015-09-03 20:05:39 -07:00
John-David Dalton
38a802fed3 Fix _.isArguments in Safari 8.1. 2015-09-03 19:53:11 -07:00
John-David Dalton
ee776fd0de Add IE11 note to noMapSetTag definition. [ci skip] 2015-09-03 19:53:11 -07:00
John-David Dalton
a1f29d8f4a Cleanup get/set/unset tests. 2015-09-03 18:28:57 -07:00
John-David Dalton
3e42a817a1 Fix failing map/set tests in IE11. 2015-09-03 15:22:21 -07:00
John-David Dalton
617dd703e1 Soften language on isXyz methods that use duck typing. [ci skip] 2015-09-03 15:22:21 -07:00
John-David Dalton
e63d7ff9d5 Rename var initFromArray to initFromCollection in _.reduce and _.reduceRight. 2015-09-03 15:21:12 -07:00
Ray Hammond
7e73b27edf Updated contributing text to include code style linter details. [ci skip] 2015-09-03 12:54:47 -07:00
Michał Lipiński
6898b896d1 Add _.unset. 2015-09-03 09:28:06 -07:00
John-David Dalton
085e2c24d3 Remove weakmap and set shims. 2015-09-03 09:18:10 -07:00
John-David Dalton
cc77eb7855 Change augment to modify. [ci skip] 2015-09-03 09:06:16 -07:00
John-David Dalton
8e9f9f6f2f Detect maps and sets in IE11. 2015-09-03 09:02:33 -07:00
John-David Dalton
51006e8304 Tweak test try-catch style to be consistent with lodash. 2015-09-03 08:22:33 -07:00
Ray Hammond
fce2bd89c7 Added jscs code style checker. 2015-09-03 08:19:41 -07:00
John-David Dalton
830be3d918 Add strict mode test for _.isArguments. 2015-09-02 22:56:25 -07:00
John-David Dalton
0926e5a986 Fix test errors in IE9. 2015-09-02 16:59:42 -07:00
Ray Hammond
b61411956c Missing semicolon linting fixes to test.js. 2015-09-02 11:44:23 -07:00
John-David Dalton
5648fe940c Add MS Edge testing with saucelabs. 2015-09-02 08:45:44 -07:00
Ray Hammond
57ad32448f Added missing semicolon. 2015-09-02 08:45:34 -07:00
John-David Dalton
b4db3c050d Ensure _.isEqual performs unordered comparisons of maps and sets. 2015-09-01 21:50:28 -07:00
John-David Dalton
3f954ca790 Add _.isEqual tests for maps and sets. 2015-09-01 01:17:15 -07:00
John-David Dalton
6e0174e879 Cleanup _.isEqual tests. 2015-09-01 00:46:55 -07:00
John-David Dalton
e4873f1982 Add map and set tests for clone methods. 2015-09-01 00:37:37 -07:00
John-David Dalton
3d35817a2f Add _.toArray tests for ES6 iterables. 2015-09-01 00:23:08 -07:00
John-David Dalton
8c6aef3edb Cleanup newlines and semicolons. 2015-08-31 23:32:07 -07:00
John-David Dalton
5fd8939b7d Add Symbol.iterator guards to tests. 2015-08-31 19:40:32 -07:00
John-David Dalton
4c1b578b80 Add _#plant test for cloned chainAll settings. 2015-08-31 19:16:00 -07:00
John-David Dalton
f6bf81d16f More test cleanup. 2015-08-31 19:11:29 -07:00
John-David Dalton
2d8cc57642 Ensure _#plant resets iterator data of the cloned sequence. 2015-08-31 18:47:37 -07:00
John-David Dalton
3b131f0231 Add coverage for wrapped[Symbol.iterator]. 2015-08-31 18:04:07 -07:00
John-David Dalton
202ce472bb Cleanup tests. 2015-08-31 17:54:06 -07:00
John-David Dalton
7206edec2e Cleanup .next tests. 2015-08-31 17:52:32 -07:00
John-David Dalton
9e86efadbc Make the chain wrapper iterable. 2015-08-30 23:40:34 -07:00
Graeme Yeates
433331adac Add ES6 compliant lodash(...).next() iterator. 2015-08-30 22:47:32 -07:00
John-David Dalton
a0cd024b39 Add checks to iteratorSymbol assignment. 2015-08-30 10:09:28 -07:00
John-David Dalton
4fbb31b4dc Adjust Set references to fix the build. 2015-08-30 09:59:19 -07:00
John-David Dalton
09bcc5aaec Move more functions out of runInContext. 2015-08-30 09:37:23 -07:00
John-David Dalton
c921c9bd12 Add support for ES6 Set/Map to _.clone/_.isEqual/_.toArray and iterator support to _.toArray. 2015-08-30 08:58:12 -07:00
John-David Dalton
8f621b38bf Update builds. 2015-08-30 05:12:06 -07:00
John-David Dalton
257d957dfb Add baseSortedUniqBy. 2015-08-30 05:12:06 -07:00
John-David Dalton
a0a6f0ae87 Correct arity hints for baseSortByOrder and createAggregator. 2015-08-30 04:55:05 -07:00
John-David Dalton
c396b60612 Cleanup _.pairs and _.invert. 2015-08-30 04:45:49 -07:00
John-David Dalton
98a97b1eaf Use arrayReduce in baseWrapperValue and _.invert, arrayEach in _.bindAll, and baseTimes in _.unzip. 2015-08-30 04:27:52 -07:00
John-David Dalton
7d6fcc75da Use arrayReduce in basePick. 2015-08-30 03:56:14 -07:00
Nathan Bellowe
ecd8b7f614 Update _.modArgs doc example to better show the method's affect. [ci skip] 2015-08-30 03:56:07 -07:00
John-David Dalton
cc1bcc25b9 Enable phantomjs tests in travis.yml. 2015-08-29 14:31:08 -07:00
John-David Dalton
b792276a00 Update PATTERN2 in travis.yml. 2015-08-29 13:33:08 -07:00
John-David Dalton
b1d52ccd82 Rename _.indexBy to _.keyBy to avoid confusion with _.sortedIndexBy forms. 2015-08-29 13:33:08 -07:00
John-David Dalton
cc0e91ac2f Remove duplicated tests. 2015-08-29 10:52:23 -07:00
John-David Dalton
dfac7b4261 Make _.xyzBy methods provide just a single param to their callbacks. 2015-08-29 10:52:02 -07:00
John-David Dalton
1258eef213 Use toInteger in _.repeat. 2015-08-29 09:18:33 -07:00
John-David Dalton
f79148fa62 Rename arraySum to baseSum. 2015-08-29 09:16:48 -07:00
John-David Dalton
4d2aa29926 Simplify baseValues, createCompounder, initKeys, _.after, _.pairs, _.range, & _.times. 2015-08-29 09:15:47 -07:00
John-David Dalton
f016840c53 Correct baseSortedUniqBy. 2015-08-29 09:10:29 -07:00
John-David Dalton
cffeec4713 Cleanup baseSortedUniq and add more uniq related tests. 2015-08-28 08:53:05 -07:00
John-David Dalton
fcbe4620cd Simplify baseFunctions. 2015-08-28 08:15:50 -07:00
John-David Dalton
5a5e0363c2 Remove Chakra check as they've resolve their 'vm' issue. 2015-08-27 10:39:23 -07:00
John-David Dalton
64512ee2ae Fix skipTest count for _.isNil other realm test. 2015-08-27 10:23:57 -07:00
John-David Dalton
ce4f2f1326 Ensure _.merge merges plain-objects onto non plain-objects. [closes #1413] 2015-08-27 09:21:37 -07:00
John-David Dalton
dfebb83c35 Update excused Underscore tests. 2015-08-26 22:43:02 -07:00
John-David Dalton
0ba226e3c2 Fix test fails and _.uniqBy use baseUniqBy. 2015-08-26 22:21:18 -07:00
John-David Dalton
e0f59eccf0 Formatting nit in baseWhile. 2015-08-26 21:43:52 -07:00
John-David Dalton
820e720b0a Cleanup various method descriptions. [ci skip] 2015-08-26 21:43:37 -07:00
John-David Dalton
936c5f5d3d Add baseUniqBy. 2015-08-26 21:43:12 -07:00
John-David Dalton
d0b3b8de44 Minor test cleanup. 2015-08-26 08:30:22 -07:00
John-David Dalton
89d53306f3 Use toInteger in pad methods and make nullish chars checks in pad and trim methods undefined checks. 2015-08-26 08:30:06 -07:00
John-David Dalton
e30a20120c Split out _.sortedIndexOf, _.sortedLastIndexOf, _.sortedUniq, and _.sortedUniqBy. 2015-08-26 08:27:16 -07:00
John-David Dalton
790d6331f8 Remove fromIndex type check from _.includes. 2015-08-25 23:12:12 -07:00
John-David Dalton
9121ab95ea Bump package for easier testing. 2015-08-24 18:09:42 -07:00
John-David Dalton
b09e5cf5a7 Minor shortcut fusion test cleanup. 2015-08-24 08:22:51 -07:00
John-David Dalton
b53a8e873d Rename the baseIteratee param func to value. 2015-08-23 23:36:55 -07:00
John-David Dalton
4c38963c6f Add iteratee arity hints back. 2015-08-23 23:36:05 -07:00
John-David Dalton
b0d6c34565 Add isIterateeCall checks back to _.every and _.some. 2015-08-23 18:41:11 -07:00
John-David Dalton
0a9c9411f0 Update core builds. 2015-08-22 20:37:02 -07:00
John-David Dalton
e253f58aac Fix _.keysIn test fails in IE9. 2015-08-22 20:35:33 -07:00
John-David Dalton
0aa8ad202a Implement copyObject by way of copyObjectWith. 2015-08-22 18:41:48 -07:00
John-David Dalton
7bc5a501c4 Remove explicit Object coercion in _.keysIn. 2015-08-21 18:35:31 -07:00
John-David Dalton
4691a38d21 Add baseKeys. 2015-08-21 13:56:59 -07:00
MaxPRafferty
00bae752d0 Add item to _.fill example. [ci skip]
While not the minimum example required to show the fill functionality, having the fill write more than one value better fits the purpose of the function in practice.
2015-08-21 12:15:29 -07:00
John-David Dalton
e253fe0547 Use nullish to describe _.isNil. [ci skip] 2015-08-21 08:28:49 -07:00
John-David Dalton
e35d73be8f Add isNative chaining test. 2015-08-20 08:16:41 -07:00
John-David Dalton
f9f7af2430 Cleanup _.isNil doc examples and tests. 2015-08-20 08:11:17 -07:00
John-David Dalton
7aef780b14 Add hasIn to lodash chaining doc note. [ci skip] 2015-08-20 08:02:44 -07:00
xixilive
5644a20eec Add _.isNil function. 2015-08-20 00:16:17 -07:00
John-David Dalton
b135431542 Remove unused escapeRegExpChar function. 2015-08-19 22:07:50 -07:00
John-David Dalton
efdb254b12 Fix _.isMatchWith test fail. 2015-08-19 21:56:08 -07:00
John-David Dalton
8fd2f0ae11 Add _.hasIn tests. 2015-08-19 17:26:53 -07:00
John-David Dalton
3f7ee9bd2e Remove unneeded Object use. 2015-08-19 16:42:24 -07:00
John-David Dalton
a049c1189e Consistent use of of instead of on in path related docs. [ci skip] 2015-08-19 16:42:14 -07:00
John-David Dalton
9859b1555f Add _.hasIn and more path helper functions. 2015-08-18 23:29:27 -07:00
John-David Dalton
356e47a6a3 Remove double declared length var in sample. 2015-08-18 14:03:04 -07:00
John-David Dalton
2c1c8fc8df Remove unneeded _.escapeRegExp test. 2015-08-18 13:46:55 -07:00
John-David Dalton
e7bdd4a624 Ensure paths with newlines are walkable. 2015-08-17 23:56:27 -07:00
John-David Dalton
1a9069e80a Remove rogue console.log debug. 2015-08-17 00:24:05 -07:00
John-David Dalton
484861e3ee Change objectValue and sourceValue params to objValue and srcValue. 2015-08-16 23:29:58 -07:00
John-David Dalton
99ba0a4927 Ensure isMatchWith invokes customizer callbacks with object and source params. 2015-08-16 23:28:06 -07:00
John-David Dalton
ba3ede584e Add stack params to several customizer callback calls. 2015-08-14 07:36:09 -07:00
John-David Dalton
dd472f489b Avoid stack overflow with _.defaultsDeep. 2015-08-13 08:56:43 -07:00
John-David Dalton
9f0dd40b3b Remove component.json reference from bower.json. 2015-08-12 08:14:40 -07:00
John-David Dalton
edc03287aa Ensure _.defaultsDeep works on circular references. 2015-08-10 23:08:34 -07:00
John-David Dalton
d6dc7627b9 Start making Underscore tests work with the core build. 2015-08-09 21:49:30 -07:00
John-David Dalton
59773ca284 Update Backbone tests for core build runs. 2015-08-09 21:38:16 -07:00
John-David Dalton
6aa01ffe05 Remove old android platforms from sauce tests. 2015-08-09 21:36:02 -07:00
John-David Dalton
5b3de94fee Add core build to test dropdowns. 2015-08-09 21:34:24 -07:00
John-David Dalton
b4edf122f6 Update _.reduce and _.transform object iteration doc example. [ci skip] 2015-08-09 00:09:17 -07:00
John-David Dalton
1647c4deab Update test/saucelabs.js for lodash v4. 2015-08-08 17:46:32 -07:00
John-David Dalton
3efb91e86d Enable most sauce labs runs. 2015-08-08 17:35:28 -07:00
John-David Dalton
d6f73054a5 Update tested sauce browsers. 2015-08-08 17:35:15 -07:00
John-David Dalton
bd9b38665d Update Underscore/Backbone tests and make them passable. 2015-08-08 16:52:47 -07:00
John-David Dalton
de5c2b906e Add core builds. 2015-08-04 22:54:50 -07:00
John-David Dalton
4a4badcdc1 Reduce _.mixin with arrayEach. 2015-08-04 22:29:58 -07:00
John-David Dalton
fa7ebb36dc Add _.isNaN test for a Number object. 2015-08-04 22:29:58 -07:00
John-David Dalton
447440776b Remove component.json. 2015-08-01 11:12:22 -07:00
John-David Dalton
f5714f2eb0 Reduce _.isEmpty. 2015-08-01 11:03:49 -07:00
John-David Dalton
a3b76f9259 Minor plural nit in _.sortBy docs. [ci skip] 2015-07-31 16:49:04 -07:00
John-David Dalton
ba71421a23 Test label nits. 2015-07-31 14:03:32 -07:00
John-David Dalton
61251b305d Simplify _.escapeRegExp to align with the defunct ES7 proposal. 2015-07-31 14:03:32 -07:00
John-David Dalton
73464d6bb6 Ensure many n like params are coerced to integers. [closes #1377] 2015-07-31 10:41:45 -07:00
John-David Dalton
7f7ebed4ea Drop the __chain__ check from lodash. 2015-07-30 17:46:28 -07:00
John-David Dalton
5c53809269 Use isObject comboed with isArrayLike. 2015-07-30 09:09:11 -07:00
John-David Dalton
3935d5f2f7 Ensure _.merge doesn't convert strings to arrays. [closes #1375] 2015-07-30 09:09:11 -07:00
John-David Dalton
693704a832 Remove argument juggling from _.before. 2015-07-29 23:22:34 -07:00
John-David Dalton
b17f6eee6a Remove unneeded isIterateeCall checks. 2015-07-29 12:20:25 -07:00
John-David Dalton
ccb90f46e6 Remove overloaded options param support for _.trunc. 2015-07-29 12:19:49 -07:00
John-David Dalton
dfa4cd921e Add test for _.escapeRegExp escaping string containing only chars that require leading escaping. 2015-07-29 08:22:10 -07:00
John-David Dalton
32e0afd19c Have _.chunk exit early for empty arrays too. 2015-07-28 22:41:58 -07:00
John-David Dalton
5fb732c0e6 Change default size of _.chunk to 0. 2015-07-28 13:49:55 -07:00
John-David Dalton
48a6c4f2bf Add _.setWith tests. 2015-07-26 10:32:32 -07:00
John-David Dalton
f1597386ef Ensure _.set and _.setWith don't assign a value if it's the same as the destination value. 2015-07-26 09:58:33 -07:00
John-David Dalton
731d5b6872 Add assignValue and assignMergeValue helpers to make value assignments more consistent across methods. 2015-07-26 09:42:21 -07:00
James M Snell
ce569e4bc4 Add npm test. 2015-07-25 20:26:34 -07:00
John-David Dalton
f48b8d6d91 Cleanup _.some docs. [ci skip] 2015-07-24 17:39:56 -07:00
John-David Dalton
4fc94a4383 Use extendWith instead of defaults in _.template to reduce deps. 2015-07-24 17:12:36 -07:00
John-David Dalton
c5057905b6 Cleanup doc examples of _.isEqualWith, _.isMatchWith, & _.setWith. [ci skip] 2015-07-24 17:10:25 -07:00
John-David Dalton
3c388c76c6 Add to docs of _.assignWith and _.setWith. [ci skip] 2015-07-24 08:36:42 -07:00
John-David Dalton
a730fe13c7 Make baseGet align with baseSet. 2015-07-24 08:36:00 -07:00
John-David Dalton
4520e0710d Add _.setWith. 2015-07-23 09:18:09 -07:00
John-David Dalton
7e42892e6a Update vendor. 2015-07-23 09:18:09 -07:00
John-David Dalton
a0c580298e Cleanup comments. [ci skip] 2015-07-23 09:05:50 -07:00
John-David Dalton
e7ad50d243 Remove unneeded var bit from _.omit. 2015-07-20 20:08:53 -07:00
John-David Dalton
1394d42f58 Simplify createXYZ function descriptions. [ci skip] 2015-07-20 17:22:57 -07:00
Graeme Yeates
a8e95e25ad Add string to valid _.includes parameters. [ci skip] 2015-07-20 17:03:57 -07:00
John-David Dalton
87cb4db263 Simplify isHostObject. 2015-07-20 11:34:58 -07:00
John-David Dalton
2ccda44c44 Add isObjectLike and isHostObject checks to _.isPlainObject. 2015-07-20 11:34:58 -07:00
John-David Dalton
0253c7bcf1 Add license field to bower.json. [closes #1355] [ci skip] 2015-07-20 11:34:58 -07:00
John-David Dalton
9c7b39b7a7 Remove _.clone test for strings. 2015-07-20 11:34:58 -07:00
John-David Dalton
5f4611fce2 Minor nit to move objCtorString above objToString. 2015-07-20 11:34:58 -07:00
John-David Dalton
c4fa2e70bf Remove old JScript tests. 2015-07-20 11:34:58 -07:00
John-David Dalton
15b1a22501 Remove non-enumerable prototype property tests. 2015-07-20 11:34:58 -07:00
John-David Dalton
51425788d8 Cleanup _.isEqual test for non-index properties on arrays. 2015-07-20 11:34:58 -07:00
John-David Dalton
a17d5eea47 Remove splice objects tests. 2015-07-20 11:34:58 -07:00
John-David Dalton
ef909e8a54 Remove _.support tests. 2015-07-20 11:34:57 -07:00
John-David Dalton
0a24e9854b Add bizarro test for Object#propertyIsEnumerable. 2015-07-20 11:34:57 -07:00
John-David Dalton
4eb2eea809 Remove unneeded sort calls from keys tests. 2015-07-20 11:34:57 -07:00
John-David Dalton
8a6705617f Consistent Foo style in tests. 2015-07-20 11:34:57 -07:00
John-David Dalton
bbe122aba5 Improve test coverage. 2015-07-20 11:34:57 -07:00
John-David Dalton
40409df885 Ensure basePullAt works with deep paths. 2015-07-20 11:34:57 -07:00
John-David Dalton
7fdbdae6b9 Use arraySum in _.sum. 2015-07-20 11:34:57 -07:00
John-David Dalton
b87a18bd80 Remove toFunction from _.unzipWith. 2015-07-20 11:34:57 -07:00
John-David Dalton
6d650a48db Remove some older browser notes in test labels. [ci skip] 2015-07-20 11:34:56 -07:00
John-David Dalton
54ea0eac8e Remove string tests for "Collection" methods. 2015-07-20 11:34:56 -07:00
John-David Dalton
4054898170 Cleanup lazy method wrapper. 2015-07-20 11:34:56 -07:00
John-David Dalton
8a205e1e32 Add lazy chaining tests for _.find and _.findLast. 2015-07-20 11:34:56 -07:00
Graeme Yeates
39068730e2 Enable shortcut fusion for _.find and _.findLast. 2015-07-20 11:34:56 -07:00
John-David Dalton
1e344455b8 Make eq its own method. 2015-07-20 11:34:56 -07:00
John-David Dalton
9a01f3a337 Move the false example for _.isEqual below the true one. [ci skip] 2015-07-20 11:34:56 -07:00
John-David Dalton
f6ea758b85 Make array length checks more uniform. 2015-07-20 11:34:56 -07:00
John-David Dalton
51fb82902b Make max and min use arrayExtremum instead of their xyzBy counterparts. 2015-07-20 11:34:55 -07:00
John-David Dalton
3c342adb67 Move Reflect assignment. 2015-07-20 11:34:55 -07:00
John-David Dalton
24d592f94f Remove rogue semicolon. 2015-07-20 11:34:55 -07:00
John-David Dalton
181ebf024c Remove compat and modern modifiers from build commands in travis.yml. 2015-07-20 11:34:55 -07:00
John-David Dalton
ecf693ac75 Change file references from lodash.src.js to lodash.js. 2015-07-20 11:34:55 -07:00
John-David Dalton
8266266639 Update vendor/benchmark.js. 2015-07-20 11:34:55 -07:00
John-David Dalton
0f2419357c Move lodash.src.js to lodash.js. 2015-07-20 11:34:30 -07:00
John-David Dalton
2e57123aa2 Remove lodash.js 2015-07-20 11:32:11 -07:00
John-David Dalton
881733e099 Temporarily disable a few more runs in travis.yml. 2015-07-20 11:26:01 -07:00
John-David Dalton
18f778ce11 Remove var use for the baseKeysIn fork assignment. 2015-07-20 11:26:01 -07:00
John-David Dalton
b8060a5bcc Add more methods to the lodash doc note. [ci skip] 2015-07-20 11:26:01 -07:00
Michael Kearns
7a34b2982f Reword _.merge docs for clarity. [ci skip] 2015-07-20 11:26:01 -07:00
John-David Dalton
f695af587a Remove createExtremum. 2015-07-20 11:26:00 -07:00
John-David Dalton
7759615775 Ensure "Collection" methods treat functions as objects. 2015-07-20 11:26:00 -07:00
John-David Dalton
bbad03547d Make _.at an "Object" method. 2015-07-20 11:26:00 -07:00
John-David Dalton
b638f86b75 Use a heavier function check in isArrayLike. 2015-07-20 11:26:00 -07:00
John-David Dalton
ab6210dc30 Avoid es-sham getPrototypeOf when constructor is not a function. 2015-07-20 11:26:00 -07:00
John-David Dalton
9ca16e3933 Rename baseCompareAscending to compareAscending. 2015-07-20 11:26:00 -07:00
John-David Dalton
76ab41a742 Add _.matches and _.matchesProperty tests for primitive object and a source with undefined values. 2015-07-20 11:26:00 -07:00
John-David Dalton
c6f6eb294b Use numberProto more in test/test.js. 2015-07-20 11:26:00 -07:00
John-David Dalton
19836a55a3 Remove an isArray check from baseMatchesProperty. 2015-07-20 11:25:59 -07:00
John-David Dalton
862c7fde6d Docs cleanup pass. [ci skip] 2015-07-20 11:25:59 -07:00
John-David Dalton
5d842273d9 Remove accidental trailing comma. 2015-07-20 11:25:59 -07:00
John-David Dalton
33a9ebaba1 Fix _.matches and _.matchesProperty doc notes on inherited properties. [ci skip] [closes #1344] 2015-07-20 11:25:59 -07:00
John-David Dalton
192e35882a Remove toIterable and toObject. 2015-07-20 11:25:59 -07:00
John-David Dalton
e6b9aaf499 Temporarily reduce scope of automated testing until things are more stable. 2015-07-20 11:25:59 -07:00
John-David Dalton
b821660e79 Remove irrelevant comments. [ci skip] 2015-07-20 11:25:59 -07:00
John-David Dalton
0beaf47a64 Extract common components of _.keys and _.keysIn and make _.keysIn use the Reflect.enumerate shim as a compat path for older enviros. 2015-07-20 11:25:59 -07:00
John-David Dalton
8a9e9e9a11 Remove support for pre-es5 environments. 2015-07-20 11:25:59 -07:00
Oliver Hoffmann
df17244353 Update root assignment to work in Firefox extensions. [closes #1340] 2015-07-20 11:25:58 -07:00
Graeme Yeates
ffd3e17364 Add _.isFunction test for NodeList instances. 2015-07-20 11:25:58 -07:00
John-David Dalton
211a6cc4f1 Doc cleanup to turn "accepts an iteratee" to "accepts iteratee". [ci skip] 2015-07-20 11:25:58 -07:00
John-David Dalton
4c09879aab Add _.assignWith, _.cloneDeepWith, _.cloneWith, _.extendWith, _.isEqualWith, _.isMatchWith, and _.mergeWith. 2015-07-20 11:25:58 -07:00
John-David Dalton
fd526e8754 Split _.omit and _.pick into _.omitBy and _.pickBy. 2015-07-20 11:25:58 -07:00
John-David Dalton
974306d4f0 Generalize the unwrapped value path in lazy method wrappers a bit. 2015-07-20 11:25:58 -07:00
John-David Dalton
56452d9fd8 Document start and end swap for _.inRange. [ci skip] [closes #1332] 2015-07-20 11:25:58 -07:00
John-David Dalton
6d231fecd1 Update html indent style in .editorconfig. 2015-07-20 11:25:58 -07:00
John-David Dalton
2e91cf727a Simplify checkGlobal. 2015-07-20 11:25:58 -07:00
John-David Dalton
64b9402e12 Strict equal nit in _.uniq. 2015-07-20 11:25:57 -07:00
John-David Dalton
4bae0c0139 Minor formatting nit for _.without. 2015-07-20 11:25:57 -07:00
John-David Dalton
06bc4aa50b Make isArayLike return false for functions. 2015-07-20 11:25:57 -07:00
John-David Dalton
31a7ac1e81 Ensure _.assign, _.extend, _.defaults, and _.merge coerce values to objects. 2015-07-20 11:25:57 -07:00
John-David Dalton
c75ac3ac64 Simplify nullish and falsey checks. 2015-07-20 11:25:57 -07:00
John-David Dalton
3e14d8f4dd Minor doc formatting nits for pickByArray and pickByPredicate. [ci skip] 2015-07-20 11:25:57 -07:00
John-David Dalton
6cde31f843 Remove doc references to this bindings and other dropped features. [ci skip] 2015-07-20 11:25:57 -07:00
John-David Dalton
a7b70008ba Drop boolean options param support in _.mixin. 2015-07-20 11:25:57 -07:00
John-David Dalton
8cc19d908e Drop boolean options param support in _.debounce and _.throttle. 2015-07-20 11:25:57 -07:00
John-David Dalton
d58cda122d Remove _.bindAll support for binding all methods when no method names are provided. 2015-07-20 11:25:56 -07:00
John-David Dalton
ab26945eca Add _.extend and make it and _.defaults, _.defaultsDeep, and _.merge iterate over inherited properties. 2015-07-20 11:25:56 -07:00
John-David Dalton
2da1b2af1a Drop boolean orders param support in _.sortByOrder. 2015-07-20 11:25:56 -07:00
John-David Dalton
2586129dcd Replace arrayCopy and baseCopy with copyArray, copyObject, and copyObjectWith. 2015-07-20 11:25:56 -07:00
John-David Dalton
13e5d77041 Remove iOS 4.3 in sauce because they're eoling it. 2015-07-20 11:25:56 -07:00
John-David Dalton
d036ff6c4f Drop IE 6/7 testing. 2015-07-20 11:25:56 -07:00
jdalton
1f1bc393d3 Cleanup docs for deep methods and those that accept customizer functions. [ci skip] 2015-07-20 11:25:56 -07:00
jdalton
9aa34e2487 Remove isDeep params from _.clone and _.flatten. 2015-07-20 11:25:56 -07:00
jdalton
0b7bffe3b5 Use more descriptive var names when mapping falsey values. 2015-07-20 11:25:56 -07:00
jdalton
41f248f54d Split out _.sortedIndex and _.sortedLastIndex into _.sortedIndexBy and _.sortedLastIndexBy. 2015-07-20 11:25:55 -07:00
jdalton
bc7cabde4e Cleanup forEach and friends doc examples. [ci skip] 2015-07-20 11:25:55 -07:00
jdalton
65d5bba7df Make _.maxBy, _.minBy, _.sumBy, & _.uniqBy support only arrays and provide only 1 argument to iteratees. 2015-07-20 11:25:55 -07:00
jdalton
340a6d195f Add _.sumBy. 2015-07-20 11:25:55 -07:00
jdalton
83ac168664 Simplify getIteratee assignments in methods. 2015-07-20 11:25:55 -07:00
jdalton
8ac1a67b7d Split _.uniq out into _.uniqBy. 2015-07-20 11:25:55 -07:00
jdalton
abd67d0786 Remove alias jsdoc tags for those no longer supported. [ci skip] 2015-07-20 11:25:55 -07:00
jdalton
9a9e4cddd7 Rename baseExtremumBy and createExtremumBy helpers. 2015-07-20 11:25:55 -07:00
jdalton
10c44b08c9 Reduce the number of function creator helpers to improve readabilty. 2015-07-20 11:25:54 -07:00
jdalton
86b19f742c Split _.max and _.min out into _.maxBy and _.minBy. 2015-07-20 11:25:54 -07:00
jdalton
cb94b03e3e Document more default params. [ci skip] 2015-07-20 11:25:54 -07:00
jdalton
a898c3d7bc Absorb _.sortByAll into _.sortBy. 2015-07-20 11:25:54 -07:00
jdalton
86be6d7897 Move resolve doc helpers higher in their example blocks. [ci skip] 2015-07-20 11:25:54 -07:00
jdalton
d3d4de12be Rename pickByCallback to pickByPredicate. 2015-07-20 11:25:54 -07:00
jdalton
04bac321d1 Cleanup doc examples. [ci skip] 2015-07-20 11:25:54 -07:00
jdalton
1011353729 Adjust guard doc notes. [ci skip] 2015-07-20 11:25:54 -07:00
jdalton
5651993d93 Use var toIteratee instead of callback. 2015-07-20 11:25:54 -07:00
jdalton
c51466935c Rename bindCallback to toFunction. 2015-07-20 11:25:54 -07:00
John-David Dalton
454aca7003 Remove thisArg params from most methods. 2015-07-20 11:25:53 -07:00
jdalton
5ff9f01aba Remove _.findWhere, _.pluck, & _.where. 2015-07-20 11:25:53 -07:00
jdalton
b5dd2e605d Make _.forEach and friends implicitly end a chain sequence. 2015-07-20 11:25:53 -07:00
jdalton
1bfe25f1a5 Remove aliases and rename _.callback to _.iteratee. 2015-07-20 11:25:53 -07:00
jdalton
bd98779b3c Fix test fails related to root._. 2015-07-20 11:25:53 -07:00
jdalton
7862ae6d36 Adjust UMD to export to window or self when available regardless of other exports. 2015-07-20 11:25:53 -07:00
John-David Dalton
dfbd78f71d Bump to v3.10.1. 2015-07-20 11:25:53 -07:00
John-David Dalton
e132e878d6 Rebuild lodash and docs. 2015-07-20 11:25:39 -07:00
John-David Dalton
bb78c0ea6d Provide correct argsCount hint to customizer functions of clone methods. 2015-07-20 11:23:13 -07:00
Thomas Wienecke
1a772023d5 Documentation (includes): value -> target. [ci skip] 2015-07-20 11:23:13 -07:00
John-David Dalton
230f90173c Use strict equality checks for baseIndexOf comparisons. 2015-07-20 11:23:12 -07:00
jdalton
fbc7c28188 Cleanup Safari 8 bug note in isFunction. [ci skip] 2015-07-20 11:23:12 -07:00
jdalton
5d88cb7099 Code formatting nit for coercing to strings. 2015-07-20 11:23:12 -07:00
jdalton
caae7a5879 Ensure getFuncName returns a string. 2015-07-20 11:23:12 -07:00
jdalton
816f37bdc5 Move getData function guard to `isLaziable. 2015-07-20 11:23:12 -07:00
Graeme Yeates
a2dd7171a5 Let mozilla manage their i18n. [ci skip] 2015-07-20 11:23:12 -07:00
John-David Dalton
a80d0bc2ca Ensure _#reverse doesn't augment the original array if it was sliced before. [closes #1323] 2015-07-20 11:23:12 -07:00
jdalton
2e50d11be5 Ensure func is a function before querying the weakmap. [closes #1319] 2015-07-20 11:23:12 -07:00
jdalton
a5e2caf40b Add small array lazy chain tests for _.first and _.last. 2015-07-20 11:23:11 -07:00
jdalton
82f693a2bc Replace it is in docs with the contraction it's. [ci skip] 2015-07-20 11:23:11 -07:00
jdalton
349baa3550 Bump to v3.10.0. 2015-07-20 11:23:11 -07:00
jdalton
712761ab0a Rebuild lodash and docs. 2015-07-20 11:23:02 -07:00
jdalton
e620d19422 Disable JIT for ringo runs in travis.yml. 2015-06-29 23:19:08 -07:00
jdalton
8ba161463b Clarify implicit chaining in the lodash docs. [ci skip] 2015-06-29 22:45:20 -07:00
jdalton
d93aa183f3 Ensure _.flow and _.flowRight works with _.first. [closes #1308] 2015-06-29 21:38:12 -07:00
jdalton
29ceed91f0 Add more shortcut fusion tests for _.flow and _.flowRight. 2015-06-29 21:38:12 -07:00
jdalton
7f7c7f360e Update instanbul in travis.yml. 2015-06-28 17:19:46 -07:00
jdalton
c77ffa0f6a Simplify baseToString. 2015-06-28 15:03:35 -07:00
jdalton
5acf5f6ee3 Simplify _.isNative deps. 2015-06-28 15:03:19 -07:00
jdalton
10c2232c39 Make _.escapeRegExp escape characters that could cause problems for escape sequences and other edge cases. 2015-06-28 02:00:09 -07:00
jdalton
116dbfd123 Remove unneeded maxWait guard from maxDelayed. 2015-06-26 08:27:23 -07:00
jdalton
ec7dce7d5b Rename _.debounce helper executeBoundFunction to complete. 2015-06-26 08:27:23 -07:00
jdalton
a8c8bd8113 Adjust timeouts on async tests. 2015-06-26 07:00:17 -07:00
jdalton
f57dadc362 Adjust recursive test for older VMs. 2015-06-26 06:59:16 -07:00
jdalton
6b7c1ad6cf Ensure _.indexOf and _.lastIndexOf return -1 when performing a binary search for undefined and it's not found. [closes #1303] 2015-06-25 14:35:02 -07:00
jdalton
67359c22d5 Remove duplicate _.debounce and _.throttle test. 2015-06-25 11:16:52 -07:00
jdalton
1881f5cb39 Ensure _.noConflict operates on root and not context. 2015-06-25 11:15:39 -07:00
jdalton
9f3d284c68 Remove isExposed check from test.js. 2015-06-25 08:05:25 -07:00
jdalton
6921fb66d5 Add _.noConflict test. 2015-06-25 08:05:24 -07:00
Graeme Yeates
91849e4cd1 Test coverage for re-entrant debounced functions 2015-06-23 17:37:45 -07:00
Graeme Yeates
1fcaa481be Reduce debounce redundancy for executing bound function 2015-06-23 17:37:45 -07:00
jdalton
04701cd69e Add defaultsDeep references to lodash and _.reduce doc notes. [ci skip] 2015-06-23 17:37:45 -07:00
Mathias Bynens
f59551b89e Link to the final ES6 spec. [ci skip] 2015-06-23 17:37:45 -07:00
Graeme Yeates
bc34d80949 Clarify shortcut fusion docs. [ci skip] 2015-06-23 17:37:45 -07:00
jdalton
7480e481fc Add _.defaultsDeep tests. 2015-06-22 12:55:29 -07:00
jdalton
71ed48bb76 Ensure leading and trailing debounce options are coerced to booleans. 2015-06-22 12:55:29 -07:00
jdalton
134bf61205 Add _.defaultsDeep. 2015-06-22 12:55:29 -07:00
jdalton
85ddabd763 Cleanup docs for baseMerge, baseMergeDeep, createAggregator, & createAssigner. [ci skip] 2015-06-22 12:55:29 -07:00
Graeme Yeates
889c184ba3 Ensure _.debounce and _.throttle reset lastCall after cancelling. 2015-06-22 12:55:28 -07:00
jdalton
660bc2eb21 Use escapeStringChar in _.escapeRegExp. 2015-06-22 12:55:28 -07:00
jdalton
192667d65f Ensure _.escapeRegExp escapes line terminators. 2015-06-22 12:55:28 -07:00
jdalton
4896c725b6 Ensure _.escapeRegExp handles empty strings in a way to work with compilation. 2015-06-22 12:55:28 -07:00
jdalton
4bcb99a6b9 Simplify _.sum. 2015-06-18 08:41:53 -07:00
jdalton
535eec5366 Add _.sum benchmark. 2015-06-18 08:41:53 -07:00
jdalton
56cd679bcd Improve perf of max and min common case with arrays. 2015-06-18 08:41:53 -07:00
jdalton
e95ae66af0 Update instanbul in travis.yml. 2015-06-14 22:48:50 -07:00
jdalton
dbb342da81 Minor comment tweak in baseClone. [ci skip] 2015-06-14 18:03:54 -07:00
jdalton
958381d3dd Tweak _.modArgs docs. [ci skip] 2015-06-14 18:03:54 -07:00
jdalton
0a165675ce Allow coveralls service to fail. 2015-06-14 07:41:29 -07:00
jdalton
ce13b6abfd Make test labels more consistent. 2015-06-13 18:29:05 -07:00
jdalton
804e00cc26 Ensure bound Date can be instantiated with all 7 params. 2015-06-12 22:12:15 -07:00
jdalton
f79de23be5 Remove unneeded pattern sub in travis.yml. 2015-06-12 18:03:26 -07:00
jdalton
3404dc0b75 Update tested browsers for saucelabs. 2015-06-12 00:24:35 -07:00
jdalton
51c9f4f988 Cleanup _.omit, _.modArgs, & _.pick tests. 2015-06-12 00:23:50 -07:00
jdalton
028ecf5561 Allow _.modArgs to accept an array of transforms. 2015-06-11 08:30:18 -07:00
jdalton
419fb08266 Simplify createCache. 2015-06-11 07:31:36 -07:00
jdalton
1a28ef3244 Ensure _.includes matches an empty string on empty strings. [closes #1275] 2015-06-10 21:10:00 -07:00
Kevin Kirsche
6b8ffb2a85 Remove moot version property from bower.json
Per bower/bower.json-spec@a325da3
2015-06-10 18:32:48 -04:00
jdalton
9121b14009 Cleanup _.mixin test. 2015-06-10 08:17:39 -07:00
jdalton
9b54891474 Add ceil, floor, and round to lodash doc block. [ci skip] 2015-06-10 07:57:39 -07:00
jdalton
058196e42a Rename vendor/benchmark.js license. [ci skip] 2015-06-10 07:22:44 -07:00
jdalton
22743e06d5 Add round test for NaN precision params. 2015-06-08 08:33:03 -07:00
jdalton
c8b818f011 Cleanup _.ceil, _.floor, & _.round. 2015-06-07 21:41:50 -07:00
James Kyle
df838c98e9 Add _.ceil/_.floor/_.round. 2015-06-07 21:27:29 -07:00
jdalton
595eab2614 Rename license file to align with GitHub defaults. [ci skip] 2015-06-07 16:48:48 -07:00
jdalton
288b6ea692 Remove unnecessary lodash binding. 2015-06-07 15:24:53 -07:00
jdalton
7db606857d Adjust tabs to two spaces for html files. 2015-06-07 14:33:28 -07:00
jdalton
746034a4fc Simplified bufferClone. 2015-06-07 13:51:06 -07:00
jdalton
f8ec95d872 Switch null use for clearing vars to undefined. 2015-06-07 13:40:07 -07:00
jdalton
ba082b74a7 Adjust lazy heuristic to punt if not using shortcut fusion. 2015-06-06 15:30:56 -07:00
jdalton
ab981ce15a Update lazy tests using larger arrays. 2015-06-06 15:06:17 -07:00
jdalton
e143936a82 Simplify lazy chaining by removing support for dropWhile and dropRightWhile. 2015-06-06 15:06:12 -07:00
jdalton
497cde7e92 Add LARGE_ARRAY_SIZE to more easily track what's considered a large array. 2015-06-06 14:56:31 -07:00
jdalton
948faf6cf9 Fix object doc param typo for equalByTag. [ci skip] 2015-06-05 07:56:06 -07:00
jdalton
56f199bd69 Make _.sortByOrder support orders of "asc" and "desc". 2015-06-05 07:56:06 -07:00
jdalton
9e1f68d9eb Update vendor/backbone to 1.2.1. 2015-06-05 07:56:06 -07:00
jdalton
7a9011c7e1 Add modArgs to lodash doc block. [ci skip] 2015-06-05 07:56:05 -07:00
jdalton
224a6c1e7c Adjust lazy eval heuristic. 2015-06-05 07:56:00 -07:00
jdalton
c89fe8bdbc Simplify array properties of LazyWrapper. 2015-06-03 23:20:03 -07:00
jdalton
cce9c2225e Ensure bailouts of lazy chaining will fallback appropriately. 2015-06-03 22:54:47 -07:00
jdalton
bdbc157c30 Whitespace nits. [ci skip] 2015-06-03 22:51:04 -07:00
jdalton
11eebfb78d Cleanup fn declaration style in tests. 2015-06-02 21:40:25 -07:00
jdalton
4beadcc4f3 Add this binding test for _.modArgs. 2015-06-02 21:04:18 -07:00
jdalton
e062c8c6f2 Tweak test label. 2015-06-02 21:03:58 -07:00
jdalton
f4709ce1f0 Move this binding tests around. 2015-06-02 21:03:37 -07:00
jdalton
50e129bd8f Add function checks to _.modArgs. 2015-06-02 20:18:13 -07:00
jdalton
f402dbd1e3 Use _.isFunction in _.isNative. 2015-06-02 20:14:13 -07:00
jdalton
55af8b4cb4 Remove _.isFunction fallback test. 2015-06-02 20:13:47 -07:00
jdalton
005b587588 Cleanup _.modArgs. 2015-06-02 08:41:01 -07:00
jdalton
de4463d9a8 Add basic _#concat test. 2015-06-02 08:16:47 -07:00
jdalton
b3d577c937 Replace wrapper with wrapped in docs/tests. 2015-06-02 08:10:10 -07:00
jdalton
51576018fd Cleanup arrayConcat and wrapperConcat docs. [ci skip] 2015-06-02 08:07:22 -07:00
jdalton
1b4f210d82 Add sparse array test for _#concat. 2015-06-02 07:47:18 -07:00
Steven Sojka
612bfd3acc Add _.modArgs. 2015-06-02 07:34:30 -07:00
jdalton
4972c94aed Remove the dot from the iojs identifier in travis.yml. 2015-06-01 23:05:53 -07:00
jdalton
642d77bb91 Add arrayConcat and arrayPush helpers. 2015-06-01 17:51:52 -07:00
jdalton
88270a7b66 Add built-in Date.now fork back. 2015-05-31 13:27:35 -07:00
Justin Ridgewell
29e0d37009 Reset resIndex after recursive baseFlatten. 2015-05-30 16:15:26 -05:00
jdalton
9c339367ad Optimize baseFlatten. 2015-05-29 11:26:14 -04:00
jdalton
f69715d999 Increase coverage of isLaziable. 2015-05-29 07:16:10 -04:00
jdalton
79990cbb27 Remove baseIsFunction. 2015-05-29 06:24:02 -04:00
jdalton
a02be54421 Increase max duration allowed for sauce to run tests. 2015-05-28 22:18:39 -04:00
jdalton
20127f6a2a Re-fix _.isFunction in old Safari. 2015-05-28 16:32:19 -04:00
jdalton
02a132a9d7 Ensure _.chunk floors size values. [closes #1243] 2015-05-28 14:29:26 -04:00
jdalton
7c95c5e80a Remove wild semicolon. 2015-05-28 11:33:03 -04:00
jdalton
c0bc5657ea Remove unnecessary tests. 2015-05-27 17:49:07 -04:00
jdalton
dfec166704 Remove dual environment _.isElement test. 2015-05-27 15:21:52 -04:00
jdalton
32f223c683 New line nit. 2015-05-27 15:20:22 -04:00
jdalton
722eac1681 Simplify _.isFunction. 2015-05-26 11:59:43 -07:00
jdalton
6bcbb6f7bb Simplify _.now and _.isFinite. 2015-05-26 11:39:29 -07:00
jdalton
d266a0c0ce Simplify _.parseInt. 2015-05-26 11:36:42 -07:00
jdalton
acf82af0bf Simplify _.isElement. 2015-05-26 11:35:35 -07:00
jdalton
98956056e3 Simplify bufferClone. 2015-05-26 11:26:48 -07:00
jdalton
ae0bb54b2d Remove bufferClone fork. 2015-05-26 11:22:06 -07:00
jdalton
255da0a0d7 Remove _.isPlainObject fallback. 2015-05-26 11:17:36 -07:00
jdalton
c0e8cc0254 Remove _.isArguments fallback and _.support.argsTag. 2015-05-26 11:14:25 -07:00
jdalton
41cec24644 Remove debounceOptions var. 2015-05-26 10:50:08 -07:00
jdalton
2ecdedd5b4 Bump to v3.9.3. 2015-05-25 16:25:57 -07:00
jdalton
358477c31b Rebuild lodash and docs. 2015-05-25 15:58:57 -07:00
jdalton
c1948f10a2 Avoid NaN use in isIndex. 2015-05-25 12:19:00 -07:00
jdalton
d33c487b29 Add parseFloat to contextProps. 2015-05-25 10:03:30 -07:00
Chris Hiestand
b309b507eb Add tests for parseFloat issues with isIndex and _.set. 2015-05-25 09:56:16 -07:00
jdalton
daa8428b32 Drop parseFloat in isIndex in favor of a more strict regex. [closes #1229] 2015-05-25 09:39:36 -07:00
jdalton
0529df7632 Bump to v3.9.2. 2015-05-24 00:45:38 -07:00
jdalton
fc31fb9eba Rebuild lodash and docs. 2015-05-24 00:45:37 -07:00
jdalton
54436e341a Update travis deps. 2015-05-24 00:45:31 -07:00
jdalton
fc35ac4d67 Cleanup shortcut fusion test. 2015-05-23 21:43:01 -07:00
jdalton
28a0b6f901 Fix test for removal of _.support.funcNames. 2015-05-23 20:12:50 -07:00
jdalton
1b8f2c2adb Make isLaziable work with wrapped lodash methods. 2015-05-23 20:12:20 -07:00
jdalton
6c8988ab69 Use POSITIVE_INFINITY and NEGATIVE_INFINITY more. 2015-05-23 16:15:12 -07:00
jdalton
e3c600a681 Remove rogue new line. 2015-05-23 16:14:37 -07:00
jdalton
979e0de659 Remove unused function charAtCallback. 2015-05-23 16:14:15 -07:00
jdalton
a76c10416d Tweak docs for _.difference, _.intersection, _.union, & _.xor. [ci skip] 2015-05-23 12:37:36 -07:00
jdalton
1276bf8c72 Correct _.sample to avoid favoring putting the second half of the array into the front and the first half in the back. 2015-05-23 00:05:34 -07:00
jdalton
9ef5c5d639 Change var endIndex to lastIndex for source consistency. 2015-05-22 22:38:46 -07:00
jdalton
69f51896c9 Optimize _.sample. 2015-05-22 22:38:39 -07:00
jdalton
5f845aa6f8 Optimize baseIsEqual. 2015-05-22 22:08:29 -07:00
jdalton
87c610beaa Fix doc typos for arrayExtremum and baseMatchesProperty. [ci skip] 2015-05-22 00:44:08 -07:00
jdalton
3a331ec156 More which/that switching in docs. [ci skip] 2015-05-22 00:36:57 -07:00
jdalton
6c5ac490ab Document partial args of _.method and _.methodOf. [ci skip] [closes #1223] 2015-05-22 00:36:51 -07:00
jdalton
50b9840db1 Change dep version in lodash-cli npm-shrinkwrap.json for travis tests. 2015-05-20 08:00:25 -07:00
jdalton
41e884a1d2 Poison the free variable root in Node.js. 2015-05-20 07:59:52 -07:00
jdalton
15841b191d Bump to v3.9.0. 2015-05-19 08:19:55 -07:00
jdalton
65514d89ad Rebuild lodash and docs. 2015-05-19 08:19:42 -07:00
jdalton
c6f8896826 Ensure _.get can return null values. [closes #1216] 2015-05-19 08:18:46 -07:00
jdalton
882d84f1e6 Ensure _.merge skips undefined values if a destination value exists. 2015-05-18 07:30:25 -07:00
jdalton
0eba3a3678 Update ecstatic and istanbul travis deps. 2015-05-18 07:30:24 -07:00
jdalton
756b28c3ab Rename value param to srcValue. 2015-05-17 16:13:54 -07:00
jdalton
d78ebc40ae Fix isEqual tests on older Safari. 2015-05-17 09:14:50 -07:00
jdalton
58aea21b82 Use 'xo' instead of 'hi' for string tests. 2015-05-17 00:55:30 -07:00
jdalton
c2b1d61dd1 Add toObject to _.pairs. 2015-05-17 00:55:30 -07:00
jdalton
f4d72dba06 Adjust test labels for consistency. 2015-05-17 00:55:30 -07:00
jdalton
31e81d7be2 Add string tests for _.isMatch, _.matches, & _.matchesProperty. 2015-05-17 00:55:30 -07:00
jdalton
6c9123beee Add toObject use to baseIsMatch. 2015-05-16 18:53:33 -07:00
jdalton
0fa0397da2 Add checks back to isEqual and simplify checks in baseIsEqual. 2015-05-16 18:53:33 -07:00
jdalton
b652fc7e1a Reduce baseIsMatch and isMatch by adding getMatchData. 2015-05-16 15:24:59 -07:00
jdalton
c42fea0d3d Remove isStrictComparable use from _.isEqual. 2015-05-16 13:29:41 -07:00
jdalton
48a56a848a Add test for modularized flow and flowRight. 2015-05-16 11:30:57 -07:00
jdalton
d6937baa8e Simplify getFuncName. 2015-05-16 11:30:43 -07:00
jdalton
3490f8acb5 Ensure LodashWrapper.prototype.thru exists before creating a wrapper in flow. 2015-05-16 07:01:15 -07:00
jdalton
46ace7e8e8 Simplify getNative. 2015-05-15 11:30:57 -07:00
jdalton
698956e130 Move parseFloat into isIndex. [closes #1209] 2015-05-15 08:55:47 -07:00
jdalton
b25cd39953 Add isObject check to getNative. 2015-05-15 01:29:17 -07:00
jdalton
de4f5eb2ca Allow for getNative to accept a nullish object value. 2015-05-15 00:30:20 -07:00
jdalton
ccc5fa3981 Add getNative helper. 2015-05-15 00:23:27 -07:00
jdalton
b899a19184 Change "it is" to "it's". [ci skip] 2015-05-15 00:22:14 -07:00
jdalton
6af7fac344 Minor style nit in _.isObject. 2015-05-14 21:27:11 -07:00
jdalton
49ef2b4d54 Clarify _.debounce and _.throttle docs. [ci skip] 2015-05-14 09:13:00 -07:00
jdalton
fcc09a7375 Use strict equality check since its type isn't guaranteed. 2015-05-13 23:39:06 -07:00
jdalton
8e9ad4df97 Avoid testing Backbone in IE6 in sauce. 2015-05-13 23:25:47 -07:00
jdalton
4dfcfd2542 Cleanup test/backbone.html and test/underscore.html. 2015-05-13 23:25:31 -07:00
jdalton
12081c9bd6 Bypass vm module use for ChakraNode. 2015-05-13 21:04:51 -07:00
jdalton
abee7fdfa2 Update vendors. 2015-05-13 21:03:09 -07:00
jdalton
ca0bc0632b Reduce _.has. 2015-05-13 08:57:03 -07:00
jdalton
e465750cd2 Fix failing _.has tests in Rhino. 2015-05-13 00:51:58 -07:00
jdalton
934b08f720 Avoid mixing boolean and object types in variable assignments. 2015-05-12 23:41:14 -07:00
jdalton
78cc98840b Remove fast path from _.isMatch. 2015-05-12 21:19:12 -07:00
jdalton
d4cd7a120f Remove support.funcDecomp and support.nonEnumStrings. 2015-05-12 21:18:35 -07:00
jdalton
4b6c91bbf1 Remove support.nonEnumArgs. 2015-05-12 09:23:07 -07:00
jdalton
e3be2b4451 Ensure _.has treats sparse arrays as dense. 2015-05-12 08:58:37 -07:00
jdalton
c6ff845ecb Ensure _.intersection works with a single array. [closes #1199] 2015-05-11 23:52:56 -07:00
jdalton
846bde35ff Use hasOwnProperty instead of objToString for the creation of reIsNative to avoid issues with core-js. [closes #1197] 2015-05-11 10:31:38 -07:00
jdalton
69990ae226 Fix test error in Rhino with CommonJS support. 2015-05-10 23:13:18 -07:00
jdalton
415fc81577 Remove Narwhal reference from source. 2015-05-10 20:20:18 -07:00
jdalton
b675566e23 Cleanup bizarro values, vm values, iframe values, worker addition, & module additions. 2015-05-10 20:17:57 -07:00
jdalton
190da0dcd4 Capitalize comments in test/index.html. [ci skip] 2015-05-10 20:09:14 -07:00
jdalton
5c40f93ca3 Fix AMD tests in PhantomJS. 2015-05-10 17:05:46 -07:00
jdalton
879c1e4992 Increase test coverage. 2015-05-09 18:02:09 -07:00
jdalton
311334c9e1 Add doc examples to _.gt, _.gte, _.lt, & _.lte. [ci skip] 2015-05-09 15:25:32 -07:00
jdalton
dc5268b0c0 Add _.gt, _.gte, _.lt, _.lte, & _.eq unit tests. 2015-05-09 12:25:31 -07:00
jdalton
d77ace6dc3 Upate tested Chrome version in sauce.js. 2015-05-08 18:56:20 -07:00
jdalton
f0b3c1a9ab Cleanup createFlow. 2015-05-08 18:55:57 -07:00
jdalton
9efb73f592 Remove nativeAssign and getOwnPropertySymbols use. 2015-05-08 11:36:44 -07:00
jdalton
569b4b29aa Add case of 5 to createCtorWrapper to align with bindCallback. 2015-05-08 11:36:23 -07:00
jdalton
a61bde5b78 Ensure _.bind works with ES6 class constructors. [closes #1193] 2015-05-08 09:49:54 -07:00
jdalton
542dd67892 Update param docs for createExtremum. [ci skip] 2015-05-08 00:17:48 -07:00
jdalton
172eca6081 Avoid using require in source because browserify does a quick regexp match for \brequire\b before deciding whether to build an AST to get require calls. 2015-05-07 23:59:51 -07:00
jdalton
004aaed783 Remove odd string support from createExtremum. 2015-05-07 23:53:50 -07:00
jdalton
a1b15df648 Update tested Rhino to 1.7.6. 2015-05-07 01:05:16 -07:00
jdalton
b5d5bef678 Avoid undefined length variable use in createExtremum. 2015-05-07 00:38:22 -07:00
Len Smith
421df0dff3 Make null sorted right behind undefined and NaN. 2015-05-07 00:34:12 -07:00
Armaan Ahluwalia
5b5e29cb7b Fixed iteratees doc typos. [ci skip] 2015-05-06 14:58:03 -07:00
jdalton
db67ae12ec Optimize _.max and _.min when invoked with iteratees and add _.gt, _.gte, _.lt, _.lte, & _.eq. 2015-05-06 08:56:50 -07:00
jdalton
7dfd7ad5b9 Minor adjustments to param docs for baseCompareAscending and matchesProperty. [ci skip] 2015-05-06 01:37:56 -07:00
jdalton
ca5fa9e84d Add support for an immutable Map to _.memoize.Cache. 2015-05-05 23:13:00 -07:00
jdalton
1afcfa4406 Use precomputed values for MAX_ARRAY_LENGTH and MAX_SAFE_INTEGER. 2015-05-04 21:53:12 -07:00
jdalton
95b1455b62 Consistently use callback as the variable to store getCallback() results. 2015-05-04 09:06:06 -07:00
jdalton
d825937411 Ensure customizer results are respected by _.isEqual. 2015-05-03 22:57:45 -07:00
jdalton
ee182df533 Optimize object comparisons in _.isEqual. 2015-05-03 19:38:58 -07:00
jdalton
14651d8ea8 Remove customizer assignment from clone and cloneDeep. 2015-05-03 17:20:51 -07:00
jdalton
7e4ed7c1a9 Ensure baseCreate works in ExtendScript. 2015-05-03 13:47:40 -07:00
jdalton
13fe88c03f Cleanup baseIsMatch and equalArrays. 2015-05-02 23:00:57 -07:00
jdalton
7b80a780c7 Remove old Opera from Sauce tests. 2015-05-01 22:16:59 -07:00
jdalton
2b465bdf82 Update QUnit dev dep. 2015-05-01 21:00:50 -07:00
jdalton
6d52119597 Bump to v3.8.0. 2015-05-01 00:45:06 -07:00
jdalton
b75041173c Rebuild lodash and docs. 2015-05-01 00:45:06 -07:00
jdalton
23eba0a029 Avoid isArrayLike in createBaseEach to bail out early when nullish. 2015-05-01 00:45:06 -07:00
jdalton
566781cab2 Loosen -0 and 0 checks. 2015-05-01 00:44:55 -07:00
jdalton
0ea1fc5602 Avoid var name pad in composeArgsRight. 2015-04-30 09:09:47 -07:00
jdalton
2ce9e09e8b Ensure _.padLeft and _.padRight handle empty strings correctly. 2015-04-30 09:09:46 -07:00
Tim D
6cab7ceb0f Removing length assignment in baseFlatten for a perf win. 2015-04-29 19:57:39 -07:00
jdalton
8ae7d8aa07 Simplify SameValueZero doc notes. [ci skip] 2015-04-29 00:25:36 -07:00
jdalton
ce6ccef2d0 Ensure baseAt, basePullAt, and pullAt handle nullish values correctly. 2015-04-29 00:25:36 -07:00
jdalton
2c6d880542 Loosen restrictions of _.intersection and others to accept array-like objects and add isArrayLike helper. [closes #1163] 2015-04-29 00:25:36 -07:00
jdalton
bf89287c56 Optimize lazy slice for start of 0 and an end value. 2015-04-29 00:25:36 -07:00
jdalton
df176dfe8a Fix modularized npm build tests. 2015-04-26 14:22:46 -07:00
jdalton
141a32d388 Add _.callback test for augmenting source objects. 2015-04-26 10:59:29 -07:00
jdalton
37786b76ed Minor whitespace nits. [ci skip] 2015-04-26 00:46:33 -07:00
jdalton
02b920f259 Add _.flow and _.flowRight tests for curried functions with placeholders. 2015-04-23 08:38:58 -07:00
jdalton
31e25f88a0 Narrow bitmask check in createFlow. 2015-04-23 08:06:51 -07:00
jdalton
231c8a468e Replace "that" with "which" in pickByArray and pickByCallback docs. [ci skip] 2015-04-22 23:10:17 -07:00
jdalton
ae346f564f Avoid lazy eval optimization in createFlow if metadata has placeholder arguments. [closes #1160] 2015-04-22 20:44:56 -07:00
jdalton
fcc0608cf2 Only use built-in Object.assign when in strict mode. 2015-04-22 20:23:30 -07:00
jdalton
641cd63462 Fix old V8 JIT bug that has cropped up again. 2015-04-22 20:17:39 -07:00
jdalton
0b907a3efa Make tests work in Phantom 2. 2015-04-22 20:16:43 -07:00
jdalton
ce180cf2bf Excuse Underscore _.now test to avoid occasional false fail in sauce andrioid. 2015-04-22 07:18:14 -07:00
jdalton
d97276404c Update excused Underscore tests. 2015-04-22 07:09:52 -07:00
Ray Hammond
d5a9b4344b Removed unused variables identified by JSHint. 2015-04-21 16:58:10 -07:00
jdalton
e317fdfa3d Cleanup deep path tests. 2015-04-21 08:07:49 -07:00
jdalton
150ea2639a Add complex tests for unquoted bracketed property names. 2015-04-21 08:03:14 -07:00
jdalton
a551348b40 Fix preventExtensions definition typo. [closes #1153] 2015-04-21 07:59:02 -07:00
jdalton
3429b5d661 Ensure empty brackets are ignored by _.get and _.set. 2015-04-21 00:02:28 -07:00
jdalton
c8314b215b Doc and var name tweaks to _.unzip, _.unzipWith, and _.zipWith. 2015-04-20 08:59:53 -07:00
jdalton
5929f7d23b Newline nit in _.assign doc. [ci skip] 2015-04-20 00:35:41 -07:00
jdalton
85a7df3d27 Add _.unzipWith. 2015-04-20 00:10:12 -07:00
jdalton
e6c5a0e848 Update iOS comment on getLength. [ci skip] 2015-04-19 20:04:13 -07:00
Ray Hammond
92dee72b10 Added two missing semicolons. 2015-04-19 17:51:14 -07:00
jdalton
4d6e57a5e6 Make _.zipWith act like _.zip when no iteratee is provided and make _.unzip ignore non array or arguments object values. 2015-04-19 10:32:27 -07:00
jdalton
936a1c2764 Add support for thisArg in zipWith. 2015-04-19 08:02:43 -07:00
jdalton
a08a3c6096 Cleanup tests. 2015-04-18 22:31:46 -07:00
thirdcreed
82be40eace Add _.zipWith. 2015-04-18 11:13:03 -07:00
jdalton
20ba0bd1dc Fix _.uniqueId test to properly compare values. 2015-04-18 11:10:55 -07:00
jdalton
75ce6b82e8 Add sum to guarded doc note in _.map. [ci skip] 2015-04-17 09:04:22 -07:00
jdalton
9749ac56ba Remove extraneous docs for methods that reference others. [ci skip] 2015-04-17 08:37:55 -07:00
jdalton
746f9bb778 Add _.mapKeys. [closes #169] 2015-04-17 08:36:37 -07:00
jdalton
f2dae588aa Add test labels to help track down odd false fail. 2015-04-17 08:27:14 -07:00
jdalton
9f3f0a76aa Ensure baseGet returns undefined and not null. [closes #1136] 2015-04-16 20:07:48 -07:00
jdalton
30f28a51ca Bump v3.7.0. 2015-04-15 20:08:34 -07:00
jdalton
3e22344782 Rebuild lodash and docs. 2015-04-15 19:32:58 -07:00
jdalton
0b20d89d62 Ensure _.times floors n float values. 2015-04-15 19:21:13 -07:00
jdalton
80d892c744 Update Firefox versions in saucelabs.js. 2015-04-15 09:04:28 -07:00
jdalton
53326bef33 Update vendors. 2015-04-15 08:44:18 -07:00
jdalton
f05a5a3abb Fix failing strict mode _.set tests. 2015-04-15 00:00:40 -07:00
jdalton
8581be4977 Ensure baseGet and result work with strings on nested objects. 2015-04-14 22:34:46 -07:00
jdalton
0e8277ba9e Cleanup path methods. 2015-04-14 21:19:31 -07:00
jdalton
3cc2f83912 Add more string character access tests and adjust array path tests. 2015-04-14 21:18:50 -07:00
jdalton
177034a498 Move _.filter benchmark and cleanup labels. 2015-04-14 21:15:18 -07:00
jdalton
f4d06e5183 Remove unneeded "use strict" directive. 2015-04-14 12:54:30 -07:00
jdalton
637a6b5f7e Optimize _.invoke. 2015-04-14 12:29:41 -07:00
jdalton
75445b8b98 Update ecstatic travis dep. 2015-04-14 12:14:12 -07:00
jdalton
f96de55ac7 Optimize isKey. 2015-04-14 12:13:54 -07:00
jdalton
c4d4af3b5a Make freeGlobal detect align with freeSelf and freeWindow checks. 2015-04-13 20:29:58 -07:00
jdalton
5dfee44340 Cleanup doc blocks. [ci skip] 2015-04-13 20:29:26 -07:00
jdalton
99f5857d84 Add stable sort tests for objects. 2015-04-13 20:28:25 -07:00
jdalton
520f7c6812 Ensure index in baseSortByOrder is an integer. 2015-04-13 09:30:01 -07:00
jdalton
63d493aa1f Cleanup _.sortBy, _.sortByAll, _.sortByOrder, & baseSortByOrder. 2015-04-13 08:58:10 -07:00
jdalton
38ab42f855 Add Object.assign reference to _.assign docs. [ci skip] 2015-04-13 07:43:35 -07:00
Graeme Yeates
bc3771f3af Support iteratee use cases for _.sortByAll and _.sortByOrder. 2015-04-12 18:29:26 -07:00
jdalton
9d90af409b Add bizarro test for Object.getOwnPropertySymbols. 2015-04-12 18:28:50 -07:00
jdalton
20183bbd57 Have baseMap use getLength and isLength. 2015-04-12 10:33:34 -07:00
jdalton
1d8efe1cf8 Cleanup deep property tests. 2015-04-11 23:08:59 -07:00
jdalton
23354d413f Add an _.invoke test for deep paths. 2015-04-11 23:08:11 -07:00
jdalton
715f03f5f1 Change call to invoke in _.debounce and _.throttle test. 2015-04-11 23:08:11 -07:00
jdalton
ff6bbaed19 Add more tests for _.sortByAll and _.sortByOrder used as iteratees of _.reduce. 2015-04-11 20:58:31 -07:00
Graeme Yeates
f82cbbab1c Use _.restParam in _.sortByAll. 2015-04-11 20:18:29 -07:00
jdalton
5a1b526b6c Add and adjust deep path examples to _.method, _.methodOf, _.property and _.propertyOf docs. [ci skip] 2015-04-11 18:40:05 -07:00
jdalton
1ef92c87fb Use query instead of inspect in various docs. [ci skip] 2015-04-11 16:33:24 -07:00
jdalton
0aef515522 Rename baseMethod to invokePath and make use of it in _.invoke. 2015-04-11 16:32:27 -07:00
jdalton
9b5c97666a Ensure symbols work for _.assign, _.defaults, & _.merge. 2015-04-11 11:42:36 -07:00
jdalton
a55d822f9a Add more comments to nativeAssign definition. [ci skip] 2015-04-10 21:24:32 -07:00
jdalton
5b2bde6e0d Simplify getSymbols. 2015-04-10 19:56:38 -07:00
jdalton
020c5b27dc Add assert labels to _.tempalte test. 2015-04-10 15:42:03 -07:00
jdalton
65457208e5 Fix feature test for IE tech preview. 2015-04-10 15:41:48 -07:00
jdalton
6eb1b98975 Fix test fails in Node 0.12. 2015-04-10 15:40:26 -07:00
jdalton
a927bab6b3 Use built-in Object.assign if available. 2015-04-10 09:19:39 -07:00
jdalton
48e3e3e8cb Add _.method and _.methodOf docs. [ci skip] 2015-04-09 09:29:23 -07:00
jdalton
b5d095401d Make _.result and _.set docs more consistent with _.get. [ci skip] 2015-04-09 08:42:05 -07:00
jdalton
b3e58d4794 Cleanup createAssigner. 2015-04-09 07:35:32 -07:00
jdalton
79b064320e Update _.assign benchmarks for newer Underscore versions. 2015-04-09 07:30:17 -07:00
Sankar Gorthi
335b8326ee Fix broken link in _.bindKey docs. [ci skip] 2015-04-08 15:22:06 -07:00
jdalton
e777020e44 Update propertyIsEnumerable mock for support.nonEnumArgs feature test changes. 2015-04-08 13:42:48 -07:00
jdalton
745d97ebe1 Replace typeof checks for undefined with === checks. 2015-04-08 09:37:35 -07:00
jdalton
bb06d98a43 Add _.has doc examples of deep paths. [ci skip] 2015-04-08 09:27:37 -07:00
jdalton
3500b0016c Store last(path) in a var. 2015-04-08 08:41:57 -07:00
jdalton
7ec916b777 Add additional backtick reference to _.escape docs. [ci skip] 2015-04-08 08:24:44 -07:00
jdalton
3c71f79929 Fix string indexes with _.has in older enviros. 2015-04-08 00:39:39 -07:00
jdalton
a83e70104c Ensure complex paths work with _.get, _.result, & _.set. 2015-04-07 19:47:31 -07:00
jdalton
85af554bac Replace work with expected value in test labels of _.get, _.isMatch, _.matches, _.matchesProperty, _.method, _.property, _.propertyOf, & _.result. 2015-04-07 18:45:39 -07:00
jdalton
885722afde Add _.has and _.methodOf tests. 2015-04-07 18:41:51 -07:00
jdalton
b2f094da01 Add another path test to a deep property test of _.result. 2015-04-07 09:29:44 -07:00
jdalton
1e85ec6758 Add more _.method tests. 2015-04-07 09:29:09 -07:00
jdalton
c8974aac3e Ensure nullish values aren't treated as empty objects in _.get, _.has, _.matchesProperty, _.property, _.propertyOf, & _.result. 2015-04-07 08:33:19 -07:00
jdalton
ad318c04e5 Use nullish more in test labels. 2015-04-07 08:19:24 -07:00
jdalton
db73e48206 Add mutation notes to docs of _.assign and _.defaults. [ci skip] 2015-04-07 08:07:00 -07:00
jdalton
d13972e0b8 Fix string test fails for _.matchesProperty, _.property, & _.result in IE 6 & 7. 2015-04-07 07:28:58 -07:00
Graeme Yeates
df74b2bfcb Remove _.noop from chainable list. [ci skip] 2015-04-07 00:31:38 -07:00
jdalton
b94b75726d Cleanup _.property and _.propertyOf tests. 2015-04-07 00:24:50 -07:00
jdalton
9a2d38acff Cleanup _.method tests. 2015-04-07 00:24:22 -07:00
jdalton
537f8f401e Cleanup _.matchesProperty tests. 2015-04-07 00:24:01 -07:00
jdalton
04f1a799dc Cleanup _.matches tests. 2015-04-07 00:23:16 -07:00
jdalton
74adb2f540 Consolidate _.get and _.result tests. 2015-04-07 00:22:11 -07:00
jdalton
a129a2509f Ensure _.method aligns with _.invoke. 2015-04-07 00:20:35 -07:00
jdalton
cc0b8e9d10 Ensure methods like _.get, _.has, _.matchesProperty, _.property, & _.propertyOf can get characters of string indexes. 2015-04-07 00:16:33 -07:00
jdalton
af8fcf234f Add _.set test for non-deep paths. 2015-04-06 13:01:27 -06:00
jdalton
e0dc2daf54 Simplify _.set for plain keys. 2015-04-06 12:59:39 -06:00
jdalton
c066e655dc Add empty path and array path coercing _.set test. 2015-04-06 12:04:07 -05:00
jdalton
2698e6f0ea Add more array path tests to _.get. 2015-04-06 11:54:09 -05:00
jdalton
63902bde9c Add array path tests to _.set. 2015-04-06 11:34:33 -05:00
jdalton
c876004fb2 Ensure _.set passes strict mode tests. 2015-04-06 09:57:26 -05:00
jdalton
633f37bfb6 Add array path tests to _.get. 2015-04-06 09:29:36 -05:00
jdalton
d70bc74dc8 Adjust baseGet and isKey to reduce code in other methods. 2015-04-05 21:41:10 -05:00
Justin Ridgewell
d7a4524e70 Add _.method and _.methodOf. 2015-04-05 13:53:54 -05:00
jdalton
fe1e27fd40 Add tests for _.add coercing params to numbers. 2015-04-05 13:45:56 -05:00
jdalton
8a7a099073 Use x even more in support definition. 2015-04-05 13:25:45 -05:00
jdalton
1b53b5f9eb Cleanup doc block for _.support.nonEnumArgs. [ci skip] 2015-04-05 13:25:29 -05:00
James
8b758ee25a Make _.add coerce augend and addend params to numbers. 2015-04-05 11:59:56 -05:00
jdalton
81c24a8478 Add _.get test for empty paths. 2015-04-05 08:38:51 -05:00
jdalton
a6f3e0b6af Remove "correctly" from test labels. 2015-04-05 08:38:14 -05:00
jdalton
6e9e8127b6 Rename variable sum in doc examples to total. [ci skip] 2015-04-05 08:15:36 -05:00
jdalton
63d43275d3 Remove unnecessary parseFloat from baseAt. 2015-04-05 08:13:32 -05:00
jdalton
cb2bf7f8fa Add tests for missing path parts for _.matchesProperty. 2015-04-05 01:39:51 -05:00
jdalton
1fae760ccd Use perl instead of sed in travis.yml. 2015-04-05 01:39:16 -05:00
jdalton
4195c4c4bf Add tests for missing path parts for _.property and _.propertyOf. 2015-04-04 14:35:50 -05:00
jdalton
13e7a1ed93 Add _.isMatch and _.matchesProperty tests for nullish object params. 2015-04-04 00:29:04 -05:00
jdalton
ea4357ca98 Add _.callback tests for deep paths. 2015-04-03 17:44:59 -05:00
jdalton
5e8255d24d Tweak path related test labels. 2015-04-03 17:08:59 -05:00
jdalton
003d6ec43f Add _.has tests for deep paths. 2015-04-03 17:08:30 -05:00
jdalton
9749ff7c67 Add a non-deep property test for _.get. 2015-04-03 12:56:12 -05:00
jdalton
c88589e0e5 Add _.result tests for deep paths. 2015-04-03 12:55:42 -05:00
jdalton
32ef1bb7a5 Add deep props to key tests to make it more interesting. 2015-04-03 12:47:26 -05:00
jdalton
206c65904f Add _.matchesProperty test for deep props. 2015-04-03 12:47:08 -05:00
jdalton
219d4688e4 Ensure path a property name is teated as a key before a path in _.get and _.set. 2015-04-03 12:36:31 -05:00
jdalton
adc687f0a0 Add _.property and _.propertyOf tests for deep paths. 2015-04-03 12:22:38 -05:00
jdalton
88e59c9a5a Cleanup tests. 2015-04-03 11:46:55 -05:00
jdalton
71a89a575f Add _.get and _.set tests. 2015-04-03 11:46:37 -05:00
jdalton
e3dc8dfcf4 Remove rogue newline in initCloneByTag doc block. [ci skip] 2015-04-03 02:12:14 -05:00
jdalton
2dd77d5bc7 Change "method" to "function". [ci skip] 2015-04-03 02:11:42 -05:00
jdalton
0192226bb3 Use "length" when referring to a property name. [ci skip] 2015-04-03 02:11:16 -05:00
jdalton
faf2658da2 Move getLength closer to like functions and give it a proper jsdoc block. 2015-04-03 02:10:21 -05:00
jdalton
9a1c00d2dc Use x a bit more in support definition to prevent aggressive minifier modifications. 2015-04-01 21:42:57 -07:00
jdalton
4a8695caff Use getLength to avoid an iOS JIT bug. 2015-04-01 21:39:37 -07:00
jdalton
b28016bfeb Simplify isLength check in _.keys. 2015-04-01 12:07:12 -07:00
jdalton
4758a9e66d Ensure _.inRange swaps start with end when start is greater than end. [closes #1099] 2015-04-01 08:43:42 -07:00
Trevor Adams
97bd1ef4ec Minor change to _.once to avoid an extra var swap. 2015-04-01 08:38:02 -07:00
jdalton
2adac8bdae Use _.restParam in createAssigner. 2015-04-01 01:57:19 -07:00
jdalton
3c56914822 Simplify isLoose check in baseIsEqualDeep. 2015-04-01 00:08:31 -07:00
jdalton
c5cc907838 Ensure _.match and _.matchesProperty compares functions by reference. [closes #1101] 2015-03-31 23:41:15 -07:00
jdalton
0907aabacd Avoid bug in older browsers where an unmatched capture group returns an empty string. 2015-03-31 09:09:17 -07:00
jdalton
f4290bda7f Update test deps. 2015-03-31 01:06:09 -07:00
jdalton
4bdb82a7a2 Ensure toPath works with a nullish value. 2015-03-31 00:50:47 -07:00
jdalton
6a696dde3a Add _.set tests. 2015-03-31 00:15:46 -07:00
jdalton
8481684a82 Fix start and end typo mix up in _.range docs. [closes #1095] [ci skip] 2015-03-30 21:05:48 -07:00
Benjamin Tan
03aa8b3356 Minor documentation and test name nits. [ci skip] 2015-03-30 20:58:20 -07:00
jdalton
64bfed2640 Clarify _.uniq docs. [ci skip] 2015-03-30 00:55:30 -07:00
jdalton
2edcc89303 Add _.get and _.set. 2015-03-29 20:59:48 -07:00
jdalton
18313f2e90 Minor word nit for mapSet doc. [ci skip] 2015-03-29 20:57:19 -07:00
jdalton
0ff96418bd Simplify reIsDeepProp and rePropName. 2015-03-29 20:32:25 -07:00
Justin Ridgewell
1480abf0e8 Fix Worker tests in Chrome. See https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Browser_notes. 2015-03-29 18:34:48 -07:00
jdalton
e7ba75d533 Make toPath more robust and add support for deep properties to _.has and _.matchesProperty. 2015-03-29 15:43:53 -07:00
jdalton
044291d940 Add deep property support to _.has. 2015-03-29 08:59:42 -07:00
jdalton
ad62efcb9e Make reComboMarks singular for naming consistency. 2015-03-29 08:08:46 -07:00
jdalton
0dc59d9481 Add support for brackets to toPath. 2015-03-29 08:08:23 -07:00
Justin Ridgewell
11ab3034b1 Ensure _.result calls deep function with correct context. 2015-03-29 08:07:36 -07:00
Justin Ridgewell
c594bda77f Simplify getProperty and friends. 2015-03-29 00:07:13 -07:00
jdalton
8218b74fb3 Remove propertyDeep, propertyDeepOf, and resultDeep in favor of deep property path support in existing methods. 2015-03-28 13:16:16 -07:00
Joshua Piccari
3d0beb1a2e Add _.propertyDeep and _.propertyDeepOf. 2015-03-28 09:54:40 -07:00
Joshua Piccari
515cfd48d8 Add _.resultDeep. 2015-03-28 09:48:55 -07:00
jdalton
1448bab5b3 Clear func in function created by _.before without requiring an additional call. [closes #1088] 2015-03-28 00:39:04 -07:00
jdalton
2884f8acb8 Ensure _.intersection of a single array returns an empty array. [closes #1085] 2015-03-26 13:17:41 -07:00
jdalton
075cae4efb Use basePullAt in _.remove. 2015-03-26 09:03:29 -07:00
Justin Ridgewell
d2b98323dd Don't mutate array during #remove. [closes #1079] 2015-03-26 09:02:55 -07:00
jdalton
b1a81a85b1 Add a test for _.remove and index params. 2015-03-26 07:29:36 -07:00
jdalton
668384649a Change "Iterator" typo to "Iteratee" in docs. [ci skip] 2015-03-26 07:29:36 -07:00
jdalton
a7252b1a7f Bump to v3.6.0. 2015-03-24 22:41:59 -07:00
jdalton
a4e58e4d55 Rebuild lodash and docs. 2015-03-24 22:41:53 -07:00
jdalton
4241e01364 Cleanup comment links. [ci skip] 2015-03-24 22:34:57 -07:00
jdalton
d7d7952138 Increase test coverage by modifying the source to hit the branch of getFuncName used for minified builds. 2015-03-24 20:15:33 -07:00
jdalton
9cc2253339 Add npm i step to contributing.md. [ci skip] 2015-03-24 08:15:32 -07:00
jdalton
6831802590 Rename predicate to iteratee in _.uniq, _.countBy, _.groupBy, _.indexBy, & _.map docs. [closes #1071] [ci skip] 2015-03-23 23:34:33 -07:00
jdalton
9d79cc7e87 Make _.deburr handle combining diacritical marks. [closes #1070] 2015-03-23 20:50:04 -07:00
jdalton
763b003a11 Add note about _.runInContext to _.mixin docs. [ci skip] 2015-03-23 20:04:13 -07:00
jdalton
d560e2a558 Remove unused bar reFuncName. 2015-03-23 19:58:25 -07:00
jdalton
f914f080b1 Simplify ctor check flag in equalObjects. 2015-03-23 09:24:55 -07:00
jdalton
600a4e86e1 Ensure _.matches and _.matchesProperty work with function value params. 2015-03-23 09:24:05 -07:00
jdalton
e7b4ada65f Add _.restParam test for functions with more than 3 params. 2015-03-23 09:06:45 -07:00
jdalton
95f31be096 Add doc blocks for getFuncName and isLaziable. [ci skip] 2015-03-23 09:01:19 -07:00
jdalton
ad6db7eaae Adjust object checks in baseIsMatch, baseMatches, baseMatchesProperty, & isMatch. 2015-03-22 23:44:11 -07:00
jdalton
d7a99c6618 Add _.matches and _.matchesProperty tests for inherited properties. 2015-03-22 00:45:36 -07:00
jdalton
f20d8f5cc0 Loosen _.matches to match objects with inherited properties. [closes #1067] 2015-03-21 23:33:19 -07:00
jdalton
8930e6b393 Add baseWhile and createBaseEach. 2015-03-21 22:07:19 -07:00
jdalton
f26886acb0 Add createSortedIndex. 2015-03-21 18:08:35 -07:00
jdalton
820ab8d486 Add test for _.escapeRegExp with eval and Function. 2015-03-21 11:43:18 -07:00
jdalton
8e425fb358 Tweak _.at and _.matchesProperty doc examples. [ci skip] 2015-03-21 10:01:46 -07:00
jdalton
6006f499ac Fix doc bugs in _.runInContext, _.thru, _.forEachRight, & _.escapeRegExp. [closes #1065] [ci skip] 2015-03-21 10:01:17 -07:00
Christopher Venning
3caa740fc4 Fixed errors in documentation examples for _.trim, _.matchesProperty, & _.property. [ci skip] 2015-03-21 08:53:49 -07:00
jdalton
007ea9ea20 Add length check test to _.flow & _.flowRight. 2015-03-20 23:49:31 -07:00
jdalton
5d248d261d Expand part of shortcut fusion test. 2015-03-20 23:22:36 -07:00
jdalton
26908cba64 Don't assume a lodash method will exist. 2015-03-20 15:15:06 -07:00
jdalton
18d118746e Add _.fill doc example. [ci skip] 2015-03-20 12:37:49 -07:00
jdalton
9a633f5f2e Update root detection in WeakMap and Set shims. 2015-03-20 12:01:37 -07:00
jdalton
5aa44e98d5 Fix rhino and other old environment test fail. 2015-03-20 12:00:29 -07:00
jdalton
33916fa975 No need to redeclare funcName in createFlow. 2015-03-20 11:49:18 -07:00
jdalton
eab18df403 Cleanup isLaziable and getFuncNames. 2015-03-20 09:24:56 -07:00
jdalton
002caceb05 Cleanup isXyz methods. 2015-03-20 09:24:13 -07:00
jdalton
c250aa804a Ensure _.merge correctly coerces objects to arrays. [closes #1061] 2015-03-19 08:58:56 -07:00
jdalton
94ca50883f Drop funcDecomp optimization in baseCallback and ensure shortcut fusion for _.flow and _.flowRight works in minified builds. 2015-03-19 08:40:45 -07:00
jdalton
462c482873 Add support for shortcut fusion to _.flow and _.flowRight. 2015-03-18 10:27:45 -07:00
jdalton
e28e04a990 Add freeSelf as a fallback for when freeWindow is unavailable. 2015-03-17 20:13:10 -07:00
Rocco Nicosia
6438385d64 Fix _.zipObject docs to more clearly demonstrate it as _.pairs inverse. [ci skip] 2015-03-17 16:50:00 -07:00
jdalton
bfb08ce003 Use opposite instead of inverse to describe _.propertyOf. [ci skip] 2015-03-17 16:49:30 -07:00
jdalton
3590a06f40 Update _.zipObject docs to tie into _.pairs. [ci skip] 2015-03-17 16:45:01 -07:00
jdalton
23ca6c5e10 Rename createPad to createPadding and cleanup docs of pad methods. 2015-03-17 15:57:12 -07:00
jdalton
1aea5bcd50 Finish adding comment blocks to creator function. [ci skip] 2015-03-17 13:54:33 -07:00
jdalton
82c5d8ed28 Rename createComposer to createFlow. 2015-03-17 10:27:52 -07:00
jdalton
5dcd58a75f Tweak _.findIndex docs and correct _.findKey docs. [ci skip] 2015-03-17 10:23:59 -07:00
jdalton
dc605a4ee1 More more docs for creator functions. [ci skip] 2015-03-17 10:23:26 -07:00
Justin Ridgewell
fec940ab8b Allocate proper size in in _.restParam.
Since we're putting `rest` at `start` index, `array.length; // => {start + 1}`
2015-03-17 08:50:41 -07:00
jdalton
05fd7cecf4 Add docs for baseSum and arraySum. [ci skip] 2015-03-17 08:48:21 -07:00
jdalton
2f52730b48 Use and consistently. [ci skip] 2015-03-17 08:44:51 -07:00
jdalton
4c1819c7dd Ensure _.sum provides the correct arguments when iterating an object. 2015-03-15 19:49:14 -07:00
jdalton
c58c0df30e Cleanup creator functions. 2015-03-15 17:12:33 -07:00
jdalton
c5902b3144 Cleanup _.sum. 2015-03-15 17:01:40 -07:00
qsona
519eb424e7 Documentation nits. [ci skip] 2015-03-15 14:57:53 -07:00
qsona
03478afea4 Add support for _.sum to take iteratee. 2015-03-15 14:57:13 -07:00
jdalton
306ef8addf Add creator functions. 2015-03-15 14:48:32 -07:00
jdalton
d4659b261d Add baseFindIndex. 2015-03-15 11:22:25 -07:00
jdalton
69ce41807a Add _.restParam. 2015-03-15 10:57:21 -07:00
jdalton
cc81da5aa4 Update Chrome version in saucelabs.js. 2015-03-14 00:14:21 -07:00
jdalton
eee714f52b Add iteratee guard to _.includes. 2015-03-13 13:39:14 -07:00
jdalton
c976b637d8 Adjust test descriptions to be more generic. 2015-03-13 12:33:19 -07:00
jdalton
ea93515d53 Add well-known symbols test for _.uniq. 2015-03-13 09:03:09 -07:00
jdalton
652499bdcf Cleanup sortedIndex test. 2015-03-13 08:51:56 -07:00
Benjamin Tan
819862199a Documentation: Rename predicate to iteratee.
Closes #1049.
[ci skip]
2015-03-13 08:43:05 -07:00
jdalton
6c1bc1d7bb Semicolons out colons in. [ci skip] 2015-03-13 08:43:00 -07:00
octref
36ebe76e0a Fix _.reduce doc 2015-03-13 08:39:10 -07:00
Benjamin Tan
8f8d35dec7 Simplify test/saucelabs.js.
Remove repeated assignment operations.
2015-03-13 19:29:39 +08:00
jdalton
ac1e436339 Simplify isCommon and isCombo checks in mergeData. 2015-03-13 00:12:51 -07:00
jdalton
78d4812b0e Whitespace nits. [ci skip] 2015-03-12 23:02:23 -07:00
jdalton
6a1b7626e3 Add NaN tests for _.indexOf and _.lastIndexOf with a fromIndex. 2015-03-12 22:42:02 -07:00
bryce-gibson
b6ccb4c96f Add example of alternative _.zipObject syntax. [ci skip] 2015-03-12 07:41:15 -07:00
jdalton
9712ac550c Set metadata for curried lazy lodash methods. 2015-03-11 23:41:41 -07:00
jdalton
5b173766c6 Add symbol tests for _.isObject and _.uniq. 2015-03-11 20:52:34 -07:00
jdalton
b535c4f321 Optimize _.reduce and _.reduceRight. 2015-03-11 11:40:51 -07:00
jdalton
56c5ebcb71 Ensure the result of _.difference is based on the values of the first param only. [#1038] 2015-03-10 21:31:46 -07:00
jdalton
028234ba86 Update guard info in _.reduce docs. [ci skip] 2015-03-10 09:21:38 -07:00
jdalton
f063b4d231 Add isIterateeCall guards to _.every and _.some. [closes #1035] 2015-03-10 09:21:01 -07:00
Teoman Soygul
508f27cc32 Fix _.property documentation typo. [ci skip] 2015-03-10 08:44:54 -07:00
jdalton
d4783170e5 Minor cleanup of setting __actions__ in _.mixin. 2015-03-09 08:33:19 -07:00
jdalton
51e459b386 Bump to v3.5.0. 2015-03-08 17:57:42 -07:00
jdalton
1253d254af Rebuild lodash and docs. 2015-03-08 17:57:22 -07:00
jdalton
5e70574396 Add parentheses and cleanup more complex code snippets. 2015-03-08 17:45:53 -07:00
jdalton
b5dce2f74b Optimize createBindWrapper, createPartialWrapper, and createHybridWrapper. 2015-03-08 01:00:04 -08:00
jdalton
6113da3e68 Remove unneeded tests. 2015-03-07 23:27:21 -08:00
jdalton
faf6406289 Ensure lazy drop when applied after filter works correctly. [closes #1026] 2015-03-07 23:20:26 -08:00
jdalton
7c443431d9 Add private guard param doc to _.sortByOrder. [ci skip] 2015-03-07 11:11:24 -08:00
jdalton
0f201e3fd8 Add more chaining tests join, replace, & split. 2015-03-07 00:30:42 -08:00
jdalton
bf96c30187 Cleanup string methods added to LodashWrapper. 2015-03-07 00:23:17 -08:00
octref
eb1b7b914a Add split and replace to LodashWrapper. [closes #1016] 2015-03-06 23:11:52 -08:00
octref
135bc2de52 Adjust _.sortByOrder doc example to better show effect. [ci skip] 2015-03-06 12:02:30 -08:00
jdalton
ab2269717d Bump to v3.4.0. 2015-03-06 00:55:11 -08:00
jdalton
b5a42cfa75 Rebuild lodash and docs. 2015-03-05 23:01:16 -08:00
jdalton
6693416d0a Tweak _.isEmpty and _.size docs. [ci skip] 2015-03-05 22:59:18 -08:00
jdalton
9cdf013933 Ensure length hit of for lazy eval is checked on initial lazy call. [closes #997] 2015-03-05 22:50:16 -08:00
jdalton
1dfaa30520 Add inRange and sortByOrder to lodash doc notes. [ci skip] 2015-03-05 08:27:51 -08:00
jdalton
d898fcee75 Simplify the root assignment. 2015-03-05 07:41:22 -08:00
jdalton
1e647a2058 Rename test module for consistency. 2015-03-04 08:43:37 -08:00
jdalton
10e379d862 Add _.sortByOrder tests. 2015-03-04 08:43:37 -08:00
jdalton
ee456493c4 Remove argument unrolling in LazyWrapper assignments. 2015-03-04 08:43:37 -08:00
jdalton
69e9c7d0be Expand _.defaults test for working with _.reduce. 2015-03-04 08:43:37 -08:00
jdalton
adce718d63 Another cleanup pass on createAssigner. 2015-03-04 08:43:37 -08:00
jdalton
3a94a65f12 Tweak root assignment to work with webpack in a web worker. [closes ##313] 2015-03-04 08:43:37 -08:00
jdalton
bbe30db1b7 Avoid test fails for npm builds. 2015-03-03 12:13:48 -08:00
jdalton
68f3c43805 Add createComposer to reduce the definition of _.flow and _.flowRight. 2015-03-03 11:40:24 -08:00
jdalton
3c99ecda60 Move more code out of the try-block in _.attempt. 2015-03-03 11:40:24 -08:00
jdalton
b1366696c4 Simplify guard check in _.sortByAll. 2015-03-03 11:40:24 -08:00
jdalton
534aeb4065 Use args alias of arguments in _.difference, _.pull, & _.memoize. 2015-03-03 11:40:24 -08:00
jdalton
cc77a36dd9 Cleanup createAssigner. 2015-03-03 11:40:17 -08:00
jdalton
5991068fdf Add more lazy chaining tests. 2015-03-03 09:22:59 -08:00
octref
913778d5ab Let createAssigner get correct customizer
When `_.defaults` is invoked using `_.reduce` / `_.reduceRight`
`createAssigner` discards the customizer, so the effect is
`_.assign` but not `_.defaults`

```
_.reduce([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "fred"}
_.reduceRight([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "barney"}

// Fixed
_.reduce([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "barney"}
_.reduceRight([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "fred"}
```
2015-03-02 21:19:11 -08:00
h7lin
9a8345d4f9 Fix doc example in _.partition. [ci skip] 2015-03-02 20:25:29 -08:00
jdalton
ba9bd3bc76 Better match words with one character. [closes #1012] 2015-03-02 20:23:14 -08:00
jdalton
aad0070b77 Narrow new LodashWrapper to dropWhile. 2015-03-02 20:23:14 -08:00
jdalton
d192e69811 Break lazy chains before or . [closes #1011] 2015-03-02 09:19:05 -08:00
jdalton
ec8d919b93 Cleanup . 2015-03-02 09:17:16 -08:00
octref
4ce4f1d758 Add _.sortByOrder. 2015-03-01 14:04:00 -08:00
jdalton
3aa40d4df6 Simplify baseFlatten and always provide a fromIndex. 2015-03-01 01:22:38 -08:00
jdalton
ec1be41b62 Correct _.flatten benchmark. 2015-03-01 01:22:38 -08:00
jdalton
c15d81545a Update chalk in travis. 2015-03-01 01:22:38 -08:00
jdalton
1af8b9d16a Cleanup docs of _.flow, _.flowRight, _.defaults, _.range, _.inRange, & _.sum. [ci skip] 2015-02-28 21:12:10 -08:00
jdalton
d860cf834d Avoid testing the minified build on PRs in travis. 2015-02-28 19:18:38 -08:00
jdalton
63d5a3acbc Optimize baseIndexOf more consistently. 2015-02-28 12:42:14 -08:00
jdalton
132aacee89 Optimize lazy evaluation for 1 param. 2015-02-28 10:11:26 -08:00
jdalton
973038da6a Optimize baseIndexOf, indexOfNaN, and baseFlatten. 2015-02-27 21:43:30 -08:00
h7lin
584da3c39b Fix doc example in _.findLastIndex. [ci skip] 2015-02-27 19:56:12 -08:00
Mohsen Azimi
73c4829255 Escape the backtick in _.escape docs. [ci skip] 2015-02-27 19:56:06 -08:00
jdalton
68942f7ec4 Move _.max & _.min to Math category & make _.sum work on collections. 2015-02-27 09:20:57 -08:00
jdalton
e914b83a1b Add gitter badge to readme. [ci skip] [closes #983] 2015-02-27 08:26:09 -08:00
jdalton
2268376360 Update tested Firefox in saucelabs.js. 2015-02-26 19:41:22 -08:00
jdalton
6bb3b9a684 Disable lazy optimizations if the iteratee has more than one param. [closes #997] 2015-02-26 19:40:15 -08:00
jdalton
9f213c119c Add more chaining tests. 2015-02-25 23:35:16 -08:00
jdalton
f081e2b799 Cleanup _.sum tests. 2015-02-25 23:03:01 -08:00
jdalton
a024152c12 Add add and sum to lodash doc notes. [ci skip] 2015-02-25 23:01:50 -08:00
jdalton
42d23dbc70 Simplify _.sum. 2015-02-25 23:01:32 -08:00
John-David Dalton
74786e8a25 Merge pull request #987 from thejameskyle/math
Add math methods.
2015-02-25 19:00:06 -08:00
James Kyle
eeb4ede60d Add _.add/_.sum methods 2015-02-25 10:37:42 -08:00
Juliano Castilho
f2eee8896c Fix code example typo in _.dropRightWhile. [ci skip] 2015-02-25 00:19:53 -08:00
jdalton
bf4a70d91c Bump to v3.3.1. 2015-02-23 23:49:50 -08:00
jdalton
a35ab3937a Rebuild lodash and docs. 2015-02-23 23:49:40 -08:00
jdalton
5ef9a4be8a Ensure isIterateeCall doesn't error if index is an object without a toString method. [closes #994] 2015-02-23 23:48:49 -08:00
jdalton
d76d7582fe Simplify lazy filter, map, & takeWhile assignment. 2015-02-23 21:25:24 -08:00
jdalton
44006142c7 Ensure wait of _.debounce and _.throttle defaults to 0. [closes #991] 2015-02-23 08:28:20 -08:00
jdalton
6840b2cfe5 Consistent use of callCount variable. 2015-02-23 08:28:20 -08:00
jdalton
5613f60403 Ensure lazy takeWhile works with reverse and last`. [closes #990] 2015-02-23 02:05:09 -08:00
jdalton
76d3959f1a Use square in more places. 2015-02-23 01:26:07 -08:00
jdalton
b681759000 Remove unnecessary excused tests. 2015-02-23 00:35:24 -08:00
jdalton
d6336c4302 Fix code styling in _.template doc example. [ci skip] 2015-02-23 00:35:24 -08:00
jdalton
35b161450a Update benchmark and underscore vendor files. 2015-02-23 00:35:24 -08:00
jdalton
861aaf06c6 Optimize _.uniq and others in Firefox. 2015-02-23 00:35:23 -08:00
jdalton
a910884e7d Fix _.indexOf doc example typo. [closes #986] [ci skip] 2015-02-23 00:35:23 -08:00
Jarrett Meyer
0e7bef9014 Fixes missing single quotes in docs. [ci skip] 2015-02-23 00:35:23 -08:00
jdalton
d942189bc6 Bump to v3.3.0. 2015-02-23 00:35:23 -08:00
jdalton
eb16051b1e Rebuild lodash and docs. 2015-02-23 00:35:11 -08:00
jdalton
7749a7e41d Add gitter webhook to travis.yml. 2015-02-20 22:35:41 -08:00
jdalton
dc4cef17d4 Update ecstatic, istanbul, & sauce-tunnel in travis.yml. 2015-02-19 09:11:48 -08:00
jdalton
89ed40e4a4 Add _.merge. tests. 2015-02-19 00:14:59 -08:00
jdalton
10ee74d872 Cleanup clone tests. 2015-02-18 23:48:32 -08:00
jdalton
474ae1e91c Allow isDeep of _.clone to work with more truthy values. 2015-02-18 23:35:43 -08:00
jdalton
0dc70ca5f3 Semicolon nits. 2015-02-18 23:35:09 -08:00
jdalton
633b1663ca Tweak iteration methods test. 2015-02-18 23:22:03 -08:00
jdalton
153fe61b4b Avoid iterating strings in _.merge. [closes #978] 2015-02-18 21:05:39 -08:00
jdalton
9734fd0353 Increase _.merge test coverage. 2015-02-18 01:05:39 -08:00
jdalton
6209c120c0 Non-nits. 2015-02-18 01:03:53 -08:00
jdalton
3516881e7a Update tested Chrome in saucelabs.js. 2015-02-18 00:46:02 -08:00
jdalton
15398555b3 Ensure isIterateeCall works with NaN values. 2015-02-18 00:33:51 -08:00
jdalton
cb132fcbf4 Add more iteration method tests. 2015-02-18 00:03:50 -08:00
jdalton
f42f46c7d6 Adjust doc examples for smaller screens. [ci skip] 2015-02-17 10:08:38 -08:00
jdalton
f1046f1cf1 Consistent use of lodash when referencing a lodash wrapper. [ci skip] 2015-02-15 23:05:30 -08:00
jdalton
4a62287139 Cleanup baseLodash description. [ci skip] 2015-02-15 23:04:50 -08:00
jdalton
69cd56357f Tweak _.propertyOf usage example. [ci skip] 2015-02-15 22:42:16 -08:00
jdalton
b66a886682 Clarify _.noop docs. [ci skip] 2015-02-15 22:41:37 -08:00
jdalton
249504b7d6 Whitespace nits in docs. [ci skip] 2015-02-15 22:40:42 -08:00
jdalton
fa0086404d Add baseLodash. 2015-02-15 21:54:12 -08:00
Milos Zivadinovic
f243ebba91 Add _.inRange. 2015-02-15 18:01:05 -08:00
Austin Pray
540afb193b Fix type in _.some doc example. [closes #969] [ci skip] 2015-02-15 15:46:43 -08:00
jdalton
8294acdf1c Tweak null check tests of _.difference, _.intersection, _.union, & _.xor. 2015-02-15 00:37:18 -08:00
jdalton
7733d02938 Remove baseSlice from _.attempt. 2015-02-15 00:22:55 -08:00
jdalton
9b6342e7fa Add baseIsFunction. 2015-02-12 23:09:49 -08:00
jdalton
22c09cb31b Bump to v3.2.0. 2015-02-12 21:24:55 -08:00
jdalton
21e79cb54a Rebuild lodash and docs. 2015-02-12 21:24:48 -08:00
jdalton
b8cc829f4a Cleanup docs. [ci skip] 2015-02-12 21:13:45 -08:00
jdalton
ace0dacf15 Make baseMatches style consistent with baseMatchesProperty. 2015-02-12 20:18:26 -08:00
Graeme
5ca13098e3 Use predicate instead of iteratee. 2015-02-12 20:18:25 -08:00
jdalton
07b13eedec Cleanup _#plant and _.spread doc examples. [ci skip] 2015-02-12 12:47:54 -08:00
jdalton
d9168ed9ec Add proper jsdoc tags to _.fill. [ci skip] 2015-02-12 12:47:54 -08:00
jdalton
fb4e2c167c Add matchesProperty to lodash doc note. [ci skip] 2015-02-12 12:47:53 -08:00
jdalton
10ee3585f6 Fix spread doc and remove unused thisArg. 2015-02-12 01:59:16 -08:00
jdalton
5d4ba820dd Add _.matchesProperty shorthand tests. 2015-02-12 01:36:08 -08:00
jdalton
a51e00e69f Add _.matchesProperty tests. 2015-02-12 01:30:52 -08:00
jdalton
4dfa963851 Document "_.matchesProperty" shorthands. [ci skip] 2015-02-12 00:27:08 -08:00
jdalton
f2d4f6ccf6 Add _.matchesProperty. 2015-02-11 22:50:39 -08:00
jdalton
182cb8ab25 Simplify lazy pluck and where. 2015-02-11 22:50:22 -08:00
jdalton
ece341d868 Update android testing in saucelabs.js. 2015-02-11 20:25:25 -08:00
jdalton
d72e8c2687 Source cleanup from eslinting. 2015-02-11 20:25:13 -08:00
jdalton
b0ff6f4c7b Remove extraneous description from createAggregator docs. [ci skip] 2015-02-11 08:30:46 -08:00
jdalton
6ec5249492 Change intuitively to implicitly. 2015-02-11 08:29:41 -08:00
jdalton
c44cd76c5a Ensure commit and reverse track __chain__` settings. [closes #958] 2015-02-11 08:29:01 -08:00
jdalton
37f711d72a Adjust dep versions to better suite their range in package.json. 2015-02-11 00:15:11 -08:00
jdalton
fcf18fb965 Remove thisArg from _.spread. [closes #957] 2015-02-11 00:15:11 -08:00
jdalton
2efd6250fb Minor commit nit in test.js. [ci skip] 2015-02-11 00:15:11 -08:00
jdalton
1b4bd8523d Add _.slice assert. 2015-02-11 00:15:11 -08:00
jdalton
60c44910df Fix lazy slice when used after filter. [closes #955] 2015-02-11 00:15:03 -08:00
jdalton
faf67fae03 Update qunit to 1.17.1. 2015-02-10 20:16:27 -08:00
jdalton
e95f547950 Add doc notes on guarded methods. [ci skip] 2015-02-10 09:44:48 -08:00
jdalton
96b663b783 Ensure lazy slice handles floating-point start and end params. 2015-02-10 00:33:10 -08:00
jdalton
ce44f7e4b0 Add lazy compact and toArray. 2015-02-10 00:08:09 -08:00
jdalton
16a9c7d492 Improve label of unstable test. 2015-02-09 08:58:08 -08:00
jdalton
fc369c3448 Add _.fill and _.slice tests for default start and end params. 2015-02-09 08:39:09 -08:00
jdalton
b1a33edf0f Cleanup io.js testing in travis.yml. 2015-02-09 01:24:40 -08:00
jdalton
3b805f1a24 Rebuild lodash. 2015-02-09 01:14:55 -08:00
jdalton
954b4d8075 Add mutation note to _.fill docs. [ci skip] 2015-02-09 00:45:38 -08:00
jdalton
d073e2a881 Add _.fill to lodash docs. [ci skip] 2015-02-09 00:45:37 -08:00
jdalton
044dd2af94 Remove unneeded jsdoc Function type tags. [ci skip] 2015-02-09 00:45:37 -08:00
jdalton
ee489fa8c0 Cleanup tests. 2015-02-09 00:45:37 -08:00
jdalton
035ed5f49b Add _.fill. 2015-02-09 00:45:37 -08:00
jdalton
7dcd690f61 Add object test for _.max and _.min being used as an iteratee for _.map. 2015-02-09 00:45:37 -08:00
jdalton
1c9290aded Add _.includes, _.indexOf, _.lastIndexOf, _.map, _.mapValues, & a few other tests. 2015-02-09 00:45:37 -08:00
jdalton
0b922b1ed1 Move _.support tests to be in alphebetic API order. 2015-02-09 00:45:37 -08:00
jdalton
34eec362e5 Add methods to lodash docs. [ci skip] 2015-02-09 00:45:37 -08:00
jdalton
b829383864 Cleanup docs for _.callback. [ci skip] 2015-02-09 00:45:36 -08:00
jdalton
3960235428 Cleanup _.spread docs & tests. 2015-02-09 00:45:36 -08:00
Nicolas Chambrier
e91a662491 Add _.spread. 2015-02-09 00:45:36 -08:00
jdalton
ba4da24984 Add tests for arguments provided to callbacks of _.takeWhile and friends when in a lazy chain sequence. [closes #944] 2015-02-09 00:45:36 -08:00
jdalton
70378432b7 Minor cleanup of istanbul command in travis.yml. 2015-02-09 00:45:36 -08:00
jdalton
6b63009b14 Expand _.takeWhile, _.takeRightWhile, _.dropWhile, & _.dropRightWhile tests. 2015-02-09 00:45:36 -08:00
jdalton
dd45fea732 Add _#commit, _#plant, & _#run. 2015-02-09 00:45:36 -08:00
jdalton
ee09425cfb Simplify travis.yml. 2015-02-09 00:45:36 -08:00
jdalton
af02a1e024 Replace some _.isFunction checks with simple typeof checks and replace some typeof checks with _.isFunction checks based on likelihood of a problem value older enviros being passed. 2015-02-07 09:45:11 -08:00
jdalton
2a86f0776c Fix travis run. 2015-02-06 23:44:14 -08:00
jdalton
c6f73d9df8 Consistent apply(undefined, ...) use. 2015-02-06 23:14:03 -08:00
jdalton
5ab79f292b Allow _.attempt to provide additional arguments to func. [closes #929] 2015-02-06 23:09:52 -08:00
jdalton
82c7a22d27 Ensure _.flow and _.flowRight return an identity function when no arguments are provided. [closes #938] 2015-02-06 22:45:58 -08:00
jdalton
35fa977981 Update to Node.js 0.12 and simplify io.js install in travis.yml. 2015-02-06 21:57:08 -08:00
jdalton
ecbc46a91d Remove unused unshift variable. 2015-02-06 21:56:37 -08:00
jdalton
d2f6416e45 Add _.runInContext usage example to _.mixin docs. [ci skip] 2015-02-05 09:47:47 -08:00
jdalton
97a885a05c Use sauce-tunnel v2.1.1 to avoid hangs when closing tunnels. 2015-02-04 22:51:25 -08:00
jdalton
aa1edd6b94 Update tested io.js version in travis.yml. 2015-02-04 21:20:11 -08:00
jdalton
083e401717 Fix param doc typos in baseIsMatch, _.chunk, & _.isMatch. [ci skip] [closes #923] 2015-02-04 21:14:42 -08:00
jdalton
bdeca2edce Update .gitignore to ignore lodash.compat.min.js. [ci skip] 2015-02-04 21:14:42 -08:00
jdalton
c84e14db46 Bump to v3.1.0. 2015-02-04 21:14:42 -08:00
jdalton
919c5bd0b3 Rebuild lodash and docs. 2015-02-04 21:14:42 -08:00
jdalton
af8a8f1e3f Add spec note to isLength and update spec link for MAX_SAFE_INTEGER. [ci skip] 2015-02-04 21:14:42 -08:00
jdalton
41d08e123f Ensure isIterateeCall works correctly with objects. [closes #917] 2015-02-04 21:14:42 -08:00
jdalton
67d9656e35 Use baseProperty instead of _.property in more places. 2015-02-04 21:14:42 -08:00
jdalton
1a58a70494 Reduce deps on matches in favor of baseMatches. 2015-02-04 21:14:42 -08:00
jdalton
a477b2efd1 Add startCase to lodash docs. [ci skip] 2015-02-04 21:14:42 -08:00
jdalton
59c4546b8c Move _.startCase definition. 2015-02-04 21:14:42 -08:00
jdalton
ed1a75ef4c Add _.trunc test for floating-point lengths. 2015-02-04 21:14:42 -08:00
jdalton
0cd942f152 Cleanup case tests. 2015-02-04 21:14:41 -08:00
jdalton
fe7f082083 Cleanup case methods. 2015-02-04 21:14:41 -08:00
James Kyle
849fd71f76 Add _.startCase. 2015-02-04 21:14:41 -08:00
jdalton
4e3a72388d Add more lazy tests. 2015-02-04 21:14:41 -08:00
jdalton
29e3d9eff5 Bump to v3.0.1. 2015-02-04 21:14:31 -08:00
jdalton
64280f4285 Rebuild lodash and docs. 2015-02-04 21:14:02 -08:00
jdalton
98c6eaac3b Remove unneeded baseToString use. 2015-02-04 21:14:02 -08:00
jdalton
22d965c66c Add _.merge test for DOMExceptions for #895. 2015-02-04 21:14:01 -08:00
jdalton
2eb932ebc1 Add _.assign and _.merge test to ensure object isn't treated as source. 2015-02-04 21:14:01 -08:00
jdalton
2ee0634db3 Should coerce float start and end params of _.slice to integers. 2015-02-04 21:14:01 -08:00
jdalton
db3b6a1252 Add _.random tests. 2015-02-04 21:14:01 -08:00
jdalton
24810aeca3 Fix DOMException in _.merge. [closes #895] 2015-02-04 21:14:01 -08:00
jdalton
c888319f22 Fix lazy reverse and rest. [closes #890] 2015-02-04 21:14:01 -08:00
jdalton
13ee78a9c9 Remove baseToString use in baseCallback. 2015-02-04 21:14:01 -08:00
jdalton
acaa07cf7c Update docs. [ci skip] 2015-02-04 21:13:26 -08:00
Bjørn Madsen
1a3c9939e8 Fix Wikipedia link for kebabCase. 2015-02-04 21:13:26 -08:00
jdalton
56afe21022 Fix doc typo in _.memoize. [ci skip] 2015-02-04 21:13:26 -08:00
jdalton
b58bfa82e6 Fix doc example for _.forEach. [ci skip] 2015-02-04 21:13:26 -08:00
jdalton
a6257b5901 Bump to v3.0.0. 2015-02-04 21:13:20 -08:00
John-David Dalton
16ad7e53ff Update docs. [ci skip] 2015-02-02 23:05:17 -08:00
jdalton
3e4e4f2664 Rebuild lodash. 2015-02-02 23:05:17 -08:00
jdalton
dc0c4fe8fb Add tests for methods that check for functions and throw. 2015-02-02 23:05:17 -08:00
jdalton
0c050bb266 Add _.uniq test for arguments provided to iteratee. 2015-02-02 23:05:16 -08:00
jdalton
47a5b227cc Ensure _.ary treats negative n values as 0. 2015-02-02 23:05:16 -08:00
jdalton
ed61d0c591 Cleanup tests. 2015-02-02 23:05:16 -08:00
jdalton
8ff856ecf8 Use https in links where supported. [ci skip] 2015-02-02 23:05:16 -08:00
jdalton
93a607bea0 Reduce test hint for stable sort to match the commented issue. 2015-02-02 23:05:16 -08:00
jdalton
7bec7ba49d Rename Lo-Dash references to lodash. [ci skip] 2015-02-02 23:05:16 -08:00
jdalton
4c8f3bd392 Update travis.yml. 2015-02-02 23:05:16 -08:00
John-David Dalton
74ba9eb159 Update tested version of Firefox in saucelabs.js. 2015-02-02 23:05:16 -08:00
jdalton
d28ca4eda7 Rename ES6 to ES in tests. 2015-02-02 23:05:16 -08:00
jdalton
9563b5a7df Change ES6 references to ES. [ci skip] 2015-02-02 23:05:16 -08:00
John-David Dalton
d3a049c6e0 Update readme.md. 2015-02-02 23:05:16 -08:00
John-David Dalton
a52a3eb42f Update tested io.js version in travis.yml. 2015-02-02 23:05:15 -08:00
John-David Dalton
c54b21a754 Cleanup contributing.md. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
cc8995cd5c Remove Underscore build from readme. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
2e222fbae2 Minor doc whitespace nits. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
cdf3b15336 Use baseToString in more places. 2015-02-02 23:05:15 -08:00
John-David Dalton
a9a95de02d Use baseToString in _.repeat. 2015-02-02 23:05:15 -08:00
John-David Dalton
d4bcd4ab0c Rename toString helper to baseToString to avoid conflict with aliases. 2015-02-02 23:05:15 -08:00
John-David Dalton
3b2ed06864 Update bower.json and component.json. 2015-02-02 23:05:15 -08:00
John-David Dalton
ab210b3988 Use install shorthand consistently in readme. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
70617be903 Use Object.create(null) in SetCache. 2015-02-02 23:05:15 -08:00
John-David Dalton
f039d5bbcb Update lodash script reference in perf/index.html. 2015-02-02 23:05:15 -08:00
John-David Dalton
e0adb3cf9a Update tested enviros. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
4dd6e07b8d Change description. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
d69b7951e0 Remove author & contributors notes from readme. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
d915ece2e7 Use baseClone & keys instead of baseAssign. 2015-02-02 23:05:14 -08:00
John-David Dalton
f1be3df112 Rename params of arrayCopy and baseCopy. 2015-02-02 23:05:14 -08:00
John-David Dalton
29b7ca4c25 Switch condition order. 2015-02-02 23:05:14 -08:00
John-David Dalton
f478d916aa Doc cleanup. [ci skip] 2015-02-02 23:05:14 -08:00
John-David Dalton
d2e50b09db Rename toString to objToString. 2015-02-02 23:05:14 -08:00
John-David Dalton
23c2dd33f2 Remove unnecessary _.toPlainObject test. 2015-02-02 23:05:14 -08:00
John-David Dalton
ce0c3c935c Remove unnecessary phantomjs guards. 2015-02-02 23:05:14 -08:00
John-David Dalton
bdbafb7a2a Treat arguments objects like plain objects. 2015-02-02 23:05:14 -08:00
John-David Dalton
edffe2a6fc Fix tests in phantomjs. 2015-02-02 23:05:14 -08:00
John-David Dalton
cd69a53406 Guard against nullish value being passed to arrayCopy in baseMergeDeep. 2015-02-02 23:05:14 -08:00
John-David Dalton
439ffa5849 Updated tested version of io.js. 2015-02-02 23:05:14 -08:00
John-David Dalton
4518c30cbe Fix test fails. 2015-02-02 23:05:13 -08:00
John-David Dalton
6683809447 Adjust handling of typed arrays and arguments objects in baseMergeDeep. 2015-02-02 23:05:13 -08:00
John-David Dalton
cccd43a16b Add _.merge tests for arguments objectd and typed arrays. 2015-02-02 23:05:13 -08:00
John-David Dalton
91d44147bb Allow io.js to build files for tests in travis.yml. 2015-02-02 23:05:13 -08:00
John-David Dalton
777311bbf5 Update falsey arguments assert count. 2015-02-02 23:05:13 -08:00
John-David Dalton
9ded5dc78d Minor stye nit in _.isEqual test. 2015-02-02 23:05:13 -08:00
John-David Dalton
5b81c4573c Cleanup test titles. 2015-02-02 23:05:13 -08:00
John-David Dalton
32b2e9f6cf Add _.isTypedArray tests. 2015-02-02 23:05:13 -08:00
John-David Dalton
a6dba44561 Add tests for _.toPlainObject. 2015-02-02 23:05:13 -08:00
John-David Dalton
03fc317a3f Tweak _.findLastKey doc. [ci skip] 2015-02-02 23:05:13 -08:00
John-David Dalton
00a8130201 Fix typo in baseMergeDeep. 2015-02-02 23:05:13 -08:00
John-David Dalton
74fc15cccd Move isIndex into runInContext. 2015-02-02 23:05:13 -08:00
John-David Dalton
1d4d919f6d Move tag references higher in source. 2015-02-02 23:05:12 -08:00
John-David Dalton
1826cc8870 Cleanup _.isPlainObject docs. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
8a6dab03c4 Tighten isIndex and isIterateeCall. 2015-02-02 23:05:12 -08:00
John-David Dalton
dffad444c3 Rearange key and mergeFunc param. 2015-02-02 23:05:12 -08:00
John-David Dalton
d6f1b164f7 Optimize object path in baseMergeDeep. 2015-02-02 23:05:12 -08:00
John-David Dalton
4011f054d6 Use isLength in baseIsEqualDeep. 2015-02-02 23:05:12 -08:00
John-David Dalton
14e9978359 Correct _.toPlainObject docs & add examples. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
98535638a2 Update doc examples of _.isPlainObject, _.toArray, _.forIn, _.forInRight, _.keys, _.keysIn, _.values, & _.valuesIn. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
8861c04e77 Update lodash docs. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
42b6f320d8 Fix _.isTypedArray docs. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
31b4a9197f Simplify arrayToObject. 2015-02-02 23:05:12 -08:00
John-David Dalton
f06c9d5b9b Move _.toArray and _.toPlainObject to the Lang category. 2015-02-02 23:05:12 -08:00
John-David Dalton
130fafd7c2 Add baseMergeDeep. 2015-02-02 23:05:11 -08:00
John-David Dalton
e76f79cd56 Doc tweaks to baseIsEqualDeep, equalArrays, & equalObjects. 2015-02-02 23:05:11 -08:00
John-David Dalton
ba21718cb9 Whitespace nits and cleanup. 2015-02-02 23:05:11 -08:00
John-David Dalton
6dfb2997cb Cleanup baseMerge. 2015-02-02 23:05:11 -08:00
John-David Dalton
ae9ac3b439 Add _.toPlainObject. 2015-02-02 23:05:11 -08:00
John-David Dalton
d70b5a9886 Add baseCopy. 2015-02-02 23:05:11 -08:00
John-David Dalton
fb2a20201c Remove isArrayLike helper. 2015-02-02 23:05:11 -08:00
John-David Dalton
d1761558b4 Rename argsToObject to arrayToObject and cleanup arrayCopy. 2015-02-02 23:05:11 -08:00
John-David Dalton
5bd0a53edd Doc cleanup. [ci skip] 2015-02-02 23:05:11 -08:00
John-David Dalton
53ea73238a Cleanup baseIsEqualDeep. 2015-02-02 23:05:11 -08:00
John-David Dalton
28560cb887 Add _.isTypedArray. 2015-02-02 23:05:11 -08:00
John-David Dalton
0bcd12aa4e Add iojs to travis.yml. 2015-02-02 23:05:11 -08:00
John-David Dalton
a7dfdebed6 Rebuild lodash. 2015-02-02 23:05:10 -08:00
John-David Dalton
aca07530aa Ensure _.sortByAll iteratee call guard works when _.partialRight is applied. 2015-02-02 23:05:10 -08:00
John-David Dalton
c0110c6bab Reduce doc example for _.assign and _.defaults. [ci skip] 2015-02-02 23:05:10 -08:00
John-David Dalton
0ef9e0fa75 Reduce keywords in component.json. [ci skip] 2015-02-02 23:05:10 -08:00
John-David Dalton
ba0751917d Update urls in contributing.md. [ci skip] 2015-02-02 23:05:10 -08:00
John-David Dalton
e3c1bfbcba Update build detection in saucelabs.js. 2015-02-02 23:05:10 -08:00
John-David Dalton
5aaa0a7b5f Update isModularize and isStrict detection. 2015-02-02 23:05:10 -08:00
John-David Dalton
2ca75970c0 Don't require building for run-test.sh. 2015-02-02 23:05:10 -08:00
John-David Dalton
d9c92288be Update contributing.md. [ci skip] 2015-02-02 23:05:10 -08:00
jdalton
e4f231502a Move _lodash.js to lodash.js. 2015-02-02 23:05:10 -08:00
jdalton
04a61e6fd6 Move lodash.js to lodash.src.js. 2015-02-02 23:04:56 -08:00
jdalton
dc5c7d2ee8 Move lodash.src.js to _lodash.js. 2015-02-02 23:02:47 -08:00
John-David Dalton
87ac6812a3 Update repo structure. 2015-01-10 11:08:20 -08:00
John-David Dalton
8d4d2d62c1 Remove clonePassthru. 2015-01-10 11:08:08 -08:00
John-David Dalton
68fc036b7a Fix test fail in non-browsers. 2015-01-09 19:11:45 -08:00
John-David Dalton
f053c4d532 Update lodash-compat-dev path. 2015-01-09 09:43:54 -08:00
John-David Dalton
06e4a2dbde Add initCloneByTag and adjust how unclonables are handled. 2015-01-09 09:43:54 -08:00
John-David Dalton
9e0ecab0c1 Move like functions closer together. 2015-01-08 00:11:33 -08:00
John-David Dalton
996e61a383 Make bower.json main reference lodash.compat.js. [ci skip] 2015-01-08 00:10:47 -08:00
John-David Dalton
309aa4a3f3 Minor perf/index.html tweak. 2015-01-07 21:16:49 -08:00
John-David Dalton
0906fbf995 Correct benchmark titles for _.includes. 2015-01-07 21:16:49 -08:00
John-David Dalton
2348ec40ee Add arrayCopy and use baseSlice in more functions. 2015-01-07 21:16:41 -08:00
John-David Dalton
c6852f4b96 Remove index.js. 2015-01-07 16:49:57 -08:00
John-David Dalton
8b01139738 Change project structure. 2015-01-07 09:33:46 -08:00
John-David Dalton
5ea3717152 Rebuild dist. 2015-01-06 09:06:41 -08:00
John-David Dalton
d01a673adb Update copyright year. [ci skip] 2015-01-06 09:03:07 -08:00
John-David Dalton
571ec44c33 Cleanup tests. 2015-01-05 23:04:20 -08:00
John-David Dalton
e5a3c12026 Add _.invoke test for missing properties. 2015-01-05 23:04:20 -08:00
John-David Dalton
bb2f1aa4be Expand _.runInContext doc examples. 2015-01-05 23:04:20 -08:00
John-David Dalton
59070bcd5b Simplify falsey string checks. 2015-01-05 23:04:20 -08:00
John-David Dalton
2f52dd88a9 Fix doc typo in arrayEvery and baseEvery. [ci skip] 2015-01-05 23:04:20 -08:00
John-David Dalton
79fec3ac40 Cleanup doc "returns" for _.assign, _.size, _.defaults, & _.merge. [ci skip] 2015-01-05 23:04:19 -08:00
John-David Dalton
6247bbf4b1 Cleanup customizer callback & callback shorthand docs. [ci skip] 2015-01-05 23:04:19 -08:00
John-David Dalton
11de155432 Chain methods by reference instead of property. 2015-01-04 16:55:09 -06:00
John-David Dalton
bfe833c132 Tweak _.drop, _.dropRight, _.take, & _.takeRight doc examples. [ci skip] 2015-01-04 16:55:09 -06:00
John-David Dalton
1fd1da72f4 Cleanup bower.json. 2015-01-04 16:55:09 -06:00
John-David Dalton
f4c994d182 Simplify package.json for non-npm use. 2015-01-04 16:55:09 -06:00
John-David Dalton
d81a6e6e89 Add more tested strings to the case methods. 2015-01-03 01:22:54 -06:00
John-David Dalton
fab5daacf8 Tweak string method doc examples. [ci skip] 2015-01-03 01:22:54 -06:00
John-David Dalton
b714c6b746 Update _.template sourceURLs to display better in Firefox. 2015-01-03 01:22:53 -06:00
John-David Dalton
af1355a94e Clarify customizer args in docs for _.clone, _.cloneDeep, _.isEqual, & _.isMatch. [ci skip] 2015-01-03 01:22:53 -06:00
John-David Dalton
ebc08fd6f5 Add _.parseInt used with _.map doc example. [ci skip] 2015-01-03 01:22:53 -06:00
John-David Dalton
30b1445195 Add ES6 notes to _.keys, _.keysIn, _.values, & _.valuesIn. [ci skip] 2015-01-03 01:22:43 -06:00
John-David Dalton
0d1c7a1414 Add _.memoize.Cache doc example. [ci skip] 2015-01-02 16:50:26 -06:00
John-David Dalton
7e8e7757f4 Update features and support sections of readme. [ci skip] 2015-01-02 16:50:26 -06:00
John-David Dalton
42eb180b6c Avoid unnecessary coercion of radix in _.parseInt. 2015-01-02 10:58:17 -06:00
John-David Dalton
dff35bc9b7 Cleanup _.mixin. 2015-01-02 10:58:17 -06:00
John-David Dalton
6a87ed2853 Tweak options detection in _.trunc. 2015-01-02 10:58:16 -06:00
John-David Dalton
1266d49c65 Minor tweak to condition in _.zipObject. 2015-01-02 10:58:16 -06:00
John-David Dalton
c8b130b232 Cleanup createWrapper. 2015-01-01 19:46:59 -06:00
John-David Dalton
67a6b0f383 Cleanup .gitignore. [ci skip] 2015-01-01 19:46:59 -06:00
John-David Dalton
e7c176f904 Fix typo in toString docs. [ci skip] 2014-12-31 18:35:14 -06:00
John-David Dalton
4cc8363b5f Replace [[Class]] with tag references in tests. 2014-12-31 11:34:44 -06:00
John-David Dalton
93193d7e76 Comment cleanup. [ci skip] 2014-12-31 11:34:13 -06:00
John-David Dalton
d68321ac27 Change [[Class]] references to ES6 tag and add toString helper. 2014-12-31 11:13:33 -06:00
John-David Dalton
b2e8359d31 Add more isLength tests. 2014-12-31 09:11:12 -06:00
John-David Dalton
a302ca3d6c Use a nullish check in _.startsWith instead of typeof. 2014-12-31 00:43:18 -06:00
John-David Dalton
670358f235 Make isLength return false for floats. 2014-12-31 00:42:45 -06:00
John-David Dalton
10e329f762 Add _.sortedIndex benchmark. [ci skip] 2014-12-30 21:16:07 -06:00
John-David Dalton
6a3c1bdb99 Fix strict mode test fail for es6 builds. 2014-12-30 21:06:35 -06:00
John-David Dalton
90923c965b Various doc cleanup. [ci skip] 2014-12-30 18:39:25 -06:00
John-David Dalton
d555241d03 Cleanup createExtremum. 2014-12-30 18:37:45 -06:00
John-David Dalton
3d2b6b7620 Rename baseBinaryIndex to binaryIndexBy. 2014-12-30 18:21:44 -06:00
John-David Dalton
0b943b418c Add createExtremum and extremumBy to reduce _.max and _.min. 2014-12-30 18:20:22 -06:00
John-David Dalton
db12aaad11 Adjust getCallback use in _.max, _.min, _.sortedIndex, & _.sortedLastIndex. 2014-12-30 11:03:47 -06:00
John-David Dalton
860aa65d10 Merge pull request #842 from bezoerb/debounce-doc-fix
Fixed documentation for debounce. [ci skip]
2014-12-29 08:24:56 -06:00
John-David Dalton
2e5e279a14 Minor _.where test cleanup. 2014-12-29 01:33:00 -06:00
John-David Dalton
df87b9ff56 Add _.transform tests. 2014-12-29 01:33:00 -06:00
John-David Dalton
6c06ff3ca0 Fix skipTest typos. 2014-12-29 01:32:48 -06:00
John-David Dalton
40d6e9c841 Add tests for custom _.callback implementations. 2014-12-28 17:23:27 -06:00
John-David Dalton
6a4f06f325 Make _.omit and _.pick use bindCallback. 2014-12-28 17:21:32 -06:00
John-David Dalton
f7d306cb02 Let the nullish check be handled by baseCallback. 2014-12-28 17:21:13 -06:00
Ben Zörb
34bc182c22 Fixed documentation for debounce 2014-12-28 22:42:28 +01:00
John-David Dalton
3f8dd7e658 Add test for customizer results of NaN. 2014-12-27 23:09:56 -06:00
John-David Dalton
46341fea96 Ensure _.merge handles source arrays with undefined values correctly with a customizer. 2014-12-27 22:11:47 -06:00
John-David Dalton
4319cdbba1 Fix failing Backbone test and ensure _.assign works properly with a customizer that returns undefined. 2014-12-27 21:14:12 -06:00
John-David Dalton
3453236830 Adjust how tests are skipped in loops so values may be added without adjusting the skip counts. 2014-12-27 20:27:17 -06:00
John-David Dalton
fa2058ec77 Ensure _.assign and _.merge don't assign the customizer result if it is the same as the destination value. 2014-12-27 19:42:10 -06:00
John-David Dalton
7f823fe2a8 Minor comment format nit. [ci skip] 2014-12-27 00:39:39 -06:00
John-David Dalton
58e14705b5 Rebuild dist. 2014-12-26 22:17:59 -06:00
John-David Dalton
99b7613206 Clarify _.isEmpty doc. [ci skip] 2014-12-26 22:15:57 -06:00
John-David Dalton
545e614c04 Cleanup isBindable. 2014-12-26 21:39:37 -06:00
John-David Dalton
5ea04a388d Change setCallbackData to isBindable and use bindCallback more. 2014-12-26 21:39:37 -06:00
John-David Dalton
8922372f4b Make _.unzip use baseProperty. 2014-12-26 21:39:37 -06:00
John-David Dalton
ceaa2c1619 Add bindCallback and setCallbackData. 2014-12-26 21:39:36 -06:00
John-David Dalton
4e73daab79 Add getLength, baseProperty, and baseMatches. 2014-12-26 21:39:36 -06:00
John-David Dalton
5b29d987c8 Use arrayMax and arrayMap instead of _.max and _.pluck in _.unzip. 2014-12-23 18:25:26 -06:00
John-David Dalton
1cd53c051d Update tested version of RingoJS. 2014-12-23 17:44:53 -06:00
John-David Dalton
5460d0030f Remove php from .editorconfig. [ci skip] 2014-12-23 17:44:53 -06:00
John-David Dalton
d14a0ce592 Use isLength in _.keys, _.keysIn, and shimKeys. 2014-12-22 12:26:16 -06:00
Benjamin Tan
a4000a3286 README.md: Update links to npm and minor cleanup. [ci skip] 2014-12-22 11:46:03 -06:00
Benjamin Tan
85fd650f5c More comment updates
[ci skip]
2014-12-22 11:46:03 -06:00
John-David Dalton
b19033a375 Add _.runInContext test for _.uniqueId counter. 2014-12-22 11:46:03 -06:00
John-David Dalton
33e19ce9f6 Reduce deps of _.template. 2014-12-21 23:17:34 -06:00
John-David Dalton
d21218fd57 Make use of changed baseValues signature. 2014-12-21 23:17:34 -06:00
John-David Dalton
9f2279c675 Make baseValues accept props instead of a keysFunc. 2014-12-21 23:17:34 -06:00
John-David Dalton
06bfbfaff4 Rename isWhitespace to isSpace. 2014-12-21 23:17:34 -06:00
John-David Dalton
562834e0d0 Use https for Benjamin's site url. [ci skip] 2014-12-21 23:17:34 -06:00
John-David Dalton
bdf2285f14 Remove Object.create use. 2014-12-21 21:31:56 -06:00
Benjamin Tan
1780682a8d Minor comment updates
[ci skip]
2014-12-21 21:03:55 -06:00
John-David Dalton
9b48bd27dd Ajust tests for npm build modifications. 2014-12-21 21:03:55 -06:00
John-David Dalton
0b1e2a6107 Add test for _.noConflict. 2014-12-21 21:03:55 -06:00
John-David Dalton
c78edf3fff Remove "always" from test titles. 2014-12-21 21:03:55 -06:00
John-David Dalton
6fcd99c6da Adjust test for builds without noConflict. 2014-12-21 21:03:55 -06:00
John-David Dalton
b42f3a5400 Ensure _.isMatch handle customizer functions correctly. 2014-12-20 20:00:58 -06:00
John-David Dalton
bb543920a6 Update Underscore version in LICENSE.txt. [ci skip] 2014-12-20 20:00:58 -06:00
John-David Dalton
0845758023 Add isMatch to lodash doc. [ci skip] 2014-12-20 17:42:45 -06:00
John-David Dalton
816f81260a Tweak _.matches docs. [ci skip] 2014-12-20 16:59:50 -06:00
John-David Dalton
a9583f4440 Cleanup tests. 2014-12-20 16:56:43 -06:00
John-David Dalton
4e52c9cc65 Add _.isMatch tests. 2014-12-20 16:56:43 -06:00
John-David Dalton
8299dded0b Remove default false from param docs. [ci skip] 2014-12-20 16:56:42 -06:00
John-David Dalton
5d83cafc50 Add baseIsMatch and _.isMatch. 2014-12-20 16:56:42 -06:00
John-David Dalton
9819e60aae Update Chrome extension doc link. [ci skip] 2014-12-20 16:56:42 -06:00
John-David Dalton
1182eb4a9f Remove unneeded partial use to reduce deps. 2014-12-20 16:56:42 -06:00
John-David Dalton
48a0986c14 Move idCounter into runInContext. 2014-12-20 16:56:42 -06:00
John-David Dalton
6c2f7046d1 Consolidate sortedIndex method tests and add one for array of undefined. 2014-12-20 16:56:42 -06:00
John-David Dalton
9735bffae5 Cleanup length checks. 2014-12-20 16:56:42 -06:00
John-David Dalton
56a11910db Remove _.identity from binaryIndex. 2014-12-17 23:57:06 -08:00
John-David Dalton
70b00dc4e3 Cleanup doc formatting. [ci skip] 2014-12-17 23:39:51 -08:00
John-David Dalton
56c1bf01a4 Ensure trim methods and _.words work as an iteratee for _.map with string objects. 2014-12-17 20:35:54 -08:00
John-David Dalton
022b295aaa Make _.indexOf and _.lastIndexOf used binaryIndex instead of _.sortedIndex and _.sortedLastIndex. 2014-12-17 20:35:54 -08:00
John-David Dalton
fd977895ab Tweak docs for _.after. [ci skip] 2014-12-17 20:35:54 -08:00
John-David Dalton
ad1f3ddbad Update Chrome and Firefox versions tested by Sauce. 2014-12-17 20:35:53 -08:00
John-David Dalton
c8b159e38c Reorg method categories. 2014-12-17 00:42:16 -08:00
John-David Dalton
7405e3c12a Simplify methods like _.defer and _.once. 2014-12-15 19:28:10 -08:00
John-David Dalton
1b8ca164c9 Increase code coverage. 2014-12-15 17:42:55 -08:00
John-David Dalton
74cdaa9fcb Clarify _.pick and _.omit docs. [ci skip] [closes #826] 2014-12-15 17:42:55 -08:00
John-David Dalton
0ba331485a Cleanup _.isEqual benchmarks. 2014-12-15 17:42:54 -08:00
John-David Dalton
f5b3c0affc Fix QUnit hidepass display. 2014-12-15 17:42:54 -08:00
John-David Dalton
316ae0c785 Update qunit-extras and backbone test to work with QUnit 1.16.0. 2014-12-15 17:42:54 -08:00
John-David Dalton
c2d2fa2579 Add more large array tests for sortedIndex methods. 2014-12-15 17:42:54 -08:00
John-David Dalton
d683eb2dd1 Reorg data merged by mergeData and remove dead code. 2014-12-14 19:30:53 -08:00
John-David Dalton
470d35e96c Simplify equalObjects. 2014-12-14 19:30:53 -08:00
John-David Dalton
7464d82243 Fix test fails in old IE. 2014-12-14 13:03:56 -08:00
John-David Dalton
c61fed32db Fix failing Rhino and Ringo tests. 2014-12-14 11:03:29 -08:00
John-David Dalton
c4cdec5531 Fix circular dep reference of baseIsEqual. 2014-12-14 10:40:10 -08:00
John-David Dalton
3ad9d38063 Add argsToObject, baseIsEqualDeep, equalArrays, equalByClass, and equalObjects helpers. 2014-12-14 10:31:48 -08:00
John-David Dalton
f8b95abf0c Add @d10 to the contributors list. 2014-12-13 23:33:06 -08:00
John-David Dalton
579794666a Update QUnit to 1.16.0. 2014-12-13 23:32:58 -08:00
John-David Dalton
2ef25b6338 Cleanup baseBinaryIndex and _.pull. [ci skip] 2014-12-12 22:49:30 -08:00
John-David Dalton
faddd94518 Add more large array tests for sortedIndex methods. 2014-12-11 09:03:24 -08:00
John-David Dalton
cd5f9b8bd4 Update _.result to execute default values if they're functions. 2014-12-11 07:05:09 -08:00
John-David Dalton
94fd20e864 Minor lodash doc nit. [ci skip] 2014-12-11 07:05:09 -08:00
John-David Dalton
3558eef66b Cleanup tests. 2014-12-11 07:05:03 -08:00
John-David Dalton
ee66e2154d Allow sourceURL option of _.template to be falsey. 2014-12-10 23:10:24 -08:00
John-David Dalton
5500a86f0b Add _.pluck test for undefined properties. 2014-12-09 23:39:08 -08:00
John-David Dalton
9b1c1774cd Expand _.assign doc example. [closes #819] [ci skip] 2014-12-09 23:33:41 -08:00
John-David Dalton
a8e31469c5 Optimize baseIsEqual for arrays. 2014-12-09 23:33:33 -08:00
John-David Dalton
b70bafaf51 Rename baseSortedIndex and edgeSortedIndex to binaryIndex and baseBinaryIndex respectively. 2014-12-09 21:32:17 -08:00
John-David Dalton
d393349b4d Add _.invoke tests. 2014-12-09 09:19:41 -08:00
John-David Dalton
0904724694 Tweak _.includes test. 2014-12-09 08:56:13 -08:00
John-David Dalton
eff4825000 Optimize _.escape, _.escapeRegExp, and _.unescape. 2014-12-09 08:55:48 -08:00
John-David Dalton
091c00229a Add edgeSortedIndex. 2014-12-09 08:34:13 -08:00
John-David Dalton
126f0d6036 Add more chaining docs. [ci skip] 2014-12-07 22:45:11 -08:00
John-David Dalton
f99bc6d8f9 Remove doc note for deep defaults. [ci skip] 2014-12-07 22:44:48 -08:00
John-David Dalton
3da0117838 Rebuild dist. 2014-12-07 09:31:47 -08:00
John-David Dalton
3d8cf6a90b Update vendors. 2014-12-07 00:00:12 -08:00
John-David Dalton
ac44663f04 Update lodash urls in source to use https. [ci skip] 2014-12-06 23:50:32 -08:00
John-David Dalton
57113b21ed Update readme with new entries and examples. [ci skip] 2014-12-06 15:09:32 -08:00
John-David Dalton
57d5ace61c Add _.ary tests. 2014-12-06 15:06:03 -08:00
John-David Dalton
f4da80e7c6 No need to assign the rusult of mergeData. 2014-12-06 14:40:47 -08:00
John-David Dalton
df3ca5c7c8 Fix _.ary unit test fail in old IE. 2014-12-06 14:36:23 -08:00
John-David Dalton
4b676df37f Move merge logic to mergeData. 2014-12-06 14:23:49 -08:00
John-David Dalton
5dc04266ea Update chaining docs. [ci skip] 2014-12-06 13:23:39 -08:00
John-David Dalton
dbcfe3f5d2 Add internal isObjectLike. 2014-12-06 13:12:03 -08:00
John-David Dalton
fdbec5b0d2 Allow metadata to be used for curried functions that have _.ary and or _.rearg applied. 2014-12-06 10:48:48 -08:00
John-David Dalton
3ea129b4f8 Add icon field to package.json and update Mathias' website url. 2014-12-05 00:15:18 -08:00
John-David Dalton
48a7e40520 Add _.ary. [closes #814] 2014-12-05 00:13:30 -08:00
John-David Dalton
08b956cf88 Adust code example in readme. [ci skip] [closes #811] 2014-12-02 23:43:28 -08:00
John-David Dalton
93b1e1f5ac Add placeholder docs. [ci skip] 2014-12-02 23:41:41 -08:00
John-David Dalton
bdecf6baf5 Cleanup test titles. 2014-12-01 22:21:47 -08:00
John-David Dalton
4528311d77 Add _.create and _.includes tests. 2014-12-01 22:20:41 -08:00
John-David Dalton
0bc1761dae Update ecstatic in travis.yml. 2014-12-01 01:09:04 -08:00
John-David Dalton
f690b0edf6 Update dev deps. 2014-11-30 22:20:29 -08:00
John-David Dalton
10851772af Fix paths in test.js. 2014-11-30 19:45:35 -08:00
John-David Dalton
66e7b28195 Use _.include instead of _.includes in perf.js for Underscore compat. 2014-11-30 19:42:23 -08:00
John-David Dalton
76021fb582 Move some vendors to devDependencies. 2014-11-30 19:41:52 -08:00
John-David Dalton
db50adbd9f Cleanup and add "Mobile" note to Safari 8 JIT bug test. [ci skip] 2014-11-29 10:08:53 -08:00
John-David Dalton
5c7cc146a1 Rebuild dist. 2014-11-28 15:43:43 -08:00
John-David Dalton
fa3b384c6f Add MapCache tests. 2014-11-28 15:38:54 -08:00
John-David Dalton
3f9a878b03 Correct name jsdoc entries. [ci skip] 2014-11-28 14:23:56 -08:00
John-David Dalton
ab3b972185 Add mapDelete. 2014-11-28 14:00:42 -08:00
John-David Dalton
fb9118a044 Ensure objects work in a lazy chain sequence. [closes #796] 2014-11-28 14:00:41 -08:00
Evgeny Boxer
5cce5b6707 Add a spec to catch a Safari JIT bug. [closes #798] 2014-11-28 14:00:41 -08:00
John-David Dalton
3256c9b3f5 Add _.parseInt test for its bizarro form. 2014-11-28 14:00:41 -08:00
John-David Dalton
8b43b2b69d Make more methods use isIterateeCall. 2014-11-27 00:22:17 -08:00
John-David Dalton
02a862684d Rename _.sortByMultiple to _.sortByAll. 2014-11-25 00:36:27 -08:00
John-David Dalton
c15f5b5106 Cleanup tests. 2014-11-25 00:35:33 -08:00
John-David Dalton
0f06d51065 Add more "hot" method tests. 2014-11-24 23:57:35 -08:00
John-David Dalton
8abfa419e8 Use _.includes instead of _.contains in saucelabs.js. 2014-11-24 23:57:35 -08:00
John-David Dalton
c3c90ab78b Fix typo in saucelabs.js. 2014-11-24 23:57:35 -08:00
John-David Dalton
666be21f59 Update vendors. 2014-11-24 23:57:34 -08:00
John-David Dalton
0fe8197100 Add _.sortByMultiple. 2014-11-23 23:26:11 -08:00
John-David Dalton
d8a7a7792a Comment cleanup. [ci skip] 2014-11-23 23:25:34 -08:00
John-David Dalton
82b9a0c949 Rename _.contains to _.includes. 2014-11-23 18:38:32 -08:00
John-David Dalton
a3083d2990 Add V8 bug note to setData. 2014-11-23 15:36:10 -08:00
John-David Dalton
3c62914304 Cleanup createWrapper and mergeData. 2014-11-23 15:35:49 -08:00
John-David Dalton
a094768469 Move sourceURL to the beginning of the function body to avoid errors in narwhal. 2014-11-23 14:53:57 -08:00
John-David Dalton
3965f063d3 Rename wrapper vars to wrapped. 2014-11-22 14:34:44 -08:00
John-David Dalton
2b7c295bf1 Use slice() instead of map() in tests. 2014-11-22 14:31:52 -08:00
John-David Dalton
2fd297c1e1 Ensure reverse returns a LodashWrapper instance when chaining. 2014-11-22 14:31:32 -08:00
John-David Dalton
263c04aeb2 Merge pull request #793 from FilipZawada/reverse
Fix broken lazy reverse.
2014-11-22 13:10:50 -08:00
Filip Zawada
8f2b5e195e Fix broken lazy reverse 2014-11-22 17:27:46 +01:00
John-David Dalton
7e3dd2b8cc Cleanup previous commit. 2014-11-22 00:09:01 -08:00
John-David Dalton
49c027537e Merge pull request #790 from FilipZawada/lazy-first-last
Fix non-lazy calls not executed before `first` & `last`.
2014-11-21 14:02:42 -08:00
Filip Zawada
a1a6095295 Fix non-lazy methods not executed when used with lazy .first() or .last() 2014-11-21 22:45:04 +01:00
John-David Dalton
5f7dcc9b78 Add lazy _.compact test and cleanup previous fix. 2014-11-21 01:33:38 -08:00
John-David Dalton
1705bf4f3c Rename shadowedProps to shadowProps. 2014-11-21 00:39:59 -08:00
Filip Zawada
8612946bf5 Fix lazy methods to execute non-lazy methods performed in between. 2014-11-20 21:05:53 -08:00
John-David Dalton
7cf40576dd Uncomment Android now that Sauce has fixed their issue. 2014-11-20 21:04:03 -08:00
John-David Dalton
239f35d830 Add mergeData helper. 2014-11-20 21:03:52 -08:00
John-David Dalton
05ff42b767 Use collection more in place of "the collection" in docs. [ci skip] 2014-11-18 06:11:40 +01:00
John-David Dalton
7bab4817f2 Tweak lazy _.pluck and _.where methods. 2014-11-17 07:17:13 +01:00
John-David Dalton
0d87b7d720 More comment cleanup. [ci skip] 2014-11-16 08:45:36 +01:00
John-David Dalton
6b72adbeee Don't use metadata for rearg'ed functions if previously partially applied. 2014-11-15 23:57:56 +01:00
John-David Dalton
db97ae46e5 Cleanup lazy _.pluck and _.where. 2014-11-15 23:52:50 +01:00
John-David Dalton
fc6c084693 Simulate Safari 8's typed array constructor issue better. 2014-11-14 19:19:28 -08:00
John-David Dalton
9e01cc5705 Clarify _.isFunction fallback note. [ci skip] 2014-11-14 19:16:14 -08:00
John-David Dalton
f9ce45c058 Avoid errors in modularized build runs. 2014-11-14 11:52:18 -08:00
John-David Dalton
056ff4b6ea Tweak _.isFunction fallback check. 2014-11-14 11:35:23 -08:00
John-David Dalton
52653f73b9 Fix failing phantomjs test. 2014-11-14 09:19:57 -08:00
Filip Zawada
a06207b814 Add lazy _.pluck and _.where. [closes #776] 2014-11-14 07:36:11 -08:00
Benjamin Tan
3b3ef411a4 Minor cleanup in _.invoke, _.sortBy, and lazy wrapper for _.filter. 2014-11-14 07:34:19 -08:00
John-David Dalton
6418f78fdb Add a test for _.rearg used on already rearged functions. 2014-11-13 23:12:57 -08:00
John-David Dalton
5d4187bf03 Add _.isFunction test for its fallback. 2014-11-13 23:12:27 -08:00
John-David Dalton
cfffad73eb Make cloneBuffer use _.constant instead of _.identity. 2014-11-13 23:10:27 -08:00
John-David Dalton
ef7db87b82 Capitalize and punctuate comments. [ci skip] 2014-11-13 00:46:03 -08:00
John-David Dalton
212eea9cf5 Avoid JIT bug in Safari 8. 2014-11-12 21:56:44 -08:00
John-David Dalton
da792cc272 Cleanup baseDifference. 2014-11-12 21:56:26 -08:00
John-David Dalton
2ae2142b35 Rebuild dist. 2014-11-12 00:00:10 -08:00
John-David Dalton
a00f5f308a Rename MemCache to MapCache. 2014-11-11 23:12:53 -08:00
John-David Dalton
81cfde12f3 Remove Android 4.0 from Sauce until their issue is resolved. 2014-11-11 18:16:17 -08:00
John-David Dalton
1a53d38dae Fix failing tests in Node. 2014-11-11 01:36:39 -08:00
John-David Dalton
b834fdbc5e Reorganize wrappers, adding SetCache as a hybrid cache combining ES6 Set and object lookups, 2014-11-11 01:13:15 -08:00
John-David Dalton
1cb2db03ed Add isIndex helper. 2014-11-10 14:24:47 -08:00
John-David Dalton
57bca50ed0 Fix _.template benchmarks. 2014-11-09 22:48:23 -08:00
John-David Dalton
94386583e2 Remove less useful benchmarks from perf.js. 2014-11-09 22:48:09 -08:00
John-David Dalton
b1ab63d549 Use available value var in _.difference. 2014-11-09 22:45:47 -08:00
John-David Dalton
ad56bdd354 Move isArray check higher up in lodash function. 2014-11-09 22:43:50 -08:00
John-David Dalton
65e30c13e2 Clarify comments on _.support.spliceObjects and _.isFunction. [ci skip] 2014-11-09 09:52:24 -08:00
John-David Dalton
0c54fac651 Whitespace nit in _.propertyOf doc example. [ci skip] 2014-11-09 01:38:43 -08:00
John-David Dalton
9660c22a9f Make unicode chars lower case. 2014-11-09 01:34:24 -08:00
John-David Dalton
31e8df4a59 Tweak _.parseInt doc note. [ci skip] 2014-11-09 00:07:11 -08:00
John-David Dalton
8e6ecaf8d4 Remove period from comment to conform to style. [ci skip] 2014-11-09 00:05:40 -08:00
John-David Dalton
4d69a0ce29 Add comments to _.isFunction. [ci skip] 2014-11-09 00:02:00 -08:00
John-David Dalton
1b842f86ca Optimize _.chunk. 2014-11-08 19:34:37 -08:00
John-David Dalton
a2330fb630 Fix test fails on old Android & Safari. 2014-11-08 09:28:47 -08:00
John-David Dalton
30f0232d71 Tweak docs for _.property and _.propertyOf. [ci skip] 2014-11-08 08:54:43 -08:00
John-David Dalton
404e658a5d Fix _.isFunction and _.isNative for Safari 8. 2014-11-08 02:47:17 -08:00
John-David Dalton
f5682397c2 Remove Rhino guards from curry tests and add a partial test. 2014-11-07 22:57:16 -08:00
John-David Dalton
4896810258 Add Safari 8 to Sauce tests. 2014-11-07 21:50:30 -08:00
John-David Dalton
dd0de8b6e1 Doc cleanup. [ci skip]
Conflicts:
	lodash.js
2014-11-07 21:44:56 -08:00
John-David Dalton
2a9f9f7ebd Don't set data on functions created by a curried function. 2014-11-07 21:44:56 -08:00
John-David Dalton
2f3afd3637 Add _.propertyOf. 2014-11-07 21:44:56 -08:00
John-David Dalton
f0a2c88fdc Add more _.identity for nullish args tests. 2014-11-07 21:44:56 -08:00
John-David Dalton
c3a5b12cd3 Make _.wrap use _.identity when wrapper is nullish. [closes #767] 2014-11-07 21:44:56 -08:00
John-David Dalton
d7b0e66270 Comment out Android 4.3 test in Sauce until they resolve their issue. 2014-11-07 21:44:17 -08:00
John-David Dalton
1871ed5441 Avoid modularized test fails for Rhino. 2014-11-06 22:23:54 -08:00
John-David Dalton
5ea6948127 Add _.rearg tests. 2014-11-06 20:46:27 -08:00
John-David Dalton
9bd77d36f1 Add _.pullAt tests. 2014-11-06 20:46:03 -08:00
John-David Dalton
3ffa6cd1ac Add test for _.at and non-index keys on array-like values. 2014-11-06 20:45:18 -08:00
John-David Dalton
ad87df3168 Make shimKeys style more consistent with keysIn. 2014-11-06 20:44:40 -08:00
John-David Dalton
8bd0d32fd2 Remove isArrayLike and isPlainObject guards from baseMerge. 2014-11-06 20:44:16 -08:00
John-David Dalton
f182675a6e Ensure baseAt uses undefined for non-index values for array-like collections. 2014-11-06 20:43:34 -08:00
John-David Dalton
56ce89e04f Tweak _.curry and _.curryRight docs. [ci skip] 2014-11-06 20:42:33 -08:00
John-David Dalton
062ec036f8 Cleanup _.rearg docs and simplify reorder. 2014-11-06 20:41:50 -08:00
John-David Dalton
8089242b2f Add Firefox 33 to sauce tests. 2014-11-05 23:51:16 -08:00
John-David Dalton
8efa1a0032 Experiment with _.defer in createHybridWrapper. 2014-11-05 01:59:41 -08:00
John-David Dalton
7ce8304ce6 Make _.defer and _.delay slice arguments in the timeout callback. 2014-11-05 01:59:17 -08:00
John-David Dalton
233adab647 Add _.rearg. 2014-11-05 01:09:05 -08:00
John-David Dalton
475c86d100 Tweak code comments. [ci skip] 2014-11-02 23:43:10 -08:00
John-David Dalton
f754654dae Rebuild dist. 2014-11-02 14:33:24 -08:00
John-David Dalton
53ce20c0df Comma nit in getView doc. [ci skip] 2014-11-02 14:33:09 -08:00
John-David Dalton
ad91e3a344 Make lazy chaining tests a bit more complex. 2014-11-02 14:19:38 -08:00
John-David Dalton
4f2b33f80f Cleanup docs for _.slice and _.range. [ci skip] 2014-11-02 11:30:32 -08:00
John-David Dalton
2b24d42f8d Add getView and cleanup Lazy chaining. 2014-11-02 11:30:06 -08:00
John-David Dalton
ab70f306cd Make iteration fix in _.keysIn less constructor specific. 2014-11-01 01:24:10 -07:00
John-David Dalton
4fb83fe0a5 Assorted doc cleanup. [ci skip] 2014-10-31 21:36:28 -07:00
John-David Dalton
9c6ef34270 Remove dropdown menu entries for unsupported builds. 2014-10-31 00:19:34 -07:00
John-David Dalton
481eb8e5dc Cleanup test/asset/worker.js. 2014-10-31 00:17:08 -07:00
John-David Dalton
7cf65b899b Add another [[DontEnum]] test. 2014-10-30 23:54:43 -07:00
John-David Dalton
dd70fcb9bc Cleanup _.dropRightWhile and _.takeRightWhile. 2014-10-30 23:53:39 -07:00
John-David Dalton
6dd8c05533 Cleanup _.keysIn. 2014-10-30 23:53:28 -07:00
John-David Dalton
0b900d94f7 Ensure root is set correctly when required by a greasemonkey userscript. [closes #759] 2014-10-30 22:01:00 -07:00
John-David Dalton
cf724c43cb Simplify lazy chaining. 2014-10-30 20:57:24 -07:00
John-David Dalton
cdf5ac4fc4 Ensure _.keysIn skips inheritedconstructor properties. 2014-10-29 22:41:51 -07:00
John-David Dalton
b768ce4ca4 Add test for inherited shadowed props. 2014-10-29 22:40:49 -07:00
John-David Dalton
0115503af9 Fix _.keysIn for inherited non-enumerable props. 2014-10-28 23:19:08 -07:00
John-David Dalton
08dd30c5bf Make lazy _.drop test more complex. 2014-10-26 21:38:53 -07:00
John-David Dalton
72270013c8 Cleanup assignment method tests. 2014-10-25 00:30:56 -07:00
John-David Dalton
a2a59cbeae Add find method tests. 2014-10-24 23:30:12 -07:00
John-David Dalton
20a38d2dbe Test order nits. 2014-10-24 23:29:43 -07:00
John-David Dalton
9aade0a2da Remove backbone build from .gitignore. 2014-10-24 22:32:51 -07:00
John-David Dalton
9af1d1af52 Remove underscore build test runs from travis.yml. 2014-10-24 22:06:10 -07:00
John-David Dalton
8bb69cd6da Rebuild dist. 2014-10-24 22:01:39 -07:00
John-David Dalton
84a84a1687 Remove underscore build config from Underscore tests. 2014-10-24 21:53:57 -07:00
John-David Dalton
462c43434b Add _.callback test. 2014-10-23 23:46:05 -07:00
John-David Dalton
b830691611 Add more _.assign, _.defaults, _.merge, and _.transform tests. 2014-10-23 23:21:26 -07:00
John-David Dalton
204f1747cf Ensure old Opera avoids a false positive for support of isHostObject. 2014-10-23 21:46:46 -07:00
John-David Dalton
13c9d80a3b Use the new operator to ensure constructors of other realms produce objects of those realms. 2014-10-23 20:43:49 -07:00
John-David Dalton
64f45b061b Avoid testing arguments object constructor which may be Array in some old browsers. 2014-10-23 20:42:32 -07:00
John-David Dalton
c1202fd127 Fix isArrayLike in older IE. 2014-10-23 17:04:13 -07:00
John-David Dalton
2060f3f59a Ensure _.at and _.pullAt work with falsey array and collection values when keys are provided. 2014-10-23 17:04:13 -07:00
John-David Dalton
1fb92df2e7 Fix test fails. 2014-10-23 17:04:06 -07:00
John-David Dalton
848301bf70 Add tests for clone methods and objects from other realms. 2014-10-22 22:58:25 -07:00
John-David Dalton
08b5b71fcb Cleanup test titles. 2014-10-22 22:29:04 -07:00
John-David Dalton
5414d4a9e4 Add tests for _.transform and objects from other realms. 2014-10-22 22:28:47 -07:00
John-David Dalton
b930bd7326 Add isLength helper. 2014-10-22 22:28:24 -07:00
John-David Dalton
d1d1be49ba Reduce lazy wrapper for lazy first and last. 2014-10-21 08:04:29 -07:00
John-David Dalton
6ad7963347 Fix _.merge doc typo. [ci skip] [closes #754] 2014-10-21 07:41:34 -07:00
John-David Dalton
2dcda2487a Cleanup test titles. 2014-10-20 22:18:10 -07:00
John-David Dalton
55911eac7a Add lazy tests for _.first and _.last. 2014-10-20 22:17:48 -07:00
John-David Dalton
176b109ae7 Rebuild dist. 2014-10-20 20:10:25 -07:00
Benjamin Tan
0f12d43a59 Simplify _.keys and _.keysIn. 2014-10-20 19:58:05 -07:00
John-David Dalton
6dfc2aca4b Add LazyWrapper#slice. 2014-10-20 11:33:03 -07:00
John-David Dalton
f5a34d5191 Add indexOf method test for empty arrays. 2014-10-20 11:33:02 -07:00
John-David Dalton
bc3a7f70e4 Test title cleanup. 2014-10-20 11:33:02 -07:00
John-David Dalton
dcabee8d5e Expand function test for _.matches. 2014-10-20 11:33:02 -07:00
John-David Dalton
d7e290dc68 Add more isIterateeCall guards. 2014-10-20 11:33:02 -07:00
John-David Dalton
2e2341c8b2 Add arrayMin and arrayMax helpers. 2014-10-19 03:25:26 -07:00
John-David Dalton
0ee717342b Minor format nit in travis.yml. 2014-10-19 03:25:26 -07:00
John-David Dalton
9f372b3146 Update tested version of Opera in readme. [ci skip] 2014-10-19 03:25:26 -07:00
John-David Dalton
dd92e36feb Ensure Node 0.8 runs modern build tests in travis. 2014-10-18 11:31:45 -07:00
John-David Dalton
c25738c62c Avoid logging npm warnings to travis. 2014-10-18 11:31:45 -07:00
John-David Dalton
c264e98e6e Fix travis run. 2014-10-18 11:31:45 -07:00
John-David Dalton
f2780bcbc2 Add isCloneable and clonePassthru. 2014-10-18 11:31:44 -07:00
John-David Dalton
050b703fc0 Update npm used in travis.yml. 2014-10-18 11:31:44 -07:00
John-David Dalton
eed09f64f7 Cleanup _.matches. 2014-10-18 11:31:44 -07:00
John-David Dalton
28c4ad1501 Cleanup _.zipObject. 2014-10-18 11:31:44 -07:00
John-David Dalton
28d1dad629 Cleanup _.template tests. 2014-10-18 11:31:44 -07:00
John-David Dalton
b5f0672888 Fix failing clone tests. 2014-10-18 11:31:44 -07:00
John-David Dalton
71fc4faae7 Update vendor/benchmark.js. 2014-10-18 11:31:44 -07:00
John-David Dalton
8bff1e8bc4 Ensure a customer function works on deep cloned objects. 2014-10-18 11:31:44 -07:00
John-David Dalton
af67dd6610 Tweak _.clone and _.cloneDeep docs. [ci skip] 2014-10-18 11:31:44 -07:00
John-David Dalton
c46c700f7c Change source order of arrayFilter and arrayMap. 2014-10-18 11:31:44 -07:00
John-David Dalton
2a2de2efdc Make _.clone and _.cloneDeep return an empty object for unsupported types. 2014-10-18 11:31:44 -07:00
John-David Dalton
f384c42de5 Updated tested Chrome version in Sauce Labs. 2014-10-18 11:31:44 -07:00
John-David Dalton
bf1c54e5a3 Add lazy _.filter and _.reject tests. 2014-10-18 11:31:43 -07:00
John-David Dalton
d8f2cc50df Add getUnwrappedValue test helper to fix npm modularized builds. 2014-10-18 11:31:43 -07:00
John-David Dalton
06c25ba998 Use https protocol for downloading travis resources from lodash.com. 2014-10-18 11:31:43 -07:00
John-David Dalton
58654a3f3a Use https for lodash.com references in readme. [ci skip] 2014-10-18 11:31:43 -07:00
John-David Dalton
32521cd1b6 Add comment to lazy flags. [ci skip] 2014-10-12 12:56:33 -07:00
John-David Dalton
e072fe6ea9 Move LodashWrapper.prototype and MemCache assignments out of the method assignments block. 2014-10-12 12:38:59 -07:00
John-David Dalton
b5897fdb62 Add more lazy_.drop, _.dropRight, _.take, _.takeRight tests. 2014-10-10 09:48:27 -07:00
John-David Dalton
55df525f1b Update tested Chrome version in readme. [ci skip] 2014-10-09 09:50:48 -07:00
John-David Dalton
e6dde68924 Excuse Underscore _.memoize test. 2014-10-09 09:50:27 -07:00
John-David Dalton
b3e2305dea Fix typo and add lazy tests. 2014-10-09 09:50:08 -07:00
John-David Dalton
ec3e3ed1fd Simplify lazyValue. 2014-10-09 00:16:56 -07:00
John-David Dalton
30fc97eef6 Fix shortcut fusion. 2014-10-08 23:44:45 -07:00
John-David Dalton
5939692616 Remove multi-line comment wrap from _.template sourceURLs. [closes #738] 2014-10-08 09:17:15 -07:00
Tiago Ribeiro
9ce3176b59 Rename stop to end in _.range docs. [ci skip] 2014-10-06 09:38:46 -07:00
John-David Dalton
497d35b03b Continued chaining cleanup. 2014-10-06 09:38:46 -07:00
John-David Dalton
6a1191de31 Add docs to MemCache and LazyWrapper methods and reduce LazyWrapper scaffolding. 2014-10-05 18:51:57 -07:00
John-David Dalton
6c3a17de71 Add lazy chaining benchmark. 2014-10-04 11:13:28 -07:00
John-David Dalton
22cf82e44b Add note to whitespace test and add back non-character BOM test. 2014-10-04 11:11:52 -07:00
John-David Dalton
10c7e49273 Qualify listed contributors in readme. [ci skip] [closes #732] 2014-10-03 14:28:55 -07:00
John-David Dalton
4900eae751 Correct result of methods that should not return a wrapped value. 2014-10-03 00:14:10 -07:00
John-David Dalton
5334c599f0 Cleanup lazyValue. 2014-10-03 00:13:19 -07:00
John-David Dalton
ad10a1eba5 Rename var chain to chainAll in _.mixin. 2014-10-02 09:47:11 -07:00
John-David Dalton
3ca626f2a9 Add lazy drop, dropRight, initial, last, rest, reverse, and takeRight. 2014-10-02 09:46:37 -07:00
John-David Dalton
e7ad40d8f4 Make _.initial use _.dropRight and _.rest use _.drop. 2014-10-02 09:45:11 -07:00
Benjamin Tan
d38ab1145a createCompounder: Remove unused words argument 2014-10-02 00:38:41 -07:00
Benjamin Tan
f31360e1a4 _.once: Use basePartial instead of partial 2014-10-02 00:36:29 -07:00
Benjamin Tan
059fead736 Minor doc updates. [ci skip] 2014-10-02 00:34:48 -07:00
John-David Dalton
4e8360c030 Remove BOM from _.trim test. 2014-10-02 00:21:09 -07:00
John-David Dalton
fbd80746a5 Refactor lazy evaluation. 2014-10-02 00:21:04 -07:00
John-David Dalton
072a5de1c5 Cleanup _.memoize.Cache. 2014-09-29 20:41:18 -07:00
John-David Dalton
5c3c5a5521 Cleanup _.memoize tests. 2014-09-28 15:14:45 -07:00
Filip Zawada
461b294bc7 Add support for lazy evaluation to chaining syntax. [closes #247, #678] 2014-09-28 08:51:59 -07:00
John-David Dalton
71de0f2d08 Make support references align with templateSetting references. 2014-09-26 09:43:33 -07:00
John-David Dalton
2ffdc4f2ef Minor style nit. [ci skip] 2014-09-25 09:42:47 -07:00
John-David Dalton
dc9b320c4a Ensure _.indexOf and _.lastIndexOf match NaN when performing a binary search. 2014-09-25 09:42:27 -07:00
John-David Dalton
a6a93148b4 Clarify documented default params of identity as _.identity. [ci skip] 2014-09-24 22:46:06 -07:00
jabclab
f7dc3b9ce4 Add _.memoize.Cache to allow using ES6 Map/WeakMap. 2014-09-24 13:40:00 -07:00
John-David Dalton
12ad5d53c9 Rebuild dist. 2014-09-24 11:14:32 -07:00
John-David Dalton
54dc1e2e15 Exit early from _.contains if length is 0 to avoid potentially mucking up getIndexOf by passing it an undefined collection. 2014-09-24 11:13:16 -07:00
John-David Dalton
073f715f17 Qualify isIterateeCall use. 2014-09-24 09:48:59 -07:00
John-David Dalton
7ff50893dc Doc cleanup. [ci skip] 2014-09-24 09:32:51 -07:00
John-David Dalton
d128082b23 Add indexOfNaN and remove checks from baseIndexOf. 2014-09-24 09:32:51 -07:00
John-David Dalton
1b8f89c3f1 Update sauce browser versions. 2014-09-24 09:32:51 -07:00
John-David Dalton
8eb138e0b3 Add more tests for methods used as an iteratee for _.map. 2014-09-24 09:32:51 -07:00
John-David Dalton
8256579310 Add _.words tests and tweak reWords regexp. 2014-09-24 09:32:51 -07:00
John-David Dalton
41f1fb8d95 Minor source tweak of _.template. 2014-09-22 10:53:33 -07:00
John-David Dalton
277d91afce Minor code format tweak for _.isBoolean, _.isElement, _.isNumber, and _.isString. 2014-09-22 09:44:54 -07:00
John-David Dalton
aaa840ebef Add isIterateeCall and make more methods support being used as a callback for methods like _.map. 2014-09-22 09:44:13 -07:00
John-David Dalton
29ffdadabb Ensure _.trunc and _.words work as a callback for methods like _.map 2014-09-22 09:43:03 -07:00
John-David Dalton
e5f19fe037 Minor whitespace nit. [ci skip] 2014-09-21 23:26:01 -07:00
John-David Dalton
5791d71e9f Add _.deburr and _.words tests. 2014-09-21 23:25:39 -07:00
John-David Dalton
104a7022fb Remove es6 scaffolding from html test files. 2014-09-21 23:24:28 -07:00
John-David Dalton
6210b613be Since we're using the caret no need for minor version in travis.yml. 2014-09-20 18:55:59 -07:00
John-David Dalton
2ba9380616 Avoid carrot use in travis.yml deps for pre 1.0 deps. [ci skip] 2014-09-20 16:47:14 -07:00
John-David Dalton
59042bc2e2 Update request dep in travis.yml. [ci skip] 2014-09-20 12:11:57 -07:00
John-David Dalton
ccfd8e51ea Rebuild dist. 2014-09-20 12:05:52 -07:00
John-David Dalton
1aafb6c2c1 Use type checks when checking for a prototype property. 2014-09-20 12:04:53 -07:00
John-David Dalton
7976aa4b28 Cleanup _.template doc examples. [ci skip] 2014-09-20 12:04:53 -07:00
John-David Dalton
1b4e175c0c Adjust the docs of _.forEach, _.after, _.before, _.debounce, & _.throttle. [closes #710] [ci skip] 2014-09-20 12:04:53 -07:00
John-David Dalton
3ef955c139 Fix failing npm test. 2014-09-18 19:55:49 -07:00
John-David Dalton
51990ed0e5 Fix failing IE9 test. 2014-09-18 19:55:49 -07:00
John-David Dalton
138523bab3 Add _.deburr, _.thru, and _.words to the features section of the readme. [closes #709] [ci skip] 2014-09-18 19:55:49 -07:00
John-David Dalton
995ec2b104 Add array chaining tests and fix _#unshift. 2014-09-18 09:43:42 -07:00
John-David Dalton
d13f8749d4 Minor cleanup of baseIsEqual. 2014-09-17 21:28:38 -07:00
John-David Dalton
0350443810 Reduce deps in baseIsEqual, shimIsPlainObject, omit, & pick. 2014-09-17 20:52:06 -07:00
John-David Dalton
c5841dccbb Remove toObject use from _.keysIn. 2014-09-17 12:50:22 -07:00
John-David Dalton
a0c50f9ef5 Remove type check in _.transform. 2014-09-17 12:34:46 -07:00
John-David Dalton
120020b4db Avoid toObject in the shimKeys path of _.keys. 2014-09-17 12:34:19 -07:00
John-David Dalton
676747467a Make the support checks in shimKeys consistent with keysIn. 2014-09-17 12:33:34 -07:00
John-David Dalton
e2d13541dc Update tested node version in readme. [ci skip] 2014-09-17 00:52:54 -07:00
John-David Dalton
057cbc76b3 Add toObject to baseFor and baseForRight. 2014-09-17 00:47:18 -07:00
John-David Dalton
48035187d2 Comment test. [ci skip] 2014-09-17 00:47:18 -07:00
John-David Dalton
f05f60f929 Ensure _.sample chains correctly. 2014-09-16 09:17:08 -07:00
John-David Dalton
3ab19e81ac Cleanup _.transform and make baseEach and baseEachRight use toObject. 2014-09-16 01:51:46 -07:00
John-David Dalton
532be6cd87 Minor _.transform test title nits. [ci skip] 2014-09-16 01:51:45 -07:00
John-David Dalton
21a492fa43 Simplify _.mixin. 2014-09-15 01:29:18 -07:00
John-David Dalton
edf83823f1 Fix baseSortedIndex on large arrays by avoiding >>> use. 2014-09-15 01:29:12 -07:00
John-David Dalton
8d6f7de046 Increase _.sample and _.sortedIndex coverage. 2014-09-15 01:15:03 -07:00
John-David Dalton
a7de4f3663 Fix _.sample test. 2014-09-15 01:15:02 -07:00
John-David Dalton
e538f16315 Use var wrapped for wrapped values instead of actual. 2014-09-15 01:15:02 -07:00
John-David Dalton
3f8b3e2baa Fix failing npm tests. 2014-09-14 18:57:59 -07:00
John-David Dalton
a90ecde389 Wrapper doc tweaks. [ci skip] 2014-09-14 18:57:59 -07:00
John-David Dalton
1ad65bb66b Add trailing slash to _.escapeRegExp doc example. [ci skip] 2014-09-14 16:21:48 -07:00
John-David Dalton
d85bb3bce1 Remove unused descriptor var. 2014-09-13 15:20:42 -07:00
John-David Dalton
8cd4732321 Reduce code related to array method chaining. 2014-09-13 01:36:07 -07:00
John-David Dalton
6957b02c27 Remove handling of function queue values from wrapperValueOf. 2014-09-12 12:07:33 -07:00
John-David Dalton
adcadf08d1 Add iteration order note to _.pluck doc and adjust similar notes. [closes #703] [ci skip] 2014-09-12 09:43:32 -07:00
John-David Dalton
3b36145257 More cleanup of chaining code. 2014-09-12 09:16:23 -07:00
John-David Dalton
c3e5eaf8da Cleanup join, pop, shift chaining setup code. 2014-09-12 00:24:53 -07:00
John-David Dalton
fd176107ae Simplify mixin use. 2014-09-12 00:03:07 -07:00
John-David Dalton
ad203e1461 Fix deferred chaining test fails. 2014-09-11 23:36:12 -07:00
John-David Dalton
1fe9ba5879 Make string methods work with latin-1 characters by default. 2014-09-10 23:47:49 -07:00
John-David Dalton
678321bb2f Make _.unescape doc example align with _.escape. [ci skip] 2014-09-09 23:33:05 -07:00
John-David Dalton
967ce824f7 Add _.thru doc example and add pattern param to _.words. [ci skip] 2014-09-09 23:32:14 -07:00
John-David Dalton
336e5e0ff7 Excuse additional underscore test. 2014-09-09 00:17:30 -07:00
John-David Dalton
7a94f472c7 Add _.deburr, _.thru, & _.words. 2014-09-09 00:17:01 -07:00
John-David Dalton
70b41a2a6e Adjust how words are deburred. 2014-09-08 00:54:19 -07:00
John-David Dalton
216e7f3b10 Tweak docs for array params. [ci skip] 2014-09-08 00:09:18 -07:00
John-David Dalton
0717da6e37 Make chaining actions deferred until value is called. 2014-09-08 00:09:14 -07:00
John-David Dalton
3f64316e00 Make _.camelCase process words as lower cased. 2014-09-07 01:20:18 -07:00
John-David Dalton
172eaf84b5 Ensure string case methods work with words in all caps. 2014-09-06 10:14:03 -07:00
John-David Dalton
0c20889a17 Minor comment nit. [ci skip] 2014-09-06 00:30:25 -07:00
John-David Dalton
62523d537b Change default sauce param values. 2014-09-06 00:23:45 -07:00
John-David Dalton
6643252019 Fix qunit-extras sauce reporter. 2014-09-06 00:23:24 -07:00
John-David Dalton
13022a6bb0 Realign baseSortedIndex with _.sortBy. 2014-09-05 09:25:48 -07:00
John-David Dalton
fc018691e5 Change name to user in docs and tests to avoid this.name. 2014-09-05 09:01:51 -07:00
John-David Dalton
56666c4bf4 Use a string of keywords in package.json. 2014-09-04 23:57:36 -07:00
John-David Dalton
379da81f85 Add support for Sauce reports to qunit-extras. 2014-09-04 23:57:07 -07:00
John-David Dalton
9ce6d4b72a Add test for _.sortBy sorting undefined and NaN values. 2014-09-03 23:43:32 -07:00
John-David Dalton
be46c31c74 Update tested version of Firefox in readme. [ci skip] 2014-09-03 23:21:11 -07:00
John-David Dalton
cd4029dc61 Make _.sortBy moveundefined and NaN to the end of the array. 2014-09-03 09:32:09 -07:00
John-David Dalton
d2aa55a3bd Rebuild dist. 2014-09-02 09:25:42 -07:00
John-David Dalton
838be0846d Update tested Opera version in readme. [ci skip] 2014-09-02 09:25:36 -07:00
John-David Dalton
9414cb97b5 Add _.isNative doc example. 2014-09-02 09:21:43 -07:00
John-David Dalton
d6883a077a Add Lang category. 2014-09-02 09:21:43 -07:00
John-David Dalton
aa60b8399b Fix tests for the npm build. 2014-09-02 09:21:43 -07:00
John-David Dalton
cbe504df77 Fix test in IE. 2014-09-02 09:21:43 -07:00
John-David Dalton
e0efcc1f25 Fix test fails when using a non-requirejs loader. 2014-09-02 09:21:43 -07:00
John-David Dalton
c6e536a768 Use metaMap inference instead of WeakMap. 2014-09-01 23:44:37 -07:00
John-David Dalton
77ba53bda7 Remove defineProperty forks of baseSetData and getData. 2014-09-01 20:39:39 -07:00
John-David Dalton
c2c6f1493a Add tests for pop, shift, and slice. 2014-09-01 20:39:39 -07:00
John-David Dalton
debaed6e5e Allow _.before and _.after to accept func as the first argument 2014-09-01 17:13:07 -07:00
John-David Dalton
0d6279617b Add _.isEqual tests for arrays and objects from different documents. 2014-09-01 17:13:07 -07:00
John-David Dalton
3435314400 Remove unneeded "bugs" entry in package.json. [ci skip] 2014-09-01 13:26:09 -07:00
John-David Dalton
f248a8383b Add tests to ensure length is computed before iteration. 2014-09-01 13:25:51 -07:00
John-David Dalton
5458b007d1 Cleanup default assignment of placeholders. 2014-08-28 00:09:16 -07:00
John-David Dalton
6735291c99 Try to avoid an inconsistent false fail on ipad simulator. 2014-08-27 08:58:49 -07:00
John-David Dalton
6ad7a20c07 Update Underscore build compat to 1.7.0. 2014-08-27 07:30:39 -07:00
John-David Dalton
3191825ecc Cleanup features list and update tested Chrome version in readme. [ci skip] 2014-08-27 00:53:55 -07:00
John-David Dalton
baee6b9738 Update deps. 2014-08-26 23:55:39 -07:00
John-David Dalton
c4a7f899db Fix tests for rhino -require. 2014-08-26 21:36:04 -07:00
John-David Dalton
c01623ba56 Avoid false fail in environments that add an enumerable constructor property to Date objects. 2014-08-26 09:33:46 -07:00
John-David Dalton
81d0d5c59f Adjust mocking to ensure coverage in modularized builds. 2014-08-26 09:33:03 -07:00
John-David Dalton
cc4fdfd852 Ensure arity is not less than 0. 2014-08-25 23:14:28 -07:00
John-David Dalton
ba7be29153 Remove defineProperty mock. 2014-08-25 23:03:10 -07:00
John-David Dalton
4eae95b88d Ensure node version is consistent with its shorthand alias travis.yml. 2014-08-25 20:32:57 -07:00
John-David Dalton
06d8281f16 Add more bizarro support changes. 2014-08-25 10:25:01 -07:00
John-David Dalton
87c21ba75e Add coverage for WeakMap usage. 2014-08-25 09:32:26 -07:00
John-David Dalton
7f88a7c9bb Add more hot method tests. 2014-08-25 09:02:02 -07:00
John-David Dalton
38c57a662c Rebuild dist. 2014-08-24 21:34:59 -07:00
John-David Dalton
36f5ddc543 Add test for hot methods. 2014-08-24 21:33:44 -07:00
John-David Dalton
8b873b6b1b Make breaker trip when greater than or equal to HOT_COUNT. 2014-08-24 21:33:44 -07:00
John-David Dalton
68bd881ca8 Cleanup test names. [ci skip] 2014-08-24 18:02:19 -07:00
John-David Dalton
c3e717a3ef Rename _.consume to _.flow. 2014-08-24 18:02:06 -07:00
John-David Dalton
d9be6f8a9a Add _.consume and _.isNative to the features section of readme. [ci skip] 2014-08-24 13:54:09 -07:00
John-David Dalton
3bfb9d65f4 Prevent fails in older browsers due to timer drift. 2014-08-24 12:39:35 -07:00
John-David Dalton
9ad26f943f Minor doc nit and update lodash chaining doc to include _.consume and _.consumeRight. [ci skip] 2014-08-24 12:31:22 -07:00
John-David Dalton
c5112cb24e Add _.consume and _.consumeRight and make _.compose an alias of _.consumeRight. [closes #667] 2014-08-24 12:17:50 -07:00
John-David Dalton
c17e1f9e75 Doc tweak standardizing on "invoke" and "call". [ci skip] 2014-08-24 12:08:46 -07:00
John-David Dalton
b48b454909 Track down inconsistent sauce fail. 2014-08-24 00:02:01 -07:00
John-David Dalton
6b59a924e8 Avoid false fails on Sauce mocked alert/prompt functions. 2014-08-23 13:36:29 -07:00
John-David Dalton
87879a6784 Make _.isArguments length check consistent with its fallback. 2014-08-23 12:13:10 -07:00
John-David Dalton
fca5fda9da Avoid circular dep with isHostObject. 2014-08-23 12:12:24 -07:00
John-David Dalton
691d566482 Add test for string as object when passed as the third param to _.forEach callbacks. 2014-08-22 22:27:13 -07:00
John-David Dalton
61578f4dca Add missing semicolon. [ci skip] 2014-08-21 20:24:09 -07:00
John-David Dalton
9f4a7fc0da Ensure wrapped arrays are compared correctly in _.isEqual. [closes #676] 2014-08-21 09:29:27 -07:00
Benjamin Tan
200a5d84c7 Update docs. [closes #674] [ci skip] 2014-08-20 23:52:18 -07:00
John-David Dalton
309a2ad0a3 Rebuild dist. 2014-08-20 23:11:04 -07:00
John-David Dalton
e696331e2a Tweak property order note in method docs. [ci skip] 2014-08-20 23:08:04 -07:00
John-David Dalton
c3126e24ce Add _.support.hostObject and rename isNode to isHostObject. 2014-08-20 23:08:04 -07:00
John-David Dalton
bde931f2f5 Avoid testing constructors which may be shimmed. 2014-08-20 23:08:03 -07:00
John-David Dalton
58b3e9f201 Avoid test issues with error objects across environments. 2014-08-20 23:08:03 -07:00
John-David Dalton
1423dcb619 _.sortBy should not error on nullish elements when sorting by multiple properties. 2014-08-20 23:08:03 -07:00
John-David Dalton
df3540b0f9 Expose _.isNative. 2014-08-19 23:57:54 -07:00
John-David Dalton
921209580a Add DOM node check to _.isFunction test. 2014-08-19 23:57:54 -07:00
John-David Dalton
d4e058a844 Add _.negate unit test. 2014-08-19 23:57:53 -07:00
John-David Dalton
8f9eed154e Cleanup setData. 2014-08-18 09:31:30 -07:00
John-David Dalton
1416655d53 Minor whitespace nit. 2014-08-18 09:31:30 -07:00
John-David Dalton
9a147218ce Add console.log shim to avoid errors while deving. 2014-08-18 09:31:30 -07:00
John-David Dalton
34b575da03 Minor var nit in createPartialWrapper. 2014-08-18 09:31:30 -07:00
John-David Dalton
54d22a23b5 Avoid metadata cache for perf tests of slow paths of _.bind and _.partial. 2014-08-18 09:31:30 -07:00
John-David Dalton
ee10e17ce7 Fix perf regression of _.zip. 2014-08-18 09:31:30 -07:00
John-David Dalton
8ff97468cc Minor style nits. 2014-08-18 09:31:30 -07:00
John-David Dalton
6f898c6c97 Fix perf regression in _.omit & _.reject. 2014-08-18 09:31:30 -07:00
John-David Dalton
cfeb8d053f Attempt to throttle seData. 2014-08-18 09:31:29 -07:00
John-David Dalton
d317171a45 Remove sauce testing of older Firefox. 2014-08-18 09:31:29 -07:00
John-David Dalton
9b0aadccf8 Fix accidental leaked var. 2014-08-14 23:55:24 -07:00
John-David Dalton
d6850ab358 Use WeakMaps if available to store function metadata. 2014-08-14 23:55:23 -07:00
John-David Dalton
c139a0d9ed Avoid internally passing around metadata arrays. 2014-08-14 23:55:23 -07:00
John-David Dalton
67b0c4cddd Use _.createCallback if _.matches is unavailable for the perf test. 2014-08-14 23:55:23 -07:00
John-David Dalton
ce36bf6134 Update tested Firefox versions. 2014-08-14 23:55:23 -07:00
Benjamin Tan
e2dd65a403 Add more emphasis on the Note sections 2014-08-12 09:26:25 -07:00
John-David Dalton
a2595d5107 Remove native String#contains use in _.contains. 2014-08-12 09:26:25 -07:00
John-David Dalton
6dc0cf0c44 Typo nit in _.uniq tests. 2014-08-11 09:25:35 -07:00
John-David Dalton
faac630001 Update tested version of Node in readme. [ci skip] 2014-08-11 09:25:35 -07:00
John-David Dalton
0deacc7229 Add tests for large arrays and NaN values. 2014-08-11 09:25:35 -07:00
John-David Dalton
c849fe1496 Cleanup _.pull. 2014-08-09 09:43:31 -07:00
John-David Dalton
4238e84ec4 Add tests for matching NaN. 2014-08-09 09:43:31 -07:00
John-David Dalton
df4e306c64 Add length check to avoid extra work in initArrayClone. 2014-08-08 10:43:39 -07:00
John-David Dalton
916c728d70 Remove unneeded flag from baseClone call in _.matches. 2014-08-08 10:28:18 -07:00
John-David Dalton
476d85915b Revert rename of baseSlice and add initArrayClone and initObjectClone. 2014-08-08 10:27:11 -07:00
John-David Dalton
e54b8ead72 Rename cloneBuffer to bufferClone, split basePick into pickByArray and pickByCallback, and add arrayClone. 2014-08-07 00:23:32 -07:00
John-David Dalton
d2444d2992 Remove !source check from _.mixin. 2014-08-04 00:05:19 -07:00
John-David Dalton
48acda2c3c Add _.iteratee alias of _.callback. 2014-08-03 22:40:31 -07:00
John-David Dalton
264f7b1d30 Fix tests in old IE. 2014-08-03 14:03:36 -07:00
John-David Dalton
fc44d54607 Fix test fail. 2014-08-02 23:25:20 -07:00
John-David Dalton
afc3698578 Minor whitespace nits in test.js. [ci skip] 2014-08-02 22:08:37 -07:00
John-David Dalton
c3cd94b695 Fix coercing arity in baseCurry. 2014-08-02 22:08:17 -07:00
John-David Dalton
ea219f683e Rename noIterator to noIteratee. [ci skip] 2014-08-02 13:05:55 -07:00
John-David Dalton
faf6584652 Ensure _.mixin does not extend lodash when an object is provided with an empty options object. [closes #650] 2014-08-01 16:36:44 -07:00
John-David Dalton
4dc41749fb Cleanup NaN handling in baseIndexOf and _.lastINdexOf. 2014-08-01 11:27:37 -07:00
John-David Dalton
2aa94301a8 Rename iterator to iteratee. 2014-08-01 11:13:58 -07:00
John-David Dalton
d2870b6df7 Change strict equality matches to SameValueZero matches. 2014-07-31 17:25:58 -07:00
John-David Dalton
5cbc44610c Simplify support property detection. 2014-07-30 09:21:25 -07:00
John-David Dalton
9032cc0ecc Updated tested Chrome versions in Sauce. 2014-07-29 22:21:22 -07:00
John-David Dalton
e48b314ad0 Avoid type coercion of size in _.chunk unless needed. 2014-07-29 09:37:25 -07:00
John-David Dalton
6fdaf905c4 Update "features" section of readme. [ci skip] 2014-07-29 09:36:39 -07:00
John-David Dalton
79b706fb5c Add parentheses to clarify things. 2014-07-29 08:48:04 -07:00
John-David Dalton
eaee188244 Use resIndex where applied easily. 2014-07-29 08:47:23 -07:00
John-David Dalton
a6ac62d628 Update tested versions of Opera and PhantomJS. [ci skip] 2014-07-28 23:23:43 -07:00
John-David Dalton
7a7f12504b Consistent empty bracket style. 2014-07-28 09:33:24 -07:00
John-David Dalton
55c83d17e1 Fix sortedIndex method tests for phantomjs. 2014-07-28 01:26:01 -07:00
John-David Dalton
8009c1b7eb Rebuild dist. 2014-07-28 00:57:56 -07:00
John-David Dalton
1580453f4b Ensure _.sortedIndex and _.sortedLastIndex align with _.sortBy. 2014-07-27 19:40:10 -07:00
John-David Dalton
9cc8f5dd07 Add bizarro tests for _.parseInt. 2014-07-27 17:42:56 -07:00
John-David Dalton
7e326b8431 Simplify support.nonEnumArgs and increase code coverage. 2014-07-27 17:42:56 -07:00
John-David Dalton
8bddb47fab Add test for _.slice where start >= end. 2014-07-27 17:42:56 -07:00
John-David Dalton
b1b462d22b Add/cleanup tests for using methods as a callback for _.map and _.reduce. 2014-07-27 17:42:56 -07:00
John-David Dalton
d5847faaba Add toObject and optimize use of toIterable in _.sample. 2014-07-27 17:42:55 -07:00
John-David Dalton
4c9f3aee74 Make baseSortedIndex handle NaN correctly when comparing numbers. 2014-07-27 17:42:55 -07:00
John-David Dalton
ff4e0cb1c2 Use prefix increment operator where easily done. 2014-07-27 17:42:55 -07:00
John-David Dalton
c159da1fbc Ensure _.toIterable converts primitives to objects for easier detection of callback signatures. 2014-07-25 07:46:08 -07:00
John-David Dalton
d5e55f9dbd Copy ./dist/lodash.$BUILD.js to ./dist/lodash.js for coverage run. 2014-07-24 22:17:21 -07:00
John-David Dalton
642ed4061a Ensure EXPANDO doesn't disable fast properties in v8. 2014-07-24 22:17:21 -07:00
John-David Dalton
5178c3e67f Comma and whitespace nits. [ci skip] 2014-07-24 22:17:21 -07:00
John-David Dalton
e402347d73 Fix placeholder support without metadata. 2014-07-24 22:17:21 -07:00
John-David Dalton
3004c58798 Add guard param doc to _.parseInt. [ci skip] 2014-07-24 22:17:21 -07:00
John-David Dalton
15a44fe650 Make _.random and _.range work as callbacks to _.map. 2014-07-24 22:17:21 -07:00
John-David Dalton
e37a96a94a Make _.parseInt work as a callback to _.map. 2014-07-24 22:17:21 -07:00
John-David Dalton
e475a3b64c Remove unneeded branch of _.slice. 2014-07-24 22:17:21 -07:00
John-David Dalton
663ebd25ea Add more placeholder tests. 2014-07-23 19:52:32 -07:00
John-David Dalton
e6bec0de72 Simplify _.slice. 2014-07-23 19:52:26 -07:00
John-David Dalton
f513effd47 Make Float64Array mock more accurately handle its arg signature. 2014-07-22 22:53:38 -07:00
John-David Dalton
dd05e898cc Fix errors in Android 4.3 tests. 2014-07-22 22:52:44 -07:00
John-David Dalton
49a88e75e6 Fix test fails in Safari 5. 2014-07-22 09:42:34 -07:00
John-David Dalton
14a99471f4 Use a better Float64Array mock. 2014-07-22 09:16:09 -07:00
John-David Dalton
bdbc181e38 Ensure testing array buffers hits all parts of cloneBuffer. 2014-07-22 07:15:38 -07:00
John-David Dalton
133b1151bd Add Float64Array even in the non-bizarro test case. 2014-07-22 00:52:16 -07:00
John-David Dalton
653aab2358 Fix typo in the ArrayBuffer#slice mock for node. 2014-07-22 00:18:40 -07:00
John-David Dalton
13669313d4 Fix ArrayBuffer#slice test mock. 2014-07-21 22:13:27 -07:00
John-David Dalton
e84d79ccf3 Increase typed array coverage for node test runs. 2014-07-21 20:35:39 -07:00
John-David Dalton
34077f9624 Fix html test runner errors. 2014-07-21 20:34:58 -07:00
John-David Dalton
28ba64a4db Another attempt at fixing _.isElement bizarro tests. 2014-07-21 11:54:16 -07:00
John-David Dalton
0eefd3e140 Fix typed array tests in Safari. 2014-07-21 11:53:46 -07:00
John-David Dalton
20bbfc5917 Use the dist/lodash.js build for coveralls so it can map correctly to it. 2014-07-21 09:36:15 -07:00
John-David Dalton
9d6832224e Rebuild dist. 2014-07-21 09:27:30 -07:00
John-David Dalton
2cf17b19dc Cleanup appendHolders. 2014-07-21 08:50:35 -07:00
John-David Dalton
390cf2114a Fix bizarro _.isElement test. 2014-07-21 08:33:49 -07:00
John-David Dalton
8bff019b5d Allow placeholders to be customizable. 2014-07-21 00:36:19 -07:00
John-David Dalton
7d221f3be9 Add doc reference to David Corbacho's post for _.debounce and _.throttle. [ci skip] 2014-07-20 13:26:31 -07:00
John-David Dalton
b8628b9772 Add _.flattenDeep and allow _.template to be called with its legacy options param signature. 2014-07-20 12:38:32 -07:00
John-David Dalton
cda4d9e1b2 Correct isWhitespace docs. [ci skip] 2014-07-20 10:39:53 -07:00
John-David Dalton
f5d7a4d41e Remove unneeded checks in arrayXyz functions. 2014-07-20 10:38:54 -07:00
John-David Dalton
94486302f5 Correct ArrayBuffer bizarro shims. 2014-07-20 10:38:08 -07:00
John-David Dalton
4f4a7409f6 Cleanup isWhitespace use. 2014-07-19 21:42:38 -07:00
John-David Dalton
60f57f9e4b Cleanup prototype references of built-ins and the _.isElement bizarro tests. 2014-07-18 23:59:32 -07:00
Breck Yunits
2f98cd9eb0 Fixed comment typo and refactored duplicate code. 2014-07-18 23:59:18 -07:00
John-David Dalton
f77586f13d Add second part of the bizarro ArrayBuffer#slice tests. 2014-07-18 08:57:21 -07:00
Benjamin Tan
fa82091989 Update test descriptions 2014-07-18 08:49:22 -07:00
John-David Dalton
66e9c68da4 Add bizarro tests for shimmed ArrayBuffer#slice. 2014-07-18 08:49:14 -07:00
John-David Dalton
c97c2fee37 Ensure shallow clones of typed arrays don't clone the buffer. 2014-07-17 06:57:05 -07:00
John-David Dalton
fd03500786 Update tested version of Chrome in readme. [ci skip] 2014-07-17 06:39:39 -07:00
John-David Dalton
83d5c31a0c Update deps in travis.yml. 2014-07-17 06:34:28 -07:00
John-David Dalton
7f19c10da9 Use the correct _.isRegExp for the underscore build. 2014-07-16 11:30:34 -07:00
John-David Dalton
c10ea527a0 Minor doc nit. [ci skip] 2014-07-16 08:57:36 -07:00
John-David Dalton
5a54c1520a Remove nativeIsNaN use from the underscore build of _.isFinite. [closes #633] 2014-07-16 08:49:07 -07:00
Benjamin Tan
3f2732be7b Fix documentation for toIterable
[ci skip]
2014-07-16 20:55:37 +08:00
John-David Dalton
d504b1f90f Add tests for overwriting native Number.isFinite. 2014-07-16 00:19:21 -07:00
John-David Dalton
210dac058d Rebuild dist. 2014-07-15 23:54:00 -07:00
John-David Dalton
ccb3012e5a Remove unused native isNaN reference. 2014-07-15 23:51:18 -07:00
John-David Dalton
c94f2e6f07 Doc tweaks. [ci skip] 2014-07-15 23:51:18 -07:00
John-David Dalton
e31d7178b4 Add tests for "_.pluck" style callbacks to _.max, _.min, and _.uniq. 2014-07-15 23:51:18 -07:00
jrajav
b3a4b8085c Add example to docs for nested template delimiters. [closes #628] [ci skip] 2014-07-15 23:51:18 -07:00
John-David Dalton
b56d7ab9c3 Cleanup test titles for "_.pluck" and "_.where" style callbacks. 2014-07-15 23:51:18 -07:00
John-David Dalton
c63e270921 Remove old docs until new can be generated. [ci skip] 2014-07-15 23:51:17 -07:00
John-David Dalton
cffbae3a13 Minor test cleanup. 2014-07-15 23:51:17 -07:00
John-David Dalton
d2d03228ee Consistent use of wrapped values in test titles. 2014-07-15 23:51:17 -07:00
John-David Dalton
30458fa536 Expand test coverage. 2014-07-15 23:51:17 -07:00
John-David Dalton
0e60831f46 Remove sliceBuffer, add typed array tests, and ensure typed array clones have the correct byteOffset and length. 2014-07-14 08:59:28 -07:00
John-David Dalton
69238bf8e8 Cleanup _.max and _.min. 2014-07-14 07:57:46 -07:00
Benjamin Tan
db483df9a6 Fix issue with cloning typed arrays
Closes #624
2014-07-14 07:52:11 -07:00
Benjamin Tan
1dc95f5d3a Improve tests for ArrayBuffers 2014-07-14 07:52:11 -07:00
John-David Dalton
37caef10b1 Optimize non-array iteration of _.max and _.min when no iterator is provided. 2014-07-14 01:02:11 -07:00
John-David Dalton
381ecd8f70 Fix skipTest count for a _.uniq test. 2014-07-14 00:14:17 -07:00
John-David Dalton
f2a829362b Use == instead of === when comparing functions. 2014-07-13 22:24:33 -07:00
John-David Dalton
fe2e994f2d Cleanup previous commit. 2014-07-13 16:09:49 -07:00
megawac
95ba6bf040 Separate _.uniq isSorted logic to a helper 2014-07-13 16:09:48 -07:00
John-David Dalton
6f937e8958 Simplify coveralls command in travis.yml. 2014-07-13 12:17:46 -07:00
John-David Dalton
12f04650de Ignore isSorted if _.indexOf is customized. 2014-07-13 09:57:58 -07:00
John-David Dalton
f7330cce14 Ensure _.escape, _.escapeRegExp, & _.unescape can replacing multiple characters. 2014-07-12 07:08:49 -07:00
John-David Dalton
ba56f95da8 Use TRAVIS_SECURE_ENV_VARS instead of TRAVIS_PULL_REQUEST. 2014-07-11 09:18:35 -07:00
John-David Dalton
46704724e3 Add comments to _.escape and _.repeat. [ci skip] 2014-07-11 08:57:58 -07:00
John-David Dalton
caadd5bb32 Optimize _.escape, _.escapeRegExp, and _.unescape. 2014-07-11 08:42:52 -07:00
John-David Dalton
faa221f162 Make _.isArguments fallback align with other array-like checks. 2014-07-10 23:54:04 -07:00
John-David Dalton
a814d5438a Tweak _.isXyz method docs. [ci skip] 2014-07-10 23:53:24 -07:00
John-David Dalton
ab43c4cf2a Merge branch 'master' of github.com:lodash/lodash 2014-07-10 21:23:27 -07:00
John-David Dalton
d781e2dfb8 Merge pull request #613 from d10/docs
Fix typos [ci skip]
2014-07-10 20:41:21 -07:00
Benjamin Tan
968ef1560f Fix typos [ci skip] 2014-07-11 11:29:48 +08:00
John-David Dalton
1631ceedb3 Add fast path for objects with a single primitive value back to _.matches and add isStrictComparable helper to reduce _.matches and _.isEqual. 2014-07-10 09:26:20 -07:00
John-David Dalton
884c2af17d Add _.matches benchmark. 2014-07-10 09:05:43 -07:00
John-David Dalton
51ab030541 Remove argCount from _.callback and add getCallback helper. 2014-07-09 13:02:28 -07:00
John-David Dalton
2a1e063641 Cleanup tests and add a _.callback test for argCount. 2014-07-09 08:24:30 -07:00
John-David Dalton
62b3120ffd Merge branch 'master' of github.com:lodash/lodash 2014-07-09 08:07:42 -07:00
John-David Dalton
ea17b3d7c9 Use provide instead of pass to avoid confusing test wording. 2014-07-09 08:06:29 -07:00
John-David Dalton
f3e98fc71c Merge pull request #611 from megawac/patch-1
Test coverage: explicitly setting curry arity.
2014-07-09 08:01:15 -07:00
John-David Dalton
5034e11f22 Merge branch 'master' of github.com:lodash/lodash 2014-07-09 07:56:06 -07:00
John-David Dalton
560473d70b Clarify _.runInContext docs and usage example. [ci skip] 2014-07-09 07:54:51 -07:00
Graeme Yeates
10e53509bd Test coverage: explicitly setting curry arity 2014-07-09 10:46:08 -04:00
John-David Dalton
27afb02482 Merge pull request #610 from megawac/patch-1
Variadic curry test coverage.
2014-07-09 07:38:09 -07:00
Graeme Yeates
07fd0989ea Variadic curry test coverage 2014-07-09 10:28:31 -04:00
John-David Dalton
d7c38aea50 Rebuild dist. 2014-07-09 00:52:09 -07:00
John-David Dalton
20d57e27c9 Minor doc nit. [ci skip] 2014-07-09 00:51:17 -07:00
John-David Dalton
4606c8092f Ensure _.match deep comparison isn't affected by changes to source objects. 2014-07-09 00:51:16 -07:00
John-David Dalton
30f256aad2 Reuse length var in _.compose. 2014-07-09 00:51:16 -07:00
John-David Dalton
1b9dbd0e62 Tweak docs and var names of at, baseAt, and zipObject. 2014-07-09 00:51:16 -07:00
John-David Dalton
225c8871f9 Avoid changes to object affecting the result of a match function. 2014-07-08 09:45:31 -07:00
John-David Dalton
d0333134d5 Add more _.uniq and _.matches tests. 2014-07-08 09:11:14 -07:00
John-David Dalton
b24b8315d3 Fix _.shuffle on small collections. [closes #609] 2014-07-08 08:28:50 -07:00
John-David Dalton
4ddc3b518b Optimize _.shuffle. 2014-07-08 00:40:00 -07:00
John-David Dalton
479a7e441d Use _.isError in _.attempt docs and _.template. 2014-07-07 20:09:30 -07:00
John-David Dalton
af5ae8d656 Move some _.where tests to _.matches. 2014-07-07 12:15:44 -07:00
John-David Dalton
1365882de4 Simplify test condition. 2014-07-07 07:53:33 -07:00
John-David Dalton
7854cd1f94 Avoid fails for workers when testing in Sauce Labs. 2014-07-07 07:53:06 -07:00
John-David Dalton
12a1a14527 Fix tests in old IE. 2014-07-07 07:48:40 -07:00
John-David Dalton
a71cc552c9 Avoid test path for non node/phantom. 2014-07-07 01:51:48 -07:00
John-David Dalton
e42d091502 Change case of constants in test/test.js. 2014-07-07 01:40:55 -07:00
John-David Dalton
d89d5befa0 Add lodashBizarro tests for cloning typed arrays. 2014-07-06 17:05:37 -07:00
John-David Dalton
92e5ae29c9 Add FLOAT64_BYTES_PER_ELEMENT for easier test mocking. 2014-07-06 08:24:58 -05:00
John-David Dalton
65aeb97e3e Increate code coverage for AMD build of the root module. 2014-07-06 08:08:08 -05:00
John-David Dalton
08a9ef1072 Fix test fail in older Firefoxes. 2014-07-05 13:44:07 -05:00
John-David Dalton
9c3f297e97 Rebuild dist. 2014-07-05 11:51:51 -05:00
John-David Dalton
2554871c64 Move _.template comment on .source. [ci skip] 2014-07-05 11:51:05 -05:00
John-David Dalton
404edebdff Cleanup unwrapped chaining tests and add a chaining test for _.attempt. 2014-07-05 07:39:31 -05:00
John-David Dalton
2f2030babf Add _.attempt. 2014-07-05 07:23:54 -05:00
John-David Dalton
b560b35175 Remove test which will now lock up _.times. 2014-07-04 23:12:50 -05:00
John-David Dalton
3063b19e1d Replace "shortcut" with "reference" in code comments. [ci skip] 2014-07-04 15:38:34 -05:00
John-David Dalton
a17fb54c37 Avoid >>> use. 2014-07-04 15:36:32 -05:00
John-David Dalton
c1b8a8594d Bump tested browser versions in test/saucelabs.js. 2014-07-03 12:33:02 -07:00
John-David Dalton
0a7fc6c48c Cleanup error object fork in baseIsEqual. 2014-07-03 12:26:47 -07:00
John-David Dalton
79d59ff9ca Add more docs for metadata. 2014-07-03 09:50:46 -07:00
John-David Dalton
c7d3c78e72 Make _.unzip its own method. 2014-07-03 09:46:39 -07:00
John-David Dalton
d56322a032 Consistent use of undefined with .apply instead of null. 2014-07-02 22:26:09 -07:00
John-David Dalton
aac3c4d5c7 Minor style nits. 2014-07-02 18:20:36 -07:00
John-David Dalton
9ba1ddc2dd Cleanup _.isEqual and make _.where of an empty array match all arrays similar to empty objects matching all objects. 2014-07-02 10:36:42 -07:00
John-David Dalton
61eeaa0496 Minor cleanup. 2014-07-02 09:12:05 -07:00
John-David Dalton
d3b6f9975c Add @type to help the Underscore build method alternatives. [ci skip] 2014-07-01 21:22:52 -07:00
John-David Dalton
5200c8d659 Remove unneeded n validation from _.before. 2014-07-01 12:21:11 -07:00
John-David Dalton
e2c6f57859 Minor test cleanup. 2014-07-01 11:58:09 -07:00
John-David Dalton
b084210705 Add _.before. 2014-07-01 11:57:45 -07:00
John-David Dalton
6622922468 Optimize _.clone. 2014-07-01 09:11:06 -07:00
John-David Dalton
caf31eb6d3 Doc tweaks. [ci skip] 2014-06-30 23:54:50 -07:00
John-David Dalton
464691f129 Optimize _.reduce and _.reduceRight. 2014-06-30 21:24:07 -07:00
Mariano Desanze
afcf539e6e Fix doc typo as _.support.ownLast is false in all but IE < 9. [ci skip] 2014-06-30 14:19:11 -07:00
John-David Dalton
bf2c1a2df2 Fix binary search benchmarks. [ci skip] 2014-06-30 12:59:18 -07:00
John-David Dalton
7400064cd5 Added _.sortedLastIndex and allow _.lastIndexOf to work with sorted arrays and _.sortedLastIndex. 2014-06-30 09:40:55 -07:00
John-David Dalton
7eb3754807 Doc and source cleanup. 2014-06-29 18:13:47 -07:00
John-David Dalton
a9cc2fdb54 Add toIterable to reduce support.unindexedChars use and optimize/simplify methods. [closes #601] 2014-06-29 14:14:16 -07:00
John-David Dalton
212282e77c Rebuild dist. 2014-06-29 01:25:31 -07:00
John-David Dalton
1e8a820108 Split _.every, _.filter, _.map, _.reduce, & _.some into arrayXYZ and baseXYZ forms as well as specialize for _.bind and _.partial. 2014-06-28 23:33:15 -07:00
John-David Dalton
0117341b7e Fix _.template and _.flatten use in perf/perf.js. 2014-06-28 23:33:15 -07:00
John-David Dalton
d21eac8b18 Cleanup _.forEach docs. [ci skip] 2014-06-28 23:33:15 -07:00
Steve Heffernan
af4edc3b76 Updated forEach object example to include the keys. [ci skip] [closes #596]
The forEach object example is a little ambiguous where it says "logs each number", since both the key and value of the object are technically numbers. I've read it a few times now (skipping over the function description of course) and wanted it to be a little more obvious.
2014-06-28 23:33:15 -07:00
John-David Dalton
8a959896bf Reduce code inbaseBind and baseCreateWrapper and optimize _.bind by adding createCtorWrapper. 2014-06-26 09:02:31 -07:00
John-David Dalton
ba5107e801 Add unit tests for _.curryRight. 2014-06-26 09:00:56 -07:00
John-David Dalton
d7de4a3579 Doc tweaks for _.curryRight and basePartial. [ci skip] 2014-06-26 09:00:56 -07:00
John-David Dalton
175b14860e Update Benchmark.js to be compatible with v3.0.0-pre. 2014-06-26 09:00:56 -07:00
John-David Dalton
72fcb4ebda Simplify baseCallback. 2014-06-26 09:00:56 -07:00
John-David Dalton
3a221f9b6e Cleanup _.compose. 2014-06-26 09:00:55 -07:00
Graeme Yeates
1241fb54f3 Simplify _.*RightWhile loops 2014-06-26 09:00:55 -07:00
John-David Dalton
b291dcadc6 Add _.curryRight. 2014-06-26 09:00:55 -07:00
John-David Dalton
4105b19f75 Drop Narwhal from test/run-test.sh and contributing text. [ci skip] 2014-06-26 09:00:55 -07:00
John-David Dalton
b7b8ad7760 Updated tested Node version in readme. [ci skip] 2014-06-26 09:00:55 -07:00
John-David Dalton
8465e3061a Cleanup error messages for jobs that fail to start . 2014-06-26 09:00:55 -07:00
John-David Dalton
6b09cd61d2 Ensure _.keysIn treats primitives like objects and both _.keys and _.keysIn return empty arrays for null and undefined values. 2014-06-22 18:54:19 -07:00
John-David Dalton
aac609cc38 Avoid test fails in IE 9. 2014-06-22 18:54:19 -07:00
John-David Dalton
0b1d16f9db Excuse _.isFinite tests in test/underscore.html. 2014-06-22 16:56:18 -07:00
John-David Dalton
7374f6dc4f Simplify charsLeftIndex and charsRightIndex. 2014-06-22 16:38:23 -07:00
John-David Dalton
9577d80fc2 Simplify _.dropRightWhile, _.dropWhile, _.takeRightWhile, and _.takeWhile. 2014-06-22 16:38:23 -07:00
John-David Dalton
c550e27d21 Ensure _.omit and _.pick work with primitives. 2014-06-22 16:38:23 -07:00
John-David Dalton
423730da76 Make _.isFinite use ES6 Number.isFinite when available. 2014-06-22 16:38:23 -07:00
John-David Dalton
78a4c6f525 Minor whitespace nits. [ci skip] 2014-06-22 16:38:23 -07:00
John-David Dalton
0d3ac21ae0 Fix test in IE. 2014-06-22 16:38:23 -07:00
John-David Dalton
2cae3245aa Make make nullish check consistent in _.isEmpty. 2014-06-22 16:38:22 -07:00
John-David Dalton
e143a0ec6b Make _.isFinite follow ES6 Number.isFinite. 2014-06-22 16:38:22 -07:00
John-David Dalton
35ce087f3b Use Object(...) instead of new String, new Boolean, and new Number. 2014-06-22 16:38:22 -07:00
John-David Dalton
e787bc8ae4 Add semicolons. 2014-06-22 16:38:22 -07:00
John-David Dalton
4937052475 Minor test cleanup. 2014-06-22 00:28:58 -07:00
John-David Dalton
739eb67bec Add _.isError to host object test. 2014-06-22 00:28:58 -07:00
John-David Dalton
a3049b6f94 Ensure _.compose returns a noop function when no arguments are provided. 2014-06-22 00:28:26 -07:00
John-David Dalton
2f1346fefa Add more _.noop use in test.js. 2014-06-22 00:27:47 -07:00
John-David Dalton
f116db3108 Make categories singular. 2014-06-21 21:25:17 -07:00
John-David Dalton
87a8780cca Fix failing tests in older IE related to iteration order. 2014-06-21 15:12:49 -07:00
John-David Dalton
d2de62283b Rename callback params to iterator or customizer where appropriate. 2014-06-21 15:12:49 -07:00
John-David Dalton
11c16139c2 Avoid nullish being treated as plain objects in _.keysIn. 2014-06-21 15:12:49 -07:00
John-David Dalton
1c91ec69ba Simplify _.isObject check in _.trunc. 2014-06-21 15:12:49 -07:00
John-David Dalton
73429e7779 Remove _.isObject use from _.omit and _.pick. 2014-06-21 15:12:48 -07:00
John-David Dalton
fe5aff0c72 More lodash cleanup. 2014-06-21 15:12:48 -07:00
John-David Dalton
c36d29a896 Minor nit in readme. [ci skip] 2014-06-21 15:12:48 -07:00
John-David Dalton
e3b5395905 Remove falsey array check in baseFlatten. 2014-06-21 15:12:48 -07:00
John-David Dalton
3a25ecbbc9 Rework lodash. 2014-06-21 15:12:48 -07:00
John-David Dalton
7d63970293 Remove sorting from _.functions. 2014-06-21 15:12:48 -07:00
John-David Dalton
ee267d23ba Correct _.template use in saucelabs.js. 2014-06-21 15:12:48 -07:00
John-David Dalton
e0e4eed26b Adjust unit tests. 2014-06-19 09:32:13 -07:00
John-David Dalton
5b280bd60d Add excused tests for _.first, _.initial, _.last, _.rest, and _.template. 2014-06-19 09:32:13 -07:00
John-David Dalton
2f9cc91b64 Simplify _.initial. 2014-06-19 09:32:13 -07:00
John-David Dalton
36bcced355 Avoid sort() use in baseFunctions. 2014-06-19 09:32:12 -07:00
John-David Dalton
9a9b17d38d Make _.chain use lodash instead of lodashWrapper. 2014-06-19 09:32:12 -07:00
John-David Dalton
e2cd275ac5 Remove the data param from _.template. 2014-06-19 09:32:12 -07:00
John-David Dalton
61eb5d906c Doc tweaks to _.flatten and other methods. [ci skip] 2014-06-19 09:32:12 -07:00
John-David Dalton
a113dc0861 Remove overloading from _.first, _.last, _.initial, & _.rest. 2014-06-19 09:32:12 -07:00
John-David Dalton
6a164a235d Add methods to the lodash wrapped/unwrapped chaining docs. [ci skip] 2014-06-19 09:32:12 -07:00
John-David Dalton
c1eaa90c2b Move callback above constant. 2014-06-17 10:31:06 -07:00
John-David Dalton
00e00eb7b5 Doc tweaks for boolean params. [ci skip] 2014-06-17 09:16:09 -07:00
John-David Dalton
0d2db28908 Rename _.createCallback to _.callback. 2014-06-17 01:07:04 -07:00
John-David Dalton
20202b793b Remove callback support from _.flatten and make it shallow by default. 2014-06-17 00:59:19 -07:00
John-David Dalton
62e84e73ae Add _.clone and _.flatten tests. 2014-06-17 00:08:33 -07:00
John-David Dalton
73f6fd49d0 Align _.keys with ES6 and coerce primitives to objects. 2014-06-16 12:27:21 -07:00
John-David Dalton
4f9da35b76 Make _.max and _.min return unwrapped values when chaining. 2014-06-16 09:07:47 -07:00
John-David Dalton
cc7b413a2a Update request in travis.yml. 2014-06-16 00:31:14 -07:00
John-David Dalton
fcf29f357d Minor readme nit. [ci skip] 2014-06-16 00:31:08 -07:00
John-David Dalton
4fd1eae84f Fix typo to fix AMD tests. 2014-06-15 18:32:16 -07:00
John-David Dalton
1c770a3c66 Drop testing Node 0.6. and bump in name only to v3.0.0-pre. 2014-06-15 17:07:51 -07:00
John-David Dalton
e152f54903 Make tests work with es6 transpiled code. 2014-06-15 16:18:07 -07:00
John-David Dalton
5d3a9d817a make ui.isModularize set to true if coming from lodash-es6. 2014-06-15 14:24:37 -07:00
John-David Dalton
e884916275 Rebuild dist. 2014-06-15 13:46:51 -07:00
John-David Dalton
5b7b16416b Fix _.zip use with arguments objects. 2014-06-15 13:46:08 -07:00
John-David Dalton
04b93aeaf2 Make object check style consistent. 2014-06-15 11:45:04 -07:00
John-David Dalton
39bdd37615 Correct the resolution of length in _.zip. 2014-06-15 11:45:04 -07:00
John-David Dalton
4ccb3810c2 Make nullish check consistent in variations of _.matches returned function. 2014-06-14 23:21:58 -07:00
John-David Dalton
1065ebb0aa Simplify baseFlatten. 2014-06-14 10:23:26 -07:00
John-David Dalton
74c08de530 Cleanup nonEnumProps assignment. 2014-06-14 10:19:16 -07:00
John-David Dalton
b195fdbf60 Optimize _.matches. 2014-06-13 23:54:33 -07:00
John-David Dalton
f68efe6674 Make _.partial and _.partialRight docs complement each other. [ci skip] [closes #586] 2014-06-13 09:33:33 -07:00
John-David Dalton
ed309182bf Add _.chunk to the features section of the readme. [ci skip] 2014-06-12 23:42:46 -07:00
John-David Dalton
50c6b276f9 Remove _.pluck use from _.zip. 2014-06-12 20:50:47 -07:00
John-David Dalton
4c1a8f358a Add more _.chunk tests. 2014-06-12 09:29:05 -07:00
John-David Dalton
05ff79f347 Avoid using passing in test descriptions. 2014-06-12 09:17:59 -07:00
John-David Dalton
3ae328898d Reduce _.omit. 2014-06-12 09:11:47 -07:00
John-David Dalton
7d35c43def Minor doc / source cleanup. 2014-06-12 08:48:33 -07:00
John-David Dalton
d4f857b739 Move _.chunk to the Arrays category and make it use a default chunkSize of 1. 2014-06-12 08:39:30 -07:00
John-David Dalton
b6bc844b4d Remove support for cloning arrays and make _.isEqual more robust when comparing errors. 2014-06-12 08:38:35 -07:00
John-David Dalton
d06a477371 Add "enumerable" to _.isEmpty doc. [ci skip] 2014-06-11 22:59:30 -07:00
John-David Dalton
c128c029f3 Merge pull request #585 from phated/master
Initial implementation of _.chunk - close #465
2014-06-11 19:00:45 -07:00
Blaine Bublitz
a58ad5006f Initial implementation of _.chunk - close #465 2014-06-11 17:37:06 -07:00
John-David Dalton
3c5655fc3d Rebuild dist. 2014-06-11 12:29:06 -07:00
John-David Dalton
6ab04866ec Fix failing tests. 2014-06-11 12:24:18 -07:00
John-David Dalton
1f07f9d127 Fix _.isEqual test in environment w/o typed arrays. 2014-06-11 12:24:17 -07:00
John-David Dalton
e5ccfc4446 Ensure _.where returns elements that contain all source array values. [closes #583] 2014-06-11 12:24:17 -07:00
John-David Dalton
ec89382e35 Add error object tests to _.isEqual. 2014-06-11 12:24:17 -07:00
John-David Dalton
4a7873ef77 Update tested Firefox in the readme. [ci skip] 2014-06-11 12:24:17 -07:00
John-David Dalton
ff2fd45ff0 Only use ctorByClass if typed array constructor is incorrect. 2014-06-10 20:28:02 -07:00
John-David Dalton
e8cfeec0cf Cleanup tests and ensure the Worker test waits no more than 30 seconds (including retries). 2014-06-10 20:28:02 -07:00
John-David Dalton
c72171d1da Add _.once tests for memorized return values. 2014-06-10 09:50:10 -07:00
John-David Dalton
885b56000b Make less stable tests leverage the retry count of asyncTest. 2014-06-10 09:40:53 -07:00
John-David Dalton
3d1ee9dcf0 Clarify AMD exports comment. [ci skip] 2014-06-09 23:00:32 -07:00
John-David Dalton
5d2133a483 Fix unit test for rhino/ringo. 2014-06-09 09:37:14 -07:00
John-David Dalton
52bb56ba43 Remove support.argsObject. 2014-06-09 02:05:54 -07:00
John-David Dalton
d2edf11726 Ensure _.callback supports binding built-in methods. [closes #576] 2014-06-09 01:40:02 -07:00
John-David Dalton
9a152c23bb Minor _.sortBy doc nit. [ci skip] 2014-06-09 00:17:25 -07:00
John-David Dalton
8572445f57 Optimize _.isEqual by using _.keys and ensure arguments objects are compared correctly. 2014-06-08 19:42:11 -07:00
John-David Dalton
9940d73167 Update requires. 2014-06-07 06:53:02 -07:00
John-David Dalton
8b8a9ae854 Attempt to fix Safari 4. 2014-06-06 15:00:36 -07:00
John-David Dalton
036bf92223 Ensure a byte length is passed. 2014-06-05 07:13:07 -07:00
John-David Dalton
410969743f Avoid subarray for mobile Safari. 2014-06-05 00:47:37 -07:00
John-David Dalton
14da67121c Add Safari 4 to saucelabs.js. 2014-06-05 00:47:25 -07:00
John-David Dalton
681d3e09ba Rebuild dist. 2014-06-04 08:57:01 -07:00
John-David Dalton
0ce130efa7 Cleanup readme and update Opera versions. [ci skip] 2014-06-04 08:56:13 -07:00
John-David Dalton
d14d7ade85 Fix baseIsEqual doc param typo. [ci skip] 2014-06-04 08:56:13 -07:00
John-David Dalton
7b4fd28ef1 Ensure _.merge ignores undefined values of source object properties. [closes #573] 2014-06-04 08:56:13 -07:00
John-David Dalton
b2280b2d72 Fixed _.keys in Safari 5.0.5. 2014-06-02 09:29:40 -07:00
John-David Dalton
b41826c332 Fixed cloneBuffer in PhantomJS. 2014-06-02 09:29:40 -07:00
John-David Dalton
3d93ed9059 Fix failing tests in Safari > 5. 2014-06-02 08:15:19 -07:00
John-David Dalton
35a0756e5a Add fallback for ArrayBuffer#slice. 2014-06-01 23:02:39 -07:00
John-David Dalton
10419366f9 Rename num to n in doc examples. [ci skip] 2014-06-01 23:02:39 -07:00
John-David Dalton
8373d31013 Cleanup readme. [ci skip] 2014-06-01 23:02:39 -07:00
John-David Dalton
0c89a8f145 Remove narwhal from travis.yml testing. 2014-06-01 23:02:39 -07:00
John-David Dalton
257ac4d37e Remove unused vendor files. 2014-05-31 19:38:27 -05:00
John-David Dalton
653aee8b07 Update to version info to 2.5.0-pre. 2014-05-31 19:38:27 -05:00
John-David Dalton
88726aff8c Update readme. [ ci skip] 2014-05-31 19:38:27 -05:00
Alex Elder
baabdb4ac2 Updated README.md
This commit adds links to Lo-Dash documentation under a specific "Documentation" heading, hopefully improving usability for users searching for the API docs.
2014-05-31 19:38:26 -05:00
Benjamin Tan
6277510557 Use Markdown links formatting. [ci skip] 2014-05-31 19:38:26 -05:00
John-David Dalton
e9ab17fcb1 Fix failing test. 2014-05-31 19:38:26 -05:00
John-David Dalton
2f9ba719d4 Add clone tests for array buffers. 2014-05-30 15:27:32 -04:00
John-David Dalton
e259f300b1 Remove unused fork in baseAssign and baseMerge. 2014-05-30 14:58:47 -04:00
John-David Dalton
fcc357ddd1 Source cleanup of onJobStart. 2014-05-30 14:58:36 -04:00
John-David Dalton
e613198af7 Detect sauce error message in result. 2014-05-30 14:58:08 -04:00
John-David Dalton
e3c1214971 Fix test stability. 2014-05-30 13:15:32 -04:00
John-David Dalton
1c3f9f7fbf Ensure tests that timeout are marked as errors. 2014-05-30 13:06:06 -04:00
John-David Dalton
f4a1573586 Rename _.truncate to _.trunc to align with ES6. 2014-05-30 13:04:56 -04:00
John-David Dalton
95db668c3c Make reError more robust and leverage console.log sugar more. 2014-05-30 10:03:06 -04:00
John-David Dalton
691e21fa78 Delay status completion until there is a valid job ID. 2014-05-28 16:38:27 -04:00
John-David Dalton
c555681c8b Add extra object in doc examples of _.assign and _.defaults. [ci skip] 2014-05-28 15:35:00 -04:00
John-David Dalton
ae7ef24196 Minor source nit in test/test.js. 2014-05-28 15:23:40 -04:00
John-David Dalton
f935b141f1 Fix test typo. 2014-05-28 15:23:40 -04:00
John-David Dalton
a893d43d16 Move test error catching code before any other script files. 2014-05-28 15:23:40 -04:00
John-David Dalton
7cb47c8494 Add chaining tests to string methods. 2014-05-27 23:21:03 -04:00
John-David Dalton
5ef4c763b6 Add chaining tests. 2014-05-26 16:56:15 -06:00
John-David Dalton
459b5bd89c Adjust callback arg counts and fast paths. 2014-05-26 07:17:35 -07:00
John-David Dalton
c5237a926d Update vendor. 2014-05-25 23:55:59 -07:00
John-David Dalton
2e5052a7fa Bump the tested Opera version in readme. [ci skip] 2014-05-25 23:10:39 -07:00
John-David Dalton
cd8d9bf07c Ensure _.isEqual works on error objects and add tests for cloning and comparing errors and typed arrays. 2014-05-25 23:10:08 -07:00
John-David Dalton
7da022ebb4 Consistent test order. 2014-05-25 15:39:54 -07:00
John-David Dalton
67f9c7e0f0 Code cleanup and removal of ctorByClass. 2014-05-25 13:18:13 -07:00
John-David Dalton
1812d557b6 Minor doc nit. [ci skip] 2014-05-25 12:32:15 -07:00
John-David Dalton
34cde430a5 Add private isArrayLike helper and add object classifications for typed arrays with support for cloning and comparing them. 2014-05-25 12:24:32 -07:00
John-David Dalton
12a6b58614 Fix _.throttle doc typo. [ci skip] 2014-05-25 09:14:02 -07:00
John-David Dalton
cb81fccfaf Lots of doc tweak removing heavy will use. [ci skip] 2014-05-24 18:33:05 -07:00
John-David Dalton
1ce0fffd25 Add a cancel function to debounced functions. [closes #567] 2014-05-24 14:39:53 -07:00
John-David Dalton
0c1c4b08c7 Fix doc typo. [ci skip] 2014-05-23 23:45:45 -07:00
Mathias Bynens
c875b61003 Make _.escape escape backticks as well
In Internet Explorer ≤ 8, the backtick character can be used to break out of unquoted attribute values or HTML comments. See http://html5sec.org/#102, http://html5sec.org/#108, and http://html5sec.org/#133.
2014-05-23 10:38:05 +02:00
John-David Dalton
f4b34c8ca5 Make _.isEqual callback test circular. 2014-05-22 23:28:05 -07:00
John-David Dalton
a6b4b5e30c Update tested Chrome version in readme. [ci skip] 2014-05-22 23:08:32 -07:00
John-David Dalton
64fb8f0c53 Remove trailing comma to fix test fails in old IE. 2014-05-21 16:43:13 -07:00
John-David Dalton
78a312f61c Rebuild dist. 2014-05-21 16:07:19 -07:00
John-David Dalton
2c6c4426e8 Fix jashkenas/underscore#1621. 2014-05-21 16:06:06 -07:00
John-David Dalton
a9df0601a6 Enhance callback args tests for _.clone, _.cloneDeep, and _.isEqual. 2014-05-21 00:20:05 -07:00
John-David Dalton
4345f353a0 Fix callback use with _.isEqual. 2014-05-21 00:20:05 -07:00
John-David Dalton
96b525658e Cleanup optionToValue. 2014-05-21 00:20:05 -07:00
John-David Dalton
9525952573 Avoid variable assignments in return statements. 2014-05-21 00:20:05 -07:00
John-David Dalton
76828a87ee Optimize _.every and _.some and cleanup _.callback, _.forEach, and _.forEachRight. 2014-05-21 00:20:05 -07:00
John-David Dalton
789eb59904 Correct .npm folder permissions in travis.yml. 2014-05-21 00:20:05 -07:00
John-David Dalton
c0265f8fd9 Add _.runInContext doc example. 2014-05-21 00:20:05 -07:00
John-David Dalton
891ebb8ff6 Attempt to detect more false test errors. 2014-05-21 00:20:05 -07:00
John-David Dalton
1111c20d54 Simplify reWords. 2014-05-19 08:51:33 -07:00
John-David Dalton
387176e83d Add baseAssign, baseBindAll, baseInvoke, basePick, basePullAt, and createAssigner. 2014-05-19 01:03:22 -07:00
John-David Dalton
80a38b285d Punt on AMD testing for Android because of stability issues. 2014-05-19 01:03:22 -07:00
John-David Dalton
aa0c02a243 Avoid retrying the tunnel more times than allowed. 2014-05-19 01:03:22 -07:00
John-David Dalton
3c5932af75 Update Underscore tests and excuse tests for edge features from the Underscore build. 2014-05-19 01:03:22 -07:00
John-David Dalton
f40a7d47f5 Simplify .gitattributes. [ci skip] 2014-05-19 01:03:22 -07:00
John-David Dalton
f85543c7ff Only retry a test if it errors not because of unit test fails. 2014-05-19 01:03:21 -07:00
John-David Dalton
36d2ff7c3b Update qunit-extras assert expected count appropriately and fix typo. 2014-05-19 01:03:21 -07:00
John-David Dalton
7ba673ed89 Rename arrayRef to arrayProto for consistency. 2014-05-16 02:18:14 -07:00
John-David Dalton
a0cba79df2 Excuse assert count expected error in Backbone and add support for excusing them qunit-extras. 2014-05-16 02:18:14 -07:00
John-David Dalton
c91e8d7aa7 Avoid a false fail in slower Ringo (and other slower environments). 2014-05-16 02:18:14 -07:00
John-David Dalton
e85b0a81ba Minor style nit in test.js. 2014-05-16 02:18:13 -07:00
John-David Dalton
bfc40498bd Update vendors. 2014-05-16 02:18:13 -07:00
Benjamin Tan
41ac7062f8 Minor comment and code style fixes 2014-05-15 19:04:06 -07:00
John-David Dalton
71c19b566b Tweak escaping sourceURL in docs. [ci skip] 2014-05-15 19:04:06 -07:00
John-David Dalton
0de72f3abb Add compileFunction. 2014-05-15 19:04:06 -07:00
John-David Dalton
ce3c78d30b Ensure tunnel stops when jobs are completed. 2014-05-15 19:04:06 -07:00
John-David Dalton
7152308c25 Use result job_id instead of parsing the url and ensure tunnel can restart if the tunnel failed to start. 2014-05-15 19:04:06 -07:00
John-David Dalton
cd838d4902 Add tunnel timeout support. 2014-05-15 19:04:06 -07:00
John-David Dalton
f7799eee59 Avoid unneeded index var in baseBind. 2014-05-15 19:04:06 -07:00
John-David Dalton
247718bc6c Update sauce-tunnel. 2014-05-15 19:04:06 -07:00
John-David Dalton
6b5521fbf7 Rename testId to taskId. 2014-05-15 19:04:06 -07:00
John-David Dalton
13e00379ae Cleanup baseIsEqual and baseMerge. 2014-05-13 08:58:01 -07:00
John-David Dalton
347663716c Null _timerId in Job#status. 2014-05-13 08:58:01 -07:00
John-David Dalton
69415ea966 Update tested Firefox version on Sauce. 2014-05-13 08:58:01 -07:00
John-David Dalton
6c71e3c583 Pass more callback args to custom callbacks of _.clone, _.cloneDeep, and _.isEqual. 2014-05-13 08:58:01 -07:00
John-David Dalton
06861ceb55 Add Job#resetting flag. 2014-05-13 08:58:01 -07:00
John-David Dalton
6e286473ab Add more logInline calls and move state flag assignment higher in methods. 2014-05-13 08:58:00 -07:00
John-David Dalton
6091219aaf Split out stop and reset events in Tunnel#restart. 2014-05-13 08:58:00 -07:00
John-David Dalton
76cee1287a Ensure jobs are reset before the tunnel is closed. 2014-05-13 08:58:00 -07:00
John-David Dalton
ff138c6d47 Null out the descriptor.value after using it in setData. 2014-05-12 07:49:20 -07:00
Benjamin Tan
a89f8b8098 Add $ signs to bash prompts 2014-05-12 07:49:20 -07:00
John-David Dalton
f4009a9944 Make recursive test expand to _.debounce too. 2014-05-12 07:49:20 -07:00
John-David Dalton
16b479d21e Fix jobUrl typo in saucelabs.js. 2014-05-12 07:49:20 -07:00
John-David Dalton
0f8c20c3ab Add ui.isForeign, add guards for Worker tests, and remove Dojo loader filter from test. 2014-05-12 07:49:20 -07:00
John-David Dalton
d5c3b258f3 Rename assignDefaultsOwn to assignOwnDefaults and remove createAssigner and defaultsOwn. 2014-05-11 03:49:41 -07:00
John-David Dalton
ee4a703407 Add createAssigner, defaultsOwn, and expand the callback args of _.assign and _.merge. 2014-05-11 02:35:46 -07:00
John-David Dalton
e901208721 Fix typo in _.times docs. [ci skip] [closes #549] 2014-05-09 08:46:56 -07:00
John-David Dalton
5deb7371ab Rebuild dist. 2014-05-09 02:32:14 -07:00
John-David Dalton
f999195f47 Style nit on the IIFE used with mixin. 2014-05-09 02:31:25 -07:00
John-David Dalton
9b920cf813 Add baseFunctions to ensure _.mixin only iterates over own keys of source objects. 2014-05-09 02:31:25 -07:00
John-David Dalton
4155e8e0ce Add a doc note for iterating inherited properties to _.bindAll and _.functions. [ci skip] 2014-05-09 02:31:25 -07:00
John-David Dalton
b583530c66 Simplify memoize doc example. [ci skip] 2014-05-07 01:32:21 -07:00
John-David Dalton
43c13c22a8 Make _.memoize skip the __proto__ key. 2014-05-07 00:40:27 -07:00
John-David Dalton
32167b45ce Ensure _.pullAt ignores non-index values. 2014-05-07 00:12:12 -07:00
John-David Dalton
f09ae1e2e3 Fix url parsing. 2014-05-06 23:03:22 -07:00
John-David Dalton
086e1e1a74 Fix resolving job ids. 2014-05-06 21:49:33 -07:00
John-David Dalton
1020637d79 Merge pull request #541 from danallison/master
Fix old `pullAt` doc example. [ci skip]
2014-05-06 10:56:43 -07:00
Dan Allison
9c30d69d55 Fix old pullAt example 2014-05-06 10:16:51 -07:00
John-David Dalton
ff673f053b Use String instead of +'' for consistent style. 2014-05-06 09:20:44 -07:00
John-David Dalton
2514987d3e Comment nit. [ci skip] 2014-05-06 08:44:35 -07:00
John-David Dalton
e332a916b0 Add debug. 2014-05-06 08:14:19 -07:00
John-David Dalton
5eb7faec29 Specify Node 0.11.11 to avoid 0.11.13 which isn't compatible with istanbul. 2014-05-06 06:08:34 -07:00
John-David Dalton
8cfebee922 Remove id check from Job#stop. 2014-05-06 05:21:11 -07:00
John-David Dalton
f4a22f8aef Add Job#remove to remove old jobs when restarting. 2014-05-06 05:13:45 -07:00
John-David Dalton
5fd641e8c7 Add _.pullAt to features section of readme. [ci skip] 2014-05-04 19:24:43 -07:00
John-David Dalton
4cde537a7f Cleanup initialization of Job and Tunnel instances. 2014-05-04 16:13:07 -07:00
John-David Dalton
56ee4c1ae5 Remove unnecessary this binding and emit register restart callbacks so they execute sooner. 2014-05-04 16:04:24 -07:00
John-David Dalton
1874ad2ff2 Correct typo in Job#reset. 2014-05-04 15:39:50 -07:00
John-David Dalton
907ed641bf Use the chrome sauce browser identifier in place of googlechrome. 2014-05-04 13:49:54 -07:00
John-David Dalton
a23ccd863d Message format nit for logging retries. [ci skip] 2014-05-04 13:10:50 -07:00
John-David Dalton
8d145d7a32 Make threshold account for job batch sizes smaller than the throttled amount. 2014-05-04 12:28:49 -07:00
John-David Dalton
4a0419e554 Rebuild dist. 2014-05-04 10:44:25 -07:00
John-David Dalton
f23a458319 Fix typo in _.pullAt. 2014-05-04 10:43:43 -07:00
John-David Dalton
1e324103cc Tweak docs for _.at, _.omit, and _.pick. [ci skip] 2014-05-04 10:43:43 -07:00
John-David Dalton
85d8ced299 Add baseAt to reduce _.at and _.pullAt. 2014-05-04 10:43:43 -07:00
John-David Dalton
0631b8f052 Whitespace nit. 2014-05-04 02:57:22 -07:00
John-David Dalton
649994464c Tweak docs for _.pull, _.pullAt, and _.remove. [ci skip] 2014-05-04 02:57:22 -07:00
John-David Dalton
8c618780b7 Rename _.removeAt to _.pullAt. [closes #490] 2014-05-04 02:57:07 -07:00
Dan Allison
0dc2e8994b use else instead of continue 2014-05-04 02:51:55 -07:00
Dan Allison
d25ab4f204 use more descriptive variable name 2014-05-04 02:51:54 -07:00
Dan Allison
ff26080c5c fix _.removeAt with repeated indexes 2014-05-04 02:51:54 -07:00
Dan Allison
95bd2dde19 add removeAt function
(cherry picked from commit 06b3eae373484618b58f70f3cd6ecda319bfd977)
2014-05-04 02:50:23 -07:00
John-David Dalton
6ad31a5441 Restart tunnel if all *active* jobs have restarted. 2014-05-03 23:35:18 -07:00
John-David Dalton
702a82bb38 Remove args var from _.at. 2014-05-03 22:05:26 -07:00
John-David Dalton
a5e91385b0 Expand the excuse window of load errors to 3 seconds or more. 2014-05-03 21:55:18 -07:00
John-David Dalton
4c690b9d4c Make documented args names of methods that accept more than one plural. [ci skip] 2014-05-03 21:44:43 -07:00
John-David Dalton
695d6e14d4 Remove _.at guard for _.map use. 2014-05-03 21:42:19 -07:00
John-David Dalton
c19f87134e Restart tunnel if all jobs have restarted. 2014-05-03 21:41:02 -07:00
John-David Dalton
3de50e8dd4 Emit restart events for Job and Tunnel. 2014-05-03 21:28:19 -07:00
John-David Dalton
fb20dae0a8 Whitespace nits. [ci skip] 2014-05-03 21:27:32 -07:00
John-David Dalton
0f8db11f53 Restrict script load error excusal a bit. 2014-05-03 07:55:11 -07:00
John-David Dalton
e3f94156f1 Update tested version of Firefox in readme. [ci skip] 2014-05-03 06:30:30 -07:00
John-David Dalton
cf468fc4d1 Update tested version of Node in readme. [ci skip] 2014-05-03 00:27:59 -07:00
John-David Dalton
849cf30b95 Rebuild dist. 2014-05-03 00:27:41 -07:00
John-David Dalton
d08febc711 Avoid reporting tests to Sauce Labs when errors occur to force a retry. 2014-05-03 00:16:15 -07:00
John-David Dalton
53bfafb84c Add doc note to _.defaults for a deep version. [ci skip] [closes #154] 2014-05-02 22:49:36 -07:00
John-David Dalton
40809e40c2 Fix _.partialRight doc example. [ci skip] [closes #540] 2014-05-02 22:33:17 -07:00
John-David Dalton
925197ae09 Add doc note on Firefox OS certified apps. [ci skip] 2014-05-02 21:41:25 -07:00
John-David Dalton
07f72de63d Use _.partial where applicable. 2014-05-02 20:55:59 -07:00
John-David Dalton
f17f62b532 Move SauceTunnel callbacks out of Tunnel#start and Tunnel#stop and use util.inherits. 2014-05-02 20:50:32 -07:00
John-David Dalton
b97bbe0572 Add Jobs#reset. 2014-05-02 19:38:10 -07:00
John-David Dalton
9e4cc7fdbc Reduce flag checking. 2014-05-02 19:37:48 -07:00
John-David Dalton
7dcb56ea5c Reset jobs when tunnel restarts. 2014-05-02 11:24:53 -07:00
John-David Dalton
a814c6d152 Fix restarting tunnels. 2014-05-02 09:35:09 -07:00
John-David Dalton
cbe3a0fde7 Add running flag to Job and Tunnel. 2014-05-02 08:48:32 -07:00
John-David Dalton
7e375370fa Fix Tunnel#stop. 2014-05-02 07:42:41 -07:00
John-David Dalton
1d149b100b Add state checks to test/saucelabs.js. 2014-05-02 01:44:18 -07:00
John-David Dalton
1bce75ed53 Add the ability to retry sauce tunnel connections. 2014-05-02 01:22:03 -07:00
John-David Dalton
d8a72fe797 Update travis deps to use ^ version indicator instead of ~. 2014-05-01 09:29:01 -07:00
John-David Dalton
5bd8319f99 Add retry limit to sauce retry message. 2014-05-01 08:52:20 -07:00
John-David Dalton
d8221b880b Remove unused color from ansiCodes. 2014-05-01 08:51:35 -07:00
John-David Dalton
1316ce5ca8 Fix dequeue. 2014-05-01 02:55:11 -07:00
John-David Dalton
d5562767a2 Cleanup test titles. 2014-05-01 01:33:02 -07:00
John-David Dalton
1a03ee8b9b Ensure _.callback doesn't error if provided a nullish func argument and a thisArg. 2014-05-01 01:32:47 -07:00
John-David Dalton
d07e53e9a0 Add Job#restart and Job#stop to test/saucelabs.js. 2014-05-01 00:47:26 -07:00
John-David Dalton
04160e6acc Make logInline treat nullish values as an empty string. 2014-05-01 00:22:03 -07:00
John-David Dalton
6f4c7ca171 Add job throttle to test/saucelabs.js. 2014-04-30 21:07:51 -07:00
John-David Dalton
2d397efcf5 Add placeholders note to the features section of the readme. [ci skip] 2014-04-30 09:24:58 -07:00
John-David Dalton
ba8e59e1bd Keep skipping placeholder tests for modularized builds. 2014-04-30 09:11:31 -07:00
John-David Dalton
568faa526f Rebuild dist. 2014-04-30 08:48:37 -07:00
John-David Dalton
b761fbaabe Fix _.mixin doc typo. 2014-04-30 08:46:25 -07:00
John-David Dalton
4a493a96d7 Remove isPreBuild checks from test/test.js. 2014-04-30 08:46:25 -07:00
John-David Dalton
601244ba74 Update formatting for tested browsers in readme. [ci skip] 2014-04-30 08:20:07 -07:00
John-David Dalton
d606197264 Try to use the tunnel-identifier key. 2014-04-30 08:20:07 -07:00
John-David Dalton
1fee10e167 Only apply idleTimeout to queued jobs. 2014-04-30 08:20:07 -07:00
John-David Dalton
674802abe4 Make _.mixin chainable and make it assign to this instead of hard coding assignment to lodash. 2014-04-30 00:11:45 -07:00
John-David Dalton
179422a84b Add more _.where tests. 2014-04-29 19:15:09 -07:00
John-David Dalton
5c9e4685db _.where should perform a partial comparison of *all* objects within arrays of source. [closes #536] 2014-04-29 09:28:56 -07:00
John-David Dalton
c59f8c734a Apply idle-timeout to queued jobs too. 2014-04-29 08:18:36 -07:00
John-David Dalton
d2fa2be5af Fix doc typos fourty to forty. [ci skip] 2014-04-29 08:18:36 -07:00
Max Bucknell
2d3d66e9d1 Fix spelling mistake 2014-04-29 08:18:36 -07:00
John-David Dalton
21713801ad Add some debug. 2014-04-29 01:51:49 -07:00
John-David Dalton
598e2adebe Adjust modern build testing for older Android. 2014-04-29 00:38:56 -07:00
John-David Dalton
8bbb84fdc7 Try to stabilize sauce results. 2014-04-29 00:17:51 -07:00
John-David Dalton
59b7bc7b98 Correct browserName output. 2014-04-28 23:35:51 -07:00
John-David Dalton
55d52be3c2 Add missing comma in test/saucelabs.js. 2014-04-28 10:21:36 -07:00
John-David Dalton
3aa4e45bdb Rebuild dist. 2014-04-28 09:03:21 -07:00
John-David Dalton
534976e64f Cleanup platforms in test/saucelabs.js. 2014-04-28 08:43:43 -07:00
John-David Dalton
3efa9d2030 Remove IIFE in test/saucelabs.js. 2014-04-28 08:41:24 -07:00
John-David Dalton
2c4657355f Ensure that _.transform checks that object is an object before using it as the accumulator [[Prototype]]. 2014-04-28 08:39:35 -07:00
John-David Dalton
68702ca43f More _.isObject cleanup. 2014-04-28 08:34:54 -07:00
John-David Dalton
54a0de9b52 Make _.merge align with _.assign exit early snippet. 2014-04-28 08:31:54 -07:00
John-David Dalton
94832f3f81 Simplify _.defaults. 2014-04-28 08:31:06 -07:00
John-David Dalton
fb00ba9efd Cleanup _.isObject and _.isRegExp. 2014-04-28 08:30:32 -07:00
John-David Dalton
96736cf1de Tweak _.max, _.min, and trim helper comments. [ci skip] 2014-04-28 08:29:43 -07:00
John-David Dalton
834c55ec6f Add _.escapeRegExp, pad, & trim tests. 2014-04-28 08:28:13 -07:00
John-David Dalton
6528a434ce Add / to characters escaped by _.escapeRegExp 2014-04-28 08:27:47 -07:00
John-David Dalton
a24ee0a331 Update vendor/qunit-extras. 2014-04-28 00:47:21 -07:00
John-David Dalton
e86144bb06 Try mobile browsers with sauce rest api. 2014-04-27 12:01:05 -07:00
John-David Dalton
ce7cb16cfe Rebuild dist. 2014-04-27 11:44:11 -07:00
John-David Dalton
754bafc069 Add doc examples for _.max and _.min for +/-Infinity. [ci skip] 2014-04-27 11:41:09 -07:00
John-David Dalton
7eff6fde7c Avoid RegExp#teat error in older Opera. 2014-04-27 11:41:09 -07:00
John-David Dalton
626dac600a Add more DOM element tests. 2014-04-27 11:41:08 -07:00
John-David Dalton
f1b2d4340d Move the dom/function check up in baseIsEqual. 2014-04-26 08:02:16 -07:00
John-David Dalton
aea4d73e61 Cleanup throbber interval in vendor/qunit-extras. 2014-04-26 08:02:10 -07:00
John-David Dalton
3d6c74ead1 Add list of modern browser version ranges to readme. [ci skip] 2014-04-25 10:06:22 -07:00
John-David Dalton
c606f80fe3 Clarify _.uniq docs on callback. [ci skip] 2014-04-25 10:06:04 -07:00
John-David Dalton
250ca36f05 Ensure _.max and _.min return the correct value when callback computes +/-Infinity. 2014-04-25 07:21:10 -07:00
John-David Dalton
4c63be066f Change wording to retry. 2014-04-24 09:55:17 -07:00
John-David Dalton
b559eeb7e6 Try documented tunnel identifier key over undocumented one. 2014-04-23 23:24:44 -07:00
John-David Dalton
a9742dbdc6 Update ecstatic sauce test dep. 2014-04-23 23:24:38 -07:00
John-David Dalton
5feaade1c7 Correct attempt count in test/saucelabs.js. 2014-04-21 21:49:43 -07:00
John-David Dalton
31747dfecd Rebuild dist. 2014-04-20 13:41:36 -07:00
John-David Dalton
eda9484413 Allow getIndexOf to work when there is no external _.indexOf defined. 2014-04-20 13:40:05 -07:00
John-David Dalton
7e904c1d15 Update tested browsers in sauce. 2014-04-20 13:40:05 -07:00
John-David Dalton
5f8527ba04 Ensure error objects from iframes are tested. 2014-04-20 13:40:05 -07:00
John-David Dalton
082e95b700 Increase test coverage. 2014-04-20 13:40:05 -07:00
John-David Dalton
aef5c61415 Fix missing comma in test/test.js. 2014-04-20 13:40:05 -07:00
John-David Dalton
68fdac532f Liberal use of parentheses. 2014-04-19 12:18:14 -07:00
John-David Dalton
f718284538 Ensure _.keys and _.keysIn always skip the constructor property on prototype objects. 2014-04-19 11:55:07 -07:00
John-David Dalton
966283dd6d Minor test cleanup. [ci skip] 2014-04-19 11:55:07 -07:00
John-David Dalton
0f3ec9ad73 Newline nits. [ci skip] 2014-04-19 11:55:07 -07:00
John-David Dalton
cb685904ef Add _.isError to the features section of the readme. [ci skip] 2014-04-19 11:55:06 -07:00
John-David Dalton
5bf545ee90 Cleanup _.isError and add more tests. 2014-04-19 09:48:51 -07:00
Mike Pennisi
b018ada5c8 Implement _.isError 2014-04-19 09:48:51 -07:00
John-David Dalton
976e81be43 Update vendor/qunit-extras. 2014-04-18 09:24:47 -07:00
John-David Dalton
694cb18256 Add an error message to each TypeError. 2014-04-18 09:12:52 -07:00
John-David Dalton
a715a5fa37 Don't designate \x85 as whitespace. 2014-04-17 21:42:43 -07:00
John-David Dalton
1e10c9d508 Remove more native trim test scaffolding . 2014-04-17 21:42:43 -07:00
John-David Dalton
2aacfea8ea Update tested Chrome version in readme. [ci skip] 2014-04-17 21:42:43 -07:00
John-David Dalton
43c2cb4ba8 Remove unneeded lodashBizarro tests. 2014-04-17 07:33:14 -07:00
John-David Dalton
c93f708bc8 Add whitespace tests. 2014-04-17 07:33:14 -07:00
John-David Dalton
353416a088 Treat \x85 as whitespace. 2014-04-17 07:33:14 -07:00
John-David Dalton
93b98abb8d Remove native trim, trimLeft, & trimRight use. 2014-04-17 07:33:14 -07:00
John-David Dalton
5e28e38c98 Fix assert count. 2014-04-17 07:33:14 -07:00
John-David Dalton
0e828e5b3b Ensure _.difference works with arrays regardless of arg position. 2014-04-16 08:50:16 -07:00
John-David Dalton
c331d12678 Add _.difference, _.intersection, and _.xor tests. 2014-04-16 08:34:11 -07:00
John-David Dalton
f0817b2461 Whitespace nits in test/test.js. [ci skip] 2014-04-16 08:33:16 -07:00
John-David Dalton
d3f2cd5321 Add _.intersection and _.union tests. 2014-04-16 00:25:36 -07:00
John-David Dalton
7017766591 Rebuild dist. 2014-04-15 23:21:37 -07:00
John-David Dalton
841890c178 Add tests for _.pluck, _.findWhere, and _.where for their key or source arguments. 2014-04-15 23:19:39 -07:00
John-David Dalton
4f5189b0dd Use _.noop more in test/test.js. 2014-04-15 23:04:24 -07:00
John-David Dalton
250ecd13bd Avoid != in createCallback. 2014-04-15 22:41:01 -07:00
John-David Dalton
34133b094b Ensure pluck always used property and findWhere and where always use matches. 2014-04-15 22:40:26 -07:00
John-David Dalton
75c3939c88 Simplify _.isEmpty. 2014-04-15 22:13:28 -07:00
John-David Dalton
cb44430a3f Update underscore tests and vendor again. 2014-04-15 17:51:30 -07:00
John-David Dalton
be88b5aba2 Fix error in Firefox < 4. 2014-04-15 17:39:27 -07:00
John-David Dalton
3d0f7b8e7e Make more underscore tests pass. 2014-04-15 09:24:16 -07:00
John-David Dalton
a53d5dc791 Prevent test fails for the npm build. 2014-04-15 02:17:07 -07:00
John-David Dalton
7f1164b6a6 Remove _.isObject use from _.findWhere and _.where. 2014-04-15 01:36:01 -07:00
John-David Dalton
2174f10db5 Excuse invalid underscore _.intersection tests. 2014-04-15 01:21:55 -07:00
John-David Dalton
e3c218092c Add _.findWhere as its own method. 2014-04-15 01:17:55 -07:00
John-David Dalton
cf73ba2905 Update other vendors. 2014-04-15 01:02:14 -07:00
John-David Dalton
d653b951e3 Update vendor/underscore and underscore tests. 2014-04-15 01:01:18 -07:00
John-David Dalton
900c0eafac Use matched instead of found in docs. [ci skip] 2014-04-15 00:56:58 -07:00
John-David Dalton
bf6eaaf625 Make _.where work with empty sources. 2014-04-14 23:11:11 -07:00
John-David Dalton
32f3d214cb Rebuild dist. 2014-04-14 21:39:55 -07:00
John-David Dalton
cd62b2a209 Add more tests for null thisArg arguments. 2014-04-14 21:35:10 -07:00
John-David Dalton
ff25b4cb46 Ensure resolver provided to _.memoize is a function if it's truthy. 2014-04-14 21:33:45 -07:00
John-David Dalton
5c07dd995e Use arrayEach for baseClone, baseMerge, and transform. 2014-04-14 19:53:30 -07:00
John-David Dalton
f54cc28a43 Move doc node from shimIsPlainObject to _.isPlainObject. [ci skip] 2014-04-14 09:01:42 -07:00
John-David Dalton
9b1c7bb1e3 More doc tweaks. [ci skip] 2014-04-13 23:06:17 -07:00
John-David Dalton
ffe8a729b7 Add doc note to _.isPlainObject for objects created by Object.create(null). [closes #526] [ci skip] 2014-04-13 19:03:56 -07:00
John-David Dalton
a47f356021 Cleanup tests. 2014-04-13 19:03:09 -07:00
John-David Dalton
7d7a34c733 Increase code coverage when testing AMD modules. 2014-04-13 16:12:08 -07:00
John-David Dalton
e306959ebe Ensure _.matches is tested against sources with more than one property too. 2014-04-13 00:36:40 -07:00
John-David Dalton
ce16c4d37f Update narwhal, rhino, and ringo source links in travis.yml. 2014-04-12 23:53:18 -07:00
John-David Dalton
565cc05b48 Avoid strict comparison to function reference in _.callback test. 2014-04-12 23:51:55 -07:00
John-David Dalton
287839e498 Add test for custom _.indexOf methods, _.contains, and objects. 2014-04-12 18:57:39 -07:00
John-David Dalton
4be0969098 Rebuild dist. 2014-04-12 17:35:18 -07:00
John-David Dalton
f1008b1abf Simplify _.contains. Thanks @phated. 2014-04-12 17:35:04 -07:00
John-David Dalton
8d8b3c2194 Inline partitionInitializer. 2014-04-12 17:15:17 -07:00
John-David Dalton
6631b57fc0 Case nit in test/saucelabs.js. 2014-04-12 16:51:31 -07:00
John-David Dalton
88b4bc3753 Add comment blocks and browserName helper to test/saucelabs.js. 2014-04-12 01:59:10 -07:00
John-David Dalton
23a4dde10f Update sauce-tunnel require call. 2014-04-12 01:33:00 -07:00
John-David Dalton
5a47eb8559 Rebuild dist. 2014-04-12 01:03:27 -07:00
John-David Dalton
81cd990052 Remove source initialization from matches. 2014-04-12 01:02:58 -07:00
John-David Dalton
dd9e7cf665 Update sauce-tunnel in travis.yml. 2014-04-12 00:57:24 -07:00
John-David Dalton
b2f50b5327 Add mutation notes to _.pull and _.remove. [ci skip] 2014-04-12 00:22:14 -07:00
John-David Dalton
b21fe4b2fc Fix semicolon/comma typo. 2014-04-12 00:00:11 -07:00
John-David Dalton
5f23a3143c Whitespace nits. 2014-04-11 23:48:56 -07:00
John-David Dalton
ef136c9d00 Doc nit for _.pairs. [ci skip] 2014-04-11 23:24:45 -07:00
John-David Dalton
c7e8b724c7 Add arrayEach, arrayEachRight and arrayMap helpers. 2014-04-11 23:24:09 -07:00
John-David Dalton
0243e7ba8b Add partitionInitializer helper. 2014-04-11 23:23:20 -07:00
John-David Dalton
b3f5375283 Ensure functions created by _.matches don't error when comparing falsey object values. [closes #523] 2014-04-10 03:05:08 -07:00
John-David Dalton
f90f683be5 Add doc note to _.isEqual about not supporting comparing DOM nodes or functions. [ci skip] 2014-04-10 01:20:23 -07:00
John-David Dalton
bd23666b45 Ensure _.contains works with a fromIndex for objects. 2014-04-10 00:54:27 -07:00
John-David Dalton
a620c2ec1a Add more falsey value tests. 2014-04-09 09:27:35 -07:00
John-David Dalton
a723612141 Add null and undefined values tests for thisArg. 2014-04-08 08:57:26 -07:00
John-David Dalton
2d7d4212c1 Minor comment nit. [ci skip] 2014-04-08 01:29:55 -07:00
John-David Dalton
52cca034cf Add more _.callback tests. 2014-04-08 01:21:21 -07:00
John-David Dalton
79ec1f5a02 Add JSON.stringify test. 2014-04-08 00:44:20 -07:00
John-David Dalton
68729a9696 Test format cleanup. 2014-04-08 00:43:38 -07:00
John-David Dalton
93383204b3 Rebuild dist. 2014-04-07 09:24:36 -07:00
John-David Dalton
78f17bd083 Add toJSON alias of valueOf. [closes #521] 2014-04-07 09:23:40 -07:00
John-David Dalton
ea87006150 Remove unneeded @type tag from the underscore build. [ci skip] 2014-04-07 00:33:45 -07:00
John-David Dalton
c0027c377b Avoid var conflicts in the support IIFE in minified builds. 2014-04-06 17:39:41 -07:00
John-David Dalton
77b84c1de0 Use ok when appropriate in test/test.js. 2014-04-06 16:16:39 -07:00
John-David Dalton
a14e2fedcf More doc tweaks. [ci skip] 2014-04-06 11:30:47 -07:00
John-David Dalton
0341399e54 Merge pull request #520 from d10/docs
Fix doc typos. [ci skip]
2014-04-06 11:19:05 -07:00
Benjamin Tan
1dcf3585fb Fix typos [ci skip] 2014-04-06 21:47:01 +08:00
John-David Dalton
dbb48cf086 Newline nit fixed by lodash-cli patch. [ci skip] 2014-04-05 23:12:42 -07:00
John-David Dalton
064c8adcf2 Add more _.endsWith and _.startsWith tests. 2014-04-05 00:36:32 -07:00
John-David Dalton
cff83e095a Make _.where return all elements when the props object is empty. 2014-04-05 00:35:43 -07:00
John-David Dalton
ff9aecca48 Add _.startsWith and _.endsWith tests. 2014-04-04 09:07:39 -07:00
John-David Dalton
53c529a12c Cleanup tests. 2014-04-04 09:07:11 -07:00
John-David Dalton
78454ba876 Add more -Infinity, NaN, and Infinity tests. 2014-04-04 00:37:12 -07:00
John-David Dalton
c3c1702d2b Change _.forEach to _.each in tests. 2014-04-04 00:27:43 -07:00
John-David Dalton
bffc777b58 Tweak support property comments and nonEnumArgs test. 2014-04-03 01:31:55 -07:00
John-David Dalton
fcec6a8fdf Replace equal with strictEqual and fix ok test typo. 2014-04-02 19:01:36 -07:00
John-David Dalton
a842f25f89 Rebuild dist. 2014-04-02 02:48:10 -07:00
John-David Dalton
9f2bea8ac1 Wrap support.nonEnumArgs assignment in a try-catch to avoid errors in Ringo, Rhino, and Narwhal. 2014-04-02 02:46:34 -07:00
John-David Dalton
7f9a2a2d34 Ensure _.initial and _.last work with NaN values for n. 2014-04-02 00:40:23 -07:00
John-David Dalton
3225f17f5a Comment and cleanup support properties. 2014-04-01 23:28:56 -07:00
John-David Dalton
2f8b1dff27 Add noglobals=true to some sauce test runs in travis.yml. 2014-04-01 23:28:56 -07:00
John-David Dalton
7884f972ea Remove unused index var and prevent leaking keyIndex var. 2014-04-01 23:28:56 -07:00
John-David Dalton
bfce264537 Cover nonEnumArgs in modern builds too. 2014-04-01 02:04:58 -07:00
John-David Dalton
dee5f4c96a Rebuild dist. 2014-03-31 23:56:37 -07:00
John-David Dalton
6bd83137fb Only check indexes for arrays in _.keysIn dense array support. 2014-03-31 20:57:38 -07:00
John-David Dalton
6c6c38679a Add _.keys and _.keysIn tests. 2014-03-31 20:57:38 -07:00
John-David Dalton
ca0c700afa More adjustments to coerced values. 2014-03-29 19:15:21 -07:00
John-David Dalton
cc2e434f3d Avoid unnecessarily coercing start to a number. 2014-03-29 19:15:21 -07:00
John-David Dalton
4d337f0bee Fix typo in _.once test. 2014-03-29 19:15:21 -07:00
John-David Dalton
539c10883b Add placeholder tests to for _.bindKey. 2014-03-29 19:15:21 -07:00
John-David Dalton
ae8796a570 Tweak var names in _.once tests. 2014-03-29 19:15:20 -07:00
John-David Dalton
141227d846 Add placeholder support to _.curry. 2014-03-29 02:14:27 -07:00
John-David Dalton
bb42b87f4e Make nativeMax style consistent. 2014-03-29 02:14:27 -07:00
John-David Dalton
866d9dacb6 Add isPreBuild flag and cleanup tests. 2014-03-29 02:14:27 -07:00
John-David Dalton
006e32077c Add _.support.nonEnumStrings and coerce key to a number in _.keysIn and shimKeys. 2014-03-28 02:06:40 -07:00
John-David Dalton
0aca1c6c7c Cleanup fromIndex coercions. 2014-03-28 00:24:17 -07:00
John-David Dalton
d906d56505 Add _.keys test for string objects. 2014-03-27 22:17:16 -07:00
John-David Dalton
3b9ebf358c Simplify _.camelCase and add tests. 2014-03-27 22:17:16 -07:00
John-David Dalton
1c643cda5b Remove unused vars. 2014-03-27 13:13:56 -07:00
John-David Dalton
e5697a8070 Ensure _.camelCase handles acronyms and numbers. 2014-03-27 09:22:17 -07:00
John-David Dalton
07f1a13cbf Remove Bitdeli badge. [ci skip] 2014-03-26 19:10:31 -07:00
John-David Dalton
4c88f3ad64 Remove tab as a character to escape in template strings. 2014-03-26 09:02:17 -07:00
John-David Dalton
c099d60393 Fix test title typos. [ci skip] 2014-03-26 02:49:11 -07:00
John-David Dalton
5e0d48b40f Tweak _.union tests. 2014-03-26 02:26:32 -07:00
John-David Dalton
c4f8e83d02 Cleanup test wording. 2014-03-26 02:26:06 -07:00
John-David Dalton
a768c1e6c0 Add _.intersection test for working with only secondary arguments. 2014-03-26 02:24:52 -07:00
John-David Dalton
540325dc20 Rebuild dist. 2014-03-26 02:07:08 -07:00
John-David Dalton
2e57f76c12 Fix perf regression in _.intersection. 2014-03-26 02:03:54 -07:00
John-David Dalton
e71fd6f8b4 Avoid formal param use in _.difference. 2014-03-26 02:03:54 -07:00
John-David Dalton
c721721fc5 Ensure sparse arrays are treated as dense by _.keys and _.keysIn and ensure support for string objects in _.keys and _.keysIn. 2014-03-25 09:26:20 -07:00
John-David Dalton
0ab5d6a7b8 Merge branch 'master' of github.com:lodash/lodash 2014-03-25 07:30:07 -07:00
John-David Dalton
66599e5770 Merge pull request #510 from d10/docs
More doc cleanup. [ci skip]
2014-03-25 07:27:12 -07:00
Benjamin Tan
d7c7463380 Improve docs [ci skip] 2014-03-25 22:13:15 +08:00
Benjamin Tan
491a4468dc Formalize all instances of meta data as metadata [ci skip] 2014-03-25 22:11:57 +08:00
John-David Dalton
c85150aaea Merge branch 'master' of github.com:lodash/lodash 2014-03-24 22:22:20 -07:00
John-David Dalton
c7ba6d2a82 Update link to curry post in readme. [ci skip] 2014-03-24 22:11:54 -07:00
John-David Dalton
ace64cf50f Merge pull request #509 from d10/chain
Simplify `_.chain`.
2014-03-24 21:57:14 -07:00
John-David Dalton
cd6d4f6f47 Merge pull request #508 from d10/docs
Docs improvements. [ci skip]
2014-03-24 21:48:17 -07:00
Benjamin Tan
1bdf74951a Simplify _.chain 2014-03-25 11:30:06 +08:00
Benjamin Tan
eda2b38f46 Update Underscore license year [ci skip] 2014-03-25 11:26:12 +08:00
Benjamin Tan
f14e85d6c4 Update docs [ci skip] 2014-03-25 11:25:10 +08:00
John-David Dalton
76f668dddd Add tests for _.map, _.invoke, _.shuffle, and _.sortBy for treating numbers as empty. 2014-03-24 09:14:28 -07:00
John-David Dalton
ce01d696a0 Add _.isEqual test for arguments objects and tweak phantom detection. 2014-03-23 16:31:35 -07:00
John-David Dalton
8179a3a349 Rebuild dist. 2014-03-23 15:00:02 -07:00
John-David Dalton
e5c397203e Fix baseIsEqual in Rhino, Ringo, Narwhal. 2014-03-23 14:59:46 -07:00
John-David Dalton
60aeba732d Adjust _.camelCase, _.kebabCase and _.snakeCase doc examples and tests. 2014-03-23 14:38:39 -07:00
John-David Dalton
de70ef1ef6 Remove a and b use from baseIsEqual. 2014-03-23 14:20:05 -07:00
John-David Dalton
1d02c288b3 Avoid a, b variable names and cleanup _.isEqual docs. 2014-03-22 23:18:54 -07:00
John-David Dalton
3776920807 Update vendor/jquery 2014-03-21 21:22:00 -07:00
John-David Dalton
7d54cde8eb Add chalk to test/saucelabs.js. 2014-03-21 01:01:37 -07:00
John-David Dalton
1bab2061bd Avoid ^ caret use in travis until they update npm. 2014-03-20 20:56:24 -07:00
John-David Dalton
34e30cba0d More cleanup in test/saucelabs.js. 2014-03-20 19:32:31 -07:00
John-David Dalton
ed600c9077 Comment nit. [ci skip] 2014-03-19 23:46:52 -07:00
John-David Dalton
30dc6d2b19 Rewrite test/saucelabs.js. 2014-03-19 19:31:45 -07:00
John-David Dalton
77c3b4636e Update supported Firefox version in readme. [ci skip] 2014-03-18 22:43:53 -07:00
John-David Dalton
25edcbaff9 Rebuild dist. [ci skip] 2014-03-18 22:43:19 -07:00
John-David Dalton
553b8fb2e0 Add Underscore _.now test to the excused list. 2014-03-17 07:51:21 -07:00
John-David Dalton
461b401e28 Remove unneeded parenthesis from .travis.yml. 2014-03-17 01:21:46 -07:00
John-David Dalton
d2a4611d1e Update vendor/backbone and vendor/requirejs. 2014-03-17 00:43:13 -07:00
John-David Dalton
65c3dbba2c Update .travis.yml dependencies. 2014-03-17 00:20:51 -07:00
John-David Dalton
7ef0b5b428 Remove legacy and mobile from .gitignore. [ci skip] 2014-03-16 23:41:03 -07:00
John-David Dalton
89589d7ef5 Add doc notes for deprecated arguments of _.first, _.initial, _.last, and _.rest. [ci skip] 2014-03-16 20:56:00 -07:00
John-David Dalton
70b782c7e7 Use the argument predicate instead of func for _.negate. 2014-03-16 18:20:42 -07:00
John-David Dalton
9732b0a636 Add more methods to the features section of the README. [ci skip] 2014-03-16 18:01:35 -07:00
John-David Dalton
00acaa56b9 Update tested Chrome version range in README. [ci skip] 2014-03-16 17:15:47 -07:00
John-David Dalton
1cea2be9c1 Rebuild dist. 2014-03-16 14:51:21 -07:00
John-David Dalton
94381bd899 Clarify _.isEmpty and add tests for array-like objects for _.isEmpty and _.size. 2014-03-16 14:48:02 -07:00
John-David Dalton
23d935d7ec Add maxSafeInteger to tests and rename LARGE_ARRAY_SIZE to largeArraySize. 2014-03-16 14:48:02 -07:00
John-David Dalton
69da13b261 Simplify _.find by having it use _.findIndex. 2014-03-16 14:48:02 -07:00
John-David Dalton
a6519e0ff7 Whitespace nit. [ci skip] 2014-03-16 14:48:02 -07:00
John-David Dalton
b701a36e21 Comment nits. [ci skip] 2014-03-16 11:08:17 -07:00
John-David Dalton
24a34088d8 Add baseFind to simplify _.find, _.findLast, _.findKey, _.findLastKey. 2014-03-16 11:07:20 -07:00
John-David Dalton
0eeb092aad Add large array test for _.intersection that tests large arrays combined with missing arguments. 2014-03-16 01:27:05 -07:00
John-David Dalton
7d4726d12e Cleanup large array tests. 2014-03-16 01:01:09 -07:00
John-David Dalton
e13bf164ea Rebuild dist. 2014-03-15 04:02:03 -07:00
John-David Dalton
07434b19ae Ensure find methods work with strings. 2014-03-15 04:00:14 -07:00
John-David Dalton
819fa88eb7 Ensure _.find and _.findLast pass "Collections" tests for the compat build. 2014-03-15 02:41:37 -07:00
John-David Dalton
95976814f5 Add array-like tests for "Collections" methods. 2014-03-15 02:40:55 -07:00
John-David Dalton
0a2dd2a330 Avoid returning assignDefaults if no object is provided to _.defaults. 2014-03-15 01:21:43 -07:00
John-David Dalton
65f125d998 Allow null or undefined elements in _.pluck, _.property, and _.invoke. 2014-03-15 01:21:43 -07:00
John-David Dalton
7a2f6ebfd5 Remove toLength. 2014-03-14 09:43:22 -07:00
John-David Dalton
5d89fa3f07 Rebuild dist. 2014-03-14 01:32:19 -07:00
John-David Dalton
4a66e28584 Tweak support.nonEnumArgs assignment. 2014-03-14 01:30:30 -07:00
John-David Dalton
85990bbeb3 Add toLength helper. 2014-03-14 01:25:57 -07:00
John-David Dalton
e0311e1530 Cleanup ticks in method docs. [ci skip] 2014-03-14 01:12:34 -07:00
John-David Dalton
6eb4dbf9cd Add slow path note to _.times with thisArg benchmark. [ci skip] 2014-03-14 00:48:33 -07:00
John-David Dalton
a90453461e Adjust fromIndex and length coercions. 2014-03-13 09:28:38 -07:00
John-David Dalton
7e04c9a909 Fix the Underscore build of _.random. 2014-03-13 01:27:22 -07:00
John-David Dalton
e51602ccfa Update vendor/qunit-extras. 2014-03-13 00:33:33 -07:00
John-David Dalton
ca7adb59db Rebuild dist. 2014-03-13 00:18:13 -07:00
John-David Dalton
3a12802a4b Use shorthand for package.json "repository" field. [ci skip] 2014-03-13 00:10:11 -07:00
John-David Dalton
c770eab3e3 Move _.range to the Utilities category. 2014-03-13 00:03:45 -07:00
John-David Dalton
079b8e7337 Reduce _.find, _.findLast, and _.defaults. 2014-03-12 23:50:55 -07:00
John-David Dalton
2e4593eee7 Update vendors benchmark.js and qunit-extras. 2014-03-12 09:27:51 -07:00
John-David Dalton
3ca80a7bf3 Ensure _.slice coerces start and end arguments appropriately. 2014-03-12 09:11:29 -07:00
John-David Dalton
a4c15e5fa5 Add doc examples for isXyz methods. [ci skip] 2014-03-12 00:37:39 -07:00
John-David Dalton
a40748e3aa Add _.range tests for NaN values for start and end arguments. 2014-03-12 00:30:01 -07:00
John-David Dalton
029aac8059 Cleanup type coercions. 2014-03-12 00:29:31 -07:00
John-David Dalton
2970f66218 Add chars test for pad methods. 2014-03-11 01:04:42 -07:00
John-David Dalton
ef238de7a7 Rebuild dist. 2014-03-11 00:57:48 -07:00
John-David Dalton
af05313dc5 Add unit tests for _.camelCase, _.kebabCase, and _.snakeCase. 2014-03-10 23:57:32 -07:00
John-David Dalton
df0d1b57a0 Fix _.camelCase with consecutive capitalized words. 2014-03-10 23:57:24 -07:00
John-David Dalton
23cff25ed5 Make the code style in test.js consistent. 2014-03-10 23:55:28 -07:00
John-David Dalton
c70b13a650 Clamp indexes and lengths where appropriate. 2014-03-10 21:59:09 -07:00
John-David Dalton
a51c6a7670 Fix minified compat/modern builds. 2014-03-10 09:34:13 -07:00
John-David Dalton
0bdb643e14 Close _.difference test coverage gap. 2014-03-10 01:14:11 -07:00
John-David Dalton
0cbbbf1287 Tweak wording on tests for options objects. [ci skip] 2014-03-10 01:13:34 -07:00
John-David Dalton
9a00b62d28 Add _.pad, _.padLeft, _.padRight, _.repeat, and _.truncate tests. 2014-03-10 01:12:27 -07:00
John-David Dalton
05dce760d6 Ensure _.truncate doesn't truncate strings if they are equal to the given length. 2014-03-10 01:11:08 -07:00
John-David Dalton
4eaf91c3dc Optimize _.without in IE. 2014-03-09 20:58:46 -07:00
John-David Dalton
818c3d6140 Add the development underscore build to the test-ui dropdown list. 2014-03-09 20:28:04 -07:00
John-David Dalton
5e19cd0084 Remove legacy/mobile tests. 2014-03-09 20:23:59 -07:00
John-David Dalton
7b06257955 Remove legacy and mobile builds from travis.yml tests. 2014-03-09 18:23:00 -07:00
John-David Dalton
2af21c8003 Remove duplicate isArguments method and movenegate to the "Functions" category. 2014-03-09 12:56:17 -07:00
John-David Dalton
db6f907946 Correct underscore builds. 2014-03-09 12:25:33 -07:00
John-David Dalton
125ed8bff2 Add object values to secondary arguments tests for _.difference, _.intersection, _.union, and _.xor. 2014-03-09 12:25:19 -07:00
John-David Dalton
1d0f2e9d31 Rebuild dist. 2014-03-08 19:59:39 -08:00
John-David Dalton
43efc930f4 Use args in _.merge where possible. 2014-03-08 19:51:17 -08:00
John-David Dalton
737e18d2de Ensure _.intersection handles non-array secondary values correctly. 2014-03-08 16:36:05 -08:00
John-David Dalton
445445603f Remove _.isObject dep from _.merge and ensure _.assign and _.defaults don't error when object is null or undefined and source objects are provided. 2014-03-08 13:16:47 -08:00
John-David Dalton
5957c94958 Use _.constant where possible to cleanup tests. 2014-03-08 12:59:11 -08:00
John-David Dalton
1c41661712 Add npm package.json scripts entry to echo testing instructions. [ci skip] 2014-03-08 01:08:45 -08:00
John-David Dalton
1b2909605e Further reduce browser ranges to test in readme. [ci skip] 2014-03-07 23:50:21 -08:00
John-David Dalton
c6a13f970f Remove iteratorTemplate and compiled methods. 2014-03-07 23:28:55 -08:00
John-David Dalton
f2f57dc5a5 Deopt _.invoke. 2014-03-06 00:45:01 -08:00
John-David Dalton
c6de1ab56c Add _.negate, _.keysIn and _.valuesIn. 2014-03-06 00:42:51 -08:00
John-David Dalton
0392e37eed Lots of doc tweaks. [ci skip] 2014-03-06 00:22:21 -08:00
John-David Dalton
f630c4ec6c Reduce browser ranges to test in readme. [ci skip] 2014-03-05 08:35:00 -08:00
John-David Dalton
e668642b23 Fix newly added string methods/docs. 2014-03-05 01:23:20 -08:00
John-David Dalton
c4c0c050af Make_.dropRight, _.dropRightWhile, _.takeRight, and _.takeRightWhile their own methods. 2014-03-04 09:40:48 -08:00
John-David Dalton
b4ff8360ba Add more string methods to the features note in readme. [ci skip] 2014-03-04 01:21:54 -08:00
John-David Dalton
708a2ec703 Minor whitespace nits. [ci skip] 2014-03-04 01:17:20 -08:00
John-David Dalton
407cb2f7e6 Rebuild dist. 2014-03-04 01:03:23 -08:00
John-David Dalton
0b22e76b85 Separate out _.drop, _.dropWhile, _.take, and _.takeWhile and modify docs to use "predicate" where appropriate. 2014-03-04 01:03:23 -08:00
John-David Dalton
7671187160 Change truey to truthy in docs. [ci skip] 2014-03-04 01:03:00 -08:00
John-David Dalton
5695e0e6b6 Escape a few more characters for in _.escapeRegExp for better narwhal/ringo/rhino support. 2014-03-03 09:18:49 -08:00
John-David Dalton
e22b2f00dc Rebuild dist files. [ci skip] 2014-03-03 01:49:30 -08:00
John-David Dalton
2a017c3a7c Add support for _.camelCase, _.endsWith, _.escapeRegExp, _.kebabCase, _.pad, _.padLeft, _.padRight, _.repeat, _.snakeCase, _.startsWith, and _.truncate. [closes #425] 2014-03-02 23:48:48 -08:00
John-David Dalton
ce65c3113a Simplify component.json. 2014-03-02 13:47:07 -08:00
John-David Dalton
65a2ebb8ad Don't send test coverage results to coveralls for pull requests. 2014-03-01 00:46:44 -08:00
John-David Dalton
f0a542b154 Add to lodash chaining doc note. [ci skip] 2014-02-28 19:45:54 -08:00
John-David Dalton
dfe1c940bc Add partial application in _.bind to _.curry partial combo test. 2014-02-27 00:18:50 -08:00
John-David Dalton
3cd8708368 Build docs & dist including whitespace adjustments. 2014-02-26 00:30:27 -08:00
John-David Dalton
e677161e49 Remove more code from the Underscore build. 2014-02-25 08:44:33 -08:00
John-David Dalton
818c6711d8 Cleanup _.first, _.initial, _.last, and _.rest. 2014-02-24 22:40:26 -08:00
John-David Dalton
f60cc76f3e Reduce the Underscore build. 2014-02-24 22:39:56 -08:00
John-David Dalton
685321fdc5 Rebuild docs and dist. 2014-02-24 08:55:49 -08:00
John-David Dalton
303215d42f Add common case paths to _.difference and _.uniq. 2014-02-24 08:52:11 -08:00
John-David Dalton
f313752888 Update large array benchmarks in perf.js. [ci skip] 2014-02-23 21:59:16 -08:00
John-David Dalton
28b83a486e Add placeholder support tests for _.bind. 2014-02-22 20:59:02 -08:00
John-David Dalton
80289bd452 Update the tested node version in readme. [ci ckip] 2014-02-22 19:20:31 -08:00
John-David Dalton
054be39feb Add a test for _.uniq with isSorted. 2014-02-22 19:20:14 -08:00
John-David Dalton
6448e049d1 Tweak ticks around "callback" in test titles. [ci skip] 2014-02-22 19:16:00 -08:00
John-David Dalton
8e1f7c8d6f Rebuild docs and dist. 2014-02-22 18:12:34 -08:00
John-David Dalton
c4e31e7a58 Minor comment nits for -0 and +0. [ci skip] 2014-02-22 18:04:26 -08:00
John-David Dalton
0860d9712e Add test to ensure _.flatten returns empty arrays for non array-like objects. 2014-02-22 17:19:20 -08:00
John-David Dalton
1a17cbd26b Cleanup the callback assignment in _.clone and _.cloneDeep. 2014-02-22 17:11:22 -08:00
John-David Dalton
c2b1d3b551 Add falsey value optimizations for baseDifference, baseFlatten, baseUniq, _.flatten, and _.uniq. 2014-02-22 17:10:34 -08:00
John-David Dalton
d4fac798fc Optimize _.isEqual for primitives. 2014-02-22 17:08:28 -08:00
John-David Dalton
b009b23245 Merge pull request #486 from rexxars/indexby-thisarg-docfix
Fixed `_.indexBy` `thisArg` example in documentation. [ci skip]
2014-02-22 10:03:19 -08:00
Espen Hovlandsdal
f276f1e2f5 Fixed _.indexBy() thisArg example in documentation 2014-02-22 11:43:21 +01:00
John-David Dalton
154e57748f Cleanup low and high assignment in _.sortedIndex. [ci skip] 2014-02-21 23:42:40 -08:00
John-David Dalton
6854fee73e Remove array and object pools. 2014-02-21 22:26:17 -08:00
John-David Dalton
24240bfba4 Simplify baseUniq. 2014-02-21 18:01:49 -08:00
John-David Dalton
40e32daabe Fix _.template doc typo. [closes #484] [ci skip] 2014-02-21 08:32:15 -08:00
John-David Dalton
008cbc8972 Add the version of Underscore our underscore build aligns to in readme. [ci skip] 2014-02-20 22:46:42 -08:00
John-David Dalton
8a1d2b614a Templates should not reference _.escape if "escape" delimiters are not used. [closes #484] 2014-02-20 22:31:42 -08:00
John-David Dalton
b79d03d9a4 Reorganize _.template tests. 2014-02-20 22:08:29 -08:00
John-David Dalton
83fb9f84ed Rebuild docs & dist. 2014-02-18 23:10:31 -08:00
John-David Dalton
c634830b9f Reduce passing arguments to helper functions by converting them to arrays. 2014-02-18 22:49:37 -08:00
John-David Dalton
24edd68833 Fix compseArgs and composeArgsRight and cleanup and correct partial placeholder tests. 2014-02-16 16:06:16 -08:00
John-David Dalton
6913798250 Fix doc typos in _.template. [ci skip] 2014-02-16 01:06:27 -08:00
John-David Dalton
131bd2c2cd Cleanup tests. 2014-02-15 22:03:33 -08:00
John-David Dalton
55ae55c803 Add more details to the _.template docs. [ci skip] [closes #472] 2014-02-15 19:28:19 -08:00
John-David Dalton
63f0eea70c Fix AMD test fails for Underscore builds. [ci skip] 2014-02-15 18:29:01 -08:00
John-David Dalton
38aeef0760 Update Backbone tests. 2014-02-15 15:22:41 -08:00
John-David Dalton
88d5f5d76c Update Backbone tests to 1.1.1. 2014-02-15 14:32:56 -08:00
John-David Dalton
486ba5fe0a Avoid packages config for monolithic modules in tests. 2014-02-15 14:22:09 -08:00
John-David Dalton
76f85389ae Update underscore builds. 2014-02-15 13:39:28 -08:00
John-David Dalton
3d311496e0 Remove placeholder support from non-underscore builds. 2014-02-15 13:39:03 -08:00
John-David Dalton
fdbfe0f84b Update vendor/curl. 2014-02-15 01:17:11 -08:00
John-David Dalton
8a25592904 Update test files to work with underscore builds defined as named amd modules. 2014-02-15 01:17:00 -08:00
John-David Dalton
7edf024c71 Fix test fails in Rhino. 2014-02-14 01:36:25 -08:00
John-David Dalton
ee4d9890e7 Add placeholder support to _.bind, _.partial, and _.partialRight. 2014-02-14 01:36:15 -08:00
John-David Dalton
9cc06a94ec Add a module id of "underscore" to the Underscore build. 2014-02-14 00:06:08 -08:00
John-David Dalton
dd6dc1d334 Test cleanup. 2014-02-13 22:29:25 -08:00
John-David Dalton
fb2bafb49e Ensure _.throttle & _.debounce work if the system time is set backwards. 2014-02-13 22:26:26 -08:00
Benjamin Tan
bc3b8e73fe Fix minor typo [ci skip] 2014-02-13 00:16:53 -08:00
John-David Dalton
4d48441102 Tweak features bullets in readme. [ci skip] 2014-02-12 19:51:14 -08:00
John-David Dalton
c0fa980f70 Add new feature notes to its section in readme. [ci skip] 2014-02-12 09:15:58 -08:00
John-David Dalton
bb3bac9933 Remove extra var from createWrapper. 2014-02-11 23:52:34 -08:00
John-David Dalton
1ac5fa544b Update qunit-extras to respect QUnit.config.hidepassed. 2014-02-11 23:35:29 -08:00
John-David Dalton
91bb4d4b00 Remove node 0.6 fix from travis.yml as travis-ci now does it for us. 2014-02-11 21:20:04 -08:00
John-David Dalton
aecdd0fdd5 Add _.matches test and cleanup _.property and _.constant tests. 2014-02-11 21:07:28 -08:00
John-David Dalton
2e5f3cd25c Cleanup docs in _.matches and _.where. [ci skip] 2014-02-11 21:06:58 -08:00
John-David Dalton
8558c55284 Add v8 issue note to parseInt and make other v8 issue use the same protocol. [ci skip] 2014-02-11 19:00:01 -08:00
John-David Dalton
b16b49aea4 Fix copyright header in lodash.compat.js and lodash.min.js files. [ci skip] 2014-02-11 18:23:06 -08:00
John-David Dalton
09678eeef4 Update Underscore version in doc header. [ci skip] 2014-02-11 17:53:17 -08:00
John-David Dalton
fad43842a4 Rebuild docs and dist. 2014-02-11 00:39:05 -08:00
John-David Dalton
4b448a877c Update vendor/underscore to v1.6.0. 2014-02-11 00:38:32 -08:00
John-David Dalton
f090af2292 Rename _.match to _.matches. 2014-02-11 00:35:05 -08:00
John-David Dalton
7faaac94dd Update vendor/bechmark.js. [ci skip] 2014-02-11 00:35:05 -08:00
John-David Dalton
dae0b25717 Revert allowing _.omit and _.pick to work as a callback for _.map when combined with _.partialRight to be solved with _.partial placeholders in v3. 2014-02-10 00:32:10 -08:00
John-David Dalton
de3d9dca72 Minor doc tweaks to _.partition and _.zip. [ci skip] 2014-02-09 00:32:58 -08:00
John-David Dalton
a91abb3e8d Add _.partition. 2014-02-08 23:27:04 -08:00
John-David Dalton
dabea8b972 Update vendors. 2014-02-08 19:00:37 -08:00
John-David Dalton
dedffb3560 Reduce code in doc code examples. [ci skip] 2014-02-08 18:51:08 -08:00
John-David Dalton
5eb2306e9a Remove sauce labs hook, global_test_results, to add it to QUnit Extras. 2014-02-07 21:26:28 -08:00
John-David Dalton
8a2e06a713 Simplify _.every and _.some. 2014-02-06 09:06:35 -08:00
John-David Dalton
23b495aee8 Fix _.every test in perf/perf.js. 2014-02-06 09:05:41 -08:00
John-David Dalton
b9d314e64c Rebuild dist/docs. 2014-02-05 22:21:47 -08:00
John-David Dalton
5a4826e660 Optimize _.callback. 2014-02-05 22:05:03 -08:00
John-David Dalton
20bf67d352 Cleanup _.result. 2014-02-05 21:31:56 -08:00
John-David Dalton
8b4f1e1383 Fix basename in perf/perf.js. [ci skip] 2014-02-05 09:03:31 -08:00
John-David Dalton
20297e359d Rebuild docs/dists and update tested browsers in readme. 2014-02-05 00:05:05 -08:00
John-David Dalton
de7409fd07 Ensure functions can be used as default values for _.result. 2014-02-04 23:50:37 -08:00
John-David Dalton
8498f12a9d Avoid setting arity/processing args if func is not passed to methods like _.bind. 2014-02-04 23:02:32 -08:00
John-David Dalton
e949eb8623 Minor nit, add default greeting to bind benchmark. [ci skip] 2014-02-04 22:59:05 -08:00
John-David Dalton
201d17bc31 Allow _.omit and _.pick to work as a callback for _.map when combined with _.partialRight. 2014-02-04 00:57:26 -08:00
John-David Dalton
143e9bd210 Reduce code samples for _.assign and _.defaults. [ci skip] 2014-02-03 21:32:41 -08:00
John-David Dalton
9ec874d8a6 Add _.isEqual test for being used as a callback for _.every. 2014-02-03 21:32:02 -08:00
John-David Dalton
2543afebf1 Optimize _.invoke for arrays. 2014-02-02 19:45:39 -08:00
John-David Dalton
81a859604c Update vendors and the tested Node version in the readme. [ci skip] 2014-02-02 17:54:27 -08:00
John-David Dalton
d3be4bba37 Add _.isEqual test to ensure regexes are compared regardless of flag order. 2014-02-02 00:01:27 -08:00
John-David Dalton
6779c9eb36 Reduce the complexity of a minor Underscore build optimization. 2014-01-31 09:12:50 -08:00
John-David Dalton
733da570c8 Revert the backtick escape/unescape patch but keep the docs. 2014-01-31 02:05:43 -08:00
John-David Dalton
65258d5b6a Add doc note about escaping backticks. [ci skip] 2014-01-31 01:52:38 -08:00
John-David Dalton
618c8bb5ad Add ` as a character to escape/unescape and a doc note on unquoted html attribute values. 2014-01-30 09:38:01 -08:00
John-David Dalton
ba8684dfc7 Rebuild /dist files. 2014-01-30 08:46:51 -08:00
John-David Dalton
36a1bd9e0f Move browser field in package.json. [ci skip] 2014-01-30 08:46:34 -08:00
John-David Dalton
fe56c1c6f2 Make default BUILD="compat" in travis.yml. [ci skip] 2014-01-30 08:43:35 -08:00
John-David Dalton
86a37e6f8d Minor whitespace nits. [ci skip] 2014-01-30 01:37:17 -08:00
John-David Dalton
da1aad7b92 Add baseEachRight and baseForOwnRight. 2014-01-30 01:36:30 -08:00
John-David Dalton
876621f8af Merge pull request #466 from aearly/patch-1
Add "browser" field in package.json for Browserify. [ci kip]
2014-01-29 13:50:46 -08:00
Alexander Early
8a908b720f Add "browser" field for Browserify
Browserify and other CJS builders will look for a "browser" field to use as an alternate "main" when targeting the browser environment.

https://github.com/substack/node-browserify#packagejson

Pointing it to the compat build would prevent issues like #288 happening out of the box, without any extra configuration.
2014-01-29 13:33:50 -08:00
John-David Dalton
dadde52c40 More perf.js cleanup and add _.compose benchmarks. [ci skip] 2014-01-29 09:33:46 -08:00
John-David Dalton
369dd98cbe Avoid installing coveralls in travis runs when not needed. 2014-01-29 08:57:14 -08:00
John-David Dalton
8cdd6cd131 Fix test/test.js in lodash-node and carry fixes over to perf/perf.js. 2014-01-29 08:57:14 -08:00
John-David Dalton
973bc21f37 Add note to contributing.md to not worry about regenerating docs or dist files. [ci skip] 2014-01-29 08:56:55 -08:00
John-David Dalton
2ba327345d Fix underscore build modifications to match. 2014-01-29 01:44:09 -08:00
John-David Dalton
138ecc4ee1 Simplify resolving filePath in perf/perf.js. [ci skip] 2014-01-29 00:29:57 -08:00
John-David Dalton
5b9a8e9bf9 Fix tests for lodash-amd. 2014-01-29 00:29:50 -08:00
John-David Dalton
e520486892 Rebuild dist/ and docs. 2014-01-28 23:41:44 -08:00
John-David Dalton
ecb91613e8 Minor whitespace nits in _.compose and _.pull. [ci skip] 2014-01-28 23:38:29 -08:00
John-David Dalton
d4ac76081e Correct _.compose unit test. 2014-01-28 23:38:29 -08:00
John-David Dalton
63727b67ee Cleanup _.compose. 2014-01-28 22:14:10 -08:00
John-David Dalton
d969dcecbf Set LARGE_ARRAY_SIZE to 40. 2014-01-28 22:05:50 -08:00
John-David Dalton
49c9a202e0 Cleanup perf tests and adjust for LARGE_ARRAY_SIZE of 40. 2014-01-28 22:05:50 -08:00
Stephen Solka
512c8de526 Use .apply for initial function call in _.compose then use .call in loop. [closes #463, #464] 2014-01-28 22:05:19 -08:00
John-David Dalton
012a929067 Add _.cloneDeep doc note to _.clone too. [ci skip] 2014-01-27 21:59:26 -08:00
John-David Dalton
bec4e8d8e4 Fix lodash-node unit tests. 2014-01-27 21:50:50 -08:00
John-David Dalton
9f0993f29b Fix setting the selectedIndex of dropdown lists in test-ui.js and perf-ui.js. 2014-01-27 21:49:38 -08:00
John-David Dalton
1b79448ac2 Add _.zipObject test for extra values. 2014-01-27 20:00:47 -08:00
John-David Dalton
6cef7d5060 Ensure _.where handles properties with undefined properties. [closes #461] 2014-01-27 17:53:10 -08:00
John-David Dalton
752545ec0e Minor doc nit for _.runInContext. [ci skip] 2014-01-26 14:44:11 -08:00
John-David Dalton
adbebf7ecc Avoid detecting the global function in Java based environments like Rhino as the freeGlobal. 2014-01-26 13:37:31 -08:00
John-David Dalton
4d57ac0ce1 Avoid detecting the global function in Java based environments like Rhino as the freeGlobal. 2014-01-26 13:27:39 -08:00
John-David Dalton
24b77d9dcb Minor code format nit in test.js. [ci skip] 2014-01-26 13:27:01 -08:00
John-David Dalton
cc0f431c35 Minor comment nit for consistency across projects. [ci ckip] 2014-01-25 22:48:12 -08:00
John-David Dalton
1e7927fbff Consistent use of getConfig in test/index.html and test/underscore.html. 2014-01-25 19:52:49 -08:00
John-David Dalton
129e56e570 Avoid accessing body.completed if body isn't truey in saucelabs.js. 2014-01-25 18:12:00 -08:00
John-David Dalton
5beef690ad Fix loading baseEach for commonjs modularize tests. 2014-01-25 18:11:25 -08:00
John-David Dalton
b0383b0978 Update freeGlobal assignment in lodash builds, benchmark.js, and qunit-extras to work in node-webkit. [closes #419] 2014-01-25 17:02:27 -08:00
John-David Dalton
16c6a11b77 Replace _.createCallback reference in readme with _.callback. [ci skip] 2014-01-25 11:00:30 -08:00
John-David Dalton
9117b13576 Rebuild dist & docs. [ci skip] 2014-01-25 11:00:18 -08:00
John-David Dalton
af55978918 Minor test cleanup. [ci skip] 2014-01-25 10:25:50 -08:00
John-David Dalton
0446a1b3a8 Tweak documented arg name key for _.pluck. [ci skip] 2014-01-25 02:52:14 -08:00
John-David Dalton
3986dd4c32 Add baseEach tests. 2014-01-25 02:48:41 -08:00
John-David Dalton
79afa16a7f Fix test fails in older Safari and cleanup setProperty in test.js. 2014-01-24 23:16:07 -08:00
John-David Dalton
087ed0aa6a Update vendor/qunit-extras and simplify its load/install. 2014-01-24 09:42:45 -08:00
John-David Dalton
44fa3d2d07 Fix typo in throttle test. 2014-01-24 00:52:38 -08:00
John-David Dalton
8654d83a33 Drop 'use strict' in the unit tests and make its IIFE more closely resemble lodash's. 2014-01-23 23:19:13 -08:00
John-David Dalton
efb78c823c Add _.memoize test and normalize on using properties of a and b instead of x and y. 2014-01-23 23:00:49 -08:00
John-David Dalton
3bb7f0c291 Fix regression in test-ui.js. [ci skip] 2014-01-23 09:17:53 -08:00
John-David Dalton
62e0db7c9b Fix Function.prototype.toString mock in test/ to avoid errors in Firefox. 2014-01-23 00:30:59 -08:00
John-David Dalton
130695fcb3 Remove trailing slash in locationPath of test/underscore.html. 2014-01-23 00:30:24 -08:00
John-David Dalton
05fa301ecb Add freeGlobal.self checks to benchmark.js and quinit-extras to support browserified code running in a web worker. 2014-01-22 23:48:29 -08:00
Michael "Z" Goddard
ee90f730b5 Add freeGlobal.self check to support browserified code running in a web worker.
`self` is the global context name in web workers. So
`freeGlobal.self === freeGlobal` is `true` in that environment when
lodash is packaged in a library/site for use in web workers.
2014-01-22 23:38:36 -08:00
John-David Dalton
7b8a23453f Cleanup lodashBizarro code to get coverage up in AMD modules. 2014-01-22 23:09:42 -08:00
John-David Dalton
cb44479420 Add freeGlobal.self check to test/asset/set.js. 2014-01-22 23:07:50 -08:00
John-David Dalton
afb3806326 Cleanup the perf and test ui files. 2014-01-22 23:04:10 -08:00
John-David Dalton
d96bfd21b7 Comment nit in the underscore build. [ci skip] 2014-01-22 11:40:43 -08:00
John-David Dalton
bbc3100bb3 Add _.callback as an alias of _.createCallback. 2014-01-22 08:54:25 -08:00
John-David Dalton
ac1bb2a6bd Rebuild docs and updated tested Chrome version in readme. [ci skip] 2014-01-22 00:27:50 -08:00
John-David Dalton
41ef391d15 Avoid leaking a data var in compat/legacy builds and remove dead code from the underscore build. 2014-01-22 00:26:45 -08:00
John-David Dalton
e51aa5899a Dumb _.curry down for consistent feature support for old environments. 2014-01-21 22:25:08 -08:00
John-David Dalton
38bb975abd Allow legacy build tests to pass. 2014-01-21 20:49:44 -08:00
John-David Dalton
a249b315ca Make breakIndicator use expando in underscore builds. 2014-01-21 19:59:59 -08:00
John-David Dalton
eba85e1ec3 Update vendor/qunit-extras. [ci skip] 2014-01-21 19:59:31 -08:00
John-David Dalton
c1c92256ea Track arity of functions created by _.bind, _.bindKey, _.bindAll, _.partial, _.partialRight, _.curry, and _.wrap. 2014-01-21 19:59:13 -08:00
John-David Dalton
58ce97c0b4 Ensure _.flatten works with _.map in underscore builds. 2014-01-20 11:33:31 -08:00
John-David Dalton
ca58bab1f0 Cleanup assign/defaults/merge unit test. [ci skip] 2014-01-20 09:31:55 -08:00
John-David Dalton
052c484abd Update .travis.yml dep versions and make coveralls reporting optional so we don't fail when their service is down. 2014-01-20 08:46:53 -08:00
John-David Dalton
7a213c9d6f Fix test typo in test/index.html. 2014-01-20 00:39:40 -08:00
John-David Dalton
f4de7422b3 Fix large array optimization in baseDifference. 2014-01-20 00:39:20 -08:00
John-David Dalton
a3d18d0429 Add coverage for Set for environments w/o native support. 2014-01-19 23:52:27 -08:00
John-David Dalton
77fbffdc4b Use baseEach in underscore build of _.sortBy. 2014-01-19 13:41:15 -08:00
John-David Dalton
63ea01104b Conditionally define createCache base on feature inference. 2014-01-19 13:27:23 -08:00
John-David Dalton
cad0f1f396 Ensure we use an underscore build of _.result. 2014-01-19 12:28:25 -08:00
John-David Dalton
677fb93494 Use baseEach, baseForOwn and baseForIn to reduce dependencies on baseCreateCallback. 2014-01-19 12:10:09 -08:00
John-David Dalton
55cbb12701 Use ES6 Set to optimize for large arrays in _.uniq, _.difference, & _.intersection. 2014-01-18 22:51:43 -08:00
John-David Dalton
14099813f0 Fix typo in travis.yml. 2014-01-17 20:11:25 -08:00
John-David Dalton
b1fd4e853c Rebuild dist files. 2014-01-17 09:27:27 -08:00
John-David Dalton
c1d3fc1b78 Cleanup _.result default value patch. [closes #455] 2014-01-17 09:27:11 -08:00
John-David Dalton
829980a941 Ensure sauce tests run against builds created by travis-ci. 2014-01-16 23:45:06 -08:00
John-David Dalton
d1e1a90d08 Merge pull request #454 from pistacchio/master
Added default value to `_.result`.
2014-01-16 21:16:12 -08:00
John-David Dalton
d56de091f6 Missed a BIND_FLAG use in baseCreateCallback. 2014-01-16 20:18:21 -08:00
John-David Dalton
87bb926fef Make the coverage run in .travis.yml use the generated modern build. 2014-01-16 19:54:33 -08:00
pistacchio
e983f93859 Added default value to _.result 2014-01-16 18:54:20 +01:00
John-David Dalton
c721acc2fa Make each build in travis.yml so users don't have to include them in pull requests for tests to pass. 2014-01-16 08:37:57 -08:00
John-David Dalton
16fd4c83ac Indicate slow path in lodash wrapper perf test. [ci skip] [closes #452] 2014-01-16 07:34:04 -08:00
John-David Dalton
999dfb84ee Use vars to store bitmask flags to improve readability. 2014-01-15 23:52:56 -08:00
John-David Dalton
c6557e5078 Add more _.indexOf tests. 2014-01-14 22:11:10 -08:00
Johann Steinbrecher
f7aab02978 Fixing indexOf([], undefined, true) to return -1 insead 0 2014-01-14 12:55:06 -08:00
John-David Dalton
fdcd67dd6b Make stable multi prop sort unit test more complex. 2014-01-13 19:39:02 -08:00
John-David Dalton
6c611d71dd Qualify coverage claim in readme. [ci skip] 2014-01-13 09:02:49 -08:00
John-David Dalton
b7e2396269 Increase test coverage of trim methods and _.sortBy. 2014-01-13 08:59:41 -08:00
John-David Dalton
ab62875ab1 Use a more preferred command to enable npm on Node 0.6 in travis.yml. 2014-01-12 22:02:11 -08:00
John-David Dalton
a499fdbb13 Reduce objectTypes and indexTypes deps. 2014-01-12 13:31:37 -08:00
John-David Dalton
bf2f0c38ed Update _.template docs to mark data as optional. [ci skip] 2014-01-11 23:57:17 -08:00
John-David Dalton
b14c05ccae Fix the underscore build of _.memoize. 2014-01-11 23:54:55 -08:00
John-David Dalton
66e7cd41b7 Rebuild dist/lodash.underscore.js with breakIndicator and reverted _.invert. 2014-01-11 21:53:12 -08:00
John-David Dalton
e9a15d9189 Remove keyPrefix for using a simple _ prefix. 2014-01-11 21:50:36 -08:00
John-David Dalton
e4aee13e9e Merge branch 'master' of github.com:lodash/lodash 2014-01-10 22:22:45 -08:00
John-David Dalton
551f9fcdf9 Make checks for _.map and _.reduce use consistent with indexTypes. 2014-01-09 23:27:32 -08:00
John-David Dalton
2ec5e948b4 Make _.isEqual work with plain objects containing constructor properties with like object values and make _.invert assign arrays when using the multiValue flag. [closes #420] 2014-01-09 20:13:37 -08:00
John-David Dalton
60b7f504e6 Make the guard checks in _.assign and _.defaults more thorough. 2014-01-09 08:43:52 -08:00
John-David Dalton
f99668f551 Add doc note to _.bind, _.bindAll, _.partial, _.partialRight, and _.curry about not setting the resulting functions .length. [closes #444] 2014-01-09 08:41:21 -08:00
John-David Dalton
8ade41b270 Update vendors. 2014-01-09 08:10:51 -08:00
John-David Dalton
a36a5363b4 Avoid using a unique key for keyPrefix as it causes issues when lodash is modularized into individual npm packages. [closes #446] 2014-01-09 01:31:28 -08:00
John-David Dalton
cb22fb54e8 Allow _.trim, _.trimLeft, and _.trimRight to remove specified chars. 2014-01-08 23:39:52 -08:00
John-David Dalton
1dcfdfdb65 Remove test until v3.0 when we'll enforce uniform skipping of the constructor property of prototype objects. 2014-01-07 08:30:55 -08:00
John-David Dalton
d309eb8fa1 Expose _.slice. 2014-01-06 22:26:50 -08:00
John-David Dalton
16dfdbe314 Ensure shimIsPlainObject returns true for plain objects with a constructor property that has a function value. 2014-01-05 13:49:18 -06:00
John-David Dalton
b926ed7b00 Rebuild diet and docs. 2014-01-04 23:10:22 -06:00
John-David Dalton
67a6b88104 Add tests for _.capitalize. 2014-01-04 21:51:23 -06:00
John-David Dalton
631699bf80 Doc cleanup. [ci skip] 2014-01-04 21:32:01 -06:00
John-David Dalton
80801bf7d0 Add _.capitalize. 2014-01-04 20:16:19 -06:00
John-David Dalton
4850a033fa Avoid ternary operations that aren't part of an assignment. 2014-01-03 11:50:29 -06:00
John-David Dalton
0b4029f7a1 Fix lodashBizarro tests for trim, trimLeft, and trimRight. 2014-01-03 11:05:09 -06:00
John-David Dalton
c07ef0d92a Add doc note for options.init to createIterator. [ci skip] 2014-01-03 00:55:59 -06:00
John-David Dalton
ca48c5ddff Expose trim, trimLeft, and trimRight. 2014-01-03 00:37:49 -06:00
John-David Dalton
a20c362983 Rearrange source to better match the doc order. 2014-01-02 19:06:40 -06:00
John-David Dalton
7beb204b9d Remove forEach dep from mixin. 2014-01-01 23:10:27 -06:00
John-David Dalton
3e4f9451a0 Update year to 2014. [ci skip] 2014-01-01 12:08:02 -06:00
John-David Dalton
6e5846d206 Replace isWhitespaceAt with trimmedLeftIndex and trimmedRightIndex. 2014-01-01 10:57:42 -06:00
John-David Dalton
5965591934 Optimize trim. 2013-12-31 20:23:25 -06:00
John-David Dalton
78f8a03da5 Ensure the trim fallback is tested and counted for code coverage. 2013-12-31 02:01:19 -06:00
John-David Dalton
4d10584233 Beef up _.parseInt support and add trim internally. 2013-12-30 23:58:56 -06:00
John-David Dalton
106fa64060 Cleanup arrayReg and splice references. 2013-12-29 15:49:26 -06:00
John-David Dalton
95be8b2cf3 Optimize _.sortBy by adding baseCompareAscending and compareMultipleAscending. 2013-12-28 21:39:33 -06:00
John-David Dalton
53d7c6c085 Fix node 0.6 tests with npm registry's new cert. 2013-12-27 11:21:20 -06:00
John-David Dalton
e4df75519c Ensure _.random() returns 1 or 0. 2013-12-26 10:09:53 -06:00
John-David Dalton
0438fa6816 Ensure _.reduce doesn't assign accumulator a collection value if its length is 0. 2013-12-25 02:36:02 -06:00
John-David Dalton
2dab4ccf85 Fix _.reduce for modern and underscore builds. 2013-12-24 12:47:22 -06:00
John-David Dalton
b338e76649 Cleanup lodash and lodash.underscore builds. 2013-12-23 17:45:05 -06:00
John-David Dalton
c737ab764e Minor doc tweaks to _.pluck and _.match. [ci skip] 2013-12-23 11:06:54 -06:00
John-David Dalton
990e73fce6 Add _.match. 2013-12-22 23:56:28 -06:00
John-David Dalton
99fac3ae1c Go back to a version range in travis.yml now that sauce-tunnel has fixed its npm issues. 2013-12-22 23:00:54 -06:00
John-David Dalton
ad0bcc7de9 Add another _.constant test for falsey values. 2013-12-22 01:25:24 -06:00
John-David Dalton
8069853dda Fix reEscapedHtml for underscore builds. 2013-12-21 10:39:02 -06:00
John-David Dalton
14ed669eba Use a fixed version, 1.1.0, until sauce-tunnel fixes their corrupt 1.1.1 npm package. 2013-12-21 10:05:07 -06:00
John-David Dalton
9ff5fa4acf Remove trailing newlines in .html files and add .php to .editorconfig. [ci skip] 2013-12-21 10:03:40 -06:00
John-David Dalton
d026024e8c Merge branch 'master' of github.com:lodash/lodash 2013-12-21 09:45:58 -06:00
John-David Dalton
25d1491e6b Merge pull request #435 from d10/master
Add .editorconfig. [ci skip]
2013-12-21 07:41:32 -08:00
Benjamin Tan
4e1415faf2 Add .editorconfig 2013-12-21 21:15:12 +08:00
John-David Dalton
692f64a78a Reduce _.escape and _.unescape dependencies 2013-12-21 03:45:56 -06:00
John-David Dalton
b20b8af5a6 Simplify nvm use in travis.yml. 2013-12-20 03:15:19 -08:00
John-David Dalton
d34cf636d8 Use Boolean to fake out the isNative check and allow environments to test the native String#contains fork of _.contains 2013-12-20 02:38:18 -08:00
John-David Dalton
3c72ea40b4 Use node --harmony for code coverage tests. 2013-12-20 01:22:15 -08:00
John-David Dalton
f87c7833a3 Update the tested version of node in readme. [ci skip] 2013-12-19 23:04:18 -08:00
John-David Dalton
f3931140fe Add bad shim tests for String#contains and remove those for Function#bind as we don't use native bind. 2013-12-19 02:20:54 -08:00
John-David Dalton
8459117c23 Minor tweaking, moving var order. 2013-12-19 00:57:58 -08:00
John-David Dalton
bbc0c97329 Update docdown to fix doc bugs related to params that are properties of other params. [ci skip] 2013-12-19 00:00:00 -08:00
John-David Dalton
1d8b152758 Merge pull request #432 from d10/master
Fix _.template docs typo. [ci skip]
2013-12-18 23:09:01 -08:00
John-David Dalton
1c4652448c Optimize _.contains by using native String#contains when available. 2013-12-18 23:05:16 -08:00
Benjamin Tan
3a34e606b8 Fix _.template docs typo [ci skip] 2013-12-19 12:02:04 +08:00
John-David Dalton
ca55748103 Ensure AMD tests it all of the debounce coverage. 2013-12-16 23:49:13 -08:00
John-David Dalton
43fa199cfa Remove opera 9 from sauce too. 2013-12-16 22:26:31 -08:00
John-David Dalton
f288ca23ae Correct typo in iteratorTemplate code comment. [ci skip] 2013-12-16 22:10:36 -08:00
John-David Dalton
4026714461 Relax reNative as it's limited in scope. 2013-12-16 21:53:01 -08:00
John-David Dalton
39a8652708 Simplify the _.support.dom check. 2013-12-16 21:22:46 -08:00
John-David Dalton
fb432465ea Disable testing Opera 10 in sauce until they fix it. 2013-12-16 20:17:15 -08:00
John-David Dalton
42bccfe1ec Improve regexp for reNative. 2013-12-16 20:15:37 -08:00
John-David Dalton
98566150d2 Avoid chance fails by noConflict race conditions. 2013-12-16 08:47:16 -08:00
John-David Dalton
676e1705c1 Rebuild docs and dist. 2013-12-16 02:34:46 -08:00
John-David Dalton
172cc1ffea Add thisArg to _.tap. 2013-12-16 02:34:20 -08:00
John-David Dalton
6845a52e92 Avoid sparatic fails with Firefox 26 and amd tests. 2013-12-16 01:44:51 -08:00
John-David Dalton
b5dc89f0e6 Add opera 9 and 10 to sauce tests. 2013-12-16 00:28:06 -08:00
John-David Dalton
ecaea51fe0 Update Firefox version in sauce and try Opera again. 2013-12-15 23:56:12 -08:00
John-David Dalton
77baf08092 Update tested browsers in the readme. [ci skip] 2013-12-15 23:55:43 -08:00
John-David Dalton
63ff5a2fe3 Update node version to 0.10 for sauce in travis.yml since they've upgraded their node 0.10 version. 2013-12-15 23:53:46 -08:00
John-David Dalton
97662f4b3e Fix comment typo in test/index.html. [ci skip] 2013-12-15 23:34:28 -08:00
John-David Dalton
38869d5035 Add tests for _.support.funcDecomp and WinRTError. 2013-12-15 23:17:33 -08:00
John-David Dalton
08047d4ab7 Cleanup iteratorTemplate code comments. [ci skip] 2013-12-15 23:15:19 -08:00
John-David Dalton
cf33853e68 Add result of array tests. 2013-12-15 22:50:43 -08:00
John-David Dalton
768e618ed9 Fix doc typos for _.mapValues and _.sample. 2013-12-15 22:50:10 -08:00
John-David Dalton
025ed51f11 Reduce the chance of a slow script warning in some browsers in test.js. 2013-12-15 21:24:13 -08:00
John-David Dalton
ab9dae3bf3 Fix IE compat mode bug with clearTimeout and setTimeout in test/index.html. 2013-12-15 20:28:03 -08:00
John-David Dalton
74da5dfd4b Keep code coverage up for _.isElement. 2013-12-15 19:15:01 -08:00
John-David Dalton
aaaf452fdc Move "escape" and "evaluate" delimiters to their own regexes. Cleanup the _ docs and iteratorTemplate. 2013-12-15 15:47:09 -08:00
John-David Dalton
d2b97d8aea Cleanup and rebuild docs and diet. 2013-12-14 03:05:30 -08:00
John-David Dalton
8b95216493 Merge pull request #429 from d10/master
Improve links formatting for docs. [ci skip]
2013-12-14 03:01:29 -08:00
Benjamin Tan
f933fa8c78 Improve links formatting for docs 2013-12-14 18:49:01 +08:00
John-David Dalton
f955309139 Switch from chrome to googlechrome browser name in saucelabs.js. 2013-12-14 02:34:05 -08:00
John-David Dalton
9c65a82430 Avoid issues with variable window. 2013-12-14 02:19:42 -08:00
John-David Dalton
7b4dda9c73 Fix readme typo in build differences wiki link. [ci skip] [closes #428] 2013-12-14 01:59:31 -08:00
John-David Dalton
9ad7d2d977 Fix bizarro setTimeout and clearTimeout for requirejs test runs. 2013-12-14 01:53:21 -08:00
John-David Dalton
e3b4b2f667 Simplify iteratorTemplate. 2013-12-14 01:29:17 -08:00
John-David Dalton
60a1374fb4 No longer compile _.assign, _.defaults, or _.forOwn. 2013-12-13 09:11:58 -08:00
John-David Dalton
7fcbc3c003 Fix failing test in node. 2013-12-13 08:34:16 -08:00
John-David Dalton
40421f4321 Make _.isElement more robust. [closes #427] 2013-12-12 22:22:47 -08:00
John-David Dalton
ad2683b610 Add more semicolons to the docs. \ht @mathias [ci skip] 2013-12-11 19:51:07 -08:00
John-David Dalton
7d49699e5f Merge branch 'master' of github.com:lodash/lodash 2013-12-11 09:24:58 -08:00
John-David Dalton
b34a239096 Add more to the "features" section of the readme and use the github url for lodash-amd references. [ci skip] 2013-12-11 09:24:47 -08:00
John-David Dalton
02d1251fe4 Merge pull request #426 from lodash/docs
Tweak documentation for `{un,}escape`. [ci skip]
2013-12-11 09:00:51 -08:00
Mathias Bynens
95e58ebb9f Tweak documentation for {un,}escape [ci skip] 2013-12-11 17:54:08 +01:00
John-David Dalton
1cb2704f1b Add files to bower and volo ignore lists. [ci skip] 2013-12-08 18:15:56 -08:00
John-David Dalton
dea71f1aa9 Update dojo to 1.9.2. 2013-12-08 17:56:11 -08:00
John-David Dalton
aee975b7d8 Add .log files to volo's ignore list. [ci skip] 2013-12-08 17:54:24 -08:00
John-David Dalton
18b6d51644 Reduce the amount of phantomjs runs in travis.yml and tweak for 100% coverage in amd tests. 2013-12-08 14:29:03 -08:00
John-David Dalton
3a5ff851af Avoid swallowing errors in the test setup in .travis.yml. 2013-12-08 12:12:05 -08:00
John-David Dalton
cd929345e6 Ignore all log files in .gitignore. [ci skip] 2013-12-08 11:01:35 -08:00
John-David Dalton
de232dd726 Allow amd builds to test for bizarro methods. 2013-12-08 10:44:07 -08:00
John-David Dalton
8ebe99d4f5 Add support for writing the coverage.json file for phantomjs runs in test/test.js. [ci skip] 2013-12-07 23:46:39 -08:00
John-David Dalton
32f760a461 Add semantic versioning note to readme. [ci skip] 2013-12-07 23:28:02 -08:00
John-David Dalton
65eaab5cf4 Update .gitignore to ignore npm-debug.log and coverage folders. [ci skip] 2013-12-07 23:05:39 -08:00
John-David Dalton
51698944e0 Cleanup _.xor patch and add a unit test. 2013-12-06 20:34:59 -08:00
Ryan Van Etten
64fc924357 Ensure _.xor() returns new unique array. 2013-12-06 19:38:43 -08:00
John-David Dalton
c61a0cdd22 Cleanup _.compact optimization. 2013-12-06 19:34:30 -08:00
robertmesserle
9a1de81fc5 Optimized compact method by using a counter in place of Array.prototype.push() 2013-12-06 19:34:30 -08:00
John-David Dalton
3633d3cd73 Optimize _.unescape. 2013-12-06 09:13:38 -08:00
John-David Dalton
9a0465eb05 Reduce sauce timeouts. 2013-12-05 21:25:03 -08:00
John-David Dalton
088e199aa2 Cleanup docs. [ci skip] 2013-12-05 21:24:47 -08:00
John-David Dalton
bc4c043d7e Cleanup previous commit, add a _.invert unit test, and rebuild docs. 2013-12-05 09:38:42 -08:00
John-David Dalton
764299ea8a Merge pull request #420 from dr-skot/master
Add oneToMany support in _.invert.
2013-12-05 08:35:14 -08:00
Scott Shepherd
2abc87a1f2 regenerated README.md after adding oneToMany support to _.invert 2013-12-05 11:28:06 -05:00
Scott Shepherd
75fa116c88 built dist files after adding oneToMany support to _.invert 2013-12-05 11:24:46 -05:00
Scott Shepherd
cc7575adab added oneToMany option to _.invert() 2013-12-05 09:14:58 -05:00
Scott Shepherd
efb1a2c8e0 added oneToMany option to _.invert() 2013-12-05 09:12:38 -05:00
John-David Dalton
c2972fcaa0 Avoid adding Function.prototype additions to _. 2013-12-04 22:50:51 -08:00
John-David Dalton
250fd71e16 Tweak readme layout of downloads and add not about 100% code coverage. [ci skip] 2013-12-03 22:38:02 -08:00
John-David Dalton
783c165201 Add doc note to _.zip about unzipping values. [ci skip] [closes #418] 2013-12-03 20:40:15 -08:00
John-David Dalton
326a3c5932 Fix typo in test description and reduce sauce test timeouts. 2013-12-03 20:37:26 -08:00
John-David Dalton
0af1a85442 Bump to v2.4.1. 2013-12-02 23:21:16 -08:00
John-David Dalton
10e7bb97ee Add comments to baseBind use of arguments. [ci skip] [closes #416] 2013-12-02 23:11:19 -08:00
John-David Dalton
c319bbc5f3 Ensure _.isEqual performs comparisons between objects with shared property values correctly. [closes #415] 2013-12-02 21:15:00 -08:00
John-David Dalton
9e42f70e5f Add more lodashBadShim tests. 2013-12-02 01:40:20 -08:00
John-David Dalton
ff47152187 Add max-duration option to sauce config. 2013-12-01 21:40:48 -08:00
John-David Dalton
94b6ce5ca0 Excuse some underscore _.debounce and _.throttle tests in sauce. 2013-12-01 21:40:48 -08:00
John-David Dalton
8e1020f134 Tweak _.now unit test. 2013-12-01 21:40:48 -08:00
John-David Dalton
be7a0fef41 Increase sauce idle-timeout from the default of 90 to 300. 2013-12-01 21:40:48 -08:00
Bitdeli Chef
9fe7bb7362 Add a Bitdeli badge to README 2013-12-01 17:55:22 +00:00
John-David Dalton
5d4b121ac1 Remove extra props added for lodashBadShim. 2013-12-01 11:29:41 -06:00
John-David Dalton
cb424a5f78 Better error messages for sauce issues. [ci skip] 2013-11-30 23:11:16 -06:00
John-David Dalton
88ab9d0756 Fix phantomjs browser tests. 2013-11-30 19:57:42 -06:00
John-David Dalton
29f4fd40ed Try a different secure string in travis.yml. 2013-11-30 17:10:53 -06:00
John-David Dalton
b7f7ba06b9 Merge qunit clib and extras. 2013-11-30 16:02:18 -06:00
John-David Dalton
94f8ac8d1d Get test coverage to 100%. 2013-11-30 11:51:11 -06:00
John-David Dalton
72ab38bd2f Remove fork in baseUniq that is never reached and increase test coverage. 2013-11-30 00:29:50 -06:00
John-David Dalton
b3d5466131 Fix tests for commonjs module builds. [ci skip] 2013-11-29 22:11:30 -06:00
John-David Dalton
bafbd8f1b6 Add COVERALLS_REPO_TOKEN to travis.yml. 2013-11-29 21:57:21 -06:00
John-David Dalton
8c1ce03183 Ignore .coveralls.yml. 2013-11-29 21:01:12 -06:00
John-David Dalton
97490b272f Add more unit tests to increase coverage. 2013-11-29 20:54:18 -06:00
John-David Dalton
2afbe9514b Rebuild files and docs. 2013-11-29 20:37:56 -06:00
John-David Dalton
603be609a1 Add sudo to the istanbul command in travis.yml. 2013-11-29 18:48:01 -06:00
John-David Dalton
4590be7b65 Add isNative. 2013-11-29 18:47:25 -06:00
John-David Dalton
097a2f6582 Optimize _.partial and _.partialRight. 2013-11-29 11:21:48 -06:00
John-David Dalton
f818e5bc51 Whitespace nit in test.js. [ci skip] 2013-11-29 08:40:13 -06:00
John-David Dalton
34cf8fc43c Ensure _.partialRight args are applied to __bindData__ in the correct order. [closes #408] 2013-11-29 07:09:21 -06:00
John-David Dalton
7712765c3a Ensure __bindData__ is properly cloned. [closes #408] 2013-11-29 06:31:37 -06:00
John-David Dalton
eaf1304eda Rebuild with xor doc typo fixed and docs with lodash.com link. [ci skip] 2013-11-27 23:46:27 -06:00
John-David Dalton
f97f32df0f Merge pull request #406 from Delapouite/doc
Add home link in docs. [ci skip]
2013-11-27 03:45:22 -06:00
John-David Dalton
79eecd6db4 Remove extraneous test. [ci skip] 2013-11-27 03:42:59 -06:00
Delapouite
5a75d8e788 Add home link in docs. [ci skip] 2013-11-27 10:12:17 +01:00
John-David Dalton
42e58fb73a Add unit test for _.sortBy to ensure arrays returned from callbacks are coerced. 2013-11-26 15:10:55 -06:00
John-David Dalton
dba996b2c4 Fix doc typos. [ci skip] 2013-11-26 15:10:45 -06:00
John-David Dalton
647f0dd34b Bump to v2.4.0. 2013-11-25 23:14:32 -06:00
John-David Dalton
a691a519e8 Add options object to _.mixin. [closes #404] 2013-11-25 13:26:08 -06:00
John-David Dalton
86075973b5 Remove setImmediate use from _.defer. 2013-11-24 15:31:34 -06:00
John-David Dalton
97ea15300c Added unit tests for clearing the timer id of _.delay and _.defer and tests for array chaining methods. 2013-11-24 15:11:45 -06:00
John-David Dalton
a150a8fd52 Update sauce labs excused list in test/underscore.html. [ci skip] 2013-11-24 11:25:12 -06:00
John-David Dalton
ad4e20da52 Fix async test in node when testing modules. [ci skip] 2013-11-24 00:30:13 -06:00
John-David Dalton
e43ab1e46f Add missing semicolon in _#chain doc. [ci skip] 2013-11-22 22:18:53 -08:00
John-David Dalton
e32e280cf1 Update async _.throttle test. 2013-11-22 22:08:51 -08:00
John-David Dalton
c1a07e0943 Cleanup _.xor. 2013-11-22 18:43:51 -08:00
John-David Dalton
93fe641dbf Change sauce detect in test/underscore.html. [ci skip] 2013-11-22 12:42:39 -08:00
John-David Dalton
d8194c0886 Allow _.sortBy to accept an array for callback. 2013-11-22 09:35:39 -08:00
John-David Dalton
75ce4766d3 Fix _.mixin doc typo. [ci skip] 2013-11-21 22:04:59 -08:00
John-David Dalton
7eff3bf854 Add opera to sauce labs and shorten ie-compat tag. 2013-11-21 22:04:38 -08:00
John-David Dalton
af143ae7dc Update alias output in doc TOC. [ci skip] 2013-11-21 10:53:56 -08:00
John-David Dalton
a0e9140dde Use non-minified file for istanbul coverage checks. 2013-11-21 10:52:59 -08:00
John-David Dalton
33e5d46c87 Add _.constant, _.mapValues, and _.xor. 2013-11-21 09:31:55 -08:00
John-David Dalton
f74b206864 Move asyncRetries config to test/test.js. 2013-11-20 19:13:06 -08:00
John-David Dalton
f334ebe577 Revert istanbul change in travis.yml. 2013-11-20 19:11:46 -08:00
John-David Dalton
9c39394d7f Load QUnit extras for cli tests too. 2013-11-20 09:15:39 -08:00
John-David Dalton
8ea0e6977a Move _.createCallback and _.property to the "Utilities" category. 2013-11-20 08:44:53 -08:00
John-David Dalton
bf006473c0 Add _.debounce and _.throttle test for the this binding of func. 2013-11-19 23:33:43 -08:00
John-David Dalton
568af27be4 Change istanbul test file in travis.yml. 2013-11-19 22:34:18 -08:00
John-David Dalton
bd55f86203 Indicate aliases with -> in docs. 2013-11-19 21:26:06 -08:00
John-David Dalton
d95e577639 Expose lodash in the amd fork of the UMD in case it's being loaded with a shim config. [closes #400] 2013-11-19 09:24:12 -08:00
John-David Dalton
a904e54122 Fix _.throttle and _.now tests. 2013-11-19 00:06:20 -08:00
John-David Dalton
2a97655a8d Expose _.now. 2013-11-18 22:34:04 -08:00
John-David Dalton
d878718510 Update sauce platforms with newer chrome versions and more safari versions. 2013-11-18 08:41:41 -08:00
John-David Dalton
416227a2a2 Add build data to sauce. 2013-11-17 22:57:23 -08:00
John-David Dalton
7d1baa8798 Update vendor/benchmark.js. [ci skip] 2013-11-17 18:58:08 -08:00
John-David Dalton
fe2ee64ec9 Expose _.property. 2013-11-16 20:31:18 -08:00
John-David Dalton
96819628d6 Minor doc nit in saucelabs.js. [ci skip] 2013-11-16 12:09:22 -08:00
John-David Dalton
1b30d7909c Minor nit on require path in saucelabs.js. 2013-11-16 09:18:50 -08:00
John-David Dalton
baf253d44e Reduce timer waits because we've fixed the issue with asyncRetries. 2013-11-16 09:18:08 -08:00
John-David Dalton
b7a4d50007 Add coveralls to travis.yml. 2013-11-16 01:14:14 -08:00
John-David Dalton
625b4befb5 Rebuild docs and add links to sauce labs and travis-ci to readme. [ci skip] 2013-11-16 01:14:14 -08:00
John-David Dalton
30678f51bd Fix var _ assignment in index.html. 2013-11-16 01:14:14 -08:00
John-David Dalton
7a4103dd48 Make use of the wait throbber in quint and cleanup the throbber in saucelabs.js. 2013-11-15 22:18:03 -08:00
John-David Dalton
bca3ff2eac Avoid loading lodash when not needed in unit tests. 2013-11-15 22:09:30 -08:00
John-David Dalton
28e2934a89 Allow _.zipObject to accept an array of keys without assuming its an array of key/value pairs. [closes #397] 2013-11-15 00:18:29 -08:00
John-David Dalton
0563af682d Update docdown to avoid escaping characters in code snippets. [ci skip] 2013-11-14 22:40:48 -08:00
John-David Dalton
5ccd63250b Move qunit extras to qunit-extras.js. 2013-11-14 21:02:46 -08:00
John-David Dalton
f262a0745d Avoid require('vm') if testing AMD. 2013-11-14 11:37:15 -08:00
John-David Dalton
c42b63b008 Move compat mode testing to an argument instead of a query param. 2013-11-14 08:47:34 -08:00
John-David Dalton
e7ffb80877 Enable other realm tests for Node too. 2013-11-14 08:30:34 -08:00
John-David Dalton
919166212f Fix istanbul report in travis.yml and tweak async tests. 2013-11-14 01:03:20 -08:00
John-David Dalton
deb124f645 Update ES6 spec link in lodash source too. [ci skip] 2013-11-13 23:28:14 -08:00
John-David Dalton
86b1ff5125 Merge pull request #396 from Delapouite/doc
Update README link to literals string spec. [ci skip]
2013-11-13 09:46:53 -08:00
John-David Dalton
2c8c96149f Fix how sauce runner and tags are parsed. 2013-11-13 08:13:18 -08:00
Delapouite
82e4cc9951 Update README link to literals string spec [ci skip] 2013-11-13 17:06:58 +01:00
John-David Dalton
04df06404f Bump tested Chrome version in readme. [ci skip] 2013-11-13 01:11:50 -08:00
John-David Dalton
f6fcf5fce4 Attempt to make sauce tests public with names, tags, and customized options. 2013-11-13 00:24:08 -08:00
John-David Dalton
ac5e92c879 Update doc whitespace and _.template doc example. [ci skip] 2013-11-13 00:20:17 -08:00
John-David Dalton
37ccc80ba4 Fix _.size doc typo. [ci skip] [closes #394] 2013-11-12 08:59:40 -08:00
John-David Dalton
8153f97899 Update docdown to correctly detect _.noop as a function. [ci skip] 2013-11-12 00:21:45 -08:00
John-David Dalton
8dedc6d3dc Make use of _.noop more in test/test.js. 2013-11-12 00:20:42 -08:00
John-David Dalton
807d75e13a Remove exposing root._ in the AMD fork of the UMD because Lo-Dash is defined as an anonymous module and the issue it solves isn't applicable to it. 2013-11-11 22:07:56 -08:00
John-David Dalton
feac1786e1 Move min tested Node.js version up to match travis-ci to avoid local testing on top of travis-ci. [ci skip] 2013-11-11 19:37:09 -08:00
John-David Dalton
09e0f4e36c Move ui.isModularize lower in test-ui.js, tweak timing tests, and update lodash-es6 link in readme. 2013-11-11 09:27:49 -08:00
John-David Dalton
9999332107 Bump to v2.3.0. 2013-11-10 20:54:17 -08:00
John-David Dalton
d4ec7e5357 Adjust _.throttle timing in test/test.js. 2013-11-10 19:54:37 -08:00
John-David Dalton
064b3caf08 Fix test in newer opera. 2013-11-10 19:32:53 -08:00
John-David Dalton
c83d2e9513 Fix failing tests in old Opera. 2013-11-10 18:10:34 -08:00
John-David Dalton
48ff516215 Move support note to lodash-cli. [ci skip] 2013-11-10 15:33:43 -08:00
John-David Dalton
cdccbb59ab Avoid the use of _.times in timed tests. 2013-11-10 13:52:24 -08:00
John-David Dalton
2fe5a863ac Avoid _.noop use in test/underscore.html and test/backbone.html. 2013-11-10 13:22:47 -08:00
John-David Dalton
7d1fccf474 Ensure _.noop isn't exposed for underscore builds. 2013-11-10 12:03:13 -08:00
John-David Dalton
0a8dbc8831 Minor readme style tweaks. [ci skip] 2013-11-10 11:11:00 -08:00
John-David Dalton
177a3c2cbd Simplify baseCreateWrapper. 2013-11-09 08:38:04 -08:00
John-David Dalton
9f22e634f5 Simplify a _.debounce and a_.throttle test. 2013-11-09 01:06:44 -08:00
John-David Dalton
55a8c7b540 Correct underscore builds & temporarily disable opera testing in sauce until they resolve their issues. 2013-11-08 09:23:40 -08:00
John-David Dalton
76c11fe65a Try opera in saucelabs.js. 2013-11-07 22:24:26 -08:00
John-David Dalton
b15ed00feb Reduce wait times to speed up unit tests. 2013-11-07 20:51:48 -08:00
John-David Dalton
fc3ff34c2d Fix builds. 2013-11-07 20:48:11 -08:00
John-David Dalton
5faa0f55bc Add baseDifference to optimize _.omit & _.without. 2013-11-07 20:43:23 -08:00
John-David Dalton
77f0731c3e Push back timer in _.delay tests. 2013-11-07 20:42:48 -08:00
John-David Dalton
ffff623852 Tweak var names in _.clone and baseFlatten. [ci skip] 2013-11-07 19:27:19 -08:00
John-David Dalton
a6bc40b506 Fix typo in _.contains docs. [ci skip] [closes #393] 2013-11-07 19:04:56 -08:00
John-David Dalton
a034515019 Add DevDocs to the readme. [ci skip] 2013-11-07 09:52:20 -08:00
John-David Dalton
49c8f23bf7 Adjust timing test to avoid false fails in sauce. 2013-11-07 09:19:25 -08:00
John-David Dalton
29b7a71812 Ensure there is a response object before accessing its statusCode. 2013-11-07 09:05:44 -08:00
John-David Dalton
8de3283dd1 Add special thanks to Sauce Labs to readme. [ci skip] 2013-11-06 23:15:07 -08:00
John-David Dalton
4bbe5b3358 Fix minified builds. 2013-11-06 22:10:55 -08:00
John-David Dalton
3dd3af4a73 Optimize _.omit for large arrays by leveraging _.difference which has optimizations for large arrays. 2013-11-06 21:09:58 -08:00
John-David Dalton
7e7b129822 Move the QUnit.config.hidepassed setting up. 2013-11-06 20:05:28 -08:00
John-David Dalton
8bcc1d81d2 Set loader to none by default in test.html and add default values to perf.html too. 2013-11-06 09:27:19 -08:00
John-David Dalton
aa8e92e9a5 Update qunit-clib to avoid issues with non-writable context.clearTimeout. 2013-11-06 08:51:16 -08:00
John-David Dalton
a8196ec99e Update builds & docs. 2013-11-05 23:54:03 -08:00
John-David Dalton
bd3034819e Ensure recursive _.throttle calls still work. 2013-11-05 23:48:07 -08:00
John-David Dalton
7bb86c4e2a Fix typos and rebuild docs & builds. 2013-11-05 21:53:28 -08:00
John-David Dalton
94ed21d1cf Add count check now that we clear timeoutId properly. 2013-11-05 21:44:59 -08:00
John-David Dalton
1bb7c31ee4 Clear timeoutId if func is called in _.debounce. 2013-11-05 21:41:13 -08:00
John-David Dalton
06d12b376c Tweak pull_request detection in saucelabs.js. 2013-11-05 21:17:42 -08:00
John-David Dalton
e9c8137fd8 Add a mix of arguments to _.throttle tests. 2013-11-05 21:14:47 -08:00
John-David Dalton
eaaddf40d2 Fix failing _.debounce test. 2013-11-05 21:14:29 -08:00
John-David Dalton
3e0c565019 Add failing test case for current _.debounce patch. 2013-11-05 21:12:43 -08:00
John-David Dalton
984603112f Push delay back to see if it helps timing tests in travis/sauce. 2013-11-05 19:49:46 -08:00
John-David Dalton
fe29246256 Merge pull request #389 from jayphelps/leaky-pipes
Fixed memory leak with debounce/throttle arguments and context.
2013-11-05 19:04:13 -08:00
Jay Phelps
84d0664112 Fixed memory leak with debounce/throttle arguments and context 2013-11-05 18:50:39 -08:00
John-David Dalton
3d3c59cea6 Minor style tweaks and simplify travis.yml. 2013-11-05 09:28:11 -08:00
John-David Dalton
7940428b9b Add _.bind, _.partial, _.partialRight, & _.curry tests for function length. 2013-11-05 08:36:32 -08:00
John-David Dalton
2e485b9ac5 Tweak test filters for backbone and underscore. 2013-11-05 08:36:02 -08:00
John-David Dalton
b76aa926f6 Add underscore build tests to sauce. 2013-11-05 08:35:31 -08:00
John-David Dalton
58d81546da Minor cleanup in saucelabs.js. 2013-11-05 00:22:50 -08:00
John-David Dalton
7a480990c6 Avoid underscore timing tests in sauce. 2013-11-04 23:18:39 -08:00
John-David Dalton
afb10efd83 Avoid false fail on _.debounce test. 2013-11-04 22:15:29 -08:00
John-David Dalton
e2f05e137f Ensure only 4 sauce runs at once. 2013-11-04 21:38:35 -08:00
John-David Dalton
d72ade9c70 Leverage tunnels in sauce now that sauce-tunnel is updated. 2013-11-04 20:35:29 -08:00
John-David Dalton
64650fcdee Allow sauce to test IE6/7 for Backbone. 2013-11-04 19:31:56 -08:00
John-David Dalton
e1acb7df13 Fix typo. 2013-11-04 09:09:01 -08:00
John-David Dalton
319a30cf3a Tweak wording in readme. [ci skip] 2013-11-04 09:07:32 -08:00
John-David Dalton
e631f1b313 Avoid lodash use in test setups. 2013-11-04 09:07:07 -08:00
John-David Dalton
617f31b47f Make _.reduce, _.reduceRight, & _.transform to use lodash.createCallback. [closes #388] 2013-11-04 08:01:32 -08:00
John-David Dalton
61e9aac92d Avoid buggy tests in safari in sauce. 2013-11-03 22:38:15 -08:00
John-David Dalton
75812804f4 Rebuild minified builds after uglifyjs update. 2013-11-03 20:56:27 -08:00
John-David Dalton
b60f36f211 Tweak timing tests. 2013-11-03 20:38:17 -08:00
John-David Dalton
e342c878d0 Reduce tests so travis-ci won't timeout. 2013-11-03 15:42:02 -08:00
John-David Dalton
c6b3cadf55 Adjust sauce underscore/backbone settings. 2013-11-03 14:38:16 -08:00
John-David Dalton
869a361d09 Add underscore tests to sauce. 2013-11-03 12:49:15 -08:00
John-David Dalton
f83119e188 Avoiding timing issue with _.debounce test and enable sauce support for backbone tests. 2013-11-03 08:07:44 -08:00
John-David Dalton
578c4b444c Add backbone tests to sauce. 2013-11-03 01:08:21 -08:00
John-David Dalton
d63f9be03f Fix legacy and mobile paths in sauce. 2013-11-03 01:14:25 -07:00
John-David Dalton
62fe02415a Fix compat minified build. 2013-11-03 00:20:55 -07:00
John-David Dalton
481970c763 Add quotes to urls in .travis.yml. 2013-11-02 23:35:56 -07:00
John-David Dalton
7c8dc66ba1 Continue tweaking timing based tests. 2013-11-02 23:35:36 -07:00
John-David Dalton
20ffbf5a82 Use the process.cwd() in sauce labs and unroll sauce tests in travis.yml. 2013-11-02 22:52:38 -07:00
John-David Dalton
2b6f26b214 Run sauce labs in node v0.8 until travis-ci updates their 0.10 version. 2013-11-02 21:38:41 -07:00
John-David Dalton
d743ec2d2b Cleanup travis.yml, tweak how pull requests are handled in saucelabs.js, and tweak timing tests in test/test.js. 2013-11-02 20:53:51 -07:00
John-David Dalton
dfab332285 Auto create platforms list based on test url params. 2013-11-02 14:57:58 -07:00
John-David Dalton
bbbce8a981 Change commit depth to 10 in .travis.yml. [ci skip] 2013-11-02 14:35:48 -07:00
John-David Dalton
0dc4ccb42f Add the partial tunnel support back but don't run parallel jobs until sauce fixes their support. 2013-11-02 14:27:38 -07:00
John-David Dalton
b46c2c2527 Remove tunnelId support as it's not fully supported by sauce labs atm. 2013-11-02 14:07:17 -07:00
John-David Dalton
3b128f844b Experiment with a different tunnel id. 2013-11-02 13:44:31 -07:00
John-David Dalton
d38b3d09ba Tweak sauce labs test completion wait time. 2013-11-02 13:26:30 -07:00
John-David Dalton
d35c5ffa04 Update builds and add tunnelId to saucelabs.js. 2013-11-02 13:07:42 -07:00
John-David Dalton
eb7243233e Add IE compat mode testing to travis-ci. 2013-11-02 10:56:00 -07:00
John-David Dalton
21bf629505 Fix typo in saucelabs.js. 2013-11-02 10:13:28 -07:00
John-David Dalton
702022001d Try to avoid more false fails w/ time related tests. 2013-11-02 09:50:19 -07:00
John-David Dalton
d9549ad634 Make saucelabs.js skip running for pull requests, avoid errors when no result object is returned, and add IE 11 to the list of tested browsers. 2013-11-02 09:32:35 -07:00
Blaine Bublitz
daf91dbf95 switch from connect to ecstatic for sauce tests, parse URL for compat in querystring and set header 2013-11-02 00:59:52 -07:00
John-David Dalton
2bc19120d9 Avoid false fail for a _.throttle test in some VMs. 2013-11-01 23:28:20 -07:00
John-David Dalton
8ddfa8cd68 Add _.isEqual tests for wrapped and unwrapped values. 2013-11-01 19:13:36 -07:00
John-David Dalton
076d10358e Add the last of the underscore _.isEqual unit tests. 2013-10-31 22:59:23 -07:00
John-David Dalton
5930983641 Update link to custom builds documentation. [ci skip] 2013-10-31 09:31:08 -07:00
John-David Dalton
a0c5cb51aa Add more _.isEqual tests and ensure _.isEqual(_(false), _(false)) will compare correctly. 2013-10-31 09:01:40 -07:00
John-David Dalton
8e659745fd Update readme. 2013-10-31 00:06:11 -07:00
John-David Dalton
87297d2a07 Cleanup saucelabs.js round two. 2013-10-31 00:02:47 -07:00
John-David Dalton
8f23611f1a Rename window to root. 2013-10-31 00:02:19 -07:00
John-David Dalton
e2affb0f38 See what process.env logs in saucelabs.js. 2013-10-30 20:15:19 -07:00
John-David Dalton
26e6041b7a Reduce false fails at the expense of explicitness. 2013-10-30 19:34:48 -07:00
John-David Dalton
81707a45d5 Fix typo in builds. 2013-10-30 19:34:21 -07:00
John-David Dalton
805f2b28a9 Update builds & docs. 2013-10-30 09:46:58 -07:00
John-David Dalton
22aa02895e Add propertyIsEnumerable check to the _.isArguments fallback. [closes #382] 2013-10-30 09:24:25 -07:00
John-David Dalton
6bb89778b2 Expose _.noop. [closes #380] 2013-10-30 09:20:56 -07:00
John-David Dalton
6631b9e78f Hide passing tests by default. 2013-10-30 01:09:10 -07:00
John-David Dalton
7f7d5b32da Remove debug from perf.js. 2013-10-30 01:04:36 -07:00
John-David Dalton
52def444ab Update builds after cleanup. 2013-10-30 01:04:01 -07:00
John-David Dalton
7d52ab7c54 Add _.partial perf tests. 2013-10-29 23:58:40 -07:00
John-David Dalton
852b324819 Rename createBound to createWrapper and break createWrapper apart. 2013-10-29 23:58:16 -07:00
John-David Dalton
e019441ede Remove opera from sauce labs as they are unable to launch on their end. 2013-10-29 09:33:54 -07:00
John-David Dalton
ac8f8d0dd6 Ensure _.min and _.max can be used as the callback of _.map. [closes #379] 2013-10-29 09:32:40 -07:00
John-David Dalton
3fa2e7e12e Avoid false fail in older firefox. 2013-10-29 08:56:24 -07:00
John-David Dalton
5d099491df Tweak platforms in saucelabs.js. 2013-10-29 01:22:50 -07:00
John-David Dalton
d7ca0f7734 Remove trailing comma. 2013-10-29 01:17:32 -07:00
John-David Dalton
5d31338b02 Move isV8 and setImmediate assignment after nativeCreate is assigned. 2013-10-29 01:14:12 -07:00
John-David Dalton
a44b81d240 Add browsers to saucelabs.js. 2013-10-29 00:45:02 -07:00
John-David Dalton
742e499de0 Remove native Function#bind use. 2013-10-29 00:00:07 -07:00
John-David Dalton
eb395d6d2d Cleanup perf.js. 2013-10-28 23:25:51 -07:00
John-David Dalton
a1383c34b5 First round of sauce support cleanup. 2013-10-28 09:29:57 -07:00
John-David Dalton
e538da3959 Merge branch 'master' of github.com:lodash/lodash 2013-10-28 09:10:37 -07:00
John-David Dalton
687a072dc8 Cleanup tests and add more _.isEqual tests. 2013-10-28 09:10:26 -07:00
John-David Dalton
5dc9881241 Merge pull request #376 from pimterry/saucelabs
Automatic browser tests with SauceLabs in Travis. [ci skip]
2013-10-28 08:22:40 -07:00
pimterry
0b3a7e2f0f Move saucelabs test config into /test 2013-10-28 10:55:34 +00:00
pimterry
123455a5bb Move saucelabs to an explicit travis case, out of the build matrix
This avoids us rebuilding it with every other combination (saucelabs + node .6/8/.10), as that's not really useful
2013-10-28 00:15:10 +00:00
pimterry
34c8d8dd2e Improve console logging output for saucelabs tests, and explicitly close sauce connect 2013-10-28 00:14:59 +00:00
pimterry
3f4c92d739 Add test listener to QUnit to report results for saucelabs 2013-10-28 00:09:45 +00:00
pimterry
eb10245df1 Moved sauce connect management to saucelabs.js, for manual control 2013-10-28 00:09:40 +00:00
Tim Perry
2dbfcbb378 Updated travis config to run the saucelabs tests for various browsers 2013-10-28 00:07:22 +00:00
Tim Perry
a717f5c030 Initial working saucelabs test result recording 2013-10-28 00:07:16 +00:00
Tim Perry
3a711790c5 PoC saucelabs test runner 2013-10-27 22:55:11 +00:00
John-David Dalton
5d77cb0396 Update underscore build with _.difference patch from lodash-cli. [closes #373] 2013-10-26 00:26:23 -07:00
John-David Dalton
9972ea578b Update builds. 2013-10-26 00:25:42 -07:00
John-David Dalton
0bb3762397 Simplify environment detections. 2013-10-26 00:25:09 -07:00
John-David Dalton
fbd6e21152 Add more "Objects" tests to test/test.js. 2013-10-25 09:36:27 -07:00
John-David Dalton
bea62537df Fix asyncTest with rhino -require. 2013-10-25 00:38:19 -07:00
John-David Dalton
fdbe4c5bd5 Avoid broken Function#bind in Narwhal. 2013-10-24 22:45:33 -07:00
John-David Dalton
91e779a52c Remove secure sauce access key since @pimterry is on the case. 2013-10-24 22:25:21 -07:00
John-David Dalton
e2c5e92cd3 Fix failing tests for rhino -require. 2013-10-24 09:09:18 -07:00
John-David Dalton
5929676ea2 Add more "Objects" test and fix tests for node. 2013-10-24 00:18:02 -07:00
John-David Dalton
36e180ab91 Add more "Objects" tests and fix failing tests. 2013-10-23 23:54:03 -07:00
John-David Dalton
1e8fe22553 Use internal slice instead of nativeSlice.call when converting arguments to arrays. 2013-10-23 21:55:05 -07:00
John-David Dalton
8e1bd2d8f3 Add more of Underscore's "Objects" tests to test/test.js. 2013-10-23 21:38:16 -07:00
John-David Dalton
239ce262ef Add sauce secure key in the hope that someone will complete the work required to get sauce testing working. 2013-10-22 22:16:27 -07:00
John-David Dalton
5be66e98c2 Fix flakey _.throttle unit test. 2013-10-22 21:54:47 -07:00
John-David Dalton
cacd072c15 Add "Objects" tests from Underscore to test/test.js. 2013-10-22 09:28:23 -07:00
John-David Dalton
14c6a1bf23 Add docs to an advanced section of createBound. [ci skip] 2013-10-22 09:27:33 -07:00
John-David Dalton
b27dfd4c77 Escape asterisks and other characters in generated docs. [ci skip] 2013-10-21 22:45:37 -07:00
John-David Dalton
4622e9658d Fix doc link hashes for github. [ci skip] 2013-10-21 21:31:08 -07:00
John-David Dalton
f8bda517c3 Add the rest of the underscore "Functions" tests to test/test.js. 2013-10-21 09:21:02 -07:00
John-David Dalton
de3d9fdb8b Fix more doc typos and add more underscore "Functions" tests to test/test.js. 2013-10-21 00:35:01 -07:00
John-David Dalton
c6291bea52 Fix various doc typos and update builds. 2013-10-20 23:48:33 -07:00
John-David Dalton
a266e3c898 Ensure functions are rebound correctly by shallow cloning the __bindData__ before passing it to createBound. [closes #371] 2013-10-20 23:45:53 -07:00
John-David Dalton
f9c34d6808 Add more underscore "functions" tests to test/test.js. 2013-10-20 23:35:42 -07:00
John-David Dalton
10a91cac2f Add more underscore _.template tests to test/test.js. 2013-10-20 17:38:57 -07:00
John-David Dalton
f7e25e9c63 Add note about _.create and update support section of readme. [ci skip] 2013-10-20 17:02:32 -07:00
Kevin Ji
5f821a58a3 Update contributor links. [ci skip] 2013-10-20 17:01:46 -07:00
Kevin Ji
4a2ad4e6f9 Use https for all Twitter contributor links 2013-10-20 13:17:30 -07:00
John-David Dalton
4a2bbb52c1 Fix remove circular dependency in _.create by adding baseCreate. 2013-10-19 16:20:15 -07:00
John-David Dalton
ed401199bd Allow _.create to accept a properties object and rebuild docs and other builds. 2013-10-19 14:57:12 -07:00
John-David Dalton
eee3a263f5 Add _.create to chaining docs. [ci skip] 2013-10-19 13:15:39 -07:00
John-David Dalton
eca1d9aabd Don't expose _.create for underscore build. 2013-10-19 08:38:57 -07:00
John-David Dalton
33ff9cfbb6 Add _.create and alias tests. 2013-10-19 01:08:32 -07:00
John-David Dalton
de8e6d7174 Add _.create. 2013-10-19 01:08:09 -07:00
John-David Dalton
cd9332cddf Add comment to _.parseInt. [ci skip] 2013-10-18 22:18:15 -07:00
John-David Dalton
fb4a861c0d Reduce _.wrap by taking advantage of createBound. 2013-10-18 08:21:30 -07:00
John-David Dalton
c30460df4c Optimize _.isBoolean, _.isNumber, and _.isString for the false case. 2013-10-17 23:59:02 -07:00
John-David Dalton
31e86a36f8 Ensure _.isEqual works with objects created by Object.create(null). 2013-10-17 22:53:40 -07:00
John-David Dalton
0b4fe85b33 Update vendor/curl to 0.8.4. 2013-10-17 09:05:46 -07:00
John-David Dalton
99e7a1705a Update vendor/requirejs to 2.1.9. 2013-10-16 23:28:34 -07:00
John-David Dalton
27c6259b53 Add more underscore "utilities" methods tests. 2013-10-15 22:28:01 -07:00
John-David Dalton
1ecae14bae Move Underscore's chaining tests to test/test.js. 2013-10-15 09:08:45 -07:00
John-David Dalton
c56a09f318 Add doc note to _.forEach about array-like objects. [closes #339] [ci skip] 2013-10-14 23:48:24 -07:00
John-David Dalton
ffec2699ea Add wiki resources page to the readme. [ci skip] 2013-10-14 22:52:00 -07:00
John-David Dalton
46faf0280c Add the rest of the underscore "Collections" tests to test/test.js. 2013-10-14 09:14:54 -07:00
John-David Dalton
3b774ed507 Add JavaScript Jabber podcast to readme. [ci skip] 2013-10-13 21:57:32 -07:00
John-David Dalton
9c62bbbc05 Use npm i shorthand in .travis.yml. [ci skip] 2013-10-13 19:19:08 -07:00
John-David Dalton
dc6b1ef47b More doc tweaks/cleanup. [ci skip]. 2013-10-13 18:06:23 -07:00
John-David Dalton
1f8e1d2a29 Fix typo in baseRandom doc. [ci skip] 2013-10-13 15:55:30 -07:00
John-David Dalton
b30a948601 Update builds, docs, and add a unit test for the _.findWhere alias. 2013-10-13 15:28:51 -07:00
John-David Dalton
e90568e044 Ensure .travis.yml builds the modern build, even though it's available under a different name. 2013-10-13 12:13:31 -07:00
John-David Dalton
c74b5ba3a2 Update vendor/qunit-clib to throw errors for failed tests in ringo, rhino, & narwhal. 2013-10-13 11:26:22 -07:00
John-David Dalton
2085d6afad Ensure minified builds don't mung eachRight. 2013-10-13 11:01:03 -07:00
John-David Dalton
8bfdbd0fed Ensure test fails are reported correctly via .travis.yml. 2013-10-13 10:44:08 -07:00
John-David Dalton
cc3dc6aff0 Fix doc typos. 2013-10-12 21:00:53 -07:00
John-David Dalton
d01284d147 Changes stooges to flintstones and add doc examples to _.findIndex, _.findLastIndex, _.findKey, and _.findLastKey for "_.pluck" and "_.where" shorthands. [closes #362] 2013-10-11 23:47:44 -07:00
John-David Dalton
7b7d5118d6 Add more Underscore "Collections" unit tests to test/test.js. 2013-10-11 23:39:27 -07:00
John-David Dalton
a03a7dcb4a Update vendor/backbone to v1.1.0. 2013-10-10 22:27:32 -07:00
John-David Dalton
dfae413afc Move more Underscore tests into test/test.js. 2013-10-09 21:52:04 -07:00
John-David Dalton
253642a85e Cleanup _.throttle return statement. 2013-10-08 19:33:59 -07:00
John-David Dalton
ce64c8e7d1 Update tested Chrome version in readme. [ci skip] 2013-10-08 00:37:45 -07:00
John-David Dalton
d7ae0105c3 Fix typo in _.range test. 2013-10-07 23:52:15 -07:00
John-David Dalton
e7320e7bd3 Fix typo in _.range doc example. 2013-10-07 23:49:58 -07:00
John-David Dalton
a214565803 Add Underscore's "Array" method category tests to test/test.js. 2013-10-07 23:49:03 -07:00
John-David Dalton
61f1290bea Update vendor/curl.js to v0.8.2. 2013-10-06 23:57:58 -07:00
John-David Dalton
ba5e512d10 Ensure _.template supports single line comments in "evaluate" delimiters in minified builds. [closes #361] 2013-10-05 23:21:47 -07:00
John-David Dalton
624e4bca40 Tweak __bindData__ detection in createBound. 2013-10-04 23:17:06 -07:00
John-David Dalton
613237727d Update path to perf-ui.js in perf/index.html. [ci skip] 2013-10-04 22:36:43 -07:00
John-David Dalton
fd2ddca6f2 Extend baseCreateCallback to functions bound with native Function#bind and those with __bindData__ of false. 2013-10-04 22:35:45 -07:00
John-David Dalton
e114c18031 Ensure _.template coerces the text argument to a string. 2013-10-03 23:30:49 -07:00
John-David Dalton
49e22742de Add test for incorrectly shimmed Object.create. 2013-10-03 09:42:32 -07:00
John-David Dalton
422d7942ef Bump to v2.2.1. 2013-10-03 00:30:29 -07:00
John-David Dalton
a63e7162bc Make doc/parse.php read the version from package.json. [ci skip] 2013-10-02 23:21:41 -07:00
John-David Dalton
1f973b72b8 Keep createObject fallback for modern builds. 2013-10-02 19:47:15 -07:00
John-David Dalton
d3dd97f167 Fix _.mixin creates functions that respect __chain__. 2013-10-02 19:30:49 -07:00
John-David Dalton
f0f17e0041 Updated the tested version of Node.js to 0.10.20 in readme. [ci skip] 2013-10-01 22:20:26 -07:00
John-David Dalton
d6fa8bf233 Add _.pluck to backbone.html in anticipation of Backbone's version bump. [ci skip] 2013-10-01 22:04:43 -07:00
John-David Dalton
ec5e685a1c Remove unneeded keywords from component.json. [ci skip] 2013-10-01 08:39:03 -07:00
John-David Dalton
c88b95751c Reduce setting MAKE in .travis.yml. 2013-09-30 20:21:59 -07:00
John-David Dalton
72ae25bc53 Log the params passed to test.js to the console. 2013-09-30 19:33:18 -07:00
John-David Dalton
02e5cc1da8 Add asset folders and cache busting to worker.js. 2013-09-30 18:53:04 -07:00
John-David Dalton
3d092df56d Tweak isModularize detection. [ci skip] 2013-09-29 20:33:13 -07:00
John-David Dalton
912d5c700c Change before_script to the more appropriate before_install in .travis.yml. 2013-09-29 20:21:45 -07:00
John-David Dalton
6d3c492518 Extend test/test.js to support testing generated npm packages. 2013-09-29 19:19:02 -07:00
186 changed files with 98623 additions and 55991 deletions

12
.editorconfig Normal file
View File

@@ -0,0 +1,12 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

4
.gitattributes vendored
View File

@@ -1,5 +1 @@
* text=auto
*.html text eol=lf
*.js text eol=lf
*.md text eol=lf
*.sh text eol=lf

78
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,78 @@
# Contributing to Lodash
Contributions are always welcome. Before contributing please read the
[code of conduct](https://js.foundation/community/code-of-conduct) &
[search the issue tracker](https://github.com/lodash/lodash/issues); your issue
may have already been discussed or fixed in `master`. To contribute,
[fork](https://help.github.com/articles/fork-a-repo/) Lodash, commit your changes,
& [send a pull request](https://help.github.com/articles/using-pull-requests/).
## Feature Requests
Feature requests should be submitted in the
[issue tracker](https://github.com/lodash/lodash/issues), with a description of
the expected behavior & use case, where theyll remain closed until sufficient interest,
[e.g. :+1: reactions](https://help.github.com/articles/about-discussions-in-issues-and-pull-requests/),
has been [shown by the community](https://github.com/lodash/lodash/issues?q=label%3A%22votes+needed%22+sort%3Areactions-%2B1-desc).
Before submitting a request, please search for similar ones in the
[closed issues](https://github.com/lodash/lodash/issues?q=is%3Aissue+is%3Aclosed+label%3Aenhancement).
## Pull Requests
For additions or bug fixes you should only need to modify `lodash.js`. Include
updated unit tests in the `test` directory as part of your pull request. Dont
worry about regenerating the `dist/` or `doc/` files.
Before running the unit tests youll need to install, `npm i`,
[development dependencies](https://docs.npmjs.com/files/package.json#devdependencies).
Run unit tests from the command-line via `npm test`, or open `test/index.html` &
`test/fp.html` in a web browser. The [Backbone](http://backbonejs.org/) &
[Underscore](http://underscorejs.org/) test suites are included as well.
## Contributor License Agreement
Lodash is a member of the [Open JS Foundation](https://openjsf.org/).
As such, we request that all contributors sign our
[contributor license agreement (CLA)](https://js.foundation/CLA/).
For more information about CLAs, please check out Alex Russells excellent post,
[“Why Do I Need to Sign This?”](https://infrequently.org/2008/06/why-do-i-need-to-sign-this/).
## Coding Guidelines
In addition to the following guidelines, please follow the conventions already
established in the code.
- **Spacing**:<br>
Use two spaces for indentation. No tabs.
- **Naming**:<br>
Keep variable & method names concise & descriptive.<br>
Variable names `index`, `array`, & `iteratee` are preferable to
`i`, `arr`, & `fn`.
- **Quotes**:<br>
Single-quoted strings are preferred to double-quoted strings; however,
please use a double-quoted string if the value contains a single-quote
character to avoid unnecessary escaping.
- **Comments**:<br>
Please use single-line comments to annotate significant additions, &
[JSDoc-style](http://www.2ality.com/2011/08/jsdoc-intro.html) comments for
functions.
Guidelines are enforced using [JSCS](https://www.npmjs.com/package/jscs):
```bash
$ npm run style
```
## Tips
You can opt-in to a pre-push git hook by adding an `.opt-in` file to the root of
the project containing:
```txt
pre-push
```
With that, when you `git push`, the pre-push git hook will trigger and execute
`npm run validate`.

10
.gitignore vendored
View File

@@ -1,10 +1,4 @@
.DS_Store
*.custom.*
*.template.*
*.map
/*.min.*
modularize
*.log
doc/*.html
node_modules
dist/*.backbone.*
dist/*.legacy.*
dist/*.mobile.*

97
.jscsrc Normal file
View File

@@ -0,0 +1,97 @@
{
"maxErrors": "2000",
"maximumLineLength": {
"value": 180,
"allExcept": ["comments", "functionSignature", "regex"]
},
"requireCurlyBraces": [
"if",
"else",
"for",
"while",
"do",
"try",
"catch"
],
"requireOperatorBeforeLineBreak": [
"=",
"+",
"-",
"/",
"*",
"==",
"===",
"!=",
"!==",
">",
">=",
"<",
"<="
],
"requireSpaceAfterKeywords": [
"if",
"else",
"for",
"while",
"do",
"switch",
"return",
"try",
"catch"
],
"requireSpaceBeforeBinaryOperators": [
"=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=",
"&=", "|=", "^=",
"+", "-", "*", "/", "%", "<<", ">>", ">>>", "&",
"|", "^", "&&", "||", "===", "==", ">=",
"<=", "<", ">", "!=", "!=="
],
"requireSpacesInFunctionExpression": {
"beforeOpeningCurlyBrace": true
},
"requireCamelCaseOrUpperCaseIdentifiers": true,
"requireDotNotation": { "allExcept": ["keywords"] },
"requireEarlyReturn": true,
"requireLineFeedAtFileEnd": true,
"requireSemicolons": true,
"requireSpaceAfterBinaryOperators": true,
"requireSpacesInConditionalExpression": true,
"requireSpaceBeforeObjectValues": true,
"requireSpaceBeforeBlockStatements": true,
"requireSpacesInForStatement": true,
"validateIndentation": 2,
"validateParameterSeparator": ", ",
"validateQuoteMarks": { "mark": "'", "escape": true },
"disallowSpacesInAnonymousFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInFunctionDeclaration": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowKeywords": ["with"],
"disallowMixedSpacesAndTabs": true,
"disallowMultipleLineBreaks": true,
"disallowNewlineBeforeBlockStatements": true,
"disallowSpaceAfterObjectKeys": true,
"disallowSpaceAfterPrefixUnaryOperators": true,
"disallowSpacesInCallExpression": true,
"disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideParentheses": true,
"disallowTrailingWhitespace": true,
"disallowUnusedVariables": true,
"jsDoc": {
"checkRedundantAccess": true,
"checkTypes": true,
"requireNewlineAfterDescription": true,
"requireParamDescription": true,
"requireParamTypes": true,
"requireReturnTypes": true
}
}

View File

@@ -0,0 +1,11 @@
'use strict';
delete global['__core-js_shared__'];
const _ = require('./lodash.js');
const globals = require('lodash-doc-globals');
module.exports = {
'babel': false,
'globals': _.assign({ '_': _ }, globals)
};

View File

@@ -1,57 +1,135 @@
language: node_js
sudo: false
node_js:
- "0.6"
- "0.8"
- "0.10"
- 7
addons:
jwt:
secure: OYhRpW+8A0Iik+9GmHwa45ZwXeBXw/6zh6I+1w2H9g/LqPRp+Nhq3f4FSpvrrfno8lO8W4h+7s6+JOzF8C8NxNda5UUygKjF9pUphgiQdqls3YZMJlC9zXVl7gQXAHi3nG1s8vWSpwpzYD9fqczE1FX9n0+R63qX3eB6C/LbPeI=
cache:
directories:
- ~/.npm
- ~/.yarn-cache
- travis_phantomjs
env:
global:
- BIN="node" BUILD=false MAKE=false OPTION=""
- BIN=node ISTANBUL=false OPTION=""
- SAUCE_LABS=false SAUCE_USERNAME=lodash
matrix:
- BUILD="compat"
- BUILD="modern"
- BUILD="legacy" MAKE=true
- BUILD="mobile" MAKE=true
- BIN="phantomjs" BUILD="compat"
- BIN="phantomjs" BUILD="legacy" MAKE=true
- BIN="phantomjs" BUILD="mobile" MAKE=true
-
- BIN=phantomjs
- ISTANBUL=true
- SAUCE_LABS=true
matrix:
include:
- node_js: "0.10"
env: BIN="istanbul"
- node_js: "0.10"
env: BIN="narwhal" BUILD="compat"
- node_js: "0.10"
env: BIN="narwhal" BUILD="legacy" MAKE=true
- node_js: "0.10"
env: BIN="rhino" BUILD="compat"
- node_js: "0.10"
env: BIN="rhino" BUILD="legacy" MAKE=true
- node_js: "0.10"
env: BIN="rhino" BUILD="compat" OPTION="-require"
- node_js: "0.10"
env: BIN="rhino" BUILD="legacy" MAKE=true OPTION="-require"
- node_js: "0.10"
env: BIN="ringo" BUILD="compat"
- node_js: "0.10"
env: BIN="ringo" BUILD="legacy" MAKE=true
- node_js: 6
env:
git:
depth: 1
depth: 10
branches:
only:
- master
before_script:
- "[ $BIN == 'istanbul' ] && npm install -g istanbul || true"
- "[ $BIN == 'narwhal' ] && wget https://github.com/280north/narwhal/archive/v0.3.2.zip && sudo unzip v0.3.2 -d /opt/ && rm v0.3.2.zip || true"
- "[ $BIN == 'narwhal' ] && sudo ln -s /opt/narwhal-0.3.2/bin/narwhal /usr/local/bin/narwhal && sudo chmod +x /usr/local/bin/narwhal || true"
- "[ $BIN == 'rhino' ] && sudo mkdir /opt/rhino-1.7R5 && sudo wget -O /opt/rhino-1.7R5/js.jar https://oss.sonatype.org/content/repositories/snapshots/org/mozilla/rhino/1.7R5-SNAPSHOT/rhino-1.7R5-20120629.144839-4.jar || true"
- "[ $BIN == 'rhino' ] && echo -e '#!/bin/sh\\njava -jar /opt/rhino-1.7R5/js.jar $@' | sudo tee /usr/local/bin/rhino && sudo chmod +x /usr/local/bin/rhino || true"
- "[ $BIN == 'ringo' ] && wget http://ringojs.org/downloads/ringojs-0.9.zip && sudo unzip ringojs-0.9 -d /opt && rm ringojs-0.9.zip || true"
- "[ $BIN == 'ringo' ] && sudo ln -s /opt/ringojs-0.9/bin/ringo /usr/local/bin/ringo && sudo chmod +x /usr/local/bin/ringo || true"
- 4.17
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/4aab6358b0e9aed0b628
on_success: change
on_failure: always
before_install:
# Upgrade PhantomJS.
- |
export PHANTOMJS_VERSION=2.1.1
export PATH=$PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin:$PATH
if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then
rm -rf $PWD/travis_phantomjs
mkdir -p $PWD/travis_phantomjs
wget https://github.com/Medium/phantomjs/releases/download/v$PHANTOMJS_VERSION/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2
tar -xvf phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs
fi
phantomjs -v
# Use exact Node version.
- nvm use $TRAVIS_NODE_VERSION
# Setup package managers.
- npm set loglevel error
- npm set progress false
- npm i -g yarn@0.16.1
- yarn -V
# Remove code skipped on the coverage run.
- |
PATTERN[0]="|\s*while\s*\([^)]+\)\s*\{\s*iteratee\(index\);\s*\}|"
PATTERN[1]="|\bindex,\s*iterable\)\s*===\s*false\)[^}]+?(break;)|"
PATTERN[2]="|\bcase\s+(?:dataView|promise|set|map|weakMap)CtorString:.+|g"
PATTERN[3]="|\s*if\s*\(cache\.size\b[\s\S]+?\}|"
PATTERN[4]="|\s*if\s*\(\!lodashFunc\)\s*\{\s*return;\s*\}|"
PATTERN[5]="|\s*define\([\s\S]+?\);|"
PATTERN[6]="|\s*root\._\s*=\s*_;|"
if [ $ISTANBUL = true ]; then
set -e
for PTRN in ${PATTERN[@]}; do
node ./test/remove.js $PTRN ./lodash.js
done
fi
install:
# Install packages.
- yarn
# Use lodash-cli from GitHub. Temporarily use a fork.
- git clone --depth=10 --branch=master git://github.com/bnjmnt4n/lodash-cli ./node_modules/lodash-cli
- cd ./node_modules/lodash-cli/; npm i --production; cd ../../
- mkdir -p ./node_modules/lodash-cli/node_modules/lodash; cd $_; cp ../../../../lodash.js ./lodash.js; cp ../../../../package.json ./package.json; cd ../../../../
script:
- "[ $BIN == 'istanbul' ] && $BIN cover ./test/test.js || true"
- "[ $MAKE != false ] && git clone --depth=1 --branch=master git://github.com/lodash/lodash-cli.git ./node_modules/lodash-cli || true"
- "[ $MAKE != false ] && mkdir ./node_modules/lodash-cli/node_modules && cd ./node_modules/lodash-cli/node_modules/ && ln -s ../../../ ./lodash && cd ../ && npm i . && cd ../../ || true"
- "[ $MAKE != false ] && node ./node_modules/lodash-cli/bin/lodash $BUILD -o ./dist/lodash.$BUILD.js || true"
- "[ $BUILD != false ] && cd ./test || true"
- "[ $BUILD != false ] && $BIN $OPTION ./test.js ../dist/lodash.$BUILD.js || true"
- "[ $BUILD != false ] && $BIN $OPTION ./test.js ../dist/lodash.$BUILD.min.js || true"
# Detect code coverage.
- |
if [ $ISTANBUL = true ]; then
istanbul cover -x "**/vendor/**" --report lcovonly ./test/test.js -- ./lodash.js
if [ $TRAVIS_SECURE_ENV_VARS = true ]; then
cat ./coverage/lcov.info | coveralls
cat ./coverage/coverage.json | codecov
fi
fi
# Test in Node.js and PhantomJS.
- |
if [ $ISTANBUL = false ]; then
node ./node_modules/lodash-cli/bin/lodash -o ./dist/lodash.js
node ./node_modules/lodash-cli/bin/lodash modularize exports=node -o ./
node ./node_modules/lodash-cli/bin/lodash -d -o ./lodash.js
if [ $SAUCE_LABS = false ]; then
cd ./test
$BIN $OPTION ./test.js ../lodash.js
if [ $TRAVIS_SECURE_ENV_VARS = true ]; then
$BIN $OPTION ./test.js ../dist/lodash.min.js
fi
fi
fi
# Test in Sauce Labs.
- |
if [ $SAUCE_LABS = true ]; then
node ./node_modules/lodash-cli/bin/lodash core -o ./dist/lodash.core.js
npm run build
$BIN ./test/saucelabs.js name="lodash tests" runner="test/index.html?build=../dist/lodash.js&noglobals=true" tags=development
$BIN ./test/saucelabs.js name="lodash tests" runner="test/index.html?build=../dist/lodash.min.js&noglobals=true" tags=production
$BIN ./test/saucelabs.js name="lodash-fp tests" runner="test/fp.html?noglobals=true" tags=development
$BIN ./test/saucelabs.js name="underscore tests" runner="test/underscore.html?build=../dist/lodash.js" tags=development,underscore
$BIN ./test/saucelabs.js name="underscore tests" runner="test/underscore.html?build=../dist/lodash.min.js" tags=production,underscore
$BIN ./test/saucelabs.js name="backbone tests" runner="test/backbone.html?build=../dist/lodash.js" tags=development,backbone
$BIN ./test/saucelabs.js name="backbone tests" runner="test/backbone.html?build=../dist/lodash.min.js" tags=production,backbone
$BIN ./test/saucelabs.js name="backbone tests" runner="test/backbone.html?build=../dist/lodash.core.js" tags=development,backbone
$BIN ./test/saucelabs.js name="backbone tests" runner="test/backbone.html?build=../dist/lodash.core.min.js" tags=production,backbone
fi

1
CHANGELOG Normal file
View File

@@ -0,0 +1 @@
https://github.com/lodash/lodash/wiki/Changelog

View File

@@ -1,35 +0,0 @@
# Contributing to Lo-Dash
If youd like to contribute a feature or bug fix, you can [fork](https://help.github.com/articles/fork-a-repo) Lo-Dash, commit your changes, and [send a pull request](https://help.github.com/articles/using-pull-requests).
Please make sure to [search the issue tracker](https://github.com/lodash/lodash/issues) first; your issue may have already been discussed or fixed in `master`.
## Tests
Include updated unit tests in the `test` directory as part of your pull request.
You can run the tests from the command line via `node test/test`, or open `test/index.html` in a web browser.
The `test/run-test.sh` script attempts to run the tests in [Rhino](https://developer.mozilla.org/en-US/docs/Rhino), [Narwhal](https://github.com/280north/narwhal), [RingoJS](http://ringojs.org/), [PhantomJS](http://phantomjs.org/), and [Node](http://nodejs.org/), before running them in your default browser.
The [Backbone](http://backbonejs.org/) and [Underscore](http://http://underscorejs.org/) test suites are included as well.
## Contributor License Agreement
Lo-Dash is a member of the [Dojo Foundation](http://dojofoundation.org/).
As such, we request that all contributors sign the Dojo Foundation [contributor license agreement](http://dojofoundation.org/about/claForm).
For more information about CLAs, please check out Alex Russells excellent post, [“Why Do I Need to Sign This?”](http://infrequently.org/2008/06/why-do-i-need-to-sign-this/).
## Coding Guidelines
In addition to the following guidelines, please follow the conventions already established in the code.
- **Spacing**:<br>
Use two spaces for indentation. No tabs.
- **Naming**:<br>
Keep variable and method names concise and descriptive.<br>
Variable names `index`, `collection`, and `callback` are preferable to `i`, `arr`, and `fn`.
- **Quotes**:<br>
Single-quoted strings are preferred to double-quoted strings; however, please use a double-quoted string if the value contains a single-quote character to avoid unnecessary escaping.
- **Comments**:<br>
Please use single-line comments to annotate significant additions, and [JSDoc-style](http://www.2ality.com/2011/08/jsdoc-intro.html) comments for new methods.

View File

@@ -1,7 +1,17 @@
Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas,
Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/lodash/lodash
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
@@ -19,4 +29,19 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
documentation.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
Files located in the node_modules and vendor directories are externally
maintained libraries used by this software which have their own
licenses; we recommend you read them, as their terms may differ from the
terms above.

179
README.md
View File

@@ -1,143 +1,80 @@
# Lo-Dash v2.2.0
A utility library delivering consistency, [customization](http://lodash.com/custom-builds), [performance](http://lodash.com/benchmarks), & [extras](http://lodash.com/#features).
# lodash v4.17.21
[Site](https://lodash.com/) |
[Docs](https://lodash.com/docs) |
[FP Guide](https://github.com/lodash/lodash/wiki/FP-Guide) |
[Contributing](https://github.com/lodash/lodash/blob/master/.github/CONTRIBUTING.md) |
[Wiki](https://github.com/lodash/lodash/wiki "Changelog, Roadmap, etc.") |
[Code of Conduct](https://js.foundation/conduct/) |
[Twitter](https://twitter.com/bestiejs) |
[Chat](https://gitter.im/lodash/lodash)
The [Lodash](https://lodash.com/) library exported as a [UMD](https://github.com/umdjs/umd) module.
Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
```shell
$ npm run build
$ lodash -o ./dist/lodash.js
$ lodash core -o ./dist/lodash.core.js
```
## Download
* Modern builds perfect for newer browsers/environments:<br>
[Development](https://raw.github.com/lodash/lodash/2.2.0/dist/lodash.js) &
[Production](https://raw.github.com/lodash/lodash/2.2.0/dist/lodash.min.js)
* [Core build](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.core.min.js))
* [Full build](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.js) ([~24 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.21/dist/lodash.min.js))
* [CDN copies](https://www.jsdelivr.com/projects/lodash)
* Compatibility builds for older environment support too:<br>
[Development](https://raw.github.com/lodash/lodash/2.2.0/dist/lodash.compat.js) &
[Production](https://raw.github.com/lodash/lodash/2.2.0/dist/lodash.compat.min.js)
Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.17.21/LICENSE) & supports modern environments.<br>
Review the [build differences](https://github.com/lodash/lodash/wiki/build-differences) & pick one thats right for you.
* Underscore builds to use as a drop-in replacement:<br>
[Development](https://raw.github.com/lodash/lodash/2.2.0/dist/lodash.underscore.js) &
[Production](https://raw.github.com/lodash/lodash/2.2.0/dist/lodash.underscore.min.js)
CDN copies are available on [cdnjs](http://cdnjs.com/libraries/lodash.js/) & [jsDelivr](http://www.jsdelivr.com/#!lodash).<br>
For smaller file sizes, create [custom builds](http://lodash.com/custom-builds) with only the features needed.<br>
Love modules? Weve got you covered with [lodash-amd](https://npmjs.org/package/lodash-amd), [lodash-node](https://npmjs.org/package/lodash-node), & [npm packages](https://npmjs.org/browse/keyword/lodash-modularized) per method.
## Dive in
Theres plenty of [documentation](http://lodash.com/docs), [unit tests](http://lodash.com/tests), & [benchmarks](http://lodash.com/benchmarks).<br>
For a list of upcoming features, check out our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap).<br>
The full changelog for this release is available on our [wiki](https://github.com/lodash/lodash/wiki/Changelog).
## Features *not* in Underscore
* AMD loader support ([curl](https://github.com/cujojs/curl), [dojo](http://dojotoolkit.org/), [requirejs](http://requirejs.org/), etc.)
* [_(…)](http://lodash.com/docs#_) supports intuitive chaining
* [_.at](http://lodash.com/docs#at) for cherry-picking collection values
* [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods
* [_.clone](http://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects
* [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays & objects
* [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex`
* [_.createCallback](http://lodash.com/docs#createCallback) for extending callbacks in methods & mixins
* [_.curry](http://lodash.com/docs#curry) for creating [curried](http://hughfdjackson.com/javascript/2013/07/06/why-curry-helps/) functions
* [_.debounce](http://lodash.com/docs#debounce) & [_.throttle](http://lodash.com/docs#throttle) accept additional `options` for more control
* [_.findIndex](http://lodash.com/docs#findIndex) & [_.findKey](http://lodash.com/docs#findKey) for finding indexes & keys
* [_.forEach](http://lodash.com/docs#forEach) is chainable & supports exiting early
* [_.forIn](http://lodash.com/docs#forIn) for iterating own & inherited properties
* [_.forOwn](http://lodash.com/docs#forOwn) for iterating own properties
* [_.isPlainObject](http://lodash.com/docs#isPlainObject) for checking if values are created by `Object`
* [_.memoize](http://lodash.com/docs#memoize) exposes the `cache` of memoized functions
* [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend)
* [_.parseInt](http://lodash.com/docs#parseInt) for consistent behavior
* [_.partialRight](http://lodash.com/docs#partialRight) for [partial application](http://lodash.com/docs#partial) from the right
* [_.pull](http://lodash.com/docs#pull) & [_.remove](http://lodash.com/docs#remove) for mutating arrays
* [_.random](http://lodash.com/docs#random) supports returning floating-point numbers
* [_.runInContext](http://lodash.com/docs#runInContext) for easier mocking
* [_.support](http://lodash.com/docs#support) for flagging environment features
* [_.template](http://lodash.com/docs#template) supports [*“imports”*](http://lodash.com/docs#templateSettings_imports) options & [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6)
* [_.transform](http://lodash.com/docs#transform) as a powerful alternative to [_.reduce](http://lodash.com/docs#reduce) for transforming objects
* [_.where](http://lodash.com/docs#where) supports deep object comparisons
* [_.zip](http://lodash.com/docs#zip) is capable of unzipping values
* [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), &
[more](http://lodash.com/docs "_.assign, _.clone, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept callbacks
* [_.contains](http://lodash.com/docs#contains), [_.toArray](http://lodash.com/docs#toArray), &
[more](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.forEachRight, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.where") accept strings
* [_.filter](http://lodash.com/docs#filter), [_.map](http://lodash.com/docs#map), &
[more](http://lodash.com/docs "_.countBy, _.every, _.find, _.findKey, _.findLast, _.findLastIndex, _.findLastKey, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* & *“_.where”* shorthands
* [_.findLast](http://lodash.com/docs#findLast), [_.findLastIndex](http://lodash.com/docs#findLastIndex), &
[more](http://lodash.com/docs "_.findLastKey, _.forEachRight, _.forInRight, _.forOwnRight") right-associative methods
## Resources
* Posts
- [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/)
- [Custom builds in Lo-Dash 2.0](http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/)
* Videos
- [Introduction](https://vimeo.com/44154599)
- [Origins](https://vimeo.com/44154600)
- [Optimizations & builds](https://vimeo.com/44154601)
- [Native method use](https://vimeo.com/48576012)
- [Testing](https://vimeo.com/45865290)
- [CascadiaJS 12](http://www.youtube.com/watch?v=dpPy4f_SeEk)
## Support
Tested in Chrome 5~29, Firefox 2~24, IE 6-10, Opera 9.25~16, Safari 3-6, Node.js 0.6.8-0.10.18, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.
## Installation & usage
In browsers:
## Installation
In a browser:
```html
<script src="lodash.js"></script>
```
Using [`npm`](http://npmjs.org/):
```bash
npm i --save lodash
{sudo} npm i -g lodash
npm ln lodash
Using npm:
```shell
$ npm i -g npm
$ npm i --save lodash
```
In [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/):
In Node.js:
```js
// Load the full build.
var _ = require('lodash');
// or as Underscore
var _ = require('lodash/dist/lodash.underscore');
// Load the core build.
var _ = require('lodash/core');
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require('lodash/fp');
// Load method categories.
var array = require('lodash/array');
var object = require('lodash/fp/object');
// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require('lodash/at');
var curryN = require('lodash/fp/curryN');
```
**Notes:**
* Dont assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL
* If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your projects root directory *before* requiring it
* Node.js 0.10.8-0.10.11 [have](https://github.com/joyent/node/issues/5622) [bugs](https://github.com/joyent/node/issues/5688) preventing minified builds
**Note:**<br>
Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL.
In [Rhino](http://www.mozilla.org/rhino/):
## Why Lodash?
```js
load('lodash.js');
```
Lodash makes JavaScript easier by taking the hassle out of working with arrays,<br>
numbers, objects, strings, etc. Lodashs modular methods are great for:
In an AMD loader:
* Iterating arrays, objects, & strings
* Manipulating & testing values
* Creating composite functions
```js
require({
'packages': [
{ 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' }
]
},
['lodash'], function(_) {
console.log(_.VERSION);
});
```
## Module Formats
## Author
Lodash is available in a [variety of builds](https://lodash.com/custom-builds) & module formats.
| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton "Follow @jdalton on Twitter") |
|---|
| [John-David Dalton](http://allyoucanleet.com/) |
## Contributors
| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](http://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") |
|---|---|---|
| [Blaine Bublitz](http://iceddev.com/) | [Kit Cambridge](http://kitcambridge.github.io/) | [Mathias Bynens](http://mathiasbynens.be/) |
* [lodash](https://www.npmjs.com/package/lodash) & [per method packages](https://www.npmjs.com/browse/keyword/lodash-modularized)
* [lodash-es](https://www.npmjs.com/package/lodash-es), [babel-plugin-lodash](https://www.npmjs.com/package/babel-plugin-lodash), & [lodash-webpack-plugin](https://www.npmjs.com/package/lodash-webpack-plugin)
* [lodash/fp](https://github.com/lodash/lodash/tree/npm/fp)
* [lodash-amd](https://www.npmjs.com/package/lodash-amd)

View File

@@ -1,23 +0,0 @@
{
"name": "lodash",
"version": "2.2.0",
"main": "dist/lodash.compat.js",
"ignore": [
".*",
"*.custom.*",
"*.template.*",
"*.map",
"*.md",
"/*.min.*",
"/lodash.js",
"index.js",
"component.json",
"package.json",
"doc",
"modularize",
"node_modules",
"perf",
"test",
"vendor"
]
}

View File

@@ -1,12 +0,0 @@
{
"name": "lodash",
"repo": "lodash/lodash",
"version": "2.2.0",
"description": "A utility library delivering consistency, customization, performance, & extras.",
"license": "MIT",
"keywords": ["amd", "browser", "client", "customize", "functional", "performance", "server", "speed", "util"],
"scripts": [
"index.js",
"dist/lodash.compat.js"
]
}

6704
dist/lodash.compat.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,56 +0,0 @@
/**
* @license
* Lo-Dash 2.2.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
* Build: `lodash -o ./dist/lodash.compat.js`
*/
;(function(){function n(n,t,e){e=(e||0)-1;for(var r=n?n.length:0;++e<r;)if(n[e]===t)return e;return-1}function t(t,e){var r=typeof e;if(t=t.l,"boolean"==r||null==e)return t[e]?0:-1;"number"!=r&&"string"!=r&&(r="object");var u="number"==r?e:_+e;return t=(t=t[r])&&t[u],"object"==r?t&&-1<n(t,e)?0:-1:t?0:-1}function e(n){var t=this.l,e=typeof n;if("boolean"==e||null==n)t[n]=!0;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?n:_+n,t=t[e]||(t[e]={});"object"==e?(t[r]||(t[r]=[])).push(n):t[r]=!0
}}function r(n){return n.charCodeAt(0)}function u(n,t){var e=n.m,r=t.m;if(e!==r){if(e>r||typeof e=="undefined")return 1;if(e<r||typeof r=="undefined")return-1}return n.n-t.n}function o(n){var t=-1,r=n.length,u=n[0],o=n[0|r/2],a=n[r-1];if(u&&typeof u=="object"&&o&&typeof o=="object"&&a&&typeof a=="object")return!1;for(u=l(),u["false"]=u["null"]=u["true"]=u.undefined=!1,o=l(),o.k=n,o.l=u,o.push=e;++t<r;)o.push(n[t]);return o}function a(n){return"\\"+Z[n]}function i(){return y.pop()||[]}function l(){return m.pop()||{k:null,l:null,m:null,"false":!1,n:0,"null":!1,number:null,object:null,push:null,string:null,"true":!1,undefined:!1,o:null}
}function f(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}function c(){}function p(n){n.length=0,y.length<j&&y.push(n)}function s(n){var t=n.l;t&&s(t),n.k=n.l=n.m=n.object=n.number=n.string=n.o=null,m.length<j&&m.push(n)}function g(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);var r=-1;e=e-t||0;for(var u=Array(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function h(e){function y(n){return n&&typeof n=="object"&&!Je(n)&&de.call(n,"__wrapped__")?n:new m(n)}function m(n,t){this.__chain__=!!t,this.__wrapped__=n
}function j(n,t,e,r,u){if(e){var o=e(n);if(typeof o!="undefined")return o}if(!_t(n))return n;var a=ke.call(n);if(!U[a]||!We.nodeClass&&f(n))return n;var l=qe[a];switch(a){case z:case q:return new l(+n);case G:case H:return new l(n);case M:return o=l(n.source,I.exec(n)),o.lastIndex=n.lastIndex,o}if(a=Je(n),t){var c=!r;r||(r=i()),u||(u=i());for(var s=r.length;s--;)if(r[s]==n)return u[s];o=a?l(n.length):{}}else o=a?g(n):er({},n);return a&&(de.call(n,"index")&&(o.index=n.index),de.call(n,"input")&&(o.input=n.input)),t?(r.push(n),u.push(o),(a?tr:or)(n,function(n,a){o[a]=j(n,t,e,r,u)
}),c&&(p(r),p(u)),o):o}function Z(n,t,e){if(typeof n!="function")return Ht;if(typeof t=="undefined")return n;var r=n.__bindData__||We.funcNames&&!n.name;if(typeof r=="undefined"){var u=P&&ye.call(n);We.funcNames||!u||A.test(u)||(r=!0),(We.funcNames||!r)&&(r=!We.funcDecomp||P.test(u),Ge(n,r))}if(true!==r&&r&&1&r[1])return n;switch(e){case 1:return function(e){return n.call(t,e)};case 2:return function(e,r){return n.call(t,e,r)};case 3:return function(e,r,u){return n.call(t,e,r,u)};case 4:return function(e,r,u,o){return n.call(t,e,r,u,o)
}}return Gt(n,t)}function tt(n,t,e,r){r=(r||0)-1;for(var u=n?n.length:0,o=[];++r<u;){var a=n[r];if(a&&typeof a=="object"&&typeof a.length=="number"&&(Je(a)||vt(a))){t||(a=tt(a,t,e));var i=-1,l=a.length,f=o.length;for(o.length+=l;++i<l;)o[f++]=a[i]}else e||o.push(a)}return o}function et(n,t,e,r,u,o){if(e){var a=e(n,t);if(typeof a!="undefined")return!!a}if(n===t)return 0!==n||1/n==1/t;if(n===n&&!(n&&Y[typeof n]||t&&Y[typeof t]))return!1;if(null==n||null==t)return n===t;var l=ke.call(n),c=ke.call(t);
if(l==L&&(l=J),c==L&&(c=J),l!=c)return!1;switch(l){case z:case q:return+n==+t;case G:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case M:case H:return n==oe(t)}if(c=l==T,!c){if(de.call(n,"__wrapped__")||de.call(t,"__wrapped__"))return et(n.__wrapped__||n,t.__wrapped__||t,e,r,u,o);if(l!=J||!We.nodeClass&&(f(n)||f(t)))return!1;var l=!We.argsObject&&vt(n)?re:n.constructor,s=!We.argsObject&&vt(t)?re:t.constructor;if(l!=s&&!(bt(l)&&l instanceof l&&bt(s)&&s instanceof s))return!1}for(s=!u,u||(u=i()),o||(o=i()),l=u.length;l--;)if(u[l]==n)return o[l]==t;
var g=0,a=!0;if(u.push(n),o.push(t),c){if(l=n.length,g=t.length,a=g==n.length,!a&&!r)return a;for(;g--;)if(c=l,s=t[g],r)for(;c--&&!(a=et(n[c],s,e,r,u,o)););else if(!(a=et(n[g],s,e,r,u,o)))break;return a}return ur(t,function(t,i,l){return de.call(l,i)?(g++,a=de.call(n,i)&&et(n[i],t,e,r,u,o)):void 0}),a&&!r&&ur(n,function(n,t,e){return de.call(e,t)?a=-1<--g:void 0}),s&&(p(u),p(o)),a}function ut(n,t,e,r,u){(Je(t)?St:or)(t,function(t,o){var a,i,l=t,f=n[o];if(t&&((i=Je(t))||ar(t))){for(l=r.length;l--;)if(a=r[l]==t){f=u[l];
break}if(!a){var c;e&&(l=e(f,t),c=typeof l!="undefined")&&(f=l),c||(f=i?Je(f)?f:[]:ar(f)?f:{}),r.push(t),u.push(f),c||ut(f,t,e,r,u)}}else e&&(l=e(f,t),typeof l=="undefined"&&(l=t)),typeof l!="undefined"&&(f=l);n[o]=f})}function at(e,r,u){var a=-1,l=st(),f=e?e.length:0,c=[],g=!r&&f>=w&&l===n,h=u||g?i():c;if(g){var v=o(h);v?(l=t,h=v):(g=!1,h=u?h:(p(h),c))}for(;++a<f;){var v=e[a],y=u?u(v,a,e):v;(r?!a||h[h.length-1]!==y:0>l(h,y))&&((u||g)&&h.push(y),c.push(v))}return g?(p(h.k),s(h)):u&&p(h),c}function it(n){return function(t,e,r){var u={};
if(e=y.createCallback(e,r,3),Je(t)){r=-1;for(var o=t.length;++r<o;){var a=t[r];n(u,a,e(a,r,t),t)}}else tr(t,function(t,r,o){n(u,t,e(t,r,o),o)});return u}}function lt(n,t,e,r,u,o){var a=1&t,i=2&t,l=4&t,f=8&t,c=16&t,p=32&t,s=n;if(!i&&!bt(n))throw new ae;c&&!e.length&&(t&=-17,c=e=!1),p&&!r.length&&(t&=-33,p=r=!1);var g=n&&n.__bindData__;if(g)return!a||1&g[1]||(g[4]=u),!a&&1&g[1]&&(t|=8),!l||4&g[1]||(g[5]=o),c&&_e.apply(g[2]||(g[2]=[]),e),p&&_e.apply(g[3]||(g[3]=[]),r),g[1]|=t,lt.apply(null,g);if(!a||i||l||p||!(We.fastBind||Se&&c))v=function(){var g=arguments,h=a?u:this;
return(l||c||p)&&(g=Le.call(g),c&&Ee.apply(g,e),p&&_e.apply(g,r),l&&g.length<o)?(t|=16,lt(n,f?t:-4&t,g,null,u,o)):(i&&(n=h[s]),this instanceof v?(h=ct(n.prototype),g=n.apply(h,g),_t(g)?g:h):n.apply(h,g))};else{if(c){var h=[u];_e.apply(h,e)}var v=c?Se.apply(n,h):Se.call(n,u)}return Ge(v,Le.call(arguments)),v}function ft(){X.h=$,X.b=X.c=X.g=X.i="",X.e="t",X.j=!0;for(var n,t=0;n=arguments[t];t++)for(var e in n)X[e]=n[e];t=X.a,X.d=/^[^,]+/.exec(t)[0],n=ne,t="return function("+t+"){",e=X;var r="var n,t="+e.d+",E="+e.e+";if(!t)return E;"+e.i+";";
e.b?(r+="var u=t.length;n=-1;if("+e.b+"){",We.unindexedChars&&(r+="if(s(t)){t=t.split('')}"),r+="while(++n<u){"+e.g+";}}else{"):We.nonEnumArgs&&(r+="var u=t.length;n=-1;if(u&&p(t)){while(++n<u){n+='';"+e.g+";}}else{"),We.enumPrototypes&&(r+="var G=typeof t=='function';"),We.enumErrorProps&&(r+="var F=t===k||t instanceof Error;");var u=[];if(We.enumPrototypes&&u.push('!(G&&n=="prototype")'),We.enumErrorProps&&u.push('!(F&&(n=="message"||n=="name"))'),e.j&&e.f)r+="var C=-1,D=B[typeof t]&&v(t),u=D?D.length:0;while(++C<u){n=D[C];",u.length&&(r+="if("+u.join("&&")+"){"),r+=e.g+";",u.length&&(r+="}"),r+="}";
else if(r+="for(n in t){",e.j&&u.push("m.call(t, n)"),u.length&&(r+="if("+u.join("&&")+"){"),r+=e.g+";",u.length&&(r+="}"),r+="}",We.nonEnumShadows){for(r+="if(t!==A){var i=t.constructor,r=t===(i&&i.prototype),f=t===J?I:t===k?j:L.call(t),x=y[f];",k=0;7>k;k++)r+="n='"+e.h[k]+"';if((!(r&&x[n])&&m.call(t,n))",e.j||(r+="||(!x[n]&&t[n]!==A[n])"),r+="){"+e.g+"}";r+="}"}return(e.b||We.nonEnumArgs)&&(r+="}"),r+=e.c+";return E",n("d,j,k,m,o,p,q,s,v,A,B,y,I,J,L",t+r+"}")(Z,K,le,de,b,vt,Je,jt,X.f,fe,Y,Ke,H,ce,ke)
}function ct(n){return _t(n)?Ie(n):{}}function pt(n){return Xe[n]}function st(){var t=(t=y.indexOf)===Lt?n:t;return t}function gt(n){var t,e;return!n||ke.call(n)!=J||(t=n.constructor,bt(t)&&!(t instanceof t))||!We.argsClass&&vt(n)||!We.nodeClass&&f(n)?!1:We.ownLast?(ur(n,function(n,t,r){return e=de.call(r,t),!1}),false!==e):(ur(n,function(n,t){e=t}),typeof e=="undefined"||de.call(n,e))}function ht(n){return Ye[n]}function vt(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ke.call(n)==L||!1
}function yt(n,t,e){var r=He(n),u=r.length;for(t=Z(t,e,3);u--&&(e=r[u],false!==t(n[e],e,n)););return n}function mt(n){var t=[];return ur(n,function(n,e){bt(n)&&t.push(e)}),t.sort()}function dt(n){for(var t=-1,e=He(n),r=e.length,u={};++t<r;){var o=e[t];u[n[o]]=o}return u}function bt(n){return typeof n=="function"}function _t(n){return!(!n||!Y[typeof n])}function wt(n){return typeof n=="number"||ke.call(n)==G}function jt(n){return typeof n=="string"||ke.call(n)==H}function xt(n){for(var t=-1,e=He(n),r=e.length,u=Xt(r);++t<r;)u[t]=n[e[t]];
return u}function Ct(n,t,e){var r=-1,u=st(),o=n?n.length:0,a=!1;return e=(0>e?Pe(0,o+e):e)||0,Je(n)?a=-1<u(n,t,e):typeof o=="number"?a=-1<(jt(n)?n.indexOf(t,e):u(n,t,e)):tr(n,function(n){return++r<e?void 0:!(a=n===t)}),a}function kt(n,t,e){var r=!0;if(t=y.createCallback(t,e,3),Je(n)){e=-1;for(var u=n.length;++e<u&&(r=!!t(n[e],e,n)););}else tr(n,function(n,e,u){return r=!!t(n,e,u)});return r}function Et(n,t,e){var r=[];if(t=y.createCallback(t,e,3),Je(n)){e=-1;for(var u=n.length;++e<u;){var o=n[e];
t(o,e,n)&&r.push(o)}}else tr(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function Ot(n,t,e){if(t=y.createCallback(t,e,3),!Je(n)){var r;return tr(n,function(n,e,u){return t(n,e,u)?(r=n,!1):void 0}),r}e=-1;for(var u=n.length;++e<u;){var o=n[e];if(t(o,e,n))return o}}function St(n,t,e){if(t&&typeof e=="undefined"&&Je(n)){e=-1;for(var r=n.length;++e<r&&false!==t(n[e],e,n););}else tr(n,t,e);return n}function It(n,t,e){var r=n,u=n?n.length:0;if(t=t&&typeof e=="undefined"?t:Z(t,e,3),Je(n))for(;u--&&false!==t(n[u],u,n););else{if(typeof u!="number")var o=He(n),u=o.length;
else We.unindexedChars&&jt(n)&&(r=n.split(""));tr(n,function(n,e,a){return e=o?o[--u]:--u,t(r[e],e,a)})}return n}function At(n,t,e){var r=-1,u=n?n.length:0,o=Xt(typeof u=="number"?u:0);if(t=y.createCallback(t,e,3),Je(n))for(;++r<u;)o[r]=t(n[r],r,n);else tr(n,function(n,e,u){o[++r]=t(n,e,u)});return o}function Nt(n,t,e){var u=-1/0,o=u;if(!t&&Je(n)){e=-1;for(var a=n.length;++e<a;){var i=n[e];i>o&&(o=i)}}else t=!t&&jt(n)?r:y.createCallback(t,e,3),tr(n,function(n,e,r){e=t(n,e,r),e>u&&(u=e,o=n)});return o
}function Bt(n,t,e,r){var u=3>arguments.length;if(t=Z(t,r,4),Je(n)){var o=-1,a=n.length;for(u&&(e=n[++o]);++o<a;)e=t(e,n[o],o,n)}else tr(n,function(n,r,o){e=u?(u=!1,n):t(e,n,r,o)});return e}function Dt(n,t,e,r){var u=3>arguments.length;return t=Z(t,r,4),It(n,function(n,r,o){e=u?(u=!1,n):t(e,n,r,o)}),e}function Pt(n){var t=-1,e=n?n.length:0,r=Xt(typeof e=="number"?e:0);return St(n,function(n){var e=Vt(++t);r[t]=r[e],r[e]=n}),r}function Rt(n,t,e){var r;if(t=y.createCallback(t,e,3),Je(n)){e=-1;for(var u=n.length;++e<u&&!(r=t(n[e],e,n)););}else tr(n,function(n,e,u){return!(r=t(n,e,u))
});return!!r}function Ft(e){var r=-1,u=st(),a=e?e.length:0,i=tt(arguments,!0,!0,1),l=[],f=a>=w&&u===n;if(f){var c=o(i);c?(u=t,i=c):f=!1}for(;++r<a;)c=e[r],0>u(i,c)&&l.push(c);return f&&s(i),l}function $t(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;for(t=y.createCallback(t,e,3);++o<u&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[0]:v;return g(n,0,Re(Pe(0,r),u))}function Lt(t,e,r){if(typeof r=="number"){var u=t?t.length:0;r=0>r?Pe(0,u+r):r||0}else if(r)return r=zt(t,e),t[r]===e?r:-1;
return n(t,e,r)}function Tt(n,t,e){if(typeof t!="number"&&null!=t){var r=0,u=-1,o=n?n.length:0;for(t=y.createCallback(t,e,3);++u<o&&t(n[u],u,n);)r++}else r=null==t||e?1:Pe(0,t);return g(n,r)}function zt(n,t,e,r){var u=0,o=n?n.length:u;for(e=e?y.createCallback(e,r,1):Ht,t=e(t);u<o;)r=u+o>>>1,e(n[r])<t?u=r+1:o=r;return u}function qt(n,t,e,r){return typeof t!="boolean"&&null!=t&&(e=(r=e)&&r[t]===n?null:t,t=!1),null!=e&&(e=y.createCallback(e,r,3)),at(n,t,e)}function Kt(){for(var n=1<arguments.length?arguments:arguments[0],t=-1,e=n?Nt(cr(n,"length")):0,r=Xt(0>e?0:e);++t<e;)r[t]=cr(n,t);
return r}function Wt(n,t){for(var e=-1,r=n?n.length:0,u={};++e<r;){var o=n[e];t?u[o]=t[e]:o&&(u[o[0]]=o[1])}return u}function Gt(n,t){return 2<arguments.length?lt(n,17,Le.call(arguments,2),null,t):lt(n,1,null,null,t)}function Jt(n,t,e){function r(){c&&he(c),a=c=p=v,(h||g!==t)&&(s=be(),i=n.apply(f,o))}function u(){var e=t-(be()-l);0<e?c=xe(u,e):(a&&he(a),e=p,a=c=p=v,e&&(s=be(),i=n.apply(f,o)))}var o,a,i,l,f,c,p,s=0,g=!1,h=!0;if(!bt(n))throw new ae;if(t=Pe(0,t)||0,true===e)var y=!0,h=!1;else _t(e)&&(y=e.leading,g="maxWait"in e&&(Pe(t,e.maxWait)||0),h="trailing"in e?e.trailing:h);
return function(){if(o=arguments,l=be(),f=this,p=h&&(c||!y),false===g)var e=y&&!c;else{a||y||(s=l);var v=g-(l-s);0<v?a||(a=xe(r,v)):(a&&(a=he(a)),s=l,i=n.apply(f,o))}return c||t===g||(c=xe(u,t)),e&&(i=n.apply(f,o)),i}}function Mt(n){if(!bt(n))throw new ae;var t=Le.call(arguments,1);return xe(function(){n.apply(v,t)},1)}function Ht(n){return n}function Ut(n,t){var e=n,r=!t||bt(e);t||(e=m,t=n,n=y),St(mt(t),function(u){var o=n[u]=t[u];r&&(e.prototype[u]=function(){var t=this.__wrapped__,r=[t];return _e.apply(r,arguments),r=o.apply(n,r),t&&typeof t=="object"&&t===r?this:new e(r)
})})}function Vt(n,t,e){var r=null==n,u=null==t;return null==e&&(typeof n=="boolean"&&u?(e=n,n=1):u||typeof t!="boolean"||(e=t,u=!0)),r&&u&&(t=1),n=+n||0,u?(t=n,n=0):t=+t||0,r=$e(),e||n%1||t%1?Re(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t):n+ve(r*(t-n+1))}function Qt(){return this.__wrapped__}e=e?ot.defaults(nt.Object(),e,ot.pick(nt,F)):nt;var Xt=e.Array,Yt=e.Boolean,Zt=e.Date,ne=e.Function,te=e.Math,ee=e.Number,re=e.Object,ue=e.RegExp,oe=e.String,ae=e.TypeError,ie=[],le=e.Error.prototype,fe=re.prototype,ce=oe.prototype,pe=e._,se=ue("^"+oe(fe.valueOf).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),ge=te.ceil,he=e.clearTimeout,ve=te.floor,ye=ne.prototype.toString,me=se.test(me=re.getPrototypeOf)&&me,de=fe.hasOwnProperty,be=se.test(be=Zt.now)&&be||function(){return+new Zt
},_e=ie.push,we=fe.propertyIsEnumerable,je=e.setImmediate,xe=e.setTimeout,Ce=ie.splice,ke=fe.toString,Ee=ie.unshift,Oe=function(){try{var n={},t=se.test(t=re.defineProperty)&&t,e=t(n,n,n)&&t}catch(r){}return e}(),Se=se.test(Se=ke.bind)&&Se,Ie=se.test(Ie=re.create)&&Ie,Ae=se.test(Ae=Xt.isArray)&&Ae,Ne=e.isFinite,Be=e.isNaN,De=se.test(De=re.keys)&&De,Pe=te.max,Re=te.min,Fe=e.parseInt,$e=te.random,Le=ie.slice,Te=se.test(e.attachEvent),ze=Se&&!/\n|true/.test(Se+Te),qe={};qe[T]=Xt,qe[z]=Yt,qe[q]=Zt,qe[W]=ne,qe[J]=re,qe[G]=ee,qe[M]=ue,qe[H]=oe;
var Ke={};Ke[T]=Ke[q]=Ke[G]={constructor:!0,toLocaleString:!0,toString:!0,valueOf:!0},Ke[z]=Ke[H]={constructor:!0,toString:!0,valueOf:!0},Ke[K]=Ke[W]=Ke[M]={constructor:!0,toString:!0},Ke[J]={constructor:!0},function(){for(var n=$.length;n--;){var t,e=$[n];for(t in Ke)de.call(Ke,t)&&!de.call(Ke[t],e)&&(Ke[t][e]=!1)}}(),m.prototype=y.prototype;var We=y.support={};!function(){function n(){this.x=1}var t={0:1,length:1},r=[];n.prototype={valueOf:1};for(var u in new n)r.push(u);for(u in arguments);We.argsClass=ke.call(arguments)==L,We.argsObject=arguments.constructor==re&&!(arguments instanceof Xt),We.enumErrorProps=we.call(le,"message")||we.call(le,"name"),We.enumPrototypes=we.call(n,"prototype"),We.fastBind=Se&&!ze,We.funcDecomp=!se.test(e.p)&&P.test(h),We.funcNames=typeof ne.name=="string",We.nonEnumArgs=0!=u,We.nonEnumShadows=!/valueOf/.test(r),We.ownLast="x"!=r[0],We.spliceObjects=(ie.splice.call(t,0,1),!t[0]),We.unindexedChars="xx"!="x"[0]+re("x")[0];
try{We.nodeClass=!(ke.call(document)==J&&!({toString:0}+""))}catch(o){We.nodeClass=!0}}(1),y.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:N,variable:"",imports:{_:y}},Ie||(ct=function(n){if(_t(n)){c.prototype=n;var t=new c;c.prototype=null}return t||{}});var Ge=Oe?function(n,t){Q.value=t,Oe(n,"__bindData__",Q)}:c;We.argsClass||(vt=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&de.call(n,"callee")||!1});var Je=Ae||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ke.call(n)==T||!1
},Me=ft({a:"z",e:"[]",i:"if(!(B[typeof z]))return E",g:"E.push(n)"}),He=De?function(n){return _t(n)?We.enumPrototypes&&typeof n=="function"||We.nonEnumArgs&&n.length&&vt(n)?Me(n):De(n):[]}:Me,Ue={a:"g,e,K",i:"e=e&&typeof K=='undefined'?e:d(e,K,3)",b:"typeof u=='number'",v:He,g:"if(e(t[n],n,g)===false)return E"},Ve={a:"z,H,l",i:"var a=arguments,b=0,c=typeof l=='number'?2:a.length;while(++b<c){t=a[b];if(t&&B[typeof t]){",v:He,g:"if(typeof E[n]=='undefined')E[n]=t[n]",c:"}}"},Qe={i:"if(!B[typeof t])return E;"+Ue.i,b:!1},Xe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Ye=dt(Xe),Ze=ue("("+He(Ye).join("|")+")","g"),nr=ue("["+He(Xe).join("")+"]","g"),tr=ft(Ue),er=ft(Ve,{i:Ve.i.replace(";",";if(c>3&&typeof a[c-2]=='function'){var e=d(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){e=a[--c]}"),g:"E[n]=e?e(E[n],t[n]):t[n]"}),rr=ft(Ve),ur=ft(Ue,Qe,{j:!1}),or=ft(Ue,Qe);
bt(/x/)&&(bt=function(n){return typeof n=="function"&&ke.call(n)==W});var ar=me?function(n){if(!n||ke.call(n)!=J||!We.argsClass&&vt(n))return!1;var t=n.valueOf,e=typeof t=="function"&&(e=me(t))&&me(e);return e?n==e||me(n)==e:gt(n)}:gt,ir=it(function(n,t,e){de.call(n,e)?n[e]++:n[e]=1}),lr=it(function(n,t,e){(de.call(n,e)?n[e]:n[e]=[]).push(t)}),fr=it(function(n,t,e){n[e]=t}),cr=At;ze&&rt&&typeof je=="function"&&(Mt=function(n){if(!bt(n))throw new ae;return je.apply(e,arguments)});var pr=8==Fe(x+"08")?Fe:function(n,t){return Fe(jt(n)?n.replace(B,""):n,t||0)
};return y.after=function(n,t){if(!bt(t))throw new ae;return function(){return 1>--n?t.apply(this,arguments):void 0}},y.assign=er,y.at=function(n){var t=arguments,e=-1,r=tt(t,!0,!1,1),t=t[2]&&t[2][t[1]]===n?1:r.length,u=Xt(t);for(We.unindexedChars&&jt(n)&&(n=n.split(""));++e<t;)u[e]=n[r[e]];return u},y.bind=Gt,y.bindAll=function(n){for(var t=1<arguments.length?tt(arguments,!0,!1,1):mt(n),e=-1,r=t.length;++e<r;){var u=t[e];n[u]=lt(n[u],1,null,null,n)}return n},y.bindKey=function(n,t){return 2<arguments.length?lt(t,19,Le.call(arguments,2),null,n):lt(t,3,null,null,n)
},y.chain=function(n){return n=new m(n),n.__chain__=!0,n},y.compact=function(n){for(var t=-1,e=n?n.length:0,r=[];++t<e;){var u=n[t];u&&r.push(u)}return r},y.compose=function(){for(var n=arguments,t=n.length;t--;)if(!bt(n[t]))throw new ae;return function(){for(var t=arguments,e=n.length;e--;)t=[n[e].apply(this,t)];return t[0]}},y.countBy=ir,y.createCallback=function(n,t,e){var r=typeof n;if(null==n||"function"==r)return Z(n,t,e);if("object"!=r)return function(t){return t[n]};var u=He(n),o=u[0],a=n[o];
return 1!=u.length||a!==a||_t(a)?function(t){for(var e=u.length,r=!1;e--&&(r=et(t[u[e]],n[u[e]],null,!0)););return r}:function(n){return n=n[o],a===n&&(0!==a||1/a==1/n)}},y.curry=function(n,t){return t=typeof t=="number"?t:+t||n.length,lt(n,4,null,null,null,t)},y.debounce=Jt,y.defaults=rr,y.defer=Mt,y.delay=function(n,t){if(!bt(n))throw new ae;var e=Le.call(arguments,2);return xe(function(){n.apply(v,e)},t)},y.difference=Ft,y.filter=Et,y.flatten=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(e=(r=e)&&r[t]===n?null:t,t=!1),null!=e&&(n=At(n,e,r)),tt(n,t)
},y.forEach=St,y.forEachRight=It,y.forIn=ur,y.forInRight=function(n,t,e){var r=[];ur(n,function(n,t){r.push(t,n)});var u=r.length;for(t=Z(t,e,3);u--&&false!==t(r[u--],r[u],n););return n},y.forOwn=or,y.forOwnRight=yt,y.functions=mt,y.groupBy=lr,y.indexBy=fr,y.initial=function(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u;for(t=y.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else r=null==t||e?1:t||r;return g(n,0,Re(Pe(0,u-r),u))},y.intersection=function(e){for(var r=arguments,u=r.length,a=-1,l=i(),f=-1,c=st(),g=e?e.length:0,h=[],v=i();++a<u;){var y=r[a];
l[a]=c===n&&(y?y.length:0)>=w&&o(a?r[a]:v)}n:for(;++f<g;){var m=l[0],y=e[f];if(0>(m?t(m,y):c(v,y))){for(a=u,(m||v).push(y);--a;)if(m=l[a],0>(m?t(m,y):c(r[a],y)))continue n;h.push(y)}}for(;u--;)(m=l[u])&&s(m);return p(l),p(v),h},y.invert=dt,y.invoke=function(n,t){var e=Le.call(arguments,2),r=-1,u=typeof t=="function",o=n?n.length:0,a=Xt(typeof o=="number"?o:0);return St(n,function(n){a[++r]=(u?t:n[t]).apply(n,e)}),a},y.keys=He,y.map=At,y.max=Nt,y.memoize=function(n,t){function e(){var r=e.cache,u=t?t.apply(this,arguments):_+arguments[0];
return de.call(r,u)?r[u]:r[u]=n.apply(this,arguments)}if(!bt(n))throw new ae;return e.cache={},e},y.merge=function(n){var t=arguments,e=2;if(!_t(n))return n;if("number"!=typeof t[2]&&(e=t.length),3<e&&"function"==typeof t[e-2])var r=Z(t[--e-1],t[e--],2);else 2<e&&"function"==typeof t[e-1]&&(r=t[--e]);for(var t=Le.call(arguments,1,e),u=-1,o=i(),a=i();++u<e;)ut(n,t[u],r,o,a);return p(o),p(a),n},y.min=function(n,t,e){var u=1/0,o=u;if(!t&&Je(n)){e=-1;for(var a=n.length;++e<a;){var i=n[e];i<o&&(o=i)}}else t=!t&&jt(n)?r:y.createCallback(t,e,3),tr(n,function(n,e,r){e=t(n,e,r),e<u&&(u=e,o=n)
});return o},y.omit=function(n,t,e){var r=st(),u=typeof t=="function",o={};if(u)t=y.createCallback(t,e,3);else var a=tt(arguments,!0,!1,1);return ur(n,function(n,e,i){(u?!t(n,e,i):0>r(a,e))&&(o[e]=n)}),o},y.once=function(n){var t,e;if(!bt(n))throw new ae;return function(){return t?e:(t=!0,e=n.apply(this,arguments),n=null,e)}},y.pairs=function(n){for(var t=-1,e=He(n),r=e.length,u=Xt(r);++t<r;){var o=e[t];u[t]=[o,n[o]]}return u},y.partial=function(n){return lt(n,16,Le.call(arguments,1))},y.partialRight=function(n){return lt(n,32,null,Le.call(arguments,1))
},y.pick=function(n,t,e){var r={};if(typeof t!="function")for(var u=-1,o=tt(arguments,!0,!1,1),a=_t(n)?o.length:0;++u<a;){var i=o[u];i in n&&(r[i]=n[i])}else t=y.createCallback(t,e,3),ur(n,function(n,e,u){t(n,e,u)&&(r[e]=n)});return r},y.pluck=cr,y.pull=function(n){for(var t=arguments,e=0,r=t.length,u=n?n.length:0;++e<r;)for(var o=-1,a=t[e];++o<u;)n[o]===a&&(Ce.call(n,o--,1),u--);return n},y.range=function(n,t,e){n=+n||0,e=typeof e=="number"?e:+e||1,null==t&&(t=n,n=0);var r=-1;t=Pe(0,ge((t-n)/(e||1)));
for(var u=Xt(t);++r<t;)u[r]=n,n+=e;return u},y.reject=function(n,t,e){return t=y.createCallback(t,e,3),Et(n,function(n,e,r){return!t(n,e,r)})},y.remove=function(n,t,e){var r=-1,u=n?n.length:0,o=[];for(t=y.createCallback(t,e,3);++r<u;)e=n[r],t(e,r,n)&&(o.push(e),Ce.call(n,r--,1),u--);return o},y.rest=Tt,y.shuffle=Pt,y.sortBy=function(n,t,e){var r=-1,o=n?n.length:0,a=Xt(typeof o=="number"?o:0);for(t=y.createCallback(t,e,3),St(n,function(n,e,u){var o=a[++r]=l();o.m=t(n,e,u),o.n=r,o.o=n}),o=a.length,a.sort(u);o--;)n=a[o],a[o]=n.o,s(n);
return a},y.tap=function(n,t){return t(n),n},y.throttle=function(n,t,e){var r=!0,u=!0;if(!bt(n))throw new ae;return false===e?r=!1:_t(e)&&(r="leading"in e?e.leading:r,u="trailing"in e?e.trailing:u),V.leading=r,V.maxWait=t,V.trailing=u,Jt(n,t,V)},y.times=function(n,t,e){n=-1<(n=+n)?n:0;var r=-1,u=Xt(n);for(t=Z(t,e,1);++r<n;)u[r]=t(r);return u},y.toArray=function(n){return n&&typeof n.length=="number"?We.unindexedChars&&jt(n)?n.split(""):g(n):xt(n)},y.transform=function(n,t,e,r){var u=Je(n);return t=Z(t,r,4),null==e&&(u?e=[]:(r=n&&n.constructor,e=ct(r&&r.prototype))),(u?tr:or)(n,function(n,r,u){return t(e,n,r,u)
}),e},y.union=function(){return at(tt(arguments,!0,!0))},y.uniq=qt,y.values=xt,y.where=Et,y.without=function(n){return Ft(n,Le.call(arguments,1))},y.wrap=function(n,t){if(!bt(t))throw new ae;return function(){var e=[n];return _e.apply(e,arguments),t.apply(this,e)}},y.zip=Kt,y.zipObject=Wt,y.collect=At,y.drop=Tt,y.each=St,y.q=It,y.extend=er,y.methods=mt,y.object=Wt,y.select=Et,y.tail=Tt,y.unique=qt,y.unzip=Kt,Ut(y),y.clone=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=t,t=!1),j(n,t,typeof e=="function"&&Z(e,r,1))
},y.cloneDeep=function(n,t,e){return j(n,!0,typeof t=="function"&&Z(t,e,1))},y.contains=Ct,y.escape=function(n){return null==n?"":oe(n).replace(nr,pt)},y.every=kt,y.find=Ot,y.findIndex=function(n,t,e){var r=-1,u=n?n.length:0;for(t=y.createCallback(t,e,3);++r<u;)if(t(n[r],r,n))return r;return-1},y.findKey=function(n,t,e){var r;return t=y.createCallback(t,e,3),or(n,function(n,e,u){return t(n,e,u)?(r=e,!1):void 0}),r},y.findLast=function(n,t,e){var r;return t=y.createCallback(t,e,3),It(n,function(n,e,u){return t(n,e,u)?(r=n,!1):void 0
}),r},y.findLastIndex=function(n,t,e){var r=n?n.length:0;for(t=y.createCallback(t,e,3);r--;)if(t(n[r],r,n))return r;return-1},y.findLastKey=function(n,t,e){var r;return t=y.createCallback(t,e,3),yt(n,function(n,e,u){return t(n,e,u)?(r=e,!1):void 0}),r},y.has=function(n,t){return n?de.call(n,t):!1},y.identity=Ht,y.indexOf=Lt,y.isArguments=vt,y.isArray=Je,y.isBoolean=function(n){return true===n||false===n||ke.call(n)==z},y.isDate=function(n){return n?typeof n=="object"&&ke.call(n)==q:!1},y.isElement=function(n){return n?1===n.nodeType:!1
},y.isEmpty=function(n){var t=!0;if(!n)return t;var e=ke.call(n),r=n.length;return e==T||e==H||(We.argsClass?e==L:vt(n))||e==J&&typeof r=="number"&&bt(n.splice)?!r:(or(n,function(){return t=!1}),t)},y.isEqual=function(n,t,e,r){return et(n,t,typeof e=="function"&&Z(e,r,2))},y.isFinite=function(n){return Ne(n)&&!Be(parseFloat(n))},y.isFunction=bt,y.isNaN=function(n){return wt(n)&&n!=+n},y.isNull=function(n){return null===n},y.isNumber=wt,y.isObject=_t,y.isPlainObject=ar,y.isRegExp=function(n){return n&&Y[typeof n]?ke.call(n)==M:!1
},y.isString=jt,y.isUndefined=function(n){return typeof n=="undefined"},y.lastIndexOf=function(n,t,e){var r=n?n.length:0;for(typeof e=="number"&&(r=(0>e?Pe(0,r+e):Re(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},y.mixin=Ut,y.noConflict=function(){return e._=pe,this},y.parseInt=pr,y.random=Vt,y.reduce=Bt,y.reduceRight=Dt,y.result=function(n,t){if(n){var e=n[t];return bt(e)?n[t]():e}},y.runInContext=h,y.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:He(n).length},y.some=Rt,y.sortedIndex=zt,y.template=function(n,t,e){var r=y.templateSettings;
n||(n=""),e=rr({},e,r);var u,o=rr({},e.imports,r.imports),r=He(o),o=xt(o),i=0,l=e.interpolate||D,f="__p+='",l=ue((e.escape||D).source+"|"+l.source+"|"+(l===N?S:D).source+"|"+(e.evaluate||D).source+"|$","g");n.replace(l,function(t,e,r,o,l,c){return r||(r=o),f+=n.slice(i,c).replace(R,a),e&&(f+="'+__e("+e+")+'"),l&&(u=!0,f+="';"+l+";__p+='"),r&&(f+="'+((__t=("+r+"))==null?'':__t)+'"),i=c+t.length,t}),f+="';\n",l=e=e.variable,l||(e="obj",f="with("+e+"){"+f+"}"),f=(u?f.replace(C,""):f).replace(E,"$1").replace(O,"$1;"),f="function("+e+"){"+(l?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+f+"return __p}";
try{var c=ne(r,"return "+f).apply(v,o)}catch(p){throw p.source=f,p}return t?c(t):(c.source=f,c)},y.unescape=function(n){return null==n?"":oe(n).replace(Ze,ht)},y.uniqueId=function(n){var t=++d;return oe(null==n?"":n)+t},y.all=kt,y.any=Rt,y.detect=Ot,y.findWhere=Ot,y.foldl=Bt,y.foldr=Dt,y.include=Ct,y.inject=Bt,or(y,function(n,t){y.prototype[t]||(y.prototype[t]=function(){var t=[this.__wrapped__],e=this.__chain__;return _e.apply(t,arguments),t=n.apply(y,t),e?new m(t,e):t})}),y.first=$t,y.last=function(n,t,e){var r=0,u=n?n.length:0;
if(typeof t!="number"&&null!=t){var o=u;for(t=y.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[u-1]:v;return g(n,Pe(0,u-r))},y.sample=function(n,t,e){var r=n?n.length:0;return typeof r!="number"?n=xt(n):We.unindexedChars&&jt(n)&&(n=n.split("")),null==t||e?n?n[Vt(r-1)]:v:(n=Pt(n),n.length=Re(Pe(0,t),n.length),n)},y.take=$t,y.head=$t,or(y,function(n,t){var e="sample"!==t;y.prototype[t]||(y.prototype[t]=function(t,r){var u=this.__chain__,o=n(this.__wrapped__,t,r);return u||null!=t&&(!r||e&&typeof t=="function")?new m(o,u):o
})}),y.VERSION="2.2.0",y.prototype.chain=function(){return this.__chain__=!0,this},y.prototype.toString=function(){return oe(this.__wrapped__)},y.prototype.value=Qt,y.prototype.valueOf=Qt,tr(["join","pop","shift"],function(n){var t=ie[n];y.prototype[n]=function(){var n=this.__chain__,e=t.apply(this.__wrapped__,arguments);return n?new m(e,n):e}}),tr(["push","reverse","sort","unshift"],function(n){var t=ie[n];y.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),tr(["concat","slice","splice"],function(n){var t=ie[n];
y.prototype[n]=function(){return new m(t.apply(this.__wrapped__,arguments),this.__chain__)}}),We.spliceObjects||tr(["pop","shift","splice"],function(n){var t=ie[n],e="splice"==n;y.prototype[n]=function(){var n=this.__chain__,r=this.__wrapped__,u=t.apply(r,arguments);return 0===r.length&&delete r[0],n||e?new m(u,n):u}}),y}var v,y=[],m=[],d=0,b={},_=+new Date+"",w=75,j=40,x=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",C=/\b__p\+='';/g,E=/\b(__p\+=)''\+/g,O=/(__e\(.*?\)|\b__t\))\+'';/g,S=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,I=/\w*$/,A=/^function[ \n\r\t]+\w/,N=/<%=([\s\S]+?)%>/g,B=RegExp("^["+x+"]*0+(?=.$)"),D=/($^)/,P=/\bthis\b/,R=/['\n\r\t\u2028\u2029\\]/g,F="Array Boolean Date Error Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),$="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),L="[object Arguments]",T="[object Array]",z="[object Boolean]",q="[object Date]",K="[object Error]",W="[object Function]",G="[object Number]",J="[object Object]",M="[object RegExp]",H="[object String]",U={};
U[W]=!1,U[L]=U[T]=U[z]=U[q]=U[G]=U[J]=U[M]=U[H]=!0;var V={leading:!1,maxWait:0,trailing:!1},Q={configurable:!1,enumerable:!1,value:null,writable:!1},X={a:"",b:null,c:"",d:"",e:"",v:null,g:"",h:null,support:null,i:"",j:!1},Y={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},Z={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},nt=Y[typeof window]&&window||this,tt=Y[typeof exports]&&exports&&!exports.nodeType&&exports,et=Y[typeof module]&&module&&!module.nodeType&&module,rt=et&&et.exports===tt&&tt,ut=Y[typeof global]&&global;
!ut||ut.global!==ut&&ut.window!==ut||(nt=ut);var ot=h();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(nt._=ot, define(function(){return ot})):tt&&et?rt?(et.exports=ot)._=ot:tt._=ot:nt._=ot}).call(this);

3877
dist/lodash.core.js vendored Normal file

File diff suppressed because it is too large Load Diff

29
dist/lodash.core.min.js vendored Normal file
View File

@@ -0,0 +1,29 @@
/**
* @license
* Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash core -o ./dist/lodash.core.js`
*/
;(function(){function n(n){return H(n)&&pn.call(n,"callee")&&!yn.call(n,"callee")}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 j(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){if(typeof n!="function")throw new TypeError("Expected a function");
return setTimeout(function(){n.apply(Z,r)},t)}function f(n,t){var r=true;return mn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function a(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 l(n,t){var r=[];return mn(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function p(n,r,e,u,o){var i=-1,c=n.length;for(e||(e=R),o||(o=[]);++i<c;){var f=n[i];0<r&&e(f)?1<r?p(f,r-1,e,u,o):t(o,f):u||(o[o.length]=f)}return o}function s(n,t){return n&&On(n,t,Dn);
}function h(n,t){return l(t,function(t){return U(n[t])})}function v(n,t){return n>t}function b(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!H(t)?n!==n&&t!==t:y(n,t,r,e,b,u))}function y(n,t,r,e,u,o){var i=Nn(n),c=Nn(t),f=i?"[object Array]":hn.call(n),a=c?"[object Array]":hn.call(t),f="[object Arguments]"==f?"[object Object]":f,a="[object Arguments]"==a?"[object Object]":a,l="[object Object]"==f,c="[object Object]"==a,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=T(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 1&r||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=B(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t,
r=u(i,f,r,e,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?d:r)(n)}function _(n,t){return n<t}function j(n,t){var r=-1,e=M(n)?Array(n.length):[];return mn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function d(n){var t=_n(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&&b(n[u],r[u],3)))return false}return true}}function m(n,t){return n=Object(n),C(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function O(n){return xn(I(n,void 0,X),n+"");
}function x(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 A(n){return x(n,0,n.length)}function E(n,t){var r;return mn(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function w(n,r){return C(r,function(n,r){return r.func.apply(r.thisArg,t([n],r.args))},n)}function k(n,t,r){var e=!r;r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=Z;if(c===Z&&(c=n[i]),e)r[i]=c;else{var f=r,a=f[i];pn.call(f,i)&&J(a,c)&&(c!==Z||i in f)||(f[i]=c);
}}return r}function N(n){return O(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(){var t=arguments,r=dn(n.prototype),t=n.apply(r,t);return V(t)?t:r}}function S(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==on&&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 T(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(1&r&&c>i))return false;var c=o.get(n),f=o.get(t);if(c&&f)return c==t&&f==n;for(var c=-1,f=true,a=2&r?[]:Z;++c<i;){var l=n[c],p=t[c];if(void 0!==Z){f=false;break}if(a){if(!E(t,function(n,t){if(!P(a,t)&&(l===n||u(l,n,r,e,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!u(l,p,r,e,o)){f=false;break}}return f}function B(n,t,r,e,u,o){var i=1&r,c=Dn(n),f=c.length,a=Dn(t).length;if(f!=a&&!i)return false;for(a=f;a--;){var l=c[a];if(!(i?l in t:pn.call(t,l)))return false;
}var p=o.get(n),l=o.get(t);if(p&&l)return p==t&&l==n;for(p=true;++a<f;){var l=c[a],s=n[l],h=t[l];if(void 0!==Z||s!==h&&!u(s,h,r,e,o)){p=false;break}i||(i="constructor"==l)}return p&&!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)&&(p=false)),p}function R(t){return Nn(t)||n(t)}function D(n){var t=[];if(null!=n)for(var r in Object(n))t.push(r);return t}function I(n,t,r){return t=jn(t===Z?n.length-1:t,0),
function(){for(var e=arguments,u=-1,o=jn(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];for(u=-1,o=Array(t+1);++u<t;)o[u]=e[u];return o[t]=r(i),n.apply(this,o)}}function $(n){return(null==n?0:n.length)?p(n,1):[]}function q(n){return n&&n.length?n[0]:Z}function P(n,t,r){var e=null==n?0:n.length;r=typeof r=="number"?0>r?jn(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 mn(n,g(t))}function C(n,t,r){return e(n,g(t),r,3>arguments.length,mn);
}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n;
return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);
return mn(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__=A(this.__actions__)).push({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=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){
return function(t){return null==n?Z:n[t]}}({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,bn=Object.create,yn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return V(t)?bn?bn(t):(n.prototype=t,t=new n,n.prototype=Z,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i;
var mn=function(n,t){return function(r,e){if(null==r)return r;if(!M(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}}(s),On=function(n){return function(t,r,e){var u=-1,o=Object(t);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}}(),xn=X,An=function(n){return function(t,r,e){var u=Object(t);if(!M(t)){var o=g(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=null==n?0:n.length;
if(!e)return-1;r=null==r?0:Fn(r),0>r&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),En=O(function(n,t,r){return S(n,t,r)}),wn=O(function(n,t){return c(n,1,t)}),kn=O(function(n,t,r){return c(n,Sn(t)||0,r)}),Nn=Array.isArray,Fn=Number,Sn=Number,Tn=N(function(n,t){k(t,_n(t),n)}),Bn=N(function(n,t){k(t,D(t),n)}),Rn=O(function(n,t){n=Object(n);var r,e=-1,u=t.length,o=2<u?t[2]:Z;if(r=o){r=t[0];var i=t[1];if(V(o)){var c=typeof i;if("number"==c){if(c=M(o))var c=o.length,f=typeof i,c=null==c?9007199254740991:c,c=!!c&&("number"==f||"symbol"!=f&&en.test(i))&&-1<i&&0==i%1&&i<c;
}else c="string"==c&&i in o;r=!!c&&J(o[i],r)}else r=false}for(r&&(u=1);++e<u;)for(o=t[e],r=In(o),i=-1,c=r.length;++i<c;){var f=r[i],a=n[f];(a===Z||J(a,ln[f])&&!pn.call(n,f))&&(n[f]=o[f])}return n}),Dn=_n,In=D,$n=function(n){return xn(I(n,Z,$),n+"")}(function(n,t){return null==n?{}:m(n,t)});o.assignIn=Bn,o.before=G,o.bind=En,o.chain=function(n){return n=o(n),n.__chain__=true,n},o.compact=function(n){return l(n,Boolean)},o.concat=function(){var n=arguments.length;if(!n)return[];for(var r=Array(n-1),e=arguments[0];n--;)r[n-1]=arguments[n];
return t(Nn(e)?A(e):[e],p(r,1))},o.create=function(n,t){var r=dn(n);return null==t?r:Tn(r,t)},o.defaults=Rn,o.defer=wn,o.delay=kn,o.filter=function(n,t){return l(n,g(t))},o.flatten=$,o.flattenDeep=function(n){return(null==n?0:n.length)?p(n,nn):[]},o.iteratee=g,o.keys=Dn,o.map=function(n,t){return j(n,g(t))},o.matches=function(n){return d(Tn({},n))},o.mixin=Y,o.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},o.once=function(n){
return G(2,n)},o.pick=$n,o.slice=function(n,t,r){var e=null==n?0:n.length;return r=r===Z?e:+r,e?x(n,null==t?0:+t,r):[]},o.sortBy=function(n,t){var e=0;return t=g(t),j(j(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;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 M(n)?n.length?A(n):[]:W(n)},o.values=W,o.extend=Bn,Y(o,o),o.clone=function(n){return V(n)?Nn(n)?A(n):k(n,_n(n)):n},o.escape=function(n){return(n=Q(n))&&rn.test(n)?n.replace(tn,fn):n},o.every=function(n,t,r){return t=r?Z:t,f(n,g(t))},o.find=An,o.forEach=z,o.has=function(n,t){return null!=n&&pn.call(n,t)},o.head=q,o.identity=X,o.indexOf=P,o.isArguments=n,o.isArray=Nn,o.isBoolean=function(n){return true===n||false===n||H(n)&&"[object Boolean]"==hn.call(n);
},o.isDate=function(n){return H(n)&&"[object Date]"==hn.call(n)},o.isEmpty=function(t){return M(t)&&(Nn(t)||L(t)||U(t.splice)||n(t))?!t.length:!_n(t).length},o.isEqual=function(n,t){return b(n,t)},o.isFinite=function(n){return typeof n=="number"&&gn(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 H(n)&&"[object RegExp]"==hn.call(n)},o.isString=L,o.isUndefined=function(n){return n===Z},o.last=function(n){
var t=null==n?0:n.length;return t?n[t-1]:Z},o.max=function(n){return n&&n.length?a(n,X,v):Z},o.min=function(n){return n&&n.length?a(n,X,_):Z},o.noConflict=function(){return on._===this&&(on._=vn),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=M(n)?n:_n(n),n.length)},o.some=function(n,t,r){return t=r?Z:t,E(n,g(t))},o.uniqueId=function(n){var t=++sn;return Q(n)+t},o.each=z,o.first=q,Y(o,function(){
var n={};return s(o,function(t,r){pn.call(o.prototype,r)||(n[r]=t)}),n}(),{chain:false}),o.VERSION="4.17.21",mn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:an)[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(Nn(u)?u:[],n)}return this[r](function(r){return t.apply(Nn(r)?r:[],n);
})}}),o.prototype.toJSON=o.prototype.valueOf=o.prototype.value=function(){return w(this.__wrapped__,this.__actions__)},typeof define=="function"&&typeof define.amd=="object"&&define.amd?(on._=o, define(function(){return o})):cn?((cn.exports=o)._=o,un._=o):on._=o}).call(this);

1031
dist/lodash.fp.js vendored Normal file

File diff suppressed because it is too large Load Diff

21
dist/lodash.fp.min.js vendored Normal file
View File

@@ -0,0 +1,21 @@
(function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fp=e():t.fp=e()})(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){function n(t,e){return i(t,t,e)}var i=r(1);"function"==typeof _&&"function"==typeof _.runInContext&&(_=n(_.runInContext())),
t.exports=n},function(t,e,r){function n(t,e){return 2==e?function(e,r){return t.apply(void 0,arguments)}:function(e){return t.apply(void 0,arguments)}}function i(t,e){return 2==e?function(e,r){return t(e,r)}:function(e){return t(e)}}function a(t){for(var e=t?t.length:0,r=Array(e);e--;)r[e]=t[e];return r}function o(t){return function(e){return t({},e)}}function s(t,e){return function(){for(var r=arguments.length,n=r-1,i=Array(r);r--;)i[r]=arguments[r];var a=i[e],o=i.slice(0,e);return a&&d.apply(o,a),
e!=n&&d.apply(o,i.slice(e+1)),t.apply(this,o)}}function l(t,e){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var i=n[0]=e.apply(void 0,n);return t.apply(void 0,n),i}}}function u(t,e,r,d){function c(t,e){if(b.cap){var r=p.iterateeRearg[t];if(r)return x(e,r);var n=!O&&p.iterateeAry[t];if(n)return W(e,n)}return e}function h(t,e,r){return E||b.curry&&r>1?D(e,r):e}function g(t,e,r){if(b.fixed&&(F||!p.skipFixed[t])){var n=p.methodSpread[t],i=n&&n.start;return void 0===i?L(e,r):s(e,i);
}return e}function y(t,e,r){return b.rearg&&r>1&&(M||!p.skipRearg[t])?N(e,p.methodRearg[t]||p.aryRearg[r]):e}function m(t,e){e=U(e);for(var r=-1,n=e.length,i=n-1,a=w(Object(t)),o=a;null!=o&&++r<n;){var s=e[r],l=o[s];null==l||T(l)||P(l)||K(l)||(o[s]=w(r==i?l:Object(l))),o=o[s]}return a}function v(t){return J.runInContext.convert(t)(void 0)}function A(t,e){var r=p.aliasToReal[t]||t,n=p.remap[r]||r,i=d;return function(t){return u(O?j:C,r,O?j[n]:e,S(S({},i),t))}}function W(t,e){return I(t,function(t){
return"function"==typeof t?i(t,e):t})}function x(t,e){return I(t,function(t){var r=e.length;return n(N(i(t,r),e),r)})}function I(t,e){return function(){var r=arguments.length;if(!r)return t();for(var n=Array(r);r--;)n[r]=arguments[r];var i=b.rearg?0:r-1;return n[i]=e(n[i]),t.apply(void 0,n)}}function R(t,e,r){var n,i=p.aliasToReal[t]||t,s=e,u=H[i];return u?s=u(e):b.immutable&&(p.mutate.array[i]?s=l(e,a):p.mutate.object[i]?s=l(e,o(e)):p.mutate.set[i]&&(s=l(e,m))),z(G,function(t){return z(p.aryMethod[t],function(e){
if(i==e){var r=p.methodSpread[i];return n=r&&r.afterRearg?g(i,y(i,s,t),t):y(i,g(i,s,t),t),n=c(i,n),n=h(i,n,t),!1}}),!n}),n||(n=s),n==e&&(n=E?D(n,1):function(){return e.apply(this,arguments)}),n.convert=A(i,e),n.placeholder=e.placeholder=r,n}var O="function"==typeof e,k=e===Object(e);if(k&&(d=r,r=e,e=void 0),null==r)throw new TypeError;d||(d={});var b={cap:!("cap"in d)||d.cap,curry:!("curry"in d)||d.curry,fixed:!("fixed"in d)||d.fixed,immutable:!("immutable"in d)||d.immutable,rearg:!("rearg"in d)||d.rearg
},B=O?r:f,E="curry"in d&&d.curry,F="fixed"in d&&d.fixed,M="rearg"in d&&d.rearg,j=O?r.runInContext():void 0,C=O?r:{ary:t.ary,assign:t.assign,clone:t.clone,curry:t.curry,forEach:t.forEach,isArray:t.isArray,isError:t.isError,isFunction:t.isFunction,isWeakMap:t.isWeakMap,iteratee:t.iteratee,keys:t.keys,rearg:t.rearg,toInteger:t.toInteger,toPath:t.toPath},L=C.ary,S=C.assign,w=C.clone,D=C.curry,z=C.forEach,q=C.isArray,P=C.isError,T=C.isFunction,K=C.isWeakMap,_=C.keys,N=C.rearg,V=C.toInteger,U=C.toPath,G=_(p.aryMethod),H={
castArray:function(t){return function(){var e=arguments[0];return q(e)?t(a(e)):t.apply(void 0,arguments)}},iteratee:function(t){return function(){var e=arguments[0],r=arguments[1],n=t(e,r),a=n.length;return b.cap&&"number"==typeof r?(r=r>2?r-2:1,a&&a<=r?n:i(n,r)):n}},mixin:function(t){return function(e){var r=this;if(!T(r))return t(r,Object(e));var n=[];return z(_(e),function(t){T(e[t])&&n.push([t,r.prototype[t]])}),t(r,Object(e)),z(n,function(t){var e=t[1];T(e)?r.prototype[t[0]]=e:delete r.prototype[t[0]];
}),r}},nthArg:function(t){return function(e){var r=e<0?1:V(e)+1;return D(t(e),r)}},rearg:function(t){return function(e,r){var n=r?r.length:0;return D(t(e,r),n)}},runInContext:function(e){return function(r){return u(t,e(r),d)}}};if(!k)return R(e,r,B);var J=r,Q=[];return z(G,function(t){z(p.aryMethod[t],function(t){var e=J[p.remap[t]||t];e&&Q.push([t,R(t,e,J)])})}),z(_(J),function(t){var e=J[t];if("function"==typeof e){for(var r=Q.length;r--;)if(Q[r][0]==t)return;e.convert=A(t,e),Q.push([t,e])}}),z(Q,function(t){
J[t[0]]=t[1]}),J.convert=v,J.placeholder=J,z(_(J),function(t){z(p.realToAlias[t]||[],function(e){J[e]=J[t]})}),J}var p=r(2),f=r(3),d=Array.prototype.push;t.exports=u},function(t,e){e.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",
always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",
props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},e.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],
2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],
3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],
4:["fill","setWith","updateWith"]},e.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},e.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,
transform:2},e.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},e.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],
sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},e.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},e.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,
pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},e.realToAlias=function(){var t=Object.prototype.hasOwnProperty,r=e.aliasToReal,n={};for(var i in r){var a=r[i];t.call(n,a)?n[a].push(i):n[a]=[i]}return n}(),e.remap={
assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",
padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},e.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},e.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,
propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},function(t,e){t.exports={}}])});

21091
dist/lodash.js vendored

File diff suppressed because it is too large Load Diff

186
dist/lodash.min.js vendored
View File

@@ -1,52 +1,140 @@
/**
* @license
* Lo-Dash 2.2.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
* Build: `lodash modern -o ./dist/lodash.js`
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
;(function(){function n(n,t,e){e=(e||0)-1;for(var r=n?n.length:0;++e<r;)if(n[e]===t)return e;return-1}function t(t,e){var r=typeof e;if(t=t.l,"boolean"==r||null==e)return t[e]?0:-1;"number"!=r&&"string"!=r&&(r="object");var u="number"==r?e:b+e;return t=(t=t[r])&&t[u],"object"==r?t&&-1<n(t,e)?0:-1:t?0:-1}function e(n){var t=this.l,e=typeof n;if("boolean"==e||null==n)t[n]=!0;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?n:b+n,t=t[e]||(t[e]={});"object"==e?(t[r]||(t[r]=[])).push(n):t[r]=!0
}}function r(n){return n.charCodeAt(0)}function u(n,t){var e=n.m,r=t.m;if(e!==r){if(e>r||typeof e=="undefined")return 1;if(e<r||typeof r=="undefined")return-1}return n.n-t.n}function o(n){var t=-1,r=n.length,u=n[0],o=n[0|r/2],a=n[r-1];if(u&&typeof u=="object"&&o&&typeof o=="object"&&a&&typeof a=="object")return!1;for(u=f(),u["false"]=u["null"]=u["true"]=u.undefined=!1,o=f(),o.k=n,o.l=u,o.push=e;++t<r;)o.push(n[t]);return o}function a(n){return"\\"+G[n]}function i(){return g.pop()||[]}function f(){return y.pop()||{k:null,l:null,m:null,"false":!1,n:0,"null":!1,number:null,object:null,push:null,string:null,"true":!1,undefined:!1,o:null}
}function l(){}function c(n){n.length=0,g.length<d&&g.push(n)}function p(n){var t=n.l;t&&p(t),n.k=n.l=n.m=n.object=n.number=n.string=n.o=null,y.length<d&&y.push(n)}function s(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);var r=-1;e=e-t||0;for(var u=Array(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function v(e){function g(n){if(!n||we.call(n)!=z)return!1;var t=n.valueOf,e=typeof t=="function"&&(e=he(t))&&he(e);return e?n==e||he(n)==e:pt(n)}function y(n,t,e){if(!n||!V[typeof n])return n;t=t&&typeof e=="undefined"?t:et(t,e,3);
for(var r=-1,u=V[typeof n]&&Pe(n),o=u?u.length:0;++r<o&&(e=u[r],false!==t(n[e],e,n)););return n}function d(n,t,e){var r;if(!n||!V[typeof n])return n;t=t&&typeof e=="undefined"?t:et(t,e,3);for(r in n)if(false===t(n[r],r,n))break;return n}function G(n,t,e){var r,u=n,o=u;if(!u)return o;for(var a=arguments,i=0,f=typeof e=="number"?2:a.length;++i<f;)if((u=a[i])&&V[typeof u])for(var l=-1,c=V[typeof u]&&Pe(u),p=c?c.length:0;++l<p;)r=c[l],"undefined"==typeof o[r]&&(o[r]=u[r]);return o}function J(n,t,e){var r,u=n,o=u;
if(!u)return o;var a=arguments,i=0,f=typeof e=="number"?2:a.length;if(3<f&&"function"==typeof a[f-2])var l=et(a[--f-1],a[f--],2);else 2<f&&"function"==typeof a[f-1]&&(l=a[--f]);for(;++i<f;)if((u=a[i])&&V[typeof u])for(var c=-1,p=V[typeof u]&&Pe(u),s=p?p.length:0;++c<s;)r=p[c],o[r]=l?l(o[r],u[r]):u[r];return o}function Q(n){var t,e=[];if(!n||!V[typeof n])return e;for(t in n)ge.call(n,t)&&e.push(t);return e}function Y(n){return n&&typeof n=="object"&&!ze(n)&&ge.call(n,"__wrapped__")?n:new nt(n)}function nt(n,t){this.__chain__=!!t,this.__wrapped__=n
}function tt(n,t,e,r,u){if(e){var o=e(n);if(typeof o!="undefined")return o}if(!bt(n))return n;var a=we.call(n);if(!L[a])return n;var f=Te[a];switch(a){case F:case T:return new f(+n);case q:case K:return new f(n);case P:return o=f(n.source,O.exec(n)),o.lastIndex=n.lastIndex,o}if(a=ze(n),t){var l=!r;r||(r=i()),u||(u=i());for(var p=r.length;p--;)if(r[p]==n)return u[p];o=a?f(n.length):{}}else o=a?s(n):J({},n);return a&&(ge.call(n,"index")&&(o.index=n.index),ge.call(n,"input")&&(o.input=n.input)),t?(r.push(n),u.push(o),(a?Ot:y)(n,function(n,a){o[a]=tt(n,t,e,r,u)
}),l&&(c(r),c(u)),o):o}function et(n,t,e){if(typeof n!="function")return Vt;if(typeof t=="undefined")return n;var r=n.__bindData__||We.funcNames&&!n.name;if(typeof r=="undefined"){var u=R&&ve.call(n);We.funcNames||!u||I.test(u)||(r=!0),(We.funcNames||!r)&&(r=!We.funcDecomp||R.test(u),qe(n,r))}if(true!==r&&r&&1&r[1])return n;switch(e){case 1:return function(e){return n.call(t,e)};case 2:return function(e,r){return n.call(t,e,r)};case 3:return function(e,r,u){return n.call(t,e,r,u)};case 4:return function(e,r,u,o){return n.call(t,e,r,u,o)
}}return Lt(n,t)}function rt(n,t,e,r){r=(r||0)-1;for(var u=n?n.length:0,o=[];++r<u;){var a=n[r];if(a&&typeof a=="object"&&typeof a.length=="number"&&(ze(a)||vt(a))){t||(a=rt(a,t,e));var i=-1,f=a.length,l=o.length;for(o.length+=f;++i<f;)o[l++]=a[i]}else e||o.push(a)}return o}function ut(n,t,e,r,u,o){if(e){var a=e(n,t);if(typeof a!="undefined")return!!a}if(n===t)return 0!==n||1/n==1/t;if(n===n&&!(n&&V[typeof n]||t&&V[typeof t]))return!1;if(null==n||null==t)return n===t;var f=we.call(n),l=we.call(t);
if(f==B&&(f=z),l==B&&(l=z),f!=l)return!1;switch(f){case F:case T:return+n==+t;case q:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case P:case K:return n==ue(t)}if(l=f==$,!l){if(ge.call(n,"__wrapped__")||ge.call(t,"__wrapped__"))return ut(n.__wrapped__||n,t.__wrapped__||t,e,r,u,o);if(f!=z)return!1;var f=n.constructor,p=t.constructor;if(f!=p&&!(mt(f)&&f instanceof f&&mt(p)&&p instanceof p))return!1}for(p=!u,u||(u=i()),o||(o=i()),f=u.length;f--;)if(u[f]==n)return o[f]==t;var s=0,a=!0;if(u.push(n),o.push(t),l){if(f=n.length,s=t.length,a=s==n.length,!a&&!r)return a;
for(;s--;)if(l=f,p=t[s],r)for(;l--&&!(a=ut(n[l],p,e,r,u,o)););else if(!(a=ut(n[s],p,e,r,u,o)))break;return a}return d(t,function(t,i,f){return ge.call(f,i)?(s++,a=ge.call(n,i)&&ut(n[i],t,e,r,u,o)):void 0}),a&&!r&&d(n,function(n,t,e){return ge.call(e,t)?a=-1<--s:void 0}),p&&(c(u),c(o)),a}function ot(n,t,e,r,u){(ze(t)?Ot:y)(t,function(t,o){var a,i,f=t,l=n[o];if(t&&((i=ze(t))||g(t))){for(f=r.length;f--;)if(a=r[f]==t){l=u[f];break}if(!a){var c;e&&(f=e(l,t),c=typeof f!="undefined")&&(l=f),c||(l=i?ze(l)?l:[]:g(l)?l:{}),r.push(t),u.push(l),c||ot(l,t,e,r,u)
}}else e&&(f=e(l,t),typeof f=="undefined"&&(f=t)),typeof f!="undefined"&&(l=f);n[o]=l})}function at(e,r,u){var a=-1,f=ct(),l=e?e.length:0,s=[],v=!r&&l>=_&&f===n,h=u||v?i():s;if(v){var g=o(h);g?(f=t,h=g):(v=!1,h=u?h:(c(h),s))}for(;++a<l;){var g=e[a],y=u?u(g,a,e):g;(r?!a||h[h.length-1]!==y:0>f(h,y))&&((u||v)&&h.push(y),s.push(g))}return v?(c(h.k),p(h)):u&&c(h),s}function it(n){return function(t,e,r){var u={};e=Y.createCallback(e,r,3),r=-1;var o=t?t.length:0;if(typeof o=="number")for(;++r<o;){var a=t[r];
n(u,a,e(a,r,t),t)}else y(t,function(t,r,o){n(u,t,e(t,r,o),o)});return u}}function ft(n,t,e,r,u,o){var a=1&t,i=2&t,f=4&t,l=8&t,c=16&t,p=32&t,s=n;if(!i&&!mt(n))throw new oe;c&&!e.length&&(t&=-17,c=e=!1),p&&!r.length&&(t&=-33,p=r=!1);var v=n&&n.__bindData__;if(v)return!a||1&v[1]||(v[4]=u),!a&&1&v[1]&&(t|=8),!f||4&v[1]||(v[5]=o),c&&me.apply(v[2]||(v[2]=[]),e),p&&me.apply(v[3]||(v[3]=[]),r),v[1]|=t,ft.apply(null,v);if(!a||i||f||p||!(We.fastBind||xe&&c))g=function(){var v=arguments,h=a?u:this;return(f||c||p)&&(v=Be.call(v),c&&je.apply(v,e),p&&me.apply(v,r),f&&v.length<o)?(t|=16,ft(n,l?t:-4&t,v,null,u,o)):(i&&(n=h[s]),this instanceof g?(h=bt(n.prototype)?Ce(n.prototype):{},v=n.apply(h,v),bt(v)?v:h):n.apply(h,v))
};else{if(c){var h=[u];me.apply(h,e)}var g=c?xe.apply(n,h):xe.call(n,u)}return qe(g,Be.call(arguments)),g}function lt(n){return Ke[n]}function ct(){var t=(t=Y.indexOf)===Tt?n:t;return t}function pt(n){var t,e;return n&&we.call(n)==z&&(t=n.constructor,!mt(t)||t instanceof t)?(d(n,function(n,t){e=t}),typeof e=="undefined"||ge.call(n,e)):!1}function st(n){return Le[n]}function vt(n){return n&&typeof n=="object"&&typeof n.length=="number"&&we.call(n)==B||!1}function ht(n,t,e){var r=Pe(n),u=r.length;for(t=et(t,e,3);u--&&(e=r[u],false!==t(n[e],e,n)););return n
}function gt(n){var t=[];return d(n,function(n,e){mt(n)&&t.push(e)}),t.sort()}function yt(n){for(var t=-1,e=Pe(n),r=e.length,u={};++t<r;){var o=e[t];u[n[o]]=o}return u}function mt(n){return typeof n=="function"}function bt(n){return!(!n||!V[typeof n])}function _t(n){return typeof n=="number"||we.call(n)==q}function dt(n){return typeof n=="string"||we.call(n)==K}function wt(n){for(var t=-1,e=Pe(n),r=e.length,u=Qt(r);++t<r;)u[t]=n[e[t]];return u}function jt(n,t,e){var r=-1,u=ct(),o=n?n.length:0,a=!1;return e=(0>e?Se(0,o+e):e)||0,ze(n)?a=-1<u(n,t,e):typeof o=="number"?a=-1<(dt(n)?n.indexOf(t,e):u(n,t,e)):y(n,function(n){return++r<e?void 0:!(a=n===t)
}),a}function kt(n,t,e){var r=!0;t=Y.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&(r=!!t(n[e],e,n)););else y(n,function(n,e,u){return r=!!t(n,e,u)});return r}function xt(n,t,e){var r=[];t=Y.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u;){var o=n[e];t(o,e,n)&&r.push(o)}else y(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function Ct(n,t,e){t=Y.createCallback(t,e,3),e=-1;var r=n?n.length:0;if(typeof r!="number"){var u;return y(n,function(n,e,r){return t(n,e,r)?(u=n,!1):void 0
}),u}for(;++e<r;){var o=n[e];if(t(o,e,n))return o}}function Ot(n,t,e){var r=-1,u=n?n.length:0;if(t=t&&typeof e=="undefined"?t:et(t,e,3),typeof u=="number")for(;++r<u&&false!==t(n[r],r,n););else y(n,t);return n}function It(n,t,e){var r=n?n.length:0;if(t=t&&typeof e=="undefined"?t:et(t,e,3),typeof r=="number")for(;r--&&false!==t(n[r],r,n););else{var u=Pe(n),r=u.length;y(n,function(n,e,o){return e=u?u[--r]:--r,t(o[e],e,o)})}return n}function Nt(n,t,e){var r=-1,u=n?n.length:0;if(t=Y.createCallback(t,e,3),typeof u=="number")for(var o=Qt(u);++r<u;)o[r]=t(n[r],r,n);
else o=[],y(n,function(n,e,u){o[++r]=t(n,e,u)});return o}function Et(n,t,e){var u=-1/0,o=u;if(!t&&ze(n)){e=-1;for(var a=n.length;++e<a;){var i=n[e];i>o&&(o=i)}}else t=!t&&dt(n)?r:Y.createCallback(t,e,3),Ot(n,function(n,e,r){e=t(n,e,r),e>u&&(u=e,o=n)});return o}function St(n,t){var e=-1,r=n?n.length:0;if(typeof r=="number")for(var u=Qt(r);++e<r;)u[e]=n[e][t];return u||Nt(n,t)}function Rt(n,t,e,r){if(!n)return e;var u=3>arguments.length;t=et(t,r,4);var o=-1,a=n.length;if(typeof a=="number")for(u&&(e=n[++o]);++o<a;)e=t(e,n[o],o,n);
else y(n,function(n,r,o){e=u?(u=!1,n):t(e,n,r,o)});return e}function At(n,t,e,r){var u=3>arguments.length;return t=et(t,r,4),It(n,function(n,r,o){e=u?(u=!1,n):t(e,n,r,o)}),e}function Dt(n){var t=-1,e=n?n.length:0,r=Qt(typeof e=="number"?e:0);return Ot(n,function(n){var e=Ht(++t);r[t]=r[e],r[e]=n}),r}function Bt(n,t,e){var r;t=Y.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&!(r=t(n[e],e,n)););else y(n,function(n,e,u){return!(r=t(n,e,u))});return!!r}function $t(e){var r=-1,u=ct(),a=e?e.length:0,i=rt(arguments,!0,!0,1),f=[],l=a>=_&&u===n;
if(l){var c=o(i);c?(u=t,i=c):l=!1}for(;++r<a;)c=e[r],0>u(i,c)&&f.push(c);return l&&p(i),f}function Ft(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;for(t=Y.createCallback(t,e,3);++o<u&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[0]:h;return s(n,0,Re(Se(0,r),u))}function Tt(t,e,r){if(typeof r=="number"){var u=t?t.length:0;r=0>r?Se(0,u+r):r||0}else if(r)return r=qt(t,e),t[r]===e?r:-1;return n(t,e,r)}function Wt(n,t,e){if(typeof t!="number"&&null!=t){var r=0,u=-1,o=n?n.length:0;
for(t=Y.createCallback(t,e,3);++u<o&&t(n[u],u,n);)r++}else r=null==t||e?1:Se(0,t);return s(n,r)}function qt(n,t,e,r){var u=0,o=n?n.length:u;for(e=e?Y.createCallback(e,r,1):Vt,t=e(t);u<o;)r=u+o>>>1,e(n[r])<t?u=r+1:o=r;return u}function zt(n,t,e,r){return typeof t!="boolean"&&null!=t&&(e=(r=e)&&r[t]===n?null:t,t=!1),null!=e&&(e=Y.createCallback(e,r,3)),at(n,t,e)}function Pt(){for(var n=1<arguments.length?arguments:arguments[0],t=-1,e=n?Et(St(n,"length")):0,r=Qt(0>e?0:e);++t<e;)r[t]=St(n,t);return r}function Kt(n,t){for(var e=-1,r=n?n.length:0,u={};++e<r;){var o=n[e];
t?u[o]=t[e]:o&&(u[o[0]]=o[1])}return u}function Lt(n,t){return 2<arguments.length?ft(n,17,Be.call(arguments,2),null,t):ft(n,1,null,null,t)}function Mt(n,t,e){function r(){c&&pe(c),a=c=p=h,(g||v!==t)&&(s=ye(),i=n.apply(l,o))}function u(){var e=t-(ye()-f);0<e?c=_e(u,e):(a&&pe(a),e=p,a=c=p=h,e&&(s=ye(),i=n.apply(l,o)))}var o,a,i,f,l,c,p,s=0,v=!1,g=!0;if(!mt(n))throw new oe;if(t=Se(0,t)||0,true===e)var y=!0,g=!1;else bt(e)&&(y=e.leading,v="maxWait"in e&&(Se(t,e.maxWait)||0),g="trailing"in e?e.trailing:g);
return function(){if(o=arguments,f=ye(),l=this,p=g&&(c||!y),false===v)var e=y&&!c;else{a||y||(s=f);var h=v-(f-s);0<h?a||(a=_e(r,h)):(a&&(a=pe(a)),s=f,i=n.apply(l,o))}return c||t===v||(c=_e(u,t)),e&&(i=n.apply(l,o)),i}}function Ut(n){if(!mt(n))throw new oe;var t=Be.call(arguments,1);return _e(function(){n.apply(h,t)},1)}function Vt(n){return n}function Gt(n,t){var e=n,r=!t||mt(e);t||(e=nt,t=n,n=Y),Ot(gt(t),function(u){var o=n[u]=t[u];r&&(e.prototype[u]=function(){var t=this.__wrapped__,r=[t];return me.apply(r,arguments),r=o.apply(n,r),t&&typeof t=="object"&&t===r?this:new e(r)
})})}function Ht(n,t,e){var r=null==n,u=null==t;return null==e&&(typeof n=="boolean"&&u?(e=n,n=1):u||typeof t!="boolean"||(e=t,u=!0)),r&&u&&(t=1),n=+n||0,u?(t=n,n=0):t=+t||0,r=De(),e||n%1||t%1?Re(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t):n+se(r*(t-n+1))}function Jt(){return this.__wrapped__}e=e?Z.defaults(H.Object(),e,Z.pick(H,D)):H;var Qt=e.Array,Xt=e.Boolean,Yt=e.Date,Zt=e.Function,ne=e.Math,te=e.Number,ee=e.Object,re=e.RegExp,ue=e.String,oe=e.TypeError,ae=[],ie=ee.prototype,fe=e._,le=re("^"+ue(ie.valueOf).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),ce=ne.ceil,pe=e.clearTimeout,se=ne.floor,ve=Zt.prototype.toString,he=le.test(he=ee.getPrototypeOf)&&he,ge=ie.hasOwnProperty,ye=le.test(ye=Yt.now)&&ye||function(){return+new Yt
},me=ae.push,be=e.setImmediate,_e=e.setTimeout,de=ae.splice,we=ie.toString,je=ae.unshift,ke=function(){try{var n={},t=le.test(t=ee.defineProperty)&&t,e=t(n,n,n)&&t}catch(r){}return e}(),xe=le.test(xe=we.bind)&&xe,Ce=le.test(Ce=ee.create)&&Ce,Oe=le.test(Oe=Qt.isArray)&&Oe,Ie=e.isFinite,Ne=e.isNaN,Ee=le.test(Ee=ee.keys)&&Ee,Se=ne.max,Re=ne.min,Ae=e.parseInt,De=ne.random,Be=ae.slice,$e=le.test(e.attachEvent),Fe=xe&&!/\n|true/.test(xe+$e),Te={};Te[$]=Qt,Te[F]=Xt,Te[T]=Yt,Te[W]=Zt,Te[z]=ee,Te[q]=te,Te[P]=re,Te[K]=ue,nt.prototype=Y.prototype;
var We=Y.support={};We.fastBind=xe&&!Fe,We.funcDecomp=!le.test(e.a)&&R.test(v),We.funcNames=typeof Zt.name=="string",Y.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:N,variable:"",imports:{_:Y}};var qe=ke?function(n,t){U.value=t,ke(n,"__bindData__",U)}:l,ze=Oe||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&we.call(n)==$||!1},Pe=Ee?function(n){return bt(n)?Ee(n):[]}:Q,Ke={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Le=yt(Ke),Me=re("("+Pe(Le).join("|")+")","g"),Ue=re("["+Pe(Ke).join("")+"]","g"),Ve=it(function(n,t,e){ge.call(n,e)?n[e]++:n[e]=1
}),Ge=it(function(n,t,e){(ge.call(n,e)?n[e]:n[e]=[]).push(t)}),He=it(function(n,t,e){n[e]=t});Fe&&X&&typeof be=="function"&&(Ut=function(n){if(!mt(n))throw new oe;return be.apply(e,arguments)});var Je=8==Ae(w+"08")?Ae:function(n,t){return Ae(dt(n)?n.replace(E,""):n,t||0)};return Y.after=function(n,t){if(!mt(t))throw new oe;return function(){return 1>--n?t.apply(this,arguments):void 0}},Y.assign=J,Y.at=function(n){for(var t=arguments,e=-1,r=rt(t,!0,!1,1),t=t[2]&&t[2][t[1]]===n?1:r.length,u=Qt(t);++e<t;)u[e]=n[r[e]];
return u},Y.bind=Lt,Y.bindAll=function(n){for(var t=1<arguments.length?rt(arguments,!0,!1,1):gt(n),e=-1,r=t.length;++e<r;){var u=t[e];n[u]=ft(n[u],1,null,null,n)}return n},Y.bindKey=function(n,t){return 2<arguments.length?ft(t,19,Be.call(arguments,2),null,n):ft(t,3,null,null,n)},Y.chain=function(n){return n=new nt(n),n.__chain__=!0,n},Y.compact=function(n){for(var t=-1,e=n?n.length:0,r=[];++t<e;){var u=n[t];u&&r.push(u)}return r},Y.compose=function(){for(var n=arguments,t=n.length;t--;)if(!mt(n[t]))throw new oe;
return function(){for(var t=arguments,e=n.length;e--;)t=[n[e].apply(this,t)];return t[0]}},Y.countBy=Ve,Y.createCallback=function(n,t,e){var r=typeof n;if(null==n||"function"==r)return et(n,t,e);if("object"!=r)return function(t){return t[n]};var u=Pe(n),o=u[0],a=n[o];return 1!=u.length||a!==a||bt(a)?function(t){for(var e=u.length,r=!1;e--&&(r=ut(t[u[e]],n[u[e]],null,!0)););return r}:function(n){return n=n[o],a===n&&(0!==a||1/a==1/n)}},Y.curry=function(n,t){return t=typeof t=="number"?t:+t||n.length,ft(n,4,null,null,null,t)
},Y.debounce=Mt,Y.defaults=G,Y.defer=Ut,Y.delay=function(n,t){if(!mt(n))throw new oe;var e=Be.call(arguments,2);return _e(function(){n.apply(h,e)},t)},Y.difference=$t,Y.filter=xt,Y.flatten=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(e=(r=e)&&r[t]===n?null:t,t=!1),null!=e&&(n=Nt(n,e,r)),rt(n,t)},Y.forEach=Ot,Y.forEachRight=It,Y.forIn=d,Y.forInRight=function(n,t,e){var r=[];d(n,function(n,t){r.push(t,n)});var u=r.length;for(t=et(t,e,3);u--&&false!==t(r[u--],r[u],n););return n},Y.forOwn=y,Y.forOwnRight=ht,Y.functions=gt,Y.groupBy=Ge,Y.indexBy=He,Y.initial=function(n,t,e){var r=0,u=n?n.length:0;
if(typeof t!="number"&&null!=t){var o=u;for(t=Y.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else r=null==t||e?1:t||r;return s(n,0,Re(Se(0,u-r),u))},Y.intersection=function(e){for(var r=arguments,u=r.length,a=-1,f=i(),l=-1,s=ct(),v=e?e.length:0,h=[],g=i();++a<u;){var y=r[a];f[a]=s===n&&(y?y.length:0)>=_&&o(a?r[a]:g)}n:for(;++l<v;){var m=f[0],y=e[l];if(0>(m?t(m,y):s(g,y))){for(a=u,(m||g).push(y);--a;)if(m=f[a],0>(m?t(m,y):s(r[a],y)))continue n;h.push(y)}}for(;u--;)(m=f[u])&&p(m);return c(f),c(g),h},Y.invert=yt,Y.invoke=function(n,t){var e=Be.call(arguments,2),r=-1,u=typeof t=="function",o=n?n.length:0,a=Qt(typeof o=="number"?o:0);
return Ot(n,function(n){a[++r]=(u?t:n[t]).apply(n,e)}),a},Y.keys=Pe,Y.map=Nt,Y.max=Et,Y.memoize=function(n,t){function e(){var r=e.cache,u=t?t.apply(this,arguments):b+arguments[0];return ge.call(r,u)?r[u]:r[u]=n.apply(this,arguments)}if(!mt(n))throw new oe;return e.cache={},e},Y.merge=function(n){var t=arguments,e=2;if(!bt(n))return n;if("number"!=typeof t[2]&&(e=t.length),3<e&&"function"==typeof t[e-2])var r=et(t[--e-1],t[e--],2);else 2<e&&"function"==typeof t[e-1]&&(r=t[--e]);for(var t=Be.call(arguments,1,e),u=-1,o=i(),a=i();++u<e;)ot(n,t[u],r,o,a);
return c(o),c(a),n},Y.min=function(n,t,e){var u=1/0,o=u;if(!t&&ze(n)){e=-1;for(var a=n.length;++e<a;){var i=n[e];i<o&&(o=i)}}else t=!t&&dt(n)?r:Y.createCallback(t,e,3),Ot(n,function(n,e,r){e=t(n,e,r),e<u&&(u=e,o=n)});return o},Y.omit=function(n,t,e){var r=ct(),u=typeof t=="function",o={};if(u)t=Y.createCallback(t,e,3);else var a=rt(arguments,!0,!1,1);return d(n,function(n,e,i){(u?!t(n,e,i):0>r(a,e))&&(o[e]=n)}),o},Y.once=function(n){var t,e;if(!mt(n))throw new oe;return function(){return t?e:(t=!0,e=n.apply(this,arguments),n=null,e)
}},Y.pairs=function(n){for(var t=-1,e=Pe(n),r=e.length,u=Qt(r);++t<r;){var o=e[t];u[t]=[o,n[o]]}return u},Y.partial=function(n){return ft(n,16,Be.call(arguments,1))},Y.partialRight=function(n){return ft(n,32,null,Be.call(arguments,1))},Y.pick=function(n,t,e){var r={};if(typeof t!="function")for(var u=-1,o=rt(arguments,!0,!1,1),a=bt(n)?o.length:0;++u<a;){var i=o[u];i in n&&(r[i]=n[i])}else t=Y.createCallback(t,e,3),d(n,function(n,e,u){t(n,e,u)&&(r[e]=n)});return r},Y.pluck=St,Y.pull=function(n){for(var t=arguments,e=0,r=t.length,u=n?n.length:0;++e<r;)for(var o=-1,a=t[e];++o<u;)n[o]===a&&(de.call(n,o--,1),u--);
return n},Y.range=function(n,t,e){n=+n||0,e=typeof e=="number"?e:+e||1,null==t&&(t=n,n=0);var r=-1;t=Se(0,ce((t-n)/(e||1)));for(var u=Qt(t);++r<t;)u[r]=n,n+=e;return u},Y.reject=function(n,t,e){return t=Y.createCallback(t,e,3),xt(n,function(n,e,r){return!t(n,e,r)})},Y.remove=function(n,t,e){var r=-1,u=n?n.length:0,o=[];for(t=Y.createCallback(t,e,3);++r<u;)e=n[r],t(e,r,n)&&(o.push(e),de.call(n,r--,1),u--);return o},Y.rest=Wt,Y.shuffle=Dt,Y.sortBy=function(n,t,e){var r=-1,o=n?n.length:0,a=Qt(typeof o=="number"?o:0);
for(t=Y.createCallback(t,e,3),Ot(n,function(n,e,u){var o=a[++r]=f();o.m=t(n,e,u),o.n=r,o.o=n}),o=a.length,a.sort(u);o--;)n=a[o],a[o]=n.o,p(n);return a},Y.tap=function(n,t){return t(n),n},Y.throttle=function(n,t,e){var r=!0,u=!0;if(!mt(n))throw new oe;return false===e?r=!1:bt(e)&&(r="leading"in e?e.leading:r,u="trailing"in e?e.trailing:u),M.leading=r,M.maxWait=t,M.trailing=u,Mt(n,t,M)},Y.times=function(n,t,e){n=-1<(n=+n)?n:0;var r=-1,u=Qt(n);for(t=et(t,e,1);++r<n;)u[r]=t(r);return u},Y.toArray=function(n){return n&&typeof n.length=="number"?s(n):wt(n)
},Y.transform=function(n,t,e,r){var u=ze(n);return t=et(t,r,4),null==e&&(u?e=[]:(r=n&&n.constructor,e=bt(r&&r.prototype)?Ce(r&&r.prototype):{})),(u?Ot:y)(n,function(n,r,u){return t(e,n,r,u)}),e},Y.union=function(){return at(rt(arguments,!0,!0))},Y.uniq=zt,Y.values=wt,Y.where=xt,Y.without=function(n){return $t(n,Be.call(arguments,1))},Y.wrap=function(n,t){if(!mt(t))throw new oe;return function(){var e=[n];return me.apply(e,arguments),t.apply(this,e)}},Y.zip=Pt,Y.zipObject=Kt,Y.collect=Nt,Y.drop=Wt,Y.each=Ot,Y.b=It,Y.extend=J,Y.methods=gt,Y.object=Kt,Y.select=xt,Y.tail=Wt,Y.unique=zt,Y.unzip=Pt,Gt(Y),Y.clone=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=t,t=!1),tt(n,t,typeof e=="function"&&et(e,r,1))
},Y.cloneDeep=function(n,t,e){return tt(n,!0,typeof t=="function"&&et(t,e,1))},Y.contains=jt,Y.escape=function(n){return null==n?"":ue(n).replace(Ue,lt)},Y.every=kt,Y.find=Ct,Y.findIndex=function(n,t,e){var r=-1,u=n?n.length:0;for(t=Y.createCallback(t,e,3);++r<u;)if(t(n[r],r,n))return r;return-1},Y.findKey=function(n,t,e){var r;return t=Y.createCallback(t,e,3),y(n,function(n,e,u){return t(n,e,u)?(r=e,!1):void 0}),r},Y.findLast=function(n,t,e){var r;return t=Y.createCallback(t,e,3),It(n,function(n,e,u){return t(n,e,u)?(r=n,!1):void 0
}),r},Y.findLastIndex=function(n,t,e){var r=n?n.length:0;for(t=Y.createCallback(t,e,3);r--;)if(t(n[r],r,n))return r;return-1},Y.findLastKey=function(n,t,e){var r;return t=Y.createCallback(t,e,3),ht(n,function(n,e,u){return t(n,e,u)?(r=e,!1):void 0}),r},Y.has=function(n,t){return n?ge.call(n,t):!1},Y.identity=Vt,Y.indexOf=Tt,Y.isArguments=vt,Y.isArray=ze,Y.isBoolean=function(n){return true===n||false===n||we.call(n)==F},Y.isDate=function(n){return n?typeof n=="object"&&we.call(n)==T:!1},Y.isElement=function(n){return n?1===n.nodeType:!1
},Y.isEmpty=function(n){var t=!0;if(!n)return t;var e=we.call(n),r=n.length;return e==$||e==K||e==B||e==z&&typeof r=="number"&&mt(n.splice)?!r:(y(n,function(){return t=!1}),t)},Y.isEqual=function(n,t,e,r){return ut(n,t,typeof e=="function"&&et(e,r,2))},Y.isFinite=function(n){return Ie(n)&&!Ne(parseFloat(n))},Y.isFunction=mt,Y.isNaN=function(n){return _t(n)&&n!=+n},Y.isNull=function(n){return null===n},Y.isNumber=_t,Y.isObject=bt,Y.isPlainObject=g,Y.isRegExp=function(n){return n?typeof n=="object"&&we.call(n)==P:!1
},Y.isString=dt,Y.isUndefined=function(n){return typeof n=="undefined"},Y.lastIndexOf=function(n,t,e){var r=n?n.length:0;for(typeof e=="number"&&(r=(0>e?Se(0,r+e):Re(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},Y.mixin=Gt,Y.noConflict=function(){return e._=fe,this},Y.parseInt=Je,Y.random=Ht,Y.reduce=Rt,Y.reduceRight=At,Y.result=function(n,t){if(n){var e=n[t];return mt(e)?n[t]():e}},Y.runInContext=v,Y.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:Pe(n).length},Y.some=Bt,Y.sortedIndex=qt,Y.template=function(n,t,e){var r=Y.templateSettings;
n||(n=""),e=G({},e,r);var u,o=G({},e.imports,r.imports),r=Pe(o),o=wt(o),i=0,f=e.interpolate||S,l="__p+='",f=re((e.escape||S).source+"|"+f.source+"|"+(f===N?C:S).source+"|"+(e.evaluate||S).source+"|$","g");n.replace(f,function(t,e,r,o,f,c){return r||(r=o),l+=n.slice(i,c).replace(A,a),e&&(l+="'+__e("+e+")+'"),f&&(u=!0,l+="';"+f+";__p+='"),r&&(l+="'+((__t=("+r+"))==null?'':__t)+'"),i=c+t.length,t}),l+="';\n",f=e=e.variable,f||(e="obj",l="with("+e+"){"+l+"}"),l=(u?l.replace(j,""):l).replace(k,"$1").replace(x,"$1;"),l="function("+e+"){"+(f?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}";
try{var c=Zt(r,"return "+l).apply(h,o)}catch(p){throw p.source=l,p}return t?c(t):(c.source=l,c)},Y.unescape=function(n){return null==n?"":ue(n).replace(Me,st)},Y.uniqueId=function(n){var t=++m;return ue(null==n?"":n)+t},Y.all=kt,Y.any=Bt,Y.detect=Ct,Y.findWhere=Ct,Y.foldl=Rt,Y.foldr=At,Y.include=jt,Y.inject=Rt,y(Y,function(n,t){Y.prototype[t]||(Y.prototype[t]=function(){var t=[this.__wrapped__],e=this.__chain__;return me.apply(t,arguments),t=n.apply(Y,t),e?new nt(t,e):t})}),Y.first=Ft,Y.last=function(n,t,e){var r=0,u=n?n.length:0;
if(typeof t!="number"&&null!=t){var o=u;for(t=Y.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[u-1]:h;return s(n,Se(0,u-r))},Y.sample=function(n,t,e){var r=n?n.length:0;return typeof r!="number"&&(n=wt(n)),null==t||e?n?n[Ht(r-1)]:h:(n=Dt(n),n.length=Re(Se(0,t),n.length),n)},Y.take=Ft,Y.head=Ft,y(Y,function(n,t){var e="sample"!==t;Y.prototype[t]||(Y.prototype[t]=function(t,r){var u=this.__chain__,o=n(this.__wrapped__,t,r);return u||null!=t&&(!r||e&&typeof t=="function")?new nt(o,u):o
})}),Y.VERSION="2.2.0",Y.prototype.chain=function(){return this.__chain__=!0,this},Y.prototype.toString=function(){return ue(this.__wrapped__)},Y.prototype.value=Jt,Y.prototype.valueOf=Jt,Ot(["join","pop","shift"],function(n){var t=ae[n];Y.prototype[n]=function(){var n=this.__chain__,e=t.apply(this.__wrapped__,arguments);return n?new nt(e,n):e}}),Ot(["push","reverse","sort","unshift"],function(n){var t=ae[n];Y.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),Ot(["concat","slice","splice"],function(n){var t=ae[n];
Y.prototype[n]=function(){return new nt(t.apply(this.__wrapped__,arguments),this.__chain__)}}),Y}var h,g=[],y=[],m=0,b=+new Date+"",_=75,d=40,w=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",j=/\b__p\+='';/g,k=/\b(__p\+=)''\+/g,x=/(__e\(.*?\)|\b__t\))\+'';/g,C=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,O=/\w*$/,I=/^function[ \n\r\t]+\w/,N=/<%=([\s\S]+?)%>/g,E=RegExp("^["+w+"]*0+(?=.$)"),S=/($^)/,R=/\bthis\b/,A=/['\n\r\t\u2028\u2029\\]/g,D="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),B="[object Arguments]",$="[object Array]",F="[object Boolean]",T="[object Date]",W="[object Function]",q="[object Number]",z="[object Object]",P="[object RegExp]",K="[object String]",L={};
L[W]=!1,L[B]=L[$]=L[F]=L[T]=L[q]=L[z]=L[P]=L[K]=!0;var M={leading:!1,maxWait:0,trailing:!1},U={configurable:!1,enumerable:!1,value:null,writable:!1},V={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},G={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},H=V[typeof window]&&window||this,J=V[typeof exports]&&exports&&!exports.nodeType&&exports,Q=V[typeof module]&&module&&!module.nodeType&&module,X=Q&&Q.exports===J&&J,Y=V[typeof global]&&global;!Y||Y.global!==Y&&Y.window!==Y||(H=Y);
var Z=v();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(H._=Z, define(function(){return Z})):J&&Q?X?(Q.exports=Z)._=Z:J._=Z:H._=Z}).call(this);
(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&t(n[r],r,n)!==!1;);return n}function e(n,t){for(var r=null==n?0:n.length;r--&&t(n[r],r,n)!==!1;);return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return!1;
return!0}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!!(null==n?0:n.length)&&y(n,t,0)>-1}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return!0;return!1}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);
return r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return!0;return!1}function p(n){return n.split("")}function _(n){return n.match($t)||[]}function v(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,!1}),e}function g(n,t,r,e){for(var u=n.length,i=r+(e?1:-1);e?i--:++i<u;)if(t(n[i],i,n))return i;return-1}function y(n,t,r){return t===t?Z(n,t,r):g(n,b,r)}function d(n,t,r,e){
for(var u=r-1,i=n.length;++u<i;)if(e(n[u],t))return u;return-1}function b(n){return n!==n}function w(n,t){var r=null==n?0:n.length;return r?k(n,t)/r:Cn}function m(n){return function(t){return null==t?X:t[n]}}function x(n){return function(t){return null==n?X:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=!1,n):t(r,n,u,i)}),r}function A(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].value;return n}function k(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==X&&(r=r===X?i:r+i);
}return r}function O(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function I(n,t){return c(t,function(t){return[t,n[t]]})}function R(n){return n?n.slice(0,H(n)+1).replace(Lt,""):n}function z(n){return function(t){return n(t)}}function E(n,t){return c(t,function(t){return n[t]})}function S(n,t){return n.has(t)}function W(n,t){for(var r=-1,e=n.length;++r<e&&y(t,n[r],0)>-1;);return r}function L(n,t){for(var r=n.length;r--&&y(t,n[r],0)>-1;);return r}function C(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&++e;
return e}function U(n){return"\\"+Yr[n]}function B(n,t){return null==n?X:n[t]}function T(n){return Nr.test(n)}function $(n){return Pr.test(n)}function D(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function F(n,t){return function(r){return n(t(r))}}function N(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&o!==cn||(n[r]=cn,i[u++]=r)}return i}function P(n){var t=-1,r=Array(n.size);
return n.forEach(function(n){r[++t]=n}),r}function q(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function Z(n,t,r){for(var e=r-1,u=n.length;++e<u;)if(n[e]===t)return e;return-1}function K(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}function V(n){return T(n)?J(n):_e(n)}function G(n){return T(n)?Y(n):p(n)}function H(n){for(var t=n.length;t--&&Ct.test(n.charAt(t)););return t}function J(n){for(var t=Mr.lastIndex=0;Mr.test(n);)++t;return t}function Y(n){return n.match(Mr)||[];
}function Q(n){return n.match(Fr)||[]}var X,nn="4.17.21",tn=200,rn="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",en="Expected a function",un="Invalid `variable` option passed into `_.template`",on="__lodash_hash_undefined__",fn=500,cn="__lodash_placeholder__",an=1,ln=2,sn=4,hn=1,pn=2,_n=1,vn=2,gn=4,yn=8,dn=16,bn=32,wn=64,mn=128,xn=256,jn=512,An=30,kn="...",On=800,In=16,Rn=1,zn=2,En=3,Sn=1/0,Wn=9007199254740991,Ln=1.7976931348623157e308,Cn=NaN,Un=4294967295,Bn=Un-1,Tn=Un>>>1,$n=[["ary",mn],["bind",_n],["bindKey",vn],["curry",yn],["curryRight",dn],["flip",jn],["partial",bn],["partialRight",wn],["rearg",xn]],Dn="[object Arguments]",Mn="[object Array]",Fn="[object AsyncFunction]",Nn="[object Boolean]",Pn="[object Date]",qn="[object DOMException]",Zn="[object Error]",Kn="[object Function]",Vn="[object GeneratorFunction]",Gn="[object Map]",Hn="[object Number]",Jn="[object Null]",Yn="[object Object]",Qn="[object Promise]",Xn="[object Proxy]",nt="[object RegExp]",tt="[object Set]",rt="[object String]",et="[object Symbol]",ut="[object Undefined]",it="[object WeakMap]",ot="[object WeakSet]",ft="[object ArrayBuffer]",ct="[object DataView]",at="[object Float32Array]",lt="[object Float64Array]",st="[object Int8Array]",ht="[object Int16Array]",pt="[object Int32Array]",_t="[object Uint8Array]",vt="[object Uint8ClampedArray]",gt="[object Uint16Array]",yt="[object Uint32Array]",dt=/\b__p \+= '';/g,bt=/\b(__p \+=) '' \+/g,wt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,mt=/&(?:amp|lt|gt|quot|#39);/g,xt=/[&<>"']/g,jt=RegExp(mt.source),At=RegExp(xt.source),kt=/<%-([\s\S]+?)%>/g,Ot=/<%([\s\S]+?)%>/g,It=/<%=([\s\S]+?)%>/g,Rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,zt=/^\w*$/,Et=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,St=/[\\^$.*+?()[\]{}|]/g,Wt=RegExp(St.source),Lt=/^\s+/,Ct=/\s/,Ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bt=/\{\n\/\* \[wrapped with (.+)\] \*/,Tt=/,? & /,$t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Dt=/[()=,{}\[\]\/\s]/,Mt=/\\(\\)?/g,Ft=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Nt=/\w*$/,Pt=/^[-+]0x[0-9a-f]+$/i,qt=/^0b[01]+$/i,Zt=/^\[object .+?Constructor\]$/,Kt=/^0o[0-7]+$/i,Vt=/^(?:0|[1-9]\d*)$/,Gt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ht=/($^)/,Jt=/['\n\r\u2028\u2029\\]/g,Yt="\\ud800-\\udfff",Qt="\\u0300-\\u036f",Xt="\\ufe20-\\ufe2f",nr="\\u20d0-\\u20ff",tr=Qt+Xt+nr,rr="\\u2700-\\u27bf",er="a-z\\xdf-\\xf6\\xf8-\\xff",ur="\\xac\\xb1\\xd7\\xf7",ir="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",or="\\u2000-\\u206f",fr=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",cr="A-Z\\xc0-\\xd6\\xd8-\\xde",ar="\\ufe0e\\ufe0f",lr=ur+ir+or+fr,sr="['\u2019]",hr="["+Yt+"]",pr="["+lr+"]",_r="["+tr+"]",vr="\\d+",gr="["+rr+"]",yr="["+er+"]",dr="[^"+Yt+lr+vr+rr+er+cr+"]",br="\\ud83c[\\udffb-\\udfff]",wr="(?:"+_r+"|"+br+")",mr="[^"+Yt+"]",xr="(?:\\ud83c[\\udde6-\\uddff]){2}",jr="[\\ud800-\\udbff][\\udc00-\\udfff]",Ar="["+cr+"]",kr="\\u200d",Or="(?:"+yr+"|"+dr+")",Ir="(?:"+Ar+"|"+dr+")",Rr="(?:"+sr+"(?:d|ll|m|re|s|t|ve))?",zr="(?:"+sr+"(?:D|LL|M|RE|S|T|VE))?",Er=wr+"?",Sr="["+ar+"]?",Wr="(?:"+kr+"(?:"+[mr,xr,jr].join("|")+")"+Sr+Er+")*",Lr="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Cr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Ur=Sr+Er+Wr,Br="(?:"+[gr,xr,jr].join("|")+")"+Ur,Tr="(?:"+[mr+_r+"?",_r,xr,jr,hr].join("|")+")",$r=RegExp(sr,"g"),Dr=RegExp(_r,"g"),Mr=RegExp(br+"(?="+br+")|"+Tr+Ur,"g"),Fr=RegExp([Ar+"?"+yr+"+"+Rr+"(?="+[pr,Ar,"$"].join("|")+")",Ir+"+"+zr+"(?="+[pr,Ar+Or,"$"].join("|")+")",Ar+"?"+Or+"+"+Rr,Ar+"+"+zr,Cr,Lr,vr,Br].join("|"),"g"),Nr=RegExp("["+kr+Yt+tr+ar+"]"),Pr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,qr=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Zr=-1,Kr={};
Kr[at]=Kr[lt]=Kr[st]=Kr[ht]=Kr[pt]=Kr[_t]=Kr[vt]=Kr[gt]=Kr[yt]=!0,Kr[Dn]=Kr[Mn]=Kr[ft]=Kr[Nn]=Kr[ct]=Kr[Pn]=Kr[Zn]=Kr[Kn]=Kr[Gn]=Kr[Hn]=Kr[Yn]=Kr[nt]=Kr[tt]=Kr[rt]=Kr[it]=!1;var Vr={};Vr[Dn]=Vr[Mn]=Vr[ft]=Vr[ct]=Vr[Nn]=Vr[Pn]=Vr[at]=Vr[lt]=Vr[st]=Vr[ht]=Vr[pt]=Vr[Gn]=Vr[Hn]=Vr[Yn]=Vr[nt]=Vr[tt]=Vr[rt]=Vr[et]=Vr[_t]=Vr[vt]=Vr[gt]=Vr[yt]=!0,Vr[Zn]=Vr[Kn]=Vr[it]=!1;var Gr={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a",
"\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae",
"\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g",
"\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O",
"\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w",
"\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},Hr={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Jr={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},Yr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Qr=parseFloat,Xr=parseInt,ne="object"==typeof global&&global&&global.Object===Object&&global,te="object"==typeof self&&self&&self.Object===Object&&self,re=ne||te||Function("return this")(),ee="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ee&&"object"==typeof module&&module&&!module.nodeType&&module,ie=ue&&ue.exports===ee,oe=ie&&ne.process,fe=function(){
try{var n=ue&&ue.require&&ue.require("util").types;return n?n:oe&&oe.binding&&oe.binding("util")}catch(n){}}(),ce=fe&&fe.isArrayBuffer,ae=fe&&fe.isDate,le=fe&&fe.isMap,se=fe&&fe.isRegExp,he=fe&&fe.isSet,pe=fe&&fe.isTypedArray,_e=m("length"),ve=x(Gr),ge=x(Hr),ye=x(Jr),de=function p(x){function Z(n){if(cc(n)&&!bh(n)&&!(n instanceof Ct)){if(n instanceof Y)return n;if(bl.call(n,"__wrapped__"))return eo(n)}return new Y(n)}function J(){}function Y(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,
this.__index__=0,this.__values__=X}function Ct(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Un,this.__views__=[]}function $t(){var n=new Ct(this.__wrapped__);return n.__actions__=Tu(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Tu(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Tu(this.__views__),n}function Yt(){if(this.__filtered__){var n=new Ct(this);n.__dir__=-1,
n.__filtered__=!0}else n=this.clone(),n.__dir__*=-1;return n}function Qt(){var n=this.__wrapped__.value(),t=this.__dir__,r=bh(n),e=t<0,u=r?n.length:0,i=Oi(0,u,this.__views__),o=i.start,f=i.end,c=f-o,a=e?f:o-1,l=this.__iteratees__,s=l.length,h=0,p=Hl(c,this.__takeCount__);if(!r||!e&&u==c&&p==c)return wu(n,this.__actions__);var _=[];n:for(;c--&&h<p;){a+=t;for(var v=-1,g=n[a];++v<s;){var y=l[v],d=y.iteratee,b=y.type,w=d(g);if(b==zn)g=w;else if(!w){if(b==Rn)continue n;break n}}_[h++]=g}return _}function Xt(n){
var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function nr(){this.__data__=is?is(null):{},this.size=0}function tr(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}function rr(n){var t=this.__data__;if(is){var r=t[n];return r===on?X:r}return bl.call(t,n)?t[n]:X}function er(n){var t=this.__data__;return is?t[n]!==X:bl.call(t,n)}function ur(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=is&&t===X?on:t,this}function ir(n){
var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function or(){this.__data__=[],this.size=0}function fr(n){var t=this.__data__,r=Wr(t,n);return!(r<0)&&(r==t.length-1?t.pop():Ll.call(t,r,1),--this.size,!0)}function cr(n){var t=this.__data__,r=Wr(t,n);return r<0?X:t[r][1]}function ar(n){return Wr(this.__data__,n)>-1}function lr(n,t){var r=this.__data__,e=Wr(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function sr(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){
var e=n[t];this.set(e[0],e[1])}}function hr(){this.size=0,this.__data__={hash:new Xt,map:new(ts||ir),string:new Xt}}function pr(n){var t=xi(this,n).delete(n);return this.size-=t?1:0,t}function _r(n){return xi(this,n).get(n)}function vr(n){return xi(this,n).has(n)}function gr(n,t){var r=xi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this}function yr(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new sr;++t<r;)this.add(n[t])}function dr(n){return this.__data__.set(n,on),this}function br(n){
return this.__data__.has(n)}function wr(n){this.size=(this.__data__=new ir(n)).size}function mr(){this.__data__=new ir,this.size=0}function xr(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r}function jr(n){return this.__data__.get(n)}function Ar(n){return this.__data__.has(n)}function kr(n,t){var r=this.__data__;if(r instanceof ir){var e=r.__data__;if(!ts||e.length<tn-1)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new sr(e)}return r.set(n,t),this.size=r.size,this}function Or(n,t){
var r=bh(n),e=!r&&dh(n),u=!r&&!e&&mh(n),i=!r&&!e&&!u&&Oh(n),o=r||e||u||i,f=o?O(n.length,hl):[],c=f.length;for(var a in n)!t&&!bl.call(n,a)||o&&("length"==a||u&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ci(a,c))||f.push(a);return f}function Ir(n){var t=n.length;return t?n[tu(0,t-1)]:X}function Rr(n,t){return Xi(Tu(n),Mr(t,0,n.length))}function zr(n){return Xi(Tu(n))}function Er(n,t,r){(r===X||Gf(n[t],r))&&(r!==X||t in n)||Br(n,t,r)}function Sr(n,t,r){var e=n[t];
bl.call(n,t)&&Gf(e,r)&&(r!==X||t in n)||Br(n,t,r)}function Wr(n,t){for(var r=n.length;r--;)if(Gf(n[r][0],t))return r;return-1}function Lr(n,t,r,e){return ys(n,function(n,u,i){t(e,n,r(n),i)}),e}function Cr(n,t){return n&&$u(t,Pc(t),n)}function Ur(n,t){return n&&$u(t,qc(t),n)}function Br(n,t,r){"__proto__"==t&&Tl?Tl(n,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):n[t]=r}function Tr(n,t){for(var r=-1,e=t.length,u=il(e),i=null==n;++r<e;)u[r]=i?X:Mc(n,t[r]);return u}function Mr(n,t,r){return n===n&&(r!==X&&(n=n<=r?n:r),
t!==X&&(n=n>=t?n:t)),n}function Fr(n,t,e,u,i,o){var f,c=t&an,a=t&ln,l=t&sn;if(e&&(f=i?e(n,u,i,o):e(n)),f!==X)return f;if(!fc(n))return n;var s=bh(n);if(s){if(f=zi(n),!c)return Tu(n,f)}else{var h=zs(n),p=h==Kn||h==Vn;if(mh(n))return Iu(n,c);if(h==Yn||h==Dn||p&&!i){if(f=a||p?{}:Ei(n),!c)return a?Mu(n,Ur(f,n)):Du(n,Cr(f,n))}else{if(!Vr[h])return i?n:{};f=Si(n,h,c)}}o||(o=new wr);var _=o.get(n);if(_)return _;o.set(n,f),kh(n)?n.forEach(function(r){f.add(Fr(r,t,e,r,n,o))}):jh(n)&&n.forEach(function(r,u){
f.set(u,Fr(r,t,e,u,n,o))});var v=l?a?di:yi:a?qc:Pc,g=s?X:v(n);return r(g||n,function(r,u){g&&(u=r,r=n[u]),Sr(f,u,Fr(r,t,e,u,n,o))}),f}function Nr(n){var t=Pc(n);return function(r){return Pr(r,n,t)}}function Pr(n,t,r){var e=r.length;if(null==n)return!e;for(n=ll(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===X&&!(u in n)||!i(o))return!1}return!0}function Gr(n,t,r){if("function"!=typeof n)throw new pl(en);return Ws(function(){n.apply(X,r)},t)}function Hr(n,t,r,e){var u=-1,i=o,a=!0,l=n.length,s=[],h=t.length;
if(!l)return s;r&&(t=c(t,z(r))),e?(i=f,a=!1):t.length>=tn&&(i=S,a=!1,t=new yr(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p);if(p=e||0!==p?p:0,a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function Jr(n,t){var r=!0;return ys(n,function(n,e,u){return r=!!t(n,e,u)}),r}function Yr(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===X?o===o&&!bc(o):r(o,f)))var f=o,c=i}return c}function ne(n,t,r,e){var u=n.length;for(r=kc(r),r<0&&(r=-r>u?0:u+r),
e=e===X||e>u?u:kc(e),e<0&&(e+=u),e=r>e?0:Oc(e);r<e;)n[r++]=t;return n}function te(n,t){var r=[];return ys(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function ee(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=Li),u||(u=[]);++i<o;){var f=n[i];t>0&&r(f)?t>1?ee(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function ue(n,t){return n&&bs(n,t,Pc)}function oe(n,t){return n&&ws(n,t,Pc)}function fe(n,t){return i(t,function(t){return uc(n[t])})}function _e(n,t){t=ku(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[no(t[r++])];
return r&&r==e?n:X}function de(n,t,r){var e=t(n);return bh(n)?e:a(e,r(n))}function we(n){return null==n?n===X?ut:Jn:Bl&&Bl in ll(n)?ki(n):Ki(n)}function me(n,t){return n>t}function xe(n,t){return null!=n&&bl.call(n,t)}function je(n,t){return null!=n&&t in ll(n)}function Ae(n,t,r){return n>=Hl(t,r)&&n<Gl(t,r)}function ke(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=il(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,z(t))),s=Hl(p.length,s),l[a]=!r&&(t||u>=120&&p.length>=120)?new yr(a&&p):X}p=n[0];
var _=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],y=t?t(g):g;if(g=r||0!==g?g:0,!(v?S(v,y):e(h,y,r))){for(a=i;--a;){var d=l[a];if(!(d?S(d,y):e(n[a],y,r)))continue n}v&&v.push(y),h.push(g)}}return h}function Oe(n,t,r,e){return ue(n,function(n,u,i){t(e,r(n),u,i)}),e}function Ie(t,r,e){r=ku(r,t),t=Gi(t,r);var u=null==t?t:t[no(jo(r))];return null==u?X:n(u,t,e)}function Re(n){return cc(n)&&we(n)==Dn}function ze(n){return cc(n)&&we(n)==ft}function Ee(n){return cc(n)&&we(n)==Pn}function Se(n,t,r,e,u){
return n===t||(null==n||null==t||!cc(n)&&!cc(t)?n!==n&&t!==t:We(n,t,r,e,Se,u))}function We(n,t,r,e,u,i){var o=bh(n),f=bh(t),c=o?Mn:zs(n),a=f?Mn:zs(t);c=c==Dn?Yn:c,a=a==Dn?Yn:a;var l=c==Yn,s=a==Yn,h=c==a;if(h&&mh(n)){if(!mh(t))return!1;o=!0,l=!1}if(h&&!l)return i||(i=new wr),o||Oh(n)?pi(n,t,r,e,u,i):_i(n,t,c,r,e,u,i);if(!(r&hn)){var p=l&&bl.call(n,"__wrapped__"),_=s&&bl.call(t,"__wrapped__");if(p||_){var v=p?n.value():n,g=_?t.value():t;return i||(i=new wr),u(v,g,r,e,i)}}return!!h&&(i||(i=new wr),vi(n,t,r,e,u,i));
}function Le(n){return cc(n)&&zs(n)==Gn}function Ce(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=ll(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++u<i;){f=r[u];var c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===X&&!(c in n))return!1}else{var s=new wr;if(e)var h=e(a,l,c,n,t,s);if(!(h===X?Se(l,a,hn|pn,e,s):h))return!1}}return!0}function Ue(n){return!(!fc(n)||Di(n))&&(uc(n)?kl:Zt).test(to(n))}function Be(n){return cc(n)&&we(n)==nt}function Te(n){return cc(n)&&zs(n)==tt;
}function $e(n){return cc(n)&&oc(n.length)&&!!Kr[we(n)]}function De(n){return"function"==typeof n?n:null==n?La:"object"==typeof n?bh(n)?Ze(n[0],n[1]):qe(n):Fa(n)}function Me(n){if(!Mi(n))return Vl(n);var t=[];for(var r in ll(n))bl.call(n,r)&&"constructor"!=r&&t.push(r);return t}function Fe(n){if(!fc(n))return Zi(n);var t=Mi(n),r=[];for(var e in n)("constructor"!=e||!t&&bl.call(n,e))&&r.push(e);return r}function Ne(n,t){return n<t}function Pe(n,t){var r=-1,e=Hf(n)?il(n.length):[];return ys(n,function(n,u,i){
e[++r]=t(n,u,i)}),e}function qe(n){var t=ji(n);return 1==t.length&&t[0][2]?Ni(t[0][0],t[0][1]):function(r){return r===n||Ce(r,n,t)}}function Ze(n,t){return Bi(n)&&Fi(t)?Ni(no(n),t):function(r){var e=Mc(r,n);return e===X&&e===t?Nc(r,n):Se(t,e,hn|pn)}}function Ke(n,t,r,e,u){n!==t&&bs(t,function(i,o){if(u||(u=new wr),fc(i))Ve(n,t,o,r,Ke,e,u);else{var f=e?e(Ji(n,o),i,o+"",n,t,u):X;f===X&&(f=i),Er(n,o,f)}},qc)}function Ve(n,t,r,e,u,i,o){var f=Ji(n,r),c=Ji(t,r),a=o.get(c);if(a)return Er(n,r,a),X;var l=i?i(f,c,r+"",n,t,o):X,s=l===X;
if(s){var h=bh(c),p=!h&&mh(c),_=!h&&!p&&Oh(c);l=c,h||p||_?bh(f)?l=f:Jf(f)?l=Tu(f):p?(s=!1,l=Iu(c,!0)):_?(s=!1,l=Wu(c,!0)):l=[]:gc(c)||dh(c)?(l=f,dh(f)?l=Rc(f):fc(f)&&!uc(f)||(l=Ei(c))):s=!1}s&&(o.set(c,l),u(l,c,e,i,o),o.delete(c)),Er(n,r,l)}function Ge(n,t){var r=n.length;if(r)return t+=t<0?r:0,Ci(t,r)?n[t]:X}function He(n,t,r){t=t.length?c(t,function(n){return bh(n)?function(t){return _e(t,1===n.length?n[0]:n)}:n}):[La];var e=-1;return t=c(t,z(mi())),A(Pe(n,function(n,r,u){return{criteria:c(t,function(t){
return t(n)}),index:++e,value:n}}),function(n,t){return Cu(n,t,r)})}function Je(n,t){return Ye(n,t,function(t,r){return Nc(n,r)})}function Ye(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=_e(n,o);r(f,o)&&fu(i,ku(o,n),f)}return i}function Qe(n){return function(t){return _e(t,n)}}function Xe(n,t,r,e){var u=e?d:y,i=-1,o=t.length,f=n;for(n===t&&(t=Tu(t)),r&&(f=c(n,z(r)));++i<o;)for(var a=0,l=t[i],s=r?r(l):l;(a=u(f,s,a,e))>-1;)f!==n&&Ll.call(f,a,1),Ll.call(n,a,1);return n}function nu(n,t){for(var r=n?t.length:0,e=r-1;r--;){
var u=t[r];if(r==e||u!==i){var i=u;Ci(u)?Ll.call(n,u,1):yu(n,u)}}return n}function tu(n,t){return n+Nl(Ql()*(t-n+1))}function ru(n,t,r,e){for(var u=-1,i=Gl(Fl((t-n)/(r||1)),0),o=il(i);i--;)o[e?i:++u]=n,n+=r;return o}function eu(n,t){var r="";if(!n||t<1||t>Wn)return r;do t%2&&(r+=n),t=Nl(t/2),t&&(n+=n);while(t);return r}function uu(n,t){return Ls(Vi(n,t,La),n+"")}function iu(n){return Ir(ra(n))}function ou(n,t){var r=ra(n);return Xi(r,Mr(t,0,r.length))}function fu(n,t,r,e){if(!fc(n))return n;t=ku(t,n);
for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=no(t[u]),a=r;if("__proto__"===c||"constructor"===c||"prototype"===c)return n;if(u!=o){var l=f[c];a=e?e(l,c,f):X,a===X&&(a=fc(l)?l:Ci(t[u+1])?[]:{})}Sr(f,c,a),f=f[c]}return n}function cu(n){return Xi(ra(n))}function au(n,t,r){var e=-1,u=n.length;t<0&&(t=-t>u?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=il(u);++e<u;)i[e]=n[e+t];return i}function lu(n,t){var r;return ys(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function su(n,t,r){
var e=0,u=null==n?e:n.length;if("number"==typeof t&&t===t&&u<=Tn){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!bc(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return hu(n,t,La,r)}function hu(n,t,r,e){var u=0,i=null==n?0:n.length;if(0===i)return 0;t=r(t);for(var o=t!==t,f=null===t,c=bc(t),a=t===X;u<i;){var l=Nl((u+i)/2),s=r(n[l]),h=s!==X,p=null===s,_=s===s,v=bc(s);if(o)var g=e||_;else g=a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):!p&&!v&&(e?s<=t:s<t);g?u=l+1:i=l}return Hl(i,Bn)}function pu(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){
var o=n[r],f=t?t(o):o;if(!r||!Gf(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function _u(n){return"number"==typeof n?n:bc(n)?Cn:+n}function vu(n){if("string"==typeof n)return n;if(bh(n))return c(n,vu)+"";if(bc(n))return vs?vs.call(n):"";var t=n+"";return"0"==t&&1/n==-Sn?"-0":t}function gu(n,t,r){var e=-1,u=o,i=n.length,c=!0,a=[],l=a;if(r)c=!1,u=f;else if(i>=tn){var s=t?null:ks(n);if(s)return P(s);c=!1,u=S,l=new yr}else l=t?[]:a;n:for(;++e<i;){var h=n[e],p=t?t(h):h;if(h=r||0!==h?h:0,c&&p===p){for(var _=l.length;_--;)if(l[_]===p)continue n;
t&&l.push(p),a.push(h)}else u(l,p,r)||(l!==a&&l.push(p),a.push(h))}return a}function yu(n,t){return t=ku(t,n),n=Gi(n,t),null==n||delete n[no(jo(t))]}function du(n,t,r,e){return fu(n,t,r(_e(n,t)),e)}function bu(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?au(n,e?0:i,e?i+1:u):au(n,e?i+1:0,e?u:i)}function wu(n,t){var r=n;return r instanceof Ct&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mu(n,t,r){var e=n.length;if(e<2)return e?gu(n[0]):[];
for(var u=-1,i=il(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=Hr(i[u]||o,n[f],t,r));return gu(ee(i,1),t,r)}function xu(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;){r(o,n[e],e<i?t[e]:X)}return o}function ju(n){return Jf(n)?n:[]}function Au(n){return"function"==typeof n?n:La}function ku(n,t){return bh(n)?n:Bi(n,t)?[n]:Cs(Ec(n))}function Ou(n,t,r){var e=n.length;return r=r===X?e:r,!t&&r>=e?n:au(n,t,r)}function Iu(n,t){if(t)return n.slice();var r=n.length,e=zl?zl(r):new n.constructor(r);
return n.copy(e),e}function Ru(n){var t=new n.constructor(n.byteLength);return new Rl(t).set(new Rl(n)),t}function zu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.byteLength)}function Eu(n){var t=new n.constructor(n.source,Nt.exec(n));return t.lastIndex=n.lastIndex,t}function Su(n){return _s?ll(_s.call(n)):{}}function Wu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.length)}function Lu(n,t){if(n!==t){var r=n!==X,e=null===n,u=n===n,i=bc(n),o=t!==X,f=null===t,c=t===t,a=bc(t);
if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Cu(n,t,r){for(var e=-1,u=n.criteria,i=t.criteria,o=u.length,f=r.length;++e<o;){var c=Lu(u[e],i[e]);if(c){if(e>=f)return c;return c*("desc"==r[e]?-1:1)}}return n.index-t.index}function Uu(n,t,r,e){for(var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Gl(i-o,0),l=il(c+a),s=!e;++f<c;)l[f]=t[f];for(;++u<o;)(s||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l;
}function Bu(n,t,r,e){for(var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Gl(i-f,0),s=il(l+a),h=!e;++u<l;)s[u]=n[u];for(var p=u;++c<a;)s[p+c]=t[c];for(;++o<f;)(h||u<i)&&(s[p+r[o]]=n[u++]);return s}function Tu(n,t){var r=-1,e=n.length;for(t||(t=il(e));++r<e;)t[r]=n[r];return t}function $u(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):X;c===X&&(c=n[f]),u?Br(r,f,c):Sr(r,f,c)}return r}function Du(n,t){return $u(n,Is(n),t)}function Mu(n,t){return $u(n,Rs(n),t);
}function Fu(n,r){return function(e,u){var i=bh(e)?t:Lr,o=r?r():{};return i(e,n,mi(u,2),o)}}function Nu(n){return uu(function(t,r){var e=-1,u=r.length,i=u>1?r[u-1]:X,o=u>2?r[2]:X;for(i=n.length>3&&"function"==typeof i?(u--,i):X,o&&Ui(r[0],r[1],o)&&(i=u<3?X:i,u=1),t=ll(t);++e<u;){var f=r[e];f&&n(t,f,e,i)}return t})}function Pu(n,t){return function(r,e){if(null==r)return r;if(!Hf(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=ll(r);(t?i--:++i<u)&&e(o[i],i,o)!==!1;);return r}}function qu(n){return function(t,r,e){
for(var u=-1,i=ll(t),o=e(t),f=o.length;f--;){var c=o[n?f:++u];if(r(i[c],c,i)===!1)break}return t}}function Zu(n,t,r){function e(){return(this&&this!==re&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=t&_n,i=Gu(n);return e}function Ku(n){return function(t){t=Ec(t);var r=T(t)?G(t):X,e=r?r[0]:t.charAt(0),u=r?Ou(r,1).join(""):t.slice(1);return e[n]()+u}}function Vu(n){return function(t){return l(Ra(ca(t).replace($r,"")),n,"")}}function Gu(n){return function(){var t=arguments;switch(t.length){
case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=gs(n.prototype),e=n.apply(r,t);return fc(e)?e:r}}function Hu(t,r,e){function u(){for(var o=arguments.length,f=il(o),c=o,a=wi(u);c--;)f[c]=arguments[c];var l=o<3&&f[0]!==a&&f[o-1]!==a?[]:N(f,a);
return o-=l.length,o<e?oi(t,r,Qu,u.placeholder,X,f,l,X,X,e-o):n(this&&this!==re&&this instanceof u?i:t,this,f)}var i=Gu(t);return u}function Ju(n){return function(t,r,e){var u=ll(t);if(!Hf(t)){var i=mi(r,3);t=Pc(t),r=function(n){return i(u[n],n,u)}}var o=n(t,r,e);return o>-1?u[i?t[o]:o]:X}}function Yu(n){return gi(function(t){var r=t.length,e=r,u=Y.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if("function"!=typeof i)throw new pl(en);if(u&&!o&&"wrapper"==bi(i))var o=new Y([],!0)}for(e=o?e:r;++e<r;){
i=t[e];var f=bi(i),c="wrapper"==f?Os(i):X;o=c&&$i(c[0])&&c[1]==(mn|yn|bn|xn)&&!c[4].length&&1==c[9]?o[bi(c[0])].apply(o,c[3]):1==i.length&&$i(i)?o[f]():o.thru(i)}return function(){var n=arguments,e=n[0];if(o&&1==n.length&&bh(e))return o.plant(e).value();for(var u=0,i=r?t[u].apply(this,n):e;++u<r;)i=t[u].call(this,i);return i}})}function Qu(n,t,r,e,u,i,o,f,c,a){function l(){for(var y=arguments.length,d=il(y),b=y;b--;)d[b]=arguments[b];if(_)var w=wi(l),m=C(d,w);if(e&&(d=Uu(d,e,u,_)),i&&(d=Bu(d,i,o,_)),
y-=m,_&&y<a){return oi(n,t,Qu,l.placeholder,r,d,N(d,w),f,c,a-y)}var x=h?r:this,j=p?x[n]:n;return y=d.length,f?d=Hi(d,f):v&&y>1&&d.reverse(),s&&c<y&&(d.length=c),this&&this!==re&&this instanceof l&&(j=g||Gu(j)),j.apply(x,d)}var s=t&mn,h=t&_n,p=t&vn,_=t&(yn|dn),v=t&jn,g=p?X:Gu(n);return l}function Xu(n,t){return function(r,e){return Oe(r,n,t(e),{})}}function ni(n,t){return function(r,e){var u;if(r===X&&e===X)return t;if(r!==X&&(u=r),e!==X){if(u===X)return e;"string"==typeof r||"string"==typeof e?(r=vu(r),
e=vu(e)):(r=_u(r),e=_u(e)),u=n(r,e)}return u}}function ti(t){return gi(function(r){return r=c(r,z(mi())),uu(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ri(n,t){t=t===X?" ":vu(t);var r=t.length;if(r<2)return r?eu(t,n):t;var e=eu(t,Fl(n/V(t)));return T(t)?Ou(G(e),0,n).join(""):e.slice(0,n)}function ei(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=il(l+c),h=this&&this!==re&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];
return n(h,o?e:this,s)}var o=r&_n,f=Gu(t);return i}function ui(n){return function(t,r,e){return e&&"number"!=typeof e&&Ui(t,r,e)&&(r=e=X),t=Ac(t),r===X?(r=t,t=0):r=Ac(r),e=e===X?t<r?1:-1:Ac(e),ru(t,r,e,n)}}function ii(n){return function(t,r){return"string"==typeof t&&"string"==typeof r||(t=Ic(t),r=Ic(r)),n(t,r)}}function oi(n,t,r,e,u,i,o,f,c,a){var l=t&yn,s=l?o:X,h=l?X:o,p=l?i:X,_=l?X:i;t|=l?bn:wn,t&=~(l?wn:bn),t&gn||(t&=~(_n|vn));var v=[n,t,u,p,s,_,h,f,c,a],g=r.apply(X,v);return $i(n)&&Ss(g,v),g.placeholder=e,
Yi(g,n,t)}function fi(n){var t=al[n];return function(n,r){if(n=Ic(n),r=null==r?0:Hl(kc(r),292),r&&Zl(n)){var e=(Ec(n)+"e").split("e");return e=(Ec(t(e[0]+"e"+(+e[1]+r)))+"e").split("e"),+(e[0]+"e"+(+e[1]-r))}return t(n)}}function ci(n){return function(t){var r=zs(t);return r==Gn?M(t):r==tt?q(t):I(t,n(t))}}function ai(n,t,r,e,u,i,o,f){var c=t&vn;if(!c&&"function"!=typeof n)throw new pl(en);var a=e?e.length:0;if(a||(t&=~(bn|wn),e=u=X),o=o===X?o:Gl(kc(o),0),f=f===X?f:kc(f),a-=u?u.length:0,t&wn){var l=e,s=u;
e=u=X}var h=c?X:Os(n),p=[n,t,r,e,u,l,s,i,o,f];if(h&&qi(p,h),n=p[0],t=p[1],r=p[2],e=p[3],u=p[4],f=p[9]=p[9]===X?c?0:n.length:Gl(p[9]-a,0),!f&&t&(yn|dn)&&(t&=~(yn|dn)),t&&t!=_n)_=t==yn||t==dn?Hu(n,t,f):t!=bn&&t!=(_n|bn)||u.length?Qu.apply(X,p):ei(n,t,r,e);else var _=Zu(n,t,r);return Yi((h?ms:Ss)(_,p),n,t)}function li(n,t,r,e){return n===X||Gf(n,gl[r])&&!bl.call(e,r)?t:n}function si(n,t,r,e,u,i){return fc(n)&&fc(t)&&(i.set(t,n),Ke(n,t,X,si,i),i.delete(t)),n}function hi(n){return gc(n)?X:n}function pi(n,t,r,e,u,i){
var o=r&hn,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return!1;var a=i.get(n),l=i.get(t);if(a&&l)return a==t&&l==n;var s=-1,p=!0,_=r&pn?new yr:X;for(i.set(n,t),i.set(t,n);++s<f;){var v=n[s],g=t[s];if(e)var y=o?e(g,v,s,t,n,i):e(v,g,s,n,t,i);if(y!==X){if(y)continue;p=!1;break}if(_){if(!h(t,function(n,t){if(!S(_,t)&&(v===n||u(v,n,r,e,i)))return _.push(t)})){p=!1;break}}else if(v!==g&&!u(v,g,r,e,i)){p=!1;break}}return i.delete(n),i.delete(t),p}function _i(n,t,r,e,u,i,o){switch(r){case ct:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;
n=n.buffer,t=t.buffer;case ft:return!(n.byteLength!=t.byteLength||!i(new Rl(n),new Rl(t)));case Nn:case Pn:case Hn:return Gf(+n,+t);case Zn:return n.name==t.name&&n.message==t.message;case nt:case rt:return n==t+"";case Gn:var f=M;case tt:var c=e&hn;if(f||(f=P),n.size!=t.size&&!c)return!1;var a=o.get(n);if(a)return a==t;e|=pn,o.set(n,t);var l=pi(f(n),f(t),e,u,i,o);return o.delete(n),l;case et:if(_s)return _s.call(n)==_s.call(t)}return!1}function vi(n,t,r,e,u,i){var o=r&hn,f=yi(n),c=f.length;if(c!=yi(t).length&&!o)return!1;
for(var a=c;a--;){var l=f[a];if(!(o?l in t:bl.call(t,l)))return!1}var s=i.get(n),h=i.get(t);if(s&&h)return s==t&&h==n;var p=!0;i.set(n,t),i.set(t,n);for(var _=o;++a<c;){l=f[a];var v=n[l],g=t[l];if(e)var y=o?e(g,v,l,t,n,i):e(v,g,l,n,t,i);if(!(y===X?v===g||u(v,g,r,e,i):y)){p=!1;break}_||(_="constructor"==l)}if(p&&!_){var d=n.constructor,b=t.constructor;d!=b&&"constructor"in n&&"constructor"in t&&!("function"==typeof d&&d instanceof d&&"function"==typeof b&&b instanceof b)&&(p=!1)}return i.delete(n),
i.delete(t),p}function gi(n){return Ls(Vi(n,X,_o),n+"")}function yi(n){return de(n,Pc,Is)}function di(n){return de(n,qc,Rs)}function bi(n){for(var t=n.name+"",r=fs[t],e=bl.call(fs,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function wi(n){return(bl.call(Z,"placeholder")?Z:n).placeholder}function mi(){var n=Z.iteratee||Ca;return n=n===Ca?De:n,arguments.length?n(arguments[0],arguments[1]):n}function xi(n,t){var r=n.__data__;return Ti(t)?r["string"==typeof t?"string":"hash"]:r.map;
}function ji(n){for(var t=Pc(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,Fi(u)]}return t}function Ai(n,t){var r=B(n,t);return Ue(r)?r:X}function ki(n){var t=bl.call(n,Bl),r=n[Bl];try{n[Bl]=X;var e=!0}catch(n){}var u=xl.call(n);return e&&(t?n[Bl]=r:delete n[Bl]),u}function Oi(n,t,r){for(var e=-1,u=r.length;++e<u;){var i=r[e],o=i.size;switch(i.type){case"drop":n+=o;break;case"dropRight":t-=o;break;case"take":t=Hl(t,n+o);break;case"takeRight":n=Gl(n,t-o)}}return{start:n,end:t}}function Ii(n){var t=n.match(Bt);
return t?t[1].split(Tt):[]}function Ri(n,t,r){t=ku(t,n);for(var e=-1,u=t.length,i=!1;++e<u;){var o=no(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&oc(u)&&Ci(o,u)&&(bh(n)||dh(n)))}function zi(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&bl.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ei(n){return"function"!=typeof n.constructor||Mi(n)?{}:gs(El(n))}function Si(n,t,r){var e=n.constructor;switch(t){case ft:return Ru(n);
case Nn:case Pn:return new e(+n);case ct:return zu(n,r);case at:case lt:case st:case ht:case pt:case _t:case vt:case gt:case yt:return Wu(n,r);case Gn:return new e;case Hn:case rt:return new e(n);case nt:return Eu(n);case tt:return new e;case et:return Su(n)}}function Wi(n,t){var r=t.length;if(!r)return n;var e=r-1;return t[e]=(r>1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Ut,"{\n/* [wrapped with "+t+"] */\n")}function Li(n){return bh(n)||dh(n)||!!(Cl&&n&&n[Cl])}function Ci(n,t){var r=typeof n;
return t=null==t?Wn:t,!!t&&("number"==r||"symbol"!=r&&Vt.test(n))&&n>-1&&n%1==0&&n<t}function Ui(n,t,r){if(!fc(r))return!1;var e=typeof t;return!!("number"==e?Hf(r)&&Ci(t,r.length):"string"==e&&t in r)&&Gf(r[t],n)}function Bi(n,t){if(bh(n))return!1;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!bc(n))||(zt.test(n)||!Rt.test(n)||null!=t&&n in ll(t))}function Ti(n){var t=typeof n;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==n:null===n}function $i(n){
var t=bi(n),r=Z[t];if("function"!=typeof r||!(t in Ct.prototype))return!1;if(n===r)return!0;var e=Os(r);return!!e&&n===e[0]}function Di(n){return!!ml&&ml in n}function Mi(n){var t=n&&n.constructor;return n===("function"==typeof t&&t.prototype||gl)}function Fi(n){return n===n&&!fc(n)}function Ni(n,t){return function(r){return null!=r&&(r[n]===t&&(t!==X||n in ll(r)))}}function Pi(n){var t=Cf(n,function(n){return r.size===fn&&r.clear(),n}),r=t.cache;return t}function qi(n,t){var r=n[1],e=t[1],u=r|e,i=u<(_n|vn|mn),o=e==mn&&r==yn||e==mn&&r==xn&&n[7].length<=t[8]||e==(mn|xn)&&t[7].length<=t[8]&&r==yn;
if(!i&&!o)return n;e&_n&&(n[2]=t[2],u|=r&_n?0:gn);var f=t[3];if(f){var c=n[3];n[3]=c?Uu(c,f,t[4]):f,n[4]=c?N(n[3],cn):t[4]}return f=t[5],f&&(c=n[5],n[5]=c?Bu(c,f,t[6]):f,n[6]=c?N(n[5],cn):t[6]),f=t[7],f&&(n[7]=f),e&mn&&(n[8]=null==n[8]?t[8]:Hl(n[8],t[8])),null==n[9]&&(n[9]=t[9]),n[0]=t[0],n[1]=u,n}function Zi(n){var t=[];if(null!=n)for(var r in ll(n))t.push(r);return t}function Ki(n){return xl.call(n)}function Vi(t,r,e){return r=Gl(r===X?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Gl(u.length-r,0),f=il(o);++i<o;)f[i]=u[r+i];
i=-1;for(var c=il(r+1);++i<r;)c[i]=u[i];return c[r]=e(f),n(t,this,c)}}function Gi(n,t){return t.length<2?n:_e(n,au(t,0,-1))}function Hi(n,t){for(var r=n.length,e=Hl(t.length,r),u=Tu(n);e--;){var i=t[e];n[e]=Ci(i,r)?u[i]:X}return n}function Ji(n,t){if(("constructor"!==t||"function"!=typeof n[t])&&"__proto__"!=t)return n[t]}function Yi(n,t,r){var e=t+"";return Ls(n,Wi(e,ro(Ii(e),r)))}function Qi(n){var t=0,r=0;return function(){var e=Jl(),u=In-(e-r);if(r=e,u>0){if(++t>=On)return arguments[0]}else t=0;
return n.apply(X,arguments)}}function Xi(n,t){var r=-1,e=n.length,u=e-1;for(t=t===X?e:t;++r<t;){var i=tu(r,u),o=n[i];n[i]=n[r],n[r]=o}return n.length=t,n}function no(n){if("string"==typeof n||bc(n))return n;var t=n+"";return"0"==t&&1/n==-Sn?"-0":t}function to(n){if(null!=n){try{return dl.call(n)}catch(n){}try{return n+""}catch(n){}}return""}function ro(n,t){return r($n,function(r){var e="_."+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function eo(n){if(n instanceof Ct)return n.clone();var t=new Y(n.__wrapped__,n.__chain__);
return t.__actions__=Tu(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function uo(n,t,r){t=(r?Ui(n,t,r):t===X)?1:Gl(kc(t),0);var e=null==n?0:n.length;if(!e||t<1)return[];for(var u=0,i=0,o=il(Fl(e/t));u<e;)o[i++]=au(n,u,u+=t);return o}function io(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){var i=n[t];i&&(u[e++]=i)}return u}function oo(){var n=arguments.length;if(!n)return[];for(var t=il(n-1),r=arguments[0],e=n;e--;)t[e-1]=arguments[e];return a(bh(r)?Tu(r):[r],ee(t,1));
}function fo(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),au(n,t<0?0:t,e)):[]}function co(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),t=e-t,au(n,0,t<0?0:t)):[]}function ao(n,t){return n&&n.length?bu(n,mi(t,3),!0,!0):[]}function lo(n,t){return n&&n.length?bu(n,mi(t,3),!0):[]}function so(n,t,r,e){var u=null==n?0:n.length;return u?(r&&"number"!=typeof r&&Ui(n,t,r)&&(r=0,e=u),ne(n,t,r,e)):[]}function ho(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kc(r);
return u<0&&(u=Gl(e+u,0)),g(n,mi(t,3),u)}function po(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==X&&(u=kc(r),u=r<0?Gl(e+u,0):Hl(u,e-1)),g(n,mi(t,3),u,!0)}function _o(n){return(null==n?0:n.length)?ee(n,1):[]}function vo(n){return(null==n?0:n.length)?ee(n,Sn):[]}function go(n,t){return(null==n?0:n.length)?(t=t===X?1:kc(t),ee(n,t)):[]}function yo(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e}function bo(n){return n&&n.length?n[0]:X}function wo(n,t,r){
var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kc(r);return u<0&&(u=Gl(e+u,0)),y(n,t,u)}function mo(n){return(null==n?0:n.length)?au(n,0,-1):[]}function xo(n,t){return null==n?"":Kl.call(n,t)}function jo(n){var t=null==n?0:n.length;return t?n[t-1]:X}function Ao(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;return r!==X&&(u=kc(r),u=u<0?Gl(e+u,0):Hl(u,e-1)),t===t?K(n,t,u):g(n,b,u,!0)}function ko(n,t){return n&&n.length?Ge(n,kc(t)):X}function Oo(n,t){return n&&n.length&&t&&t.length?Xe(n,t):n;
}function Io(n,t,r){return n&&n.length&&t&&t.length?Xe(n,t,mi(r,2)):n}function Ro(n,t,r){return n&&n.length&&t&&t.length?Xe(n,t,X,r):n}function zo(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=mi(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),u.push(e))}return nu(n,u),r}function Eo(n){return null==n?n:Xl.call(n)}function So(n,t,r){var e=null==n?0:n.length;return e?(r&&"number"!=typeof r&&Ui(n,t,r)?(t=0,r=e):(t=null==t?0:kc(t),r=r===X?e:kc(r)),au(n,t,r)):[]}function Wo(n,t){
return su(n,t)}function Lo(n,t,r){return hu(n,t,mi(r,2))}function Co(n,t){var r=null==n?0:n.length;if(r){var e=su(n,t);if(e<r&&Gf(n[e],t))return e}return-1}function Uo(n,t){return su(n,t,!0)}function Bo(n,t,r){return hu(n,t,mi(r,2),!0)}function To(n,t){if(null==n?0:n.length){var r=su(n,t,!0)-1;if(Gf(n[r],t))return r}return-1}function $o(n){return n&&n.length?pu(n):[]}function Do(n,t){return n&&n.length?pu(n,mi(t,2)):[]}function Mo(n){var t=null==n?0:n.length;return t?au(n,1,t):[]}function Fo(n,t,r){
return n&&n.length?(t=r||t===X?1:kc(t),au(n,0,t<0?0:t)):[]}function No(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),t=e-t,au(n,t<0?0:t,e)):[]}function Po(n,t){return n&&n.length?bu(n,mi(t,3),!1,!0):[]}function qo(n,t){return n&&n.length?bu(n,mi(t,3)):[]}function Zo(n){return n&&n.length?gu(n):[]}function Ko(n,t){return n&&n.length?gu(n,mi(t,2)):[]}function Vo(n,t){return t="function"==typeof t?t:X,n&&n.length?gu(n,X,t):[]}function Go(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){
if(Jf(n))return t=Gl(n.length,t),!0}),O(t,function(t){return c(n,m(t))})}function Ho(t,r){if(!t||!t.length)return[];var e=Go(t);return null==r?e:c(e,function(t){return n(r,X,t)})}function Jo(n,t){return xu(n||[],t||[],Sr)}function Yo(n,t){return xu(n||[],t||[],fu)}function Qo(n){var t=Z(n);return t.__chain__=!0,t}function Xo(n,t){return t(n),n}function nf(n,t){return t(n)}function tf(){return Qo(this)}function rf(){return new Y(this.value(),this.__chain__)}function ef(){this.__values__===X&&(this.__values__=jc(this.value()));
var n=this.__index__>=this.__values__.length;return{done:n,value:n?X:this.__values__[this.__index__++]}}function uf(){return this}function of(n){for(var t,r=this;r instanceof J;){var e=eo(r);e.__index__=0,e.__values__=X,t?u.__wrapped__=e:t=e;var u=e;r=r.__wrapped__}return u.__wrapped__=n,t}function ff(){var n=this.__wrapped__;if(n instanceof Ct){var t=n;return this.__actions__.length&&(t=new Ct(this)),t=t.reverse(),t.__actions__.push({func:nf,args:[Eo],thisArg:X}),new Y(t,this.__chain__)}return this.thru(Eo);
}function cf(){return wu(this.__wrapped__,this.__actions__)}function af(n,t,r){var e=bh(n)?u:Jr;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function lf(n,t){return(bh(n)?i:te)(n,mi(t,3))}function sf(n,t){return ee(yf(n,t),1)}function hf(n,t){return ee(yf(n,t),Sn)}function pf(n,t,r){return r=r===X?1:kc(r),ee(yf(n,t),r)}function _f(n,t){return(bh(n)?r:ys)(n,mi(t,3))}function vf(n,t){return(bh(n)?e:ds)(n,mi(t,3))}function gf(n,t,r,e){n=Hf(n)?n:ra(n),r=r&&!e?kc(r):0;var u=n.length;return r<0&&(r=Gl(u+r,0)),
dc(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&y(n,t,r)>-1}function yf(n,t){return(bh(n)?c:Pe)(n,mi(t,3))}function df(n,t,r,e){return null==n?[]:(bh(t)||(t=null==t?[]:[t]),r=e?X:r,bh(r)||(r=null==r?[]:[r]),He(n,t,r))}function bf(n,t,r){var e=bh(n)?l:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ys)}function wf(n,t,r){var e=bh(n)?s:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ds)}function mf(n,t){return(bh(n)?i:te)(n,Uf(mi(t,3)))}function xf(n){return(bh(n)?Ir:iu)(n)}function jf(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t),
(bh(n)?Rr:ou)(n,t)}function Af(n){return(bh(n)?zr:cu)(n)}function kf(n){if(null==n)return 0;if(Hf(n))return dc(n)?V(n):n.length;var t=zs(n);return t==Gn||t==tt?n.size:Me(n).length}function Of(n,t,r){var e=bh(n)?h:lu;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function If(n,t){if("function"!=typeof t)throw new pl(en);return n=kc(n),function(){if(--n<1)return t.apply(this,arguments)}}function Rf(n,t,r){return t=r?X:t,t=n&&null==t?n.length:t,ai(n,mn,X,X,X,X,t)}function zf(n,t){var r;if("function"!=typeof t)throw new pl(en);
return n=kc(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=X),r}}function Ef(n,t,r){t=r?X:t;var e=ai(n,yn,X,X,X,X,X,t);return e.placeholder=Ef.placeholder,e}function Sf(n,t,r){t=r?X:t;var e=ai(n,dn,X,X,X,X,X,t);return e.placeholder=Sf.placeholder,e}function Wf(n,t,r){function e(t){var r=h,e=p;return h=p=X,d=t,v=n.apply(e,r)}function u(n){return d=n,g=Ws(f,t),b?e(n):v}function i(n){var r=n-y,e=n-d,u=t-r;return w?Hl(u,_-e):u}function o(n){var r=n-y,e=n-d;return y===X||r>=t||r<0||w&&e>=_;
}function f(){var n=fh();return o(n)?c(n):(g=Ws(f,i(n)),X)}function c(n){return g=X,m&&h?e(n):(h=p=X,v)}function a(){g!==X&&As(g),d=0,h=y=p=g=X}function l(){return g===X?v:c(fh())}function s(){var n=fh(),r=o(n);if(h=arguments,p=this,y=n,r){if(g===X)return u(y);if(w)return As(g),g=Ws(f,t),e(y)}return g===X&&(g=Ws(f,t)),v}var h,p,_,v,g,y,d=0,b=!1,w=!1,m=!0;if("function"!=typeof n)throw new pl(en);return t=Ic(t)||0,fc(r)&&(b=!!r.leading,w="maxWait"in r,_=w?Gl(Ic(r.maxWait)||0,t):_,m="trailing"in r?!!r.trailing:m),
s.cancel=a,s.flush=l,s}function Lf(n){return ai(n,jn)}function Cf(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new pl(en);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Cf.Cache||sr),r}function Uf(n){if("function"!=typeof n)throw new pl(en);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:
return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function Bf(n){return zf(2,n)}function Tf(n,t){if("function"!=typeof n)throw new pl(en);return t=t===X?t:kc(t),uu(n,t)}function $f(t,r){if("function"!=typeof t)throw new pl(en);return r=null==r?0:Gl(kc(r),0),uu(function(e){var u=e[r],i=Ou(e,0,r);return u&&a(i,u),n(t,this,i)})}function Df(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new pl(en);return fc(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),
Wf(n,t,{leading:e,maxWait:t,trailing:u})}function Mf(n){return Rf(n,1)}function Ff(n,t){return ph(Au(t),n)}function Nf(){if(!arguments.length)return[];var n=arguments[0];return bh(n)?n:[n]}function Pf(n){return Fr(n,sn)}function qf(n,t){return t="function"==typeof t?t:X,Fr(n,sn,t)}function Zf(n){return Fr(n,an|sn)}function Kf(n,t){return t="function"==typeof t?t:X,Fr(n,an|sn,t)}function Vf(n,t){return null==t||Pr(n,t,Pc(t))}function Gf(n,t){return n===t||n!==n&&t!==t}function Hf(n){return null!=n&&oc(n.length)&&!uc(n);
}function Jf(n){return cc(n)&&Hf(n)}function Yf(n){return n===!0||n===!1||cc(n)&&we(n)==Nn}function Qf(n){return cc(n)&&1===n.nodeType&&!gc(n)}function Xf(n){if(null==n)return!0;if(Hf(n)&&(bh(n)||"string"==typeof n||"function"==typeof n.splice||mh(n)||Oh(n)||dh(n)))return!n.length;var t=zs(n);if(t==Gn||t==tt)return!n.size;if(Mi(n))return!Me(n).length;for(var r in n)if(bl.call(n,r))return!1;return!0}function nc(n,t){return Se(n,t)}function tc(n,t,r){r="function"==typeof r?r:X;var e=r?r(n,t):X;return e===X?Se(n,t,X,r):!!e;
}function rc(n){if(!cc(n))return!1;var t=we(n);return t==Zn||t==qn||"string"==typeof n.message&&"string"==typeof n.name&&!gc(n)}function ec(n){return"number"==typeof n&&Zl(n)}function uc(n){if(!fc(n))return!1;var t=we(n);return t==Kn||t==Vn||t==Fn||t==Xn}function ic(n){return"number"==typeof n&&n==kc(n)}function oc(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=Wn}function fc(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function cc(n){return null!=n&&"object"==typeof n}function ac(n,t){
return n===t||Ce(n,t,ji(t))}function lc(n,t,r){return r="function"==typeof r?r:X,Ce(n,t,ji(t),r)}function sc(n){return vc(n)&&n!=+n}function hc(n){if(Es(n))throw new fl(rn);return Ue(n)}function pc(n){return null===n}function _c(n){return null==n}function vc(n){return"number"==typeof n||cc(n)&&we(n)==Hn}function gc(n){if(!cc(n)||we(n)!=Yn)return!1;var t=El(n);if(null===t)return!0;var r=bl.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&dl.call(r)==jl}function yc(n){
return ic(n)&&n>=-Wn&&n<=Wn}function dc(n){return"string"==typeof n||!bh(n)&&cc(n)&&we(n)==rt}function bc(n){return"symbol"==typeof n||cc(n)&&we(n)==et}function wc(n){return n===X}function mc(n){return cc(n)&&zs(n)==it}function xc(n){return cc(n)&&we(n)==ot}function jc(n){if(!n)return[];if(Hf(n))return dc(n)?G(n):Tu(n);if(Ul&&n[Ul])return D(n[Ul]());var t=zs(n);return(t==Gn?M:t==tt?P:ra)(n)}function Ac(n){if(!n)return 0===n?n:0;if(n=Ic(n),n===Sn||n===-Sn){return(n<0?-1:1)*Ln}return n===n?n:0}function kc(n){
var t=Ac(n),r=t%1;return t===t?r?t-r:t:0}function Oc(n){return n?Mr(kc(n),0,Un):0}function Ic(n){if("number"==typeof n)return n;if(bc(n))return Cn;if(fc(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=fc(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=R(n);var r=qt.test(n);return r||Kt.test(n)?Xr(n.slice(2),r?2:8):Pt.test(n)?Cn:+n}function Rc(n){return $u(n,qc(n))}function zc(n){return n?Mr(kc(n),-Wn,Wn):0===n?n:0}function Ec(n){return null==n?"":vu(n)}function Sc(n,t){var r=gs(n);return null==t?r:Cr(r,t);
}function Wc(n,t){return v(n,mi(t,3),ue)}function Lc(n,t){return v(n,mi(t,3),oe)}function Cc(n,t){return null==n?n:bs(n,mi(t,3),qc)}function Uc(n,t){return null==n?n:ws(n,mi(t,3),qc)}function Bc(n,t){return n&&ue(n,mi(t,3))}function Tc(n,t){return n&&oe(n,mi(t,3))}function $c(n){return null==n?[]:fe(n,Pc(n))}function Dc(n){return null==n?[]:fe(n,qc(n))}function Mc(n,t,r){var e=null==n?X:_e(n,t);return e===X?r:e}function Fc(n,t){return null!=n&&Ri(n,t,xe)}function Nc(n,t){return null!=n&&Ri(n,t,je);
}function Pc(n){return Hf(n)?Or(n):Me(n)}function qc(n){return Hf(n)?Or(n,!0):Fe(n)}function Zc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Br(r,t(n,e,u),n)}),r}function Kc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Br(r,e,t(n,e,u))}),r}function Vc(n,t){return Gc(n,Uf(mi(t)))}function Gc(n,t){if(null==n)return{};var r=c(di(n),function(n){return[n]});return t=mi(t),Ye(n,r,function(n,r){return t(n,r[0])})}function Hc(n,t,r){t=ku(t,n);var e=-1,u=t.length;for(u||(u=1,n=X);++e<u;){var i=null==n?X:n[no(t[e])];
i===X&&(e=u,i=r),n=uc(i)?i.call(n):i}return n}function Jc(n,t,r){return null==n?n:fu(n,t,r)}function Yc(n,t,r,e){return e="function"==typeof e?e:X,null==n?n:fu(n,t,r,e)}function Qc(n,t,e){var u=bh(n),i=u||mh(n)||Oh(n);if(t=mi(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:fc(n)&&uc(o)?gs(El(n)):{}}return(i?r:ue)(n,function(n,r,u){return t(e,n,r,u)}),e}function Xc(n,t){return null==n||yu(n,t)}function na(n,t,r){return null==n?n:du(n,t,Au(r))}function ta(n,t,r,e){return e="function"==typeof e?e:X,
null==n?n:du(n,t,Au(r),e)}function ra(n){return null==n?[]:E(n,Pc(n))}function ea(n){return null==n?[]:E(n,qc(n))}function ua(n,t,r){return r===X&&(r=t,t=X),r!==X&&(r=Ic(r),r=r===r?r:0),t!==X&&(t=Ic(t),t=t===t?t:0),Mr(Ic(n),t,r)}function ia(n,t,r){return t=Ac(t),r===X?(r=t,t=0):r=Ac(r),n=Ic(n),Ae(n,t,r)}function oa(n,t,r){if(r&&"boolean"!=typeof r&&Ui(n,t,r)&&(t=r=X),r===X&&("boolean"==typeof t?(r=t,t=X):"boolean"==typeof n&&(r=n,n=X)),n===X&&t===X?(n=0,t=1):(n=Ac(n),t===X?(t=n,n=0):t=Ac(t)),n>t){
var e=n;n=t,t=e}if(r||n%1||t%1){var u=Ql();return Hl(n+u*(t-n+Qr("1e-"+((u+"").length-1))),t)}return tu(n,t)}function fa(n){return Qh(Ec(n).toLowerCase())}function ca(n){return n=Ec(n),n&&n.replace(Gt,ve).replace(Dr,"")}function aa(n,t,r){n=Ec(n),t=vu(t);var e=n.length;r=r===X?e:Mr(kc(r),0,e);var u=r;return r-=t.length,r>=0&&n.slice(r,u)==t}function la(n){return n=Ec(n),n&&At.test(n)?n.replace(xt,ge):n}function sa(n){return n=Ec(n),n&&Wt.test(n)?n.replace(St,"\\$&"):n}function ha(n,t,r){n=Ec(n),t=kc(t);
var e=t?V(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return ri(Nl(u),r)+n+ri(Fl(u),r)}function pa(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e<t?n+ri(t-e,r):n}function _a(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e<t?ri(t-e,r)+n:n}function va(n,t,r){return r||null==t?t=0:t&&(t=+t),Yl(Ec(n).replace(Lt,""),t||0)}function ga(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t),eu(Ec(n),t)}function ya(){var n=arguments,t=Ec(n[0]);return n.length<3?t:t.replace(n[1],n[2])}function da(n,t,r){return r&&"number"!=typeof r&&Ui(n,t,r)&&(t=r=X),
(r=r===X?Un:r>>>0)?(n=Ec(n),n&&("string"==typeof t||null!=t&&!Ah(t))&&(t=vu(t),!t&&T(n))?Ou(G(n),0,r):n.split(t,r)):[]}function ba(n,t,r){return n=Ec(n),r=null==r?0:Mr(kc(r),0,n.length),t=vu(t),n.slice(r,r+t.length)==t}function wa(n,t,r){var e=Z.templateSettings;r&&Ui(n,t,r)&&(t=X),n=Ec(n),t=Sh({},t,e,li);var u,i,o=Sh({},t.imports,e.imports,li),f=Pc(o),c=E(o,f),a=0,l=t.interpolate||Ht,s="__p += '",h=sl((t.escape||Ht).source+"|"+l.source+"|"+(l===It?Ft:Ht).source+"|"+(t.evaluate||Ht).source+"|$","g"),p="//# sourceURL="+(bl.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Zr+"]")+"\n";
n.replace(h,function(t,r,e,o,f,c){return e||(e=o),s+=n.slice(a,c).replace(Jt,U),r&&(u=!0,s+="' +\n__e("+r+") +\n'"),f&&(i=!0,s+="';\n"+f+";\n__p += '"),e&&(s+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),a=c+t.length,t}),s+="';\n";var _=bl.call(t,"variable")&&t.variable;if(_){if(Dt.test(_))throw new fl(un)}else s="with (obj) {\n"+s+"\n}\n";s=(i?s.replace(dt,""):s).replace(bt,"$1").replace(wt,"$1;"),s="function("+(_||"obj")+") {\n"+(_?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(u?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+s+"return __p\n}";
var v=Xh(function(){return cl(f,p+"return "+s).apply(X,c)});if(v.source=s,rc(v))throw v;return v}function ma(n){return Ec(n).toLowerCase()}function xa(n){return Ec(n).toUpperCase()}function ja(n,t,r){if(n=Ec(n),n&&(r||t===X))return R(n);if(!n||!(t=vu(t)))return n;var e=G(n),u=G(t);return Ou(e,W(e,u),L(e,u)+1).join("")}function Aa(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.slice(0,H(n)+1);if(!n||!(t=vu(t)))return n;var e=G(n);return Ou(e,0,L(e,G(t))+1).join("")}function ka(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.replace(Lt,"");
if(!n||!(t=vu(t)))return n;var e=G(n);return Ou(e,W(e,G(t))).join("")}function Oa(n,t){var r=An,e=kn;if(fc(t)){var u="separator"in t?t.separator:u;r="length"in t?kc(t.length):r,e="omission"in t?vu(t.omission):e}n=Ec(n);var i=n.length;if(T(n)){var o=G(n);i=o.length}if(r>=i)return n;var f=r-V(e);if(f<1)return e;var c=o?Ou(o,0,f).join(""):n.slice(0,f);if(u===X)return c+e;if(o&&(f+=c.length-f),Ah(u)){if(n.slice(f).search(u)){var a,l=c;for(u.global||(u=sl(u.source,Ec(Nt.exec(u))+"g")),u.lastIndex=0;a=u.exec(l);)var s=a.index;
c=c.slice(0,s===X?f:s)}}else if(n.indexOf(vu(u),f)!=f){var h=c.lastIndexOf(u);h>-1&&(c=c.slice(0,h))}return c+e}function Ia(n){return n=Ec(n),n&&jt.test(n)?n.replace(mt,ye):n}function Ra(n,t,r){return n=Ec(n),t=r?X:t,t===X?$(n)?Q(n):_(n):n.match(t)||[]}function za(t){var r=null==t?0:t.length,e=mi();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new pl(en);return[e(n[0]),n[1]]}):[],uu(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})}function Ea(n){
return Nr(Fr(n,an))}function Sa(n){return function(){return n}}function Wa(n,t){return null==n||n!==n?t:n}function La(n){return n}function Ca(n){return De("function"==typeof n?n:Fr(n,an))}function Ua(n){return qe(Fr(n,an))}function Ba(n,t){return Ze(n,Fr(t,an))}function Ta(n,t,e){var u=Pc(t),i=fe(t,u);null!=e||fc(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=fe(t,Pc(t)));var o=!(fc(e)&&"chain"in e&&!e.chain),f=uc(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;
if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Tu(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function $a(){return re._===this&&(re._=Al),this}function Da(){}function Ma(n){return n=kc(n),uu(function(t){return Ge(t,n)})}function Fa(n){return Bi(n)?m(no(n)):Qe(n)}function Na(n){return function(t){return null==n?X:_e(n,t)}}function Pa(){return[]}function qa(){return!1}function Za(){return{}}function Ka(){return"";
}function Va(){return!0}function Ga(n,t){if(n=kc(n),n<1||n>Wn)return[];var r=Un,e=Hl(n,Un);t=mi(t),n-=Un;for(var u=O(e,t);++r<n;)t(r);return u}function Ha(n){return bh(n)?c(n,no):bc(n)?[n]:Tu(Cs(Ec(n)))}function Ja(n){var t=++wl;return Ec(n)+t}function Ya(n){return n&&n.length?Yr(n,La,me):X}function Qa(n,t){return n&&n.length?Yr(n,mi(t,2),me):X}function Xa(n){return w(n,La)}function nl(n,t){return w(n,mi(t,2))}function tl(n){return n&&n.length?Yr(n,La,Ne):X}function rl(n,t){return n&&n.length?Yr(n,mi(t,2),Ne):X;
}function el(n){return n&&n.length?k(n,La):0}function ul(n,t){return n&&n.length?k(n,mi(t,2)):0}x=null==x?re:be.defaults(re.Object(),x,be.pick(re,qr));var il=x.Array,ol=x.Date,fl=x.Error,cl=x.Function,al=x.Math,ll=x.Object,sl=x.RegExp,hl=x.String,pl=x.TypeError,_l=il.prototype,vl=cl.prototype,gl=ll.prototype,yl=x["__core-js_shared__"],dl=vl.toString,bl=gl.hasOwnProperty,wl=0,ml=function(){var n=/[^.]+$/.exec(yl&&yl.keys&&yl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),xl=gl.toString,jl=dl.call(ll),Al=re._,kl=sl("^"+dl.call(bl).replace(St,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ol=ie?x.Buffer:X,Il=x.Symbol,Rl=x.Uint8Array,zl=Ol?Ol.allocUnsafe:X,El=F(ll.getPrototypeOf,ll),Sl=ll.create,Wl=gl.propertyIsEnumerable,Ll=_l.splice,Cl=Il?Il.isConcatSpreadable:X,Ul=Il?Il.iterator:X,Bl=Il?Il.toStringTag:X,Tl=function(){
try{var n=Ai(ll,"defineProperty");return n({},"",{}),n}catch(n){}}(),$l=x.clearTimeout!==re.clearTimeout&&x.clearTimeout,Dl=ol&&ol.now!==re.Date.now&&ol.now,Ml=x.setTimeout!==re.setTimeout&&x.setTimeout,Fl=al.ceil,Nl=al.floor,Pl=ll.getOwnPropertySymbols,ql=Ol?Ol.isBuffer:X,Zl=x.isFinite,Kl=_l.join,Vl=F(ll.keys,ll),Gl=al.max,Hl=al.min,Jl=ol.now,Yl=x.parseInt,Ql=al.random,Xl=_l.reverse,ns=Ai(x,"DataView"),ts=Ai(x,"Map"),rs=Ai(x,"Promise"),es=Ai(x,"Set"),us=Ai(x,"WeakMap"),is=Ai(ll,"create"),os=us&&new us,fs={},cs=to(ns),as=to(ts),ls=to(rs),ss=to(es),hs=to(us),ps=Il?Il.prototype:X,_s=ps?ps.valueOf:X,vs=ps?ps.toString:X,gs=function(){
function n(){}return function(t){if(!fc(t))return{};if(Sl)return Sl(t);n.prototype=t;var r=new n;return n.prototype=X,r}}();Z.templateSettings={escape:kt,evaluate:Ot,interpolate:It,variable:"",imports:{_:Z}},Z.prototype=J.prototype,Z.prototype.constructor=Z,Y.prototype=gs(J.prototype),Y.prototype.constructor=Y,Ct.prototype=gs(J.prototype),Ct.prototype.constructor=Ct,Xt.prototype.clear=nr,Xt.prototype.delete=tr,Xt.prototype.get=rr,Xt.prototype.has=er,Xt.prototype.set=ur,ir.prototype.clear=or,ir.prototype.delete=fr,
ir.prototype.get=cr,ir.prototype.has=ar,ir.prototype.set=lr,sr.prototype.clear=hr,sr.prototype.delete=pr,sr.prototype.get=_r,sr.prototype.has=vr,sr.prototype.set=gr,yr.prototype.add=yr.prototype.push=dr,yr.prototype.has=br,wr.prototype.clear=mr,wr.prototype.delete=xr,wr.prototype.get=jr,wr.prototype.has=Ar,wr.prototype.set=kr;var ys=Pu(ue),ds=Pu(oe,!0),bs=qu(),ws=qu(!0),ms=os?function(n,t){return os.set(n,t),n}:La,xs=Tl?function(n,t){return Tl(n,"toString",{configurable:!0,enumerable:!1,value:Sa(t),
writable:!0})}:La,js=uu,As=$l||function(n){return re.clearTimeout(n)},ks=es&&1/P(new es([,-0]))[1]==Sn?function(n){return new es(n)}:Da,Os=os?function(n){return os.get(n)}:Da,Is=Pl?function(n){return null==n?[]:(n=ll(n),i(Pl(n),function(t){return Wl.call(n,t)}))}:Pa,Rs=Pl?function(n){for(var t=[];n;)a(t,Is(n)),n=El(n);return t}:Pa,zs=we;(ns&&zs(new ns(new ArrayBuffer(1)))!=ct||ts&&zs(new ts)!=Gn||rs&&zs(rs.resolve())!=Qn||es&&zs(new es)!=tt||us&&zs(new us)!=it)&&(zs=function(n){var t=we(n),r=t==Yn?n.constructor:X,e=r?to(r):"";
if(e)switch(e){case cs:return ct;case as:return Gn;case ls:return Qn;case ss:return tt;case hs:return it}return t});var Es=yl?uc:qa,Ss=Qi(ms),Ws=Ml||function(n,t){return re.setTimeout(n,t)},Ls=Qi(xs),Cs=Pi(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(Et,function(n,r,e,u){t.push(e?u.replace(Mt,"$1"):r||n)}),t}),Us=uu(function(n,t){return Jf(n)?Hr(n,ee(t,1,Jf,!0)):[]}),Bs=uu(function(n,t){var r=jo(t);return Jf(r)&&(r=X),Jf(n)?Hr(n,ee(t,1,Jf,!0),mi(r,2)):[]}),Ts=uu(function(n,t){
var r=jo(t);return Jf(r)&&(r=X),Jf(n)?Hr(n,ee(t,1,Jf,!0),X,r):[]}),$s=uu(function(n){var t=c(n,ju);return t.length&&t[0]===n[0]?ke(t):[]}),Ds=uu(function(n){var t=jo(n),r=c(n,ju);return t===jo(r)?t=X:r.pop(),r.length&&r[0]===n[0]?ke(r,mi(t,2)):[]}),Ms=uu(function(n){var t=jo(n),r=c(n,ju);return t="function"==typeof t?t:X,t&&r.pop(),r.length&&r[0]===n[0]?ke(r,X,t):[]}),Fs=uu(Oo),Ns=gi(function(n,t){var r=null==n?0:n.length,e=Tr(n,t);return nu(n,c(t,function(n){return Ci(n,r)?+n:n}).sort(Lu)),e}),Ps=uu(function(n){
return gu(ee(n,1,Jf,!0))}),qs=uu(function(n){var t=jo(n);return Jf(t)&&(t=X),gu(ee(n,1,Jf,!0),mi(t,2))}),Zs=uu(function(n){var t=jo(n);return t="function"==typeof t?t:X,gu(ee(n,1,Jf,!0),X,t)}),Ks=uu(function(n,t){return Jf(n)?Hr(n,t):[]}),Vs=uu(function(n){return mu(i(n,Jf))}),Gs=uu(function(n){var t=jo(n);return Jf(t)&&(t=X),mu(i(n,Jf),mi(t,2))}),Hs=uu(function(n){var t=jo(n);return t="function"==typeof t?t:X,mu(i(n,Jf),X,t)}),Js=uu(Go),Ys=uu(function(n){var t=n.length,r=t>1?n[t-1]:X;return r="function"==typeof r?(n.pop(),
r):X,Ho(n,r)}),Qs=gi(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return Tr(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Ct&&Ci(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:nf,args:[u],thisArg:X}),new Y(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(X),n})):this.thru(u)}),Xs=Fu(function(n,t,r){bl.call(n,r)?++n[r]:Br(n,r,1)}),nh=Ju(ho),th=Ju(po),rh=Fu(function(n,t,r){bl.call(n,r)?n[r].push(t):Br(n,r,[t])}),eh=uu(function(t,r,e){var u=-1,i="function"==typeof r,o=Hf(t)?il(t.length):[];
return ys(t,function(t){o[++u]=i?n(r,t,e):Ie(t,r,e)}),o}),uh=Fu(function(n,t,r){Br(n,r,t)}),ih=Fu(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),oh=uu(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Ui(n,t[0],t[1])?t=[]:r>2&&Ui(t[0],t[1],t[2])&&(t=[t[0]]),He(n,ee(t,1),[])}),fh=Dl||function(){return re.Date.now()},ch=uu(function(n,t,r){var e=_n;if(r.length){var u=N(r,wi(ch));e|=bn}return ai(n,e,t,r,u)}),ah=uu(function(n,t,r){var e=_n|vn;if(r.length){var u=N(r,wi(ah));e|=bn;
}return ai(t,e,n,r,u)}),lh=uu(function(n,t){return Gr(n,1,t)}),sh=uu(function(n,t,r){return Gr(n,Ic(t)||0,r)});Cf.Cache=sr;var hh=js(function(t,r){r=1==r.length&&bh(r[0])?c(r[0],z(mi())):c(ee(r,1),z(mi()));var e=r.length;return uu(function(u){for(var i=-1,o=Hl(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);return n(t,this,u)})}),ph=uu(function(n,t){return ai(n,bn,X,t,N(t,wi(ph)))}),_h=uu(function(n,t){return ai(n,wn,X,t,N(t,wi(_h)))}),vh=gi(function(n,t){return ai(n,xn,X,X,X,t)}),gh=ii(me),yh=ii(function(n,t){
return n>=t}),dh=Re(function(){return arguments}())?Re:function(n){return cc(n)&&bl.call(n,"callee")&&!Wl.call(n,"callee")},bh=il.isArray,wh=ce?z(ce):ze,mh=ql||qa,xh=ae?z(ae):Ee,jh=le?z(le):Le,Ah=se?z(se):Be,kh=he?z(he):Te,Oh=pe?z(pe):$e,Ih=ii(Ne),Rh=ii(function(n,t){return n<=t}),zh=Nu(function(n,t){if(Mi(t)||Hf(t))return $u(t,Pc(t),n),X;for(var r in t)bl.call(t,r)&&Sr(n,r,t[r])}),Eh=Nu(function(n,t){$u(t,qc(t),n)}),Sh=Nu(function(n,t,r,e){$u(t,qc(t),n,e)}),Wh=Nu(function(n,t,r,e){$u(t,Pc(t),n,e);
}),Lh=gi(Tr),Ch=uu(function(n,t){n=ll(n);var r=-1,e=t.length,u=e>2?t[2]:X;for(u&&Ui(t[0],t[1],u)&&(e=1);++r<e;)for(var i=t[r],o=qc(i),f=-1,c=o.length;++f<c;){var a=o[f],l=n[a];(l===X||Gf(l,gl[a])&&!bl.call(n,a))&&(n[a]=i[a])}return n}),Uh=uu(function(t){return t.push(X,si),n(Mh,X,t)}),Bh=Xu(function(n,t,r){null!=t&&"function"!=typeof t.toString&&(t=xl.call(t)),n[t]=r},Sa(La)),Th=Xu(function(n,t,r){null!=t&&"function"!=typeof t.toString&&(t=xl.call(t)),bl.call(n,t)?n[t].push(r):n[t]=[r]},mi),$h=uu(Ie),Dh=Nu(function(n,t,r){
Ke(n,t,r)}),Mh=Nu(function(n,t,r,e){Ke(n,t,r,e)}),Fh=gi(function(n,t){var r={};if(null==n)return r;var e=!1;t=c(t,function(t){return t=ku(t,n),e||(e=t.length>1),t}),$u(n,di(n),r),e&&(r=Fr(r,an|ln|sn,hi));for(var u=t.length;u--;)yu(r,t[u]);return r}),Nh=gi(function(n,t){return null==n?{}:Je(n,t)}),Ph=ci(Pc),qh=ci(qc),Zh=Vu(function(n,t,r){return t=t.toLowerCase(),n+(r?fa(t):t)}),Kh=Vu(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Vh=Vu(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Gh=Ku("toLowerCase"),Hh=Vu(function(n,t,r){
return n+(r?"_":"")+t.toLowerCase()}),Jh=Vu(function(n,t,r){return n+(r?" ":"")+Qh(t)}),Yh=Vu(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Qh=Ku("toUpperCase"),Xh=uu(function(t,r){try{return n(t,X,r)}catch(n){return rc(n)?n:new fl(n)}}),np=gi(function(n,t){return r(t,function(t){t=no(t),Br(n,t,ch(n[t],n))}),n}),tp=Yu(),rp=Yu(!0),ep=uu(function(n,t){return function(r){return Ie(r,n,t)}}),up=uu(function(n,t){return function(r){return Ie(n,r,t)}}),ip=ti(c),op=ti(u),fp=ti(h),cp=ui(),ap=ui(!0),lp=ni(function(n,t){
return n+t},0),sp=fi("ceil"),hp=ni(function(n,t){return n/t},1),pp=fi("floor"),_p=ni(function(n,t){return n*t},1),vp=fi("round"),gp=ni(function(n,t){return n-t},0);return Z.after=If,Z.ary=Rf,Z.assign=zh,Z.assignIn=Eh,Z.assignInWith=Sh,Z.assignWith=Wh,Z.at=Lh,Z.before=zf,Z.bind=ch,Z.bindAll=np,Z.bindKey=ah,Z.castArray=Nf,Z.chain=Qo,Z.chunk=uo,Z.compact=io,Z.concat=oo,Z.cond=za,Z.conforms=Ea,Z.constant=Sa,Z.countBy=Xs,Z.create=Sc,Z.curry=Ef,Z.curryRight=Sf,Z.debounce=Wf,Z.defaults=Ch,Z.defaultsDeep=Uh,
Z.defer=lh,Z.delay=sh,Z.difference=Us,Z.differenceBy=Bs,Z.differenceWith=Ts,Z.drop=fo,Z.dropRight=co,Z.dropRightWhile=ao,Z.dropWhile=lo,Z.fill=so,Z.filter=lf,Z.flatMap=sf,Z.flatMapDeep=hf,Z.flatMapDepth=pf,Z.flatten=_o,Z.flattenDeep=vo,Z.flattenDepth=go,Z.flip=Lf,Z.flow=tp,Z.flowRight=rp,Z.fromPairs=yo,Z.functions=$c,Z.functionsIn=Dc,Z.groupBy=rh,Z.initial=mo,Z.intersection=$s,Z.intersectionBy=Ds,Z.intersectionWith=Ms,Z.invert=Bh,Z.invertBy=Th,Z.invokeMap=eh,Z.iteratee=Ca,Z.keyBy=uh,Z.keys=Pc,Z.keysIn=qc,
Z.map=yf,Z.mapKeys=Zc,Z.mapValues=Kc,Z.matches=Ua,Z.matchesProperty=Ba,Z.memoize=Cf,Z.merge=Dh,Z.mergeWith=Mh,Z.method=ep,Z.methodOf=up,Z.mixin=Ta,Z.negate=Uf,Z.nthArg=Ma,Z.omit=Fh,Z.omitBy=Vc,Z.once=Bf,Z.orderBy=df,Z.over=ip,Z.overArgs=hh,Z.overEvery=op,Z.overSome=fp,Z.partial=ph,Z.partialRight=_h,Z.partition=ih,Z.pick=Nh,Z.pickBy=Gc,Z.property=Fa,Z.propertyOf=Na,Z.pull=Fs,Z.pullAll=Oo,Z.pullAllBy=Io,Z.pullAllWith=Ro,Z.pullAt=Ns,Z.range=cp,Z.rangeRight=ap,Z.rearg=vh,Z.reject=mf,Z.remove=zo,Z.rest=Tf,
Z.reverse=Eo,Z.sampleSize=jf,Z.set=Jc,Z.setWith=Yc,Z.shuffle=Af,Z.slice=So,Z.sortBy=oh,Z.sortedUniq=$o,Z.sortedUniqBy=Do,Z.split=da,Z.spread=$f,Z.tail=Mo,Z.take=Fo,Z.takeRight=No,Z.takeRightWhile=Po,Z.takeWhile=qo,Z.tap=Xo,Z.throttle=Df,Z.thru=nf,Z.toArray=jc,Z.toPairs=Ph,Z.toPairsIn=qh,Z.toPath=Ha,Z.toPlainObject=Rc,Z.transform=Qc,Z.unary=Mf,Z.union=Ps,Z.unionBy=qs,Z.unionWith=Zs,Z.uniq=Zo,Z.uniqBy=Ko,Z.uniqWith=Vo,Z.unset=Xc,Z.unzip=Go,Z.unzipWith=Ho,Z.update=na,Z.updateWith=ta,Z.values=ra,Z.valuesIn=ea,
Z.without=Ks,Z.words=Ra,Z.wrap=Ff,Z.xor=Vs,Z.xorBy=Gs,Z.xorWith=Hs,Z.zip=Js,Z.zipObject=Jo,Z.zipObjectDeep=Yo,Z.zipWith=Ys,Z.entries=Ph,Z.entriesIn=qh,Z.extend=Eh,Z.extendWith=Sh,Ta(Z,Z),Z.add=lp,Z.attempt=Xh,Z.camelCase=Zh,Z.capitalize=fa,Z.ceil=sp,Z.clamp=ua,Z.clone=Pf,Z.cloneDeep=Zf,Z.cloneDeepWith=Kf,Z.cloneWith=qf,Z.conformsTo=Vf,Z.deburr=ca,Z.defaultTo=Wa,Z.divide=hp,Z.endsWith=aa,Z.eq=Gf,Z.escape=la,Z.escapeRegExp=sa,Z.every=af,Z.find=nh,Z.findIndex=ho,Z.findKey=Wc,Z.findLast=th,Z.findLastIndex=po,
Z.findLastKey=Lc,Z.floor=pp,Z.forEach=_f,Z.forEachRight=vf,Z.forIn=Cc,Z.forInRight=Uc,Z.forOwn=Bc,Z.forOwnRight=Tc,Z.get=Mc,Z.gt=gh,Z.gte=yh,Z.has=Fc,Z.hasIn=Nc,Z.head=bo,Z.identity=La,Z.includes=gf,Z.indexOf=wo,Z.inRange=ia,Z.invoke=$h,Z.isArguments=dh,Z.isArray=bh,Z.isArrayBuffer=wh,Z.isArrayLike=Hf,Z.isArrayLikeObject=Jf,Z.isBoolean=Yf,Z.isBuffer=mh,Z.isDate=xh,Z.isElement=Qf,Z.isEmpty=Xf,Z.isEqual=nc,Z.isEqualWith=tc,Z.isError=rc,Z.isFinite=ec,Z.isFunction=uc,Z.isInteger=ic,Z.isLength=oc,Z.isMap=jh,
Z.isMatch=ac,Z.isMatchWith=lc,Z.isNaN=sc,Z.isNative=hc,Z.isNil=_c,Z.isNull=pc,Z.isNumber=vc,Z.isObject=fc,Z.isObjectLike=cc,Z.isPlainObject=gc,Z.isRegExp=Ah,Z.isSafeInteger=yc,Z.isSet=kh,Z.isString=dc,Z.isSymbol=bc,Z.isTypedArray=Oh,Z.isUndefined=wc,Z.isWeakMap=mc,Z.isWeakSet=xc,Z.join=xo,Z.kebabCase=Kh,Z.last=jo,Z.lastIndexOf=Ao,Z.lowerCase=Vh,Z.lowerFirst=Gh,Z.lt=Ih,Z.lte=Rh,Z.max=Ya,Z.maxBy=Qa,Z.mean=Xa,Z.meanBy=nl,Z.min=tl,Z.minBy=rl,Z.stubArray=Pa,Z.stubFalse=qa,Z.stubObject=Za,Z.stubString=Ka,
Z.stubTrue=Va,Z.multiply=_p,Z.nth=ko,Z.noConflict=$a,Z.noop=Da,Z.now=fh,Z.pad=ha,Z.padEnd=pa,Z.padStart=_a,Z.parseInt=va,Z.random=oa,Z.reduce=bf,Z.reduceRight=wf,Z.repeat=ga,Z.replace=ya,Z.result=Hc,Z.round=vp,Z.runInContext=p,Z.sample=xf,Z.size=kf,Z.snakeCase=Hh,Z.some=Of,Z.sortedIndex=Wo,Z.sortedIndexBy=Lo,Z.sortedIndexOf=Co,Z.sortedLastIndex=Uo,Z.sortedLastIndexBy=Bo,Z.sortedLastIndexOf=To,Z.startCase=Jh,Z.startsWith=ba,Z.subtract=gp,Z.sum=el,Z.sumBy=ul,Z.template=wa,Z.times=Ga,Z.toFinite=Ac,Z.toInteger=kc,
Z.toLength=Oc,Z.toLower=ma,Z.toNumber=Ic,Z.toSafeInteger=zc,Z.toString=Ec,Z.toUpper=xa,Z.trim=ja,Z.trimEnd=Aa,Z.trimStart=ka,Z.truncate=Oa,Z.unescape=Ia,Z.uniqueId=Ja,Z.upperCase=Yh,Z.upperFirst=Qh,Z.each=_f,Z.eachRight=vf,Z.first=bo,Ta(Z,function(){var n={};return ue(Z,function(t,r){bl.call(Z.prototype,r)||(n[r]=t)}),n}(),{chain:!1}),Z.VERSION=nn,r(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){Z[n].placeholder=Z}),r(["drop","take"],function(n,t){Ct.prototype[n]=function(r){
r=r===X?1:Gl(kc(r),0);var e=this.__filtered__&&!t?new Ct(this):this.clone();return e.__filtered__?e.__takeCount__=Hl(r,e.__takeCount__):e.__views__.push({size:Hl(r,Un),type:n+(e.__dir__<0?"Right":"")}),e},Ct.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==Rn||r==En;Ct.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:mi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){
var r="take"+(t?"Right":"");Ct.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Ct.prototype[n]=function(){return this.__filtered__?new Ct(this):this[r](1)}}),Ct.prototype.compact=function(){return this.filter(La)},Ct.prototype.find=function(n){return this.filter(n).head()},Ct.prototype.findLast=function(n){return this.reverse().find(n)},Ct.prototype.invokeMap=uu(function(n,t){return"function"==typeof n?new Ct(this):this.map(function(r){
return Ie(r,n,t)})}),Ct.prototype.reject=function(n){return this.filter(Uf(mi(n)))},Ct.prototype.slice=function(n,t){n=kc(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Ct(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==X&&(t=kc(t),r=t<0?r.dropRight(-t):r.take(t-n)),r)},Ct.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Ct.prototype.toArray=function(){return this.take(Un)},ue(Ct.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=Z[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);
u&&(Z.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,f=t instanceof Ct,c=o[0],l=f||bh(t),s=function(n){var t=u.apply(Z,a([n],o));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(f=l=!1);var h=this.__chain__,p=!!this.__actions__.length,_=i&&!h,v=f&&!p;if(!i&&l){t=v?t:new Ct(this);var g=n.apply(t,o);return g.__actions__.push({func:nf,args:[s],thisArg:X}),new Y(g,h)}return _&&v?n.apply(this,o):(g=this.thru(s),_?e?g.value()[0]:g.value():g)})}),r(["pop","push","shift","sort","splice","unshift"],function(n){
var t=_l[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);Z.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(bh(u)?u:[],n)}return this[r](function(r){return t.apply(bh(r)?r:[],n)})}}),ue(Ct.prototype,function(n,t){var r=Z[t];if(r){var e=r.name+"";bl.call(fs,e)||(fs[e]=[]),fs[e].push({name:t,func:r})}}),fs[Qu(X,vn).name]=[{name:"wrapper",func:X}],Ct.prototype.clone=$t,Ct.prototype.reverse=Yt,Ct.prototype.value=Qt,Z.prototype.at=Qs,
Z.prototype.chain=tf,Z.prototype.commit=rf,Z.prototype.next=ef,Z.prototype.plant=of,Z.prototype.reverse=ff,Z.prototype.toJSON=Z.prototype.valueOf=Z.prototype.value=cf,Z.prototype.first=Z.prototype.head,Ul&&(Z.prototype[Ul]=uf),Z},be=de();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(re._=be,define(function(){return be})):ue?((ue.exports=be)._=be,ee._=be):re._=be}).call(this);

File diff suppressed because it is too large Load Diff

View File

@@ -1,38 +0,0 @@
/**
* @license
* Lo-Dash 2.2.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
* Build: `lodash underscore exports="amd,commonjs,global,node" -o ./dist/lodash.underscore.js`
*/
;(function(){function n(n,r,t){t=(t||0)-1;for(var e=n?n.length:0;++t<e;)if(n[t]===r)return t;return-1}function r(n,r){var t=n.m,e=r.m;if(t!==e){if(t>e||typeof t=="undefined")return 1;if(t<e||typeof e=="undefined")return-1}return n.n-r.n}function t(n){return"\\"+vr[n]}function e(){}function u(n){return n instanceof u?n:new o(n)}function o(n,r){this.__chain__=!!r,this.__wrapped__=n}function i(n,r,t){if(typeof n!="function")return Q;if(typeof r=="undefined")return n;switch(t){case 1:return function(t){return n.call(r,t)
};case 2:return function(t,e){return n.call(r,t,e)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return J(n,r)}function f(n,r,t,e){e=(e||0)-1;for(var u=n?n.length:0,o=[];++e<u;){var i=n[e];if(i&&typeof i=="object"&&typeof i.length=="number"&&(Vr(i)||y(i))){r||(i=f(i,r,t));var a=-1,l=i.length,c=o.length;for(o.length+=l;++a<l;)o[c++]=i[a]}else t||o.push(i)}return o}function a(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(n===n&&!(n&&hr[typeof n]||r&&hr[typeof r]))return!1;
if(null==n||null==r)return n===r;var o=Br.call(n),i=Br.call(r);if(o!=i)return!1;switch(o){case fr:case ar:return+n==+r;case lr:return n!=+n?r!=+r:0==n?1/n==1/r:n==+r;case pr:case sr:return n==r+""}if(i=o==ir,!i){if(Ar.call(n,"__wrapped__")||r instanceof u)return a(n.__wrapped__||n,r.__wrapped__||r,t,e);if(o!=cr)return!1;var o=n.constructor,f=r.constructor;if(o!=f&&!(j(o)&&o instanceof o&&j(f)&&f instanceof f))return!1}for(t||(t=[]),e||(e=[]),o=t.length;o--;)if(t[o]==n)return e[o]==r;var l=!0,c=0;
if(t.push(n),e.push(r),i){if(c=r.length,l=c==n.length)for(;c--&&(l=a(n[c],r[c],t,e)););return l}return Xr(r,function(r,u,o){return Ar.call(o,u)?(c++,!(l=Ar.call(n,u)&&a(n[u],r,t,e))&&rr):void 0}),l&&Xr(n,function(n,r,t){return Ar.call(t,r)?!(l=-1<--c)&&rr:void 0}),l}function l(n,r,t){for(var e=-1,u=v(),o=n?n.length:0,i=[],f=t?[]:i;++e<o;){var a=n[e],l=t?t(a,e,n):a;(r?!e||f[f.length-1]!==l:0>u(f,l))&&(t&&f.push(l),i.push(a))}return i}function c(n){return function(r,t,e){var u={};t=K(t,e,3),e=-1;var o=r?r.length:0;
if(typeof o=="number")for(;++e<o;){var i=r[e];n(u,i,t(i,e,r),r)}else Yr(r,function(r,e,o){n(u,r,t(r,e,o),o)});return u}}function p(n,r,t,e,u,o){var i=1&r,f=2&r,a=4&r,l=8&r,c=16&r,h=32&r,v=n;if(!f&&!j(n))throw new TypeError;if(c&&!t.length&&(r&=-17,c=t=!1),h&&!e.length&&(r&=-33,h=e=!1),!i||f||a||h||!(Ur.fastBind||Rr&&c))y=function(){var g=arguments,m=i?u:this;return(a||c||h)&&(g=zr.call(g),c&&Nr.apply(g,t),h&&Sr.apply(g,e),a&&g.length<o)?(r|=16,p(n,l?r:-4&r,g,null,u,o)):(f&&(n=m[v]),this instanceof y?(m=s(n.prototype),g=n.apply(m,g),x(g)?g:m):n.apply(m,g))
};else{if(c){var g=[u];Sr.apply(g,t)}var y=c?Rr.apply(n,g):Rr.call(n,u)}return y}function s(n){return x(n)?kr(n):{}}function h(n){return Jr[n]}function v(){var r=(r=u.indexOf)===U?n:r;return r}function g(n){return Kr[n]}function y(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Br.call(n)==or||!1}function m(n){if(!n)return n;for(var r=1,t=arguments.length;r<t;r++){var e=arguments[r];if(e)for(var u in e)n[u]=e[u]}return n}function _(n){if(!n)return n;for(var r=1,t=arguments.length;r<t;r++){var e=arguments[r];
if(e)for(var u in e)"undefined"==typeof n[u]&&(n[u]=e[u])}return n}function d(n){var r=[];return Xr(n,function(n,t){j(n)&&r.push(t)}),r.sort()}function b(n){for(var r=-1,t=Hr(n),e=t.length,u={};++r<e;){var o=t[r];u[n[o]]=o}return u}function w(n){if(!n)return!0;if(Vr(n)||T(n))return!n.length;for(var r in n)if(Ar.call(n,r))return!1;return!0}function j(n){return typeof n=="function"}function x(n){return!(!n||!hr[typeof n])}function E(n){return typeof n=="number"||Br.call(n)==lr}function T(n){return typeof n=="string"||Br.call(n)==sr
}function A(n){for(var r=-1,t=Hr(n),e=t.length,u=Array(e);++r<e;)u[r]=n[t[r]];return u}function O(n,r){var t=v(),e=n?n.length:0,u=!1;return e&&typeof e=="number"?u=-1<t(n,r):Yr(n,function(n){return(u=n===r)&&rr}),u}function S(n,r,t){var e=!0;r=K(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++t<u&&(e=!!r(n[t],t,n)););else Yr(n,function(n,t,u){return!(e=!!r(n,t,u))&&rr});return e}function B(n,r,t){var e=[];r=K(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++t<u;){var o=n[t];
r(o,t,n)&&e.push(o)}else Yr(n,function(n,t,u){r(n,t,u)&&e.push(n)});return e}function N(n,r,t){r=K(r,t,3),t=-1;var e=n?n.length:0;if(typeof e!="number"){var u;return Yr(n,function(n,t,e){return r(n,t,e)?(u=n,rr):void 0}),u}for(;++t<e;){var o=n[t];if(r(o,t,n))return o}}function R(n,r,t){var e=-1,u=n?n.length:0;if(r=r&&typeof t=="undefined"?r:i(r,t,3),typeof u=="number")for(;++e<u&&r(n[e],e,n)!==rr;);else Yr(n,r)}function k(n,r){var t=n?n.length:0;if(typeof t=="number")for(;t--&&false!==r(n[t],t,n););else{var e=Hr(n),t=e.length;
Yr(n,function(n,u,o){return u=e?e[--t]:--t,false===r(o[u],u,o)&&rr})}}function F(n,r,t){var e=-1,u=n?n.length:0;if(r=K(r,t,3),typeof u=="number")for(var o=Array(u);++e<u;)o[e]=r(n[e],e,n);else o=[],Yr(n,function(n,t,u){o[++e]=r(n,t,u)});return o}function q(n,r,t){var e=-1/0,u=e,o=-1,i=n?n.length:0;if(r||typeof i!="number")r=K(r,t,3),R(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});else for(;++o<i;)t=n[o],t>u&&(u=t);return u}function D(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(var u=Array(e);++t<e;)u[t]=n[t][r];
return u||F(n,r)}function M(n,r,t,e){if(!n)return t;var u=3>arguments.length;r=i(r,e,4);var o=-1,f=n.length;if(typeof f=="number")for(u&&(t=n[++o]);++o<f;)t=r(t,n[o],o,n);else Yr(n,function(n,e,o){t=u?(u=!1,n):r(t,n,e,o)});return t}function $(n,r,t,e){var u=3>arguments.length;return r=i(r,e,4),k(n,function(n,e,o){t=u?(u=!1,n):r(t,n,e,o)}),t}function I(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return R(n,function(n){var t=Y(++r);e[r]=e[t],e[t]=n}),e}function W(n,r,t){var e;r=K(r,t,3),t=-1;
var u=n?n.length:0;if(typeof u=="number")for(;++t<u&&!(e=r(n[t],t,n)););else Yr(n,function(n,t,u){return(e=r(n,t,u))&&rr});return!!e}function z(n,r,t){return t&&w(r)?Z:(t?N:B)(n,r)}function C(n){for(var r=-1,t=v(),e=n.length,u=f(arguments,!0,!0,1),o=[];++r<e;){var i=n[r];0>t(u,i)&&o.push(i)}return o}function P(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=-1;for(r=K(r,t,3);++o<u&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n?n[0]:Z;return zr.call(n,0,Ir($r(0,e),u))}function U(r,t,e){if(typeof e=="number"){var u=r?r.length:0;
e=0>e?$r(0,u+e):e||0}else if(e)return e=G(r,t),r[e]===t?e:-1;return n(r,t,e)}function V(n,r,t){if(typeof r!="number"&&null!=r){var e=0,u=-1,o=n?n.length:0;for(r=K(r,t,3);++u<o&&r(n[u],u,n);)e++}else e=null==r||t?1:$r(0,r);return zr.call(n,e)}function G(n,r,t,e){var u=0,o=n?n.length:u;for(t=t?K(t,e,1):Q,r=t(r);u<o;)e=u+o>>>1,t(n[e])<r?u=e+1:o=e;return u}function H(n,r,t,e){return typeof r!="boolean"&&null!=r&&(t=(e=t)&&e[r]===n?null:r,r=!1),null!=t&&(t=K(t,e,3)),l(n,r,t)}function J(n,r){return 2<arguments.length?p(n,17,zr.call(arguments,2),null,r):p(n,1,null,null,r)
}function K(n,r,t){var e=typeof n;if(null==n||"function"==e)return i(n,r,t);if("object"!=e)return function(r){return r[n]};var u=Hr(n);return function(r){for(var t=u.length,e=!1;t--&&(e=r[u[t]]===n[u[t]]););return e}}function L(n,r,t){var e,u,o,i,f,a,l,c=0,p=!1,s=!0;if(!j(n))throw new TypeError;if(r=$r(0,r)||0,true===t)var h=!0,s=!1;else x(t)&&(h=t.leading,p="maxWait"in t&&($r(r,t.maxWait)||0),s="trailing"in t?t.trailing:s);var v=function(){var t=r-(Or()-i);0<t?a=setTimeout(v,t):(u&&clearTimeout(u),t=l,u=a=l=Z,t&&(c=Or(),o=n.apply(f,e)))
},g=function(){a&&clearTimeout(a),u=a=l=Z,(s||p!==r)&&(c=Or(),o=n.apply(f,e))};return function(){if(e=arguments,i=Or(),f=this,l=s&&(a||!h),false===p)var t=h&&!a;else{u||h||(c=i);var y=p-(i-c);0<y?u||(u=setTimeout(g,y)):(u&&(u=clearTimeout(u)),c=i,o=n.apply(f,e))}return a||r===p||(a=setTimeout(v,r)),t&&(o=n.apply(f,e)),o}}function Q(n){return n}function X(n){R(d(n),function(r){var t=u[r]=n[r];u.prototype[r]=function(){var n=[this.__wrapped__];return Sr.apply(n,arguments),n=t.apply(u,n),this.__chain__&&(n=new o(n),n.__chain__=!0),n
}})}function Y(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Tr(Wr()*(r-n+1))}var Z,nr=0,rr={},tr=+new Date+"",er=/($^)/,ur=/['\n\r\t\u2028\u2029\\]/g,or="[object Arguments]",ir="[object Array]",fr="[object Boolean]",ar="[object Date]",lr="[object Number]",cr="[object Object]",pr="[object RegExp]",sr="[object String]",hr={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},vr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},gr=hr[typeof window]&&window||this,yr=hr[typeof exports]&&exports&&!exports.nodeType&&exports,mr=hr[typeof module]&&module&&!module.nodeType&&module,_r=mr&&mr.exports===yr&&yr,dr=hr[typeof global]&&global;
!dr||dr.global!==dr&&dr.window!==dr||(gr=dr);var br=[],wr=Object.prototype,jr=gr._,xr=RegExp("^"+(wr.valueOf+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),Er=Math.ceil,Tr=Math.floor,Ar=wr.hasOwnProperty,Or=xr.test(Or=Date.now)&&Or||function(){return+new Date},Sr=br.push,Br=wr.toString,Nr=br.unshift,Rr=xr.test(Rr=Br.bind)&&Rr,kr=xr.test(kr=Object.create)&&kr,Fr=xr.test(Fr=Array.isArray)&&Fr,qr=gr.isFinite,Dr=gr.isNaN,Mr=xr.test(Mr=Object.keys)&&Mr,$r=Math.max,Ir=Math.min,Wr=Math.random,zr=br.slice,Cr=xr.test(gr.attachEvent),Pr=Rr&&!/\n|true/.test(Rr+Cr);
o.prototype=u.prototype;var Ur={};!function(){var n={0:1,length:1};Ur.fastBind=Rr&&!Pr,Ur.spliceObjects=(br.splice.call(n,0,1),!n[0])}(1),u.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},kr||(s=function(n){if(x(n)){e.prototype=n;var r=new e;e.prototype=null}return r||{}}),y(arguments)||(y=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ar.call(n,"callee")||!1});var Vr=Fr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Br.call(n)==ir||!1
},Gr=function(n){var r,t=[];if(!n||!hr[typeof n])return t;for(r in n)Ar.call(n,r)&&t.push(r);return t},Hr=Mr?function(n){return x(n)?Mr(n):[]}:Gr,Jr={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},Kr=b(Jr),Lr=RegExp("("+Hr(Kr).join("|")+")","g"),Qr=RegExp("["+Hr(Jr).join("")+"]","g"),Xr=function(n,r){var t;if(!n||!hr[typeof n])return n;for(t in n)if(r(n[t],t,n)===rr)break;return n},Yr=function(n,r){var t;if(!n||!hr[typeof n])return n;for(t in n)if(Ar.call(n,t)&&r(n[t],t,n)===rr)break;
return n};j(/x/)&&(j=function(n){return typeof n=="function"&&"[object Function]"==Br.call(n)});var Zr=c(function(n,r,t){Ar.call(n,t)?n[t]++:n[t]=1}),nt=c(function(n,r,t){(Ar.call(n,t)?n[t]:n[t]=[]).push(r)}),rt=c(function(n,r,t){n[t]=r});u.after=function(n,r){if(!j(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0}},u.bind=J,u.bindAll=function(n){for(var r=1<arguments.length?f(arguments,!0,!1,1):d(n),t=-1,e=r.length;++t<e;){var u=r[t];n[u]=p(n[u],1,null,null,n)}return n
},u.chain=function(n){return n=new o(n),n.__chain__=!0,n},u.compact=function(n){for(var r=-1,t=n?n.length:0,e=[];++r<t;){var u=n[r];u&&e.push(u)}return e},u.compose=function(){for(var n=arguments,r=n.length;r--;)if(!j(n[r]))throw new TypeError;return function(){for(var r=arguments,t=n.length;t--;)r=[n[t].apply(this,r)];return r[0]}},u.countBy=Zr,u.debounce=L,u.defaults=_,u.defer=function(n){if(!j(n))throw new TypeError;var r=zr.call(arguments,1);return setTimeout(function(){n.apply(Z,r)},1)},u.delay=function(n,r){if(!j(n))throw new TypeError;
var t=zr.call(arguments,2);return setTimeout(function(){n.apply(Z,t)},r)},u.difference=C,u.filter=B,u.flatten=function(n,r){return f(n,r)},u.forEach=R,u.functions=d,u.groupBy=nt,u.indexBy=rt,u.initial=function(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=u;for(r=K(r,t,3);o--&&r(n[o],o,n);)e++}else e=null==r||t?1:r||e;return zr.call(n,0,Ir($r(0,u-e),u))},u.intersection=function(n){var r=arguments,t=r.length,e=-1,u=v(),o=n?n.length:0,i=[];n:for(;++e<o;){var f=n[e];if(0>u(i,f)){for(var a=t;--a;)if(0>u(r[a],f))continue n;
i.push(f)}}return i},u.invert=b,u.invoke=function(n,r){var t=zr.call(arguments,2),e=-1,u=typeof r=="function",o=n?n.length:0,i=Array(typeof o=="number"?o:0);return R(n,function(n){i[++e]=(u?r:n[r]).apply(n,t)}),i},u.keys=Hr,u.map=F,u.max=q,u.memoize=function(n,r){var t={};return function(){var e=r?r.apply(this,arguments):tr+arguments[0];return Ar.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},u.min=function(n,r,t){var e=1/0,u=e,o=-1,i=n?n.length:0;if(r||typeof i!="number")r=K(r,t,3),R(n,function(n,t,o){t=r(n,t,o),t<e&&(e=t,u=n)
});else for(;++o<i;)t=n[o],t<u&&(u=t);return u},u.omit=function(n){var r=v(),t=f(arguments,!0,!1,1),e={};return Xr(n,function(n,u){0>r(t,u)&&(e[u]=n)}),e},u.once=function(n){var r,t;if(!j(n))throw new TypeError;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},u.pairs=function(n){for(var r=-1,t=Hr(n),e=t.length,u=Array(e);++r<e;){var o=t[r];u[r]=[o,n[o]]}return u},u.partial=function(n){return p(n,16,zr.call(arguments,1))},u.pick=function(n){for(var r=-1,t=f(arguments,!0,!1,1),e=t.length,u={};++r<e;){var o=t[r];
o in n&&(u[o]=n[o])}return u},u.pluck=D,u.range=function(n,r,t){n=+n||0,t=+t||1,null==r&&(r=n,n=0);var e=-1;r=$r(0,Er((r-n)/t));for(var u=Array(r);++e<r;)u[e]=n,n+=t;return u},u.reject=function(n,r,t){return r=K(r,t,3),B(n,function(n,t,e){return!r(n,t,e)})},u.rest=V,u.shuffle=I,u.sortBy=function(n,t,e){var u=-1,o=n?n.length:0,i=Array(typeof o=="number"?o:0);for(t=K(t,e,3),R(n,function(n,r,e){i[++u]={m:t(n,r,e),n:u,o:n}}),o=i.length,i.sort(r);o--;)i[o]=i[o].o;return i},u.tap=function(n,r){return r(n),n
},u.throttle=function(n,r,t){var e=!0,u=!0;if(!j(n))throw new TypeError;return false===t?e=!1:x(t)&&(e="leading"in t?t.leading:e,u="trailing"in t?t.trailing:u),t={},t.leading=e,t.maxWait=r,t.trailing=u,L(n,r,t)},u.times=function(n,r,t){n=-1<(n=+n)?n:0;var e=-1,u=Array(n);for(r=i(r,t,1);++e<n;)u[e]=r(e);return u},u.toArray=function(n){return Vr(n)?zr.call(n):n&&typeof n.length=="number"?F(n):A(n)},u.union=function(){return l(f(arguments,!0,!0))},u.uniq=H,u.values=A,u.where=z,u.without=function(n){return C(n,zr.call(arguments,1))
},u.wrap=function(n,r){if(!j(r))throw new TypeError;return function(){var t=[n];return Sr.apply(t,arguments),r.apply(this,t)}},u.zip=function(){for(var n=-1,r=q(D(arguments,"length")),t=Array(0>r?0:r);++n<r;)t[n]=D(arguments,n);return t},u.collect=F,u.drop=V,u.each=R,u.extend=m,u.methods=d,u.object=function(n,r){for(var t=-1,e=n?n.length:0,u={};++t<e;){var o=n[t];r?u[o]=r[t]:o&&(u[o[0]]=o[1])}return u},u.select=B,u.tail=V,u.unique=H,u.clone=function(n){return x(n)?Vr(n)?zr.call(n):m({},n):n},u.contains=O,u.escape=function(n){return null==n?"":(n+"").replace(Qr,h)
},u.every=S,u.find=N,u.has=function(n,r){return n?Ar.call(n,r):!1},u.identity=Q,u.indexOf=U,u.isArguments=y,u.isArray=Vr,u.isBoolean=function(n){return true===n||false===n||Br.call(n)==fr},u.isDate=function(n){return n?typeof n=="object"&&Br.call(n)==ar:!1},u.isElement=function(n){return n?1===n.nodeType:!1},u.isEmpty=w,u.isEqual=function(n,r){return a(n,r)},u.isFinite=function(n){return qr(n)&&!Dr(parseFloat(n))},u.isFunction=j,u.isNaN=function(n){return E(n)&&n!=+n},u.isNull=function(n){return null===n
},u.isNumber=E,u.isObject=x,u.isRegExp=function(n){return n&&hr[typeof n]?Br.call(n)==pr:!1},u.isString=T,u.isUndefined=function(n){return typeof n=="undefined"},u.lastIndexOf=function(n,r,t){var e=n?n.length:0;for(typeof t=="number"&&(e=(0>t?$r(0,e+t):Ir(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},u.mixin=X,u.noConflict=function(){return gr._=jr,this},u.random=Y,u.reduce=M,u.reduceRight=$,u.result=function(n,r){if(n){var t=n[r];return j(t)?n[r]():t}},u.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:Hr(n).length
},u.some=W,u.sortedIndex=G,u.template=function(n,r,e){var o=u,i=o.templateSettings;n||(n=""),e=_({},e,i);var f=0,a="__p+='",i=e.variable;n.replace(RegExp((e.escape||er).source+"|"+(e.interpolate||er).source+"|"+(e.evaluate||er).source+"|$","g"),function(r,e,u,o,i){return a+=n.slice(f,i).replace(ur,t),e&&(a+="'+_.escape("+e+")+'"),o&&(a+="';"+o+";__p+='"),u&&(a+="'+((__t=("+u+"))==null?'':__t)+'"),f=i+r.length,r}),a+="';\n",i||(i="obj",a="with("+i+"||{}){"+a+"}"),a="function("+i+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}";
try{var l=Function("_","return "+a)(o)}catch(c){throw c.source=a,c}return r?l(r):(l.source=a,l)},u.unescape=function(n){return null==n?"":(n+"").replace(Lr,g)},u.uniqueId=function(n){var r=++nr+"";return n?n+r:r},u.all=S,u.any=W,u.detect=N,u.findWhere=function(n,r){return z(n,r,!0)},u.foldl=M,u.foldr=$,u.include=O,u.inject=M,u.first=P,u.last=function(n,r,t){var e=0,u=n?n.length:0;if(typeof r!="number"&&null!=r){var o=u;for(r=K(r,t,3);o--&&r(n[o],o,n);)e++}else if(e=r,null==e||t)return n?n[u-1]:Z;
return zr.call(n,$r(0,u-e))},u.sample=function(n,r,t){var e=n?n.length:0;return typeof e!="number"&&(n=A(n)),null==r||t?n?n[Y(e-1)]:Z:(n=I(n),n.length=Ir($r(0,r),n.length),n)},u.take=P,u.head=P,X(u),u.VERSION="2.2.0",u.prototype.chain=function(){return this.__chain__=!0,this},u.prototype.value=function(){return this.__wrapped__},R("pop push reverse shift sort splice unshift".split(" "),function(n){var r=br[n];u.prototype[n]=function(){var n=this.__wrapped__;return r.apply(n,arguments),Ur.spliceObjects||0!==n.length||delete n[0],this
}}),R(["concat","join","slice"],function(n){var r=br[n];u.prototype[n]=function(){var n=r.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new o(n),n.__chain__=!0),n}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(gr._=u, define(function(){return u})):yr&&mr?_r?(mr.exports=u)._=u:yr._=u:gr._=u}).call(this);

420
dist/mapping.fp.js vendored Normal file
View File

@@ -0,0 +1,420 @@
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["mapping"] = factory();
else
root["mapping"] = factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
/** Used to map aliases to their real names. */
exports.aliasToReal = {
// Lodash aliases.
'each': 'forEach',
'eachRight': 'forEachRight',
'entries': 'toPairs',
'entriesIn': 'toPairsIn',
'extend': 'assignIn',
'extendAll': 'assignInAll',
'extendAllWith': 'assignInAllWith',
'extendWith': 'assignInWith',
'first': 'head',
// Methods that are curried variants of others.
'conforms': 'conformsTo',
'matches': 'isMatch',
'property': 'get',
// Ramda aliases.
'__': 'placeholder',
'F': 'stubFalse',
'T': 'stubTrue',
'all': 'every',
'allPass': 'overEvery',
'always': 'constant',
'any': 'some',
'anyPass': 'overSome',
'apply': 'spread',
'assoc': 'set',
'assocPath': 'set',
'complement': 'negate',
'compose': 'flowRight',
'contains': 'includes',
'dissoc': 'unset',
'dissocPath': 'unset',
'dropLast': 'dropRight',
'dropLastWhile': 'dropRightWhile',
'equals': 'isEqual',
'identical': 'eq',
'indexBy': 'keyBy',
'init': 'initial',
'invertObj': 'invert',
'juxt': 'over',
'omitAll': 'omit',
'nAry': 'ary',
'path': 'get',
'pathEq': 'matchesProperty',
'pathOr': 'getOr',
'paths': 'at',
'pickAll': 'pick',
'pipe': 'flow',
'pluck': 'map',
'prop': 'get',
'propEq': 'matchesProperty',
'propOr': 'getOr',
'props': 'at',
'symmetricDifference': 'xor',
'symmetricDifferenceBy': 'xorBy',
'symmetricDifferenceWith': 'xorWith',
'takeLast': 'takeRight',
'takeLastWhile': 'takeRightWhile',
'unapply': 'rest',
'unnest': 'flatten',
'useWith': 'overArgs',
'where': 'conformsTo',
'whereEq': 'isMatch',
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
'1': [
'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
'uniqueId', 'words', 'zipAll'
],
'2': [
'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',
'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',
'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',
'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
'zipObjectDeep'
],
'3': [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',
'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',
'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',
'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',
'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',
'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',
'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',
'xorWith', 'zipWith'
],
'4': [
'fill', 'setWith', 'updateWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
'2': [1, 0],
'3': [2, 0, 1],
'4': [3, 2, 0, 1]
};
/** Used to map method names to their iteratee ary. */
exports.iterateeAry = {
'dropRightWhile': 1,
'dropWhile': 1,
'every': 1,
'filter': 1,
'find': 1,
'findFrom': 1,
'findIndex': 1,
'findIndexFrom': 1,
'findKey': 1,
'findLast': 1,
'findLastFrom': 1,
'findLastIndex': 1,
'findLastIndexFrom': 1,
'findLastKey': 1,
'flatMap': 1,
'flatMapDeep': 1,
'flatMapDepth': 1,
'forEach': 1,
'forEachRight': 1,
'forIn': 1,
'forInRight': 1,
'forOwn': 1,
'forOwnRight': 1,
'map': 1,
'mapKeys': 1,
'mapValues': 1,
'partition': 1,
'reduce': 2,
'reduceRight': 2,
'reject': 1,
'remove': 1,
'some': 1,
'takeRightWhile': 1,
'takeWhile': 1,
'times': 1,
'transform': 2
};
/** Used to map method names to iteratee rearg configs. */
exports.iterateeRearg = {
'mapKeys': [1],
'reduceRight': [1, 0]
};
/** Used to map method names to rearg configs. */
exports.methodRearg = {
'assignInAllWith': [1, 0],
'assignInWith': [1, 2, 0],
'assignAllWith': [1, 0],
'assignWith': [1, 2, 0],
'differenceBy': [1, 2, 0],
'differenceWith': [1, 2, 0],
'getOr': [2, 1, 0],
'intersectionBy': [1, 2, 0],
'intersectionWith': [1, 2, 0],
'isEqualWith': [1, 2, 0],
'isMatchWith': [2, 1, 0],
'mergeAllWith': [1, 0],
'mergeWith': [1, 2, 0],
'padChars': [2, 1, 0],
'padCharsEnd': [2, 1, 0],
'padCharsStart': [2, 1, 0],
'pullAllBy': [2, 1, 0],
'pullAllWith': [2, 1, 0],
'rangeStep': [1, 2, 0],
'rangeStepRight': [1, 2, 0],
'setWith': [3, 1, 2, 0],
'sortedIndexBy': [2, 1, 0],
'sortedLastIndexBy': [2, 1, 0],
'unionBy': [1, 2, 0],
'unionWith': [1, 2, 0],
'updateWith': [3, 1, 2, 0],
'xorBy': [1, 2, 0],
'xorWith': [1, 2, 0],
'zipWith': [1, 2, 0]
};
/** Used to map method names to spread configs. */
exports.methodSpread = {
'assignAll': { 'start': 0 },
'assignAllWith': { 'start': 0 },
'assignInAll': { 'start': 0 },
'assignInAllWith': { 'start': 0 },
'defaultsAll': { 'start': 0 },
'defaultsDeepAll': { 'start': 0 },
'invokeArgs': { 'start': 2 },
'invokeArgsMap': { 'start': 2 },
'mergeAll': { 'start': 0 },
'mergeAllWith': { 'start': 0 },
'partial': { 'start': 1 },
'partialRight': { 'start': 1 },
'without': { 'start': 1 },
'zipAll': { 'start': 0 }
};
/** Used to identify methods which mutate arrays or objects. */
exports.mutate = {
'array': {
'fill': true,
'pull': true,
'pullAll': true,
'pullAllBy': true,
'pullAllWith': true,
'pullAt': true,
'remove': true,
'reverse': true
},
'object': {
'assign': true,
'assignAll': true,
'assignAllWith': true,
'assignIn': true,
'assignInAll': true,
'assignInAllWith': true,
'assignInWith': true,
'assignWith': true,
'defaults': true,
'defaultsAll': true,
'defaultsDeep': true,
'defaultsDeepAll': true,
'merge': true,
'mergeAll': true,
'mergeAllWith': true,
'mergeWith': true,
},
'set': {
'set': true,
'setWith': true,
'unset': true,
'update': true,
'updateWith': true
}
};
/** Used to map real names to their aliases. */
exports.realToAlias = (function() {
var hasOwnProperty = Object.prototype.hasOwnProperty,
object = exports.aliasToReal,
result = {};
for (var key in object) {
var value = object[key];
if (hasOwnProperty.call(result, value)) {
result[value].push(key);
} else {
result[value] = [key];
}
}
return result;
}());
/** Used to map method names to other names. */
exports.remap = {
'assignAll': 'assign',
'assignAllWith': 'assignWith',
'assignInAll': 'assignIn',
'assignInAllWith': 'assignInWith',
'curryN': 'curry',
'curryRightN': 'curryRight',
'defaultsAll': 'defaults',
'defaultsDeepAll': 'defaultsDeep',
'findFrom': 'find',
'findIndexFrom': 'findIndex',
'findLastFrom': 'findLast',
'findLastIndexFrom': 'findLastIndex',
'getOr': 'get',
'includesFrom': 'includes',
'indexOfFrom': 'indexOf',
'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap',
'lastIndexOfFrom': 'lastIndexOf',
'mergeAll': 'merge',
'mergeAllWith': 'mergeWith',
'padChars': 'pad',
'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart',
'propertyOf': 'get',
'rangeStep': 'range',
'rangeStepRight': 'rangeRight',
'restFrom': 'rest',
'spreadFrom': 'spread',
'trimChars': 'trim',
'trimCharsEnd': 'trimEnd',
'trimCharsStart': 'trimStart',
'zipAll': 'zip'
};
/** Used to track methods that skip fixing their arity. */
exports.skipFixed = {
'castArray': true,
'flow': true,
'flowRight': true,
'iteratee': true,
'mixin': true,
'rearg': true,
'runInContext': true
};
/** Used to track methods that skip rearranging arguments. */
exports.skipRearg = {
'add': true,
'assign': true,
'assignIn': true,
'bind': true,
'bindKey': true,
'concat': true,
'difference': true,
'divide': true,
'eq': true,
'gt': true,
'gte': true,
'isEqual': true,
'lt': true,
'lte': true,
'matchesProperty': true,
'merge': true,
'multiply': true,
'overArgs': true,
'partial': true,
'partialRight': true,
'propertyOf': true,
'random': true,
'range': true,
'rangeRight': true,
'subtract': true,
'zip': true,
'zipObject': true,
'zipObjectDeep': true
};
/***/ })
/******/ ])
});
;

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +0,0 @@
<?php
// cleanup requested filepath
$file = isset($_GET['f']) ? $_GET['f'] : 'lodash';
$file = preg_replace('#(\.*[\/])+#', '', $file);
$file .= preg_match('/\.[a-z]+$/', $file) ? '' : '.js';
// output filename
if (isset($_GET['o'])) {
$output = $_GET['o'];
} else if (isset($_SERVER['argv'][1])) {
$output = $_SERVER['argv'][1];
} else {
$output = basename($file);
}
/*--------------------------------------------------------------------------*/
require('../vendor/docdown/docdown.php');
// generate Markdown
$markdown = docdown(array(
'path' => '../' . $file,
'title' => 'Lo-Dash <span>v2.2.0</span>',
'toc' => 'categories',
'url' => 'https://github.com/lodash/lodash/blob/master/lodash.js'
));
// save to a .md file
file_put_contents($output . '.md', $markdown);
// print
header('Content-Type: text/plain;charset=utf-8');
echo $markdown . PHP_EOL;
?>

569
fp/_baseConvert.js Normal file
View File

@@ -0,0 +1,569 @@
var mapping = require('./_mapping'),
fallbackHolder = require('./placeholder');
/** Built-in value reference. */
var push = Array.prototype.push;
/**
* Creates a function, with an arity of `n`, that invokes `func` with the
* arguments it receives.
*
* @private
* @param {Function} func The function to wrap.
* @param {number} n The arity of the new function.
* @returns {Function} Returns the new function.
*/
function baseArity(func, n) {
return n == 2
? function(a, b) { return func.apply(undefined, arguments); }
: function(a) { return func.apply(undefined, arguments); };
}
/**
* Creates a function that invokes `func`, with up to `n` arguments, ignoring
* any additional arguments.
*
* @private
* @param {Function} func The function to cap arguments for.
* @param {number} n The arity cap.
* @returns {Function} Returns the new function.
*/
function baseAry(func, n) {
return n == 2
? function(a, b) { return func(a, b); }
: function(a) { return func(a); };
}
/**
* Creates a clone of `array`.
*
* @private
* @param {Array} array The array to clone.
* @returns {Array} Returns the cloned array.
*/
function cloneArray(array) {
var length = array ? array.length : 0,
result = Array(length);
while (length--) {
result[length] = array[length];
}
return result;
}
/**
* Creates a function that clones a given object using the assignment `func`.
*
* @private
* @param {Function} func The assignment function.
* @returns {Function} Returns the new cloner function.
*/
function createCloner(func) {
return function(object) {
return func({}, object);
};
}
/**
* A specialized version of `_.spread` which flattens the spread array into
* the arguments of the invoked `func`.
*
* @private
* @param {Function} func The function to spread arguments over.
* @param {number} start The start position of the spread.
* @returns {Function} Returns the new function.
*/
function flatSpread(func, start) {
return function() {
var length = arguments.length,
lastIndex = length - 1,
args = Array(length);
while (length--) {
args[length] = arguments[length];
}
var array = args[start],
otherArgs = args.slice(0, start);
if (array) {
push.apply(otherArgs, array);
}
if (start != lastIndex) {
push.apply(otherArgs, args.slice(start + 1));
}
return func.apply(this, otherArgs);
};
}
/**
* Creates a function that wraps `func` and uses `cloner` to clone the first
* argument it receives.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} cloner The function to clone arguments.
* @returns {Function} Returns the new immutable function.
*/
function wrapImmutable(func, cloner) {
return function() {
var length = arguments.length;
if (!length) {
return;
}
var args = Array(length);
while (length--) {
args[length] = arguments[length];
}
var result = args[0] = cloner.apply(undefined, args);
func.apply(undefined, args);
return result;
};
}
/**
* The base implementation of `convert` which accepts a `util` object of methods
* required to perform conversions.
*
* @param {Object} util The util object.
* @param {string} name The name of the function to convert.
* @param {Function} func The function to convert.
* @param {Object} [options] The options object.
* @param {boolean} [options.cap=true] Specify capping iteratee arguments.
* @param {boolean} [options.curry=true] Specify currying.
* @param {boolean} [options.fixed=true] Specify fixed arity.
* @param {boolean} [options.immutable=true] Specify immutable operations.
* @param {boolean} [options.rearg=true] Specify rearranging arguments.
* @returns {Function|Object} Returns the converted function or object.
*/
function baseConvert(util, name, func, options) {
var isLib = typeof name == 'function',
isObj = name === Object(name);
if (isObj) {
options = func;
func = name;
name = undefined;
}
if (func == null) {
throw new TypeError;
}
options || (options = {});
var config = {
'cap': 'cap' in options ? options.cap : true,
'curry': 'curry' in options ? options.curry : true,
'fixed': 'fixed' in options ? options.fixed : true,
'immutable': 'immutable' in options ? options.immutable : true,
'rearg': 'rearg' in options ? options.rearg : true
};
var defaultHolder = isLib ? func : fallbackHolder,
forceCurry = ('curry' in options) && options.curry,
forceFixed = ('fixed' in options) && options.fixed,
forceRearg = ('rearg' in options) && options.rearg,
pristine = isLib ? func.runInContext() : undefined;
var helpers = isLib ? func : {
'ary': util.ary,
'assign': util.assign,
'clone': util.clone,
'curry': util.curry,
'forEach': util.forEach,
'isArray': util.isArray,
'isError': util.isError,
'isFunction': util.isFunction,
'isWeakMap': util.isWeakMap,
'iteratee': util.iteratee,
'keys': util.keys,
'rearg': util.rearg,
'toInteger': util.toInteger,
'toPath': util.toPath
};
var ary = helpers.ary,
assign = helpers.assign,
clone = helpers.clone,
curry = helpers.curry,
each = helpers.forEach,
isArray = helpers.isArray,
isError = helpers.isError,
isFunction = helpers.isFunction,
isWeakMap = helpers.isWeakMap,
keys = helpers.keys,
rearg = helpers.rearg,
toInteger = helpers.toInteger,
toPath = helpers.toPath;
var aryMethodKeys = keys(mapping.aryMethod);
var wrappers = {
'castArray': function(castArray) {
return function() {
var value = arguments[0];
return isArray(value)
? castArray(cloneArray(value))
: castArray.apply(undefined, arguments);
};
},
'iteratee': function(iteratee) {
return function() {
var func = arguments[0],
arity = arguments[1],
result = iteratee(func, arity),
length = result.length;
if (config.cap && typeof arity == 'number') {
arity = arity > 2 ? (arity - 2) : 1;
return (length && length <= arity) ? result : baseAry(result, arity);
}
return result;
};
},
'mixin': function(mixin) {
return function(source) {
var func = this;
if (!isFunction(func)) {
return mixin(func, Object(source));
}
var pairs = [];
each(keys(source), function(key) {
if (isFunction(source[key])) {
pairs.push([key, func.prototype[key]]);
}
});
mixin(func, Object(source));
each(pairs, function(pair) {
var value = pair[1];
if (isFunction(value)) {
func.prototype[pair[0]] = value;
} else {
delete func.prototype[pair[0]];
}
});
return func;
};
},
'nthArg': function(nthArg) {
return function(n) {
var arity = n < 0 ? 1 : (toInteger(n) + 1);
return curry(nthArg(n), arity);
};
},
'rearg': function(rearg) {
return function(func, indexes) {
var arity = indexes ? indexes.length : 0;
return curry(rearg(func, indexes), arity);
};
},
'runInContext': function(runInContext) {
return function(context) {
return baseConvert(util, runInContext(context), options);
};
}
};
/*--------------------------------------------------------------------------*/
/**
* Casts `func` to a function with an arity capped iteratee if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @returns {Function} Returns the cast function.
*/
function castCap(name, func) {
if (config.cap) {
var indexes = mapping.iterateeRearg[name];
if (indexes) {
return iterateeRearg(func, indexes);
}
var n = !isLib && mapping.iterateeAry[name];
if (n) {
return iterateeAry(func, n);
}
}
return func;
}
/**
* Casts `func` to a curried function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity of `func`.
* @returns {Function} Returns the cast function.
*/
function castCurry(name, func, n) {
return (forceCurry || (config.curry && n > 1))
? curry(func, n)
: func;
}
/**
* Casts `func` to a fixed arity function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity cap.
* @returns {Function} Returns the cast function.
*/
function castFixed(name, func, n) {
if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
var data = mapping.methodSpread[name],
start = data && data.start;
return start === undefined ? ary(func, n) : flatSpread(func, start);
}
return func;
}
/**
* Casts `func` to an rearged function if needed.
*
* @private
* @param {string} name The name of the function to inspect.
* @param {Function} func The function to inspect.
* @param {number} n The arity of `func`.
* @returns {Function} Returns the cast function.
*/
function castRearg(name, func, n) {
return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
: func;
}
/**
* Creates a clone of `object` by `path`.
*
* @private
* @param {Object} object The object to clone.
* @param {Array|string} path The path to clone by.
* @returns {Object} Returns the cloned object.
*/
function cloneByPath(object, path) {
path = toPath(path);
var index = -1,
length = path.length,
lastIndex = length - 1,
result = clone(Object(object)),
nested = result;
while (nested != null && ++index < length) {
var key = path[index],
value = nested[key];
if (value != null &&
!(isFunction(value) || isError(value) || isWeakMap(value))) {
nested[key] = clone(index == lastIndex ? value : Object(value));
}
nested = nested[key];
}
return result;
}
/**
* Converts `lodash` to an immutable auto-curried iteratee-first data-last
* version with conversion `options` applied.
*
* @param {Object} [options] The options object. See `baseConvert` for more details.
* @returns {Function} Returns the converted `lodash`.
*/
function convertLib(options) {
return _.runInContext.convert(options)(undefined);
}
/**
* Create a converter function for `func` of `name`.
*
* @param {string} name The name of the function to convert.
* @param {Function} func The function to convert.
* @returns {Function} Returns the new converter function.
*/
function createConverter(name, func) {
var realName = mapping.aliasToReal[name] || name,
methodName = mapping.remap[realName] || realName,
oldOptions = options;
return function(options) {
var newUtil = isLib ? pristine : helpers,
newFunc = isLib ? pristine[methodName] : func,
newOptions = assign(assign({}, oldOptions), options);
return baseConvert(newUtil, realName, newFunc, newOptions);
};
}
/**
* Creates a function that wraps `func` to invoke its iteratee, with up to `n`
* arguments, ignoring any additional arguments.
*
* @private
* @param {Function} func The function to cap iteratee arguments for.
* @param {number} n The arity cap.
* @returns {Function} Returns the new function.
*/
function iterateeAry(func, n) {
return overArg(func, function(func) {
return typeof func == 'function' ? baseAry(func, n) : func;
});
}
/**
* Creates a function that wraps `func` to invoke its iteratee with arguments
* arranged according to the specified `indexes` where the argument value at
* the first index is provided as the first argument, the argument value at
* the second index is provided as the second argument, and so on.
*
* @private
* @param {Function} func The function to rearrange iteratee arguments for.
* @param {number[]} indexes The arranged argument indexes.
* @returns {Function} Returns the new function.
*/
function iterateeRearg(func, indexes) {
return overArg(func, function(func) {
var n = indexes.length;
return baseArity(rearg(baseAry(func, n), indexes), n);
});
}
/**
* Creates a function that invokes `func` with its first argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg(func, transform) {
return function() {
var length = arguments.length;
if (!length) {
return func();
}
var args = Array(length);
while (length--) {
args[length] = arguments[length];
}
var index = config.rearg ? 0 : (length - 1);
args[index] = transform(args[index]);
return func.apply(undefined, args);
};
}
/**
* Creates a function that wraps `func` and applys the conversions
* rules by `name`.
*
* @private
* @param {string} name The name of the function to wrap.
* @param {Function} func The function to wrap.
* @returns {Function} Returns the converted function.
*/
function wrap(name, func, placeholder) {
var result,
realName = mapping.aliasToReal[name] || name,
wrapped = func,
wrapper = wrappers[realName];
if (wrapper) {
wrapped = wrapper(func);
}
else if (config.immutable) {
if (mapping.mutate.array[realName]) {
wrapped = wrapImmutable(func, cloneArray);
}
else if (mapping.mutate.object[realName]) {
wrapped = wrapImmutable(func, createCloner(func));
}
else if (mapping.mutate.set[realName]) {
wrapped = wrapImmutable(func, cloneByPath);
}
}
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(otherName) {
if (realName == otherName) {
var data = mapping.methodSpread[realName],
afterRearg = data && data.afterRearg;
result = afterRearg
? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)
: castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
result = castCap(realName, result);
result = castCurry(realName, result, aryKey);
return false;
}
});
return !result;
});
result || (result = wrapped);
if (result == func) {
result = forceCurry ? curry(result, 1) : function() {
return func.apply(this, arguments);
};
}
result.convert = createConverter(realName, func);
result.placeholder = func.placeholder = placeholder;
return result;
}
/*--------------------------------------------------------------------------*/
if (!isObj) {
return wrap(name, func, defaultHolder);
}
var _ = func;
// Convert methods by ary cap.
var pairs = [];
each(aryMethodKeys, function(aryKey) {
each(mapping.aryMethod[aryKey], function(key) {
var func = _[mapping.remap[key] || key];
if (func) {
pairs.push([key, wrap(key, func, _)]);
}
});
});
// Convert remaining methods.
each(keys(_), function(key) {
var func = _[key];
if (typeof func == 'function') {
var length = pairs.length;
while (length--) {
if (pairs[length][0] == key) {
return;
}
}
func.convert = createConverter(key, func);
pairs.push([key, func]);
}
});
// Assign to `_` leaving `_.prototype` unchanged to allow chaining.
each(pairs, function(pair) {
_[pair[0]] = pair[1];
});
_.convert = convertLib;
_.placeholder = _;
// Assign aliases.
each(keys(_), function(key) {
each(mapping.realToAlias[key] || [], function(alias) {
_[alias] = _[key];
});
});
return _;
}
module.exports = baseConvert;

18
fp/_convertBrowser.js Normal file
View File

@@ -0,0 +1,18 @@
var baseConvert = require('./_baseConvert');
/**
* Converts `lodash` to an immutable auto-curried iteratee-first data-last
* version with conversion `options` applied.
*
* @param {Function} lodash The lodash function to convert.
* @param {Object} [options] The options object. See `baseConvert` for more details.
* @returns {Function} Returns the converted `lodash`.
*/
function browserConvert(lodash, options) {
return baseConvert(lodash, lodash, options);
}
if (typeof _ == 'function' && typeof _.runInContext == 'function') {
_ = browserConvert(_.runInContext());
}
module.exports = browserConvert;

358
fp/_mapping.js Normal file
View File

@@ -0,0 +1,358 @@
/** Used to map aliases to their real names. */
exports.aliasToReal = {
// Lodash aliases.
'each': 'forEach',
'eachRight': 'forEachRight',
'entries': 'toPairs',
'entriesIn': 'toPairsIn',
'extend': 'assignIn',
'extendAll': 'assignInAll',
'extendAllWith': 'assignInAllWith',
'extendWith': 'assignInWith',
'first': 'head',
// Methods that are curried variants of others.
'conforms': 'conformsTo',
'matches': 'isMatch',
'property': 'get',
// Ramda aliases.
'__': 'placeholder',
'F': 'stubFalse',
'T': 'stubTrue',
'all': 'every',
'allPass': 'overEvery',
'always': 'constant',
'any': 'some',
'anyPass': 'overSome',
'apply': 'spread',
'assoc': 'set',
'assocPath': 'set',
'complement': 'negate',
'compose': 'flowRight',
'contains': 'includes',
'dissoc': 'unset',
'dissocPath': 'unset',
'dropLast': 'dropRight',
'dropLastWhile': 'dropRightWhile',
'equals': 'isEqual',
'identical': 'eq',
'indexBy': 'keyBy',
'init': 'initial',
'invertObj': 'invert',
'juxt': 'over',
'omitAll': 'omit',
'nAry': 'ary',
'path': 'get',
'pathEq': 'matchesProperty',
'pathOr': 'getOr',
'paths': 'at',
'pickAll': 'pick',
'pipe': 'flow',
'pluck': 'map',
'prop': 'get',
'propEq': 'matchesProperty',
'propOr': 'getOr',
'props': 'at',
'symmetricDifference': 'xor',
'symmetricDifferenceBy': 'xorBy',
'symmetricDifferenceWith': 'xorWith',
'takeLast': 'takeRight',
'takeLastWhile': 'takeRightWhile',
'unapply': 'rest',
'unnest': 'flatten',
'useWith': 'overArgs',
'where': 'conformsTo',
'whereEq': 'isMatch',
'zipObj': 'zipObject'
};
/** Used to map ary to method names. */
exports.aryMethod = {
'1': [
'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
'uniqueId', 'words', 'zipAll'
],
'2': [
'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',
'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',
'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',
'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
'zipObjectDeep'
],
'3': [
'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',
'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',
'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',
'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',
'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',
'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',
'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',
'xorWith', 'zipWith'
],
'4': [
'fill', 'setWith', 'updateWith'
]
};
/** Used to map ary to rearg configs. */
exports.aryRearg = {
'2': [1, 0],
'3': [2, 0, 1],
'4': [3, 2, 0, 1]
};
/** Used to map method names to their iteratee ary. */
exports.iterateeAry = {
'dropRightWhile': 1,
'dropWhile': 1,
'every': 1,
'filter': 1,
'find': 1,
'findFrom': 1,
'findIndex': 1,
'findIndexFrom': 1,
'findKey': 1,
'findLast': 1,
'findLastFrom': 1,
'findLastIndex': 1,
'findLastIndexFrom': 1,
'findLastKey': 1,
'flatMap': 1,
'flatMapDeep': 1,
'flatMapDepth': 1,
'forEach': 1,
'forEachRight': 1,
'forIn': 1,
'forInRight': 1,
'forOwn': 1,
'forOwnRight': 1,
'map': 1,
'mapKeys': 1,
'mapValues': 1,
'partition': 1,
'reduce': 2,
'reduceRight': 2,
'reject': 1,
'remove': 1,
'some': 1,
'takeRightWhile': 1,
'takeWhile': 1,
'times': 1,
'transform': 2
};
/** Used to map method names to iteratee rearg configs. */
exports.iterateeRearg = {
'mapKeys': [1],
'reduceRight': [1, 0]
};
/** Used to map method names to rearg configs. */
exports.methodRearg = {
'assignInAllWith': [1, 0],
'assignInWith': [1, 2, 0],
'assignAllWith': [1, 0],
'assignWith': [1, 2, 0],
'differenceBy': [1, 2, 0],
'differenceWith': [1, 2, 0],
'getOr': [2, 1, 0],
'intersectionBy': [1, 2, 0],
'intersectionWith': [1, 2, 0],
'isEqualWith': [1, 2, 0],
'isMatchWith': [2, 1, 0],
'mergeAllWith': [1, 0],
'mergeWith': [1, 2, 0],
'padChars': [2, 1, 0],
'padCharsEnd': [2, 1, 0],
'padCharsStart': [2, 1, 0],
'pullAllBy': [2, 1, 0],
'pullAllWith': [2, 1, 0],
'rangeStep': [1, 2, 0],
'rangeStepRight': [1, 2, 0],
'setWith': [3, 1, 2, 0],
'sortedIndexBy': [2, 1, 0],
'sortedLastIndexBy': [2, 1, 0],
'unionBy': [1, 2, 0],
'unionWith': [1, 2, 0],
'updateWith': [3, 1, 2, 0],
'xorBy': [1, 2, 0],
'xorWith': [1, 2, 0],
'zipWith': [1, 2, 0]
};
/** Used to map method names to spread configs. */
exports.methodSpread = {
'assignAll': { 'start': 0 },
'assignAllWith': { 'start': 0 },
'assignInAll': { 'start': 0 },
'assignInAllWith': { 'start': 0 },
'defaultsAll': { 'start': 0 },
'defaultsDeepAll': { 'start': 0 },
'invokeArgs': { 'start': 2 },
'invokeArgsMap': { 'start': 2 },
'mergeAll': { 'start': 0 },
'mergeAllWith': { 'start': 0 },
'partial': { 'start': 1 },
'partialRight': { 'start': 1 },
'without': { 'start': 1 },
'zipAll': { 'start': 0 }
};
/** Used to identify methods which mutate arrays or objects. */
exports.mutate = {
'array': {
'fill': true,
'pull': true,
'pullAll': true,
'pullAllBy': true,
'pullAllWith': true,
'pullAt': true,
'remove': true,
'reverse': true
},
'object': {
'assign': true,
'assignAll': true,
'assignAllWith': true,
'assignIn': true,
'assignInAll': true,
'assignInAllWith': true,
'assignInWith': true,
'assignWith': true,
'defaults': true,
'defaultsAll': true,
'defaultsDeep': true,
'defaultsDeepAll': true,
'merge': true,
'mergeAll': true,
'mergeAllWith': true,
'mergeWith': true,
},
'set': {
'set': true,
'setWith': true,
'unset': true,
'update': true,
'updateWith': true
}
};
/** Used to map real names to their aliases. */
exports.realToAlias = (function() {
var hasOwnProperty = Object.prototype.hasOwnProperty,
object = exports.aliasToReal,
result = {};
for (var key in object) {
var value = object[key];
if (hasOwnProperty.call(result, value)) {
result[value].push(key);
} else {
result[value] = [key];
}
}
return result;
}());
/** Used to map method names to other names. */
exports.remap = {
'assignAll': 'assign',
'assignAllWith': 'assignWith',
'assignInAll': 'assignIn',
'assignInAllWith': 'assignInWith',
'curryN': 'curry',
'curryRightN': 'curryRight',
'defaultsAll': 'defaults',
'defaultsDeepAll': 'defaultsDeep',
'findFrom': 'find',
'findIndexFrom': 'findIndex',
'findLastFrom': 'findLast',
'findLastIndexFrom': 'findLastIndex',
'getOr': 'get',
'includesFrom': 'includes',
'indexOfFrom': 'indexOf',
'invokeArgs': 'invoke',
'invokeArgsMap': 'invokeMap',
'lastIndexOfFrom': 'lastIndexOf',
'mergeAll': 'merge',
'mergeAllWith': 'mergeWith',
'padChars': 'pad',
'padCharsEnd': 'padEnd',
'padCharsStart': 'padStart',
'propertyOf': 'get',
'rangeStep': 'range',
'rangeStepRight': 'rangeRight',
'restFrom': 'rest',
'spreadFrom': 'spread',
'trimChars': 'trim',
'trimCharsEnd': 'trimEnd',
'trimCharsStart': 'trimStart',
'zipAll': 'zip'
};
/** Used to track methods that skip fixing their arity. */
exports.skipFixed = {
'castArray': true,
'flow': true,
'flowRight': true,
'iteratee': true,
'mixin': true,
'rearg': true,
'runInContext': true
};
/** Used to track methods that skip rearranging arguments. */
exports.skipRearg = {
'add': true,
'assign': true,
'assignIn': true,
'bind': true,
'bindKey': true,
'concat': true,
'difference': true,
'divide': true,
'eq': true,
'gt': true,
'gte': true,
'isEqual': true,
'lt': true,
'lte': true,
'matchesProperty': true,
'merge': true,
'multiply': true,
'overArgs': true,
'partial': true,
'partialRight': true,
'propertyOf': true,
'random': true,
'range': true,
'rangeRight': true,
'subtract': true,
'zip': true,
'zipObject': true,
'zipObjectDeep': true
};

6
fp/placeholder.js Normal file
View File

@@ -0,0 +1,6 @@
/**
* The default argument placeholder value for methods.
*
* @type {Object}
*/
module.exports = {};

View File

@@ -1 +0,0 @@
module.exports = require('./dist/lodash.compat.js');

71
lib/common/file.js Normal file
View File

@@ -0,0 +1,71 @@
'use strict';
const _ = require('lodash');
const fs = require('fs-extra');
const glob = require('glob');
const path = require('path');
const minify = require('../common/minify.js');
/*----------------------------------------------------------------------------*/
/**
* Creates a [fs.copy](https://github.com/jprichardson/node-fs-extra#copy)
* function with `srcPath` and `destPath` partially applied.
*
* @memberOf file
* @param {string} srcPath The path of the file to copy.
* @param {string} destPath The path to copy the file to.
* @returns {Function} Returns the partially applied function.
*/
function copy(srcPath, destPath) {
return _.partial(fs.copy, srcPath, destPath);
}
/**
* Creates an object of base name and compiled template pairs that match `pattern`.
*
* @memberOf file
* @param {string} pattern The glob pattern to be match.
* @returns {Object} Returns the object of compiled templates.
*/
function globTemplate(pattern) {
return _.transform(glob.sync(pattern), (result, filePath) => {
const key = path.basename(filePath, path.extname(filePath));
result[key] = _.template(fs.readFileSync(filePath, 'utf8'));
}, {});
}
/**
* Creates a `minify` function with `srcPath` and `destPath` partially applied.
*
* @memberOf file
* @param {string} srcPath The path of the file to minify.
* @param {string} destPath The path to write the file to.
* @returns {Function} Returns the partially applied function.
*/
function min(srcPath, destPath) {
return _.partial(minify, srcPath, destPath);
}
/**
* Creates a [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback)
* function with `filePath` and `data` partially applied.
*
* @memberOf file
* @param {string} destPath The path to write the file to.
* @param {string} data The data to write to the file.
* @returns {Function} Returns the partially applied function.
*/
function write(destPath, data) {
return _.partial(fs.writeFile, destPath, data);
}
/*----------------------------------------------------------------------------*/
module.exports = {
copy,
globTemplate,
min,
write
};

9
lib/common/mapping.js Normal file
View File

@@ -0,0 +1,9 @@
'use strict';
const _mapping = require('../../fp/_mapping');
const util = require('./util');
const Hash = util.Hash;
/*----------------------------------------------------------------------------*/
module.exports = new Hash(_mapping);

39
lib/common/minify.js Normal file
View File

@@ -0,0 +1,39 @@
'use strict';
const _ = require('lodash');
const fs = require('fs-extra');
const uglify = require('uglify-js');
const uglifyOptions = require('./uglify.options');
/*----------------------------------------------------------------------------*/
/**
* Asynchronously minifies the file at `srcPath`, writes it to `destPath`, and
* invokes `callback` upon completion. The callback is invoked with one argument:
* (error).
*
* If unspecified, `destPath` is `srcPath` with an extension of `.min.js`.
* (e.g. the `destPath` of `path/to/foo.js` would be `path/to/foo.min.js`)
*
* @param {string} srcPath The path of the file to minify.
* @param {string} [destPath] The path to write the file to.
* @param {Function} callback The function invoked upon completion.
* @param {Object} [option] The UglifyJS options object.
*/
function minify(srcPath, destPath, callback, options) {
if (_.isFunction(destPath)) {
if (_.isObject(callback)) {
options = callback;
}
callback = destPath;
destPath = undefined;
}
if (!destPath) {
destPath = srcPath.replace(/(?=\.js$)/, '.min');
}
const output = uglify.minify(srcPath, _.defaults(options || {}, uglifyOptions));
fs.writeFile(destPath, output.code, 'utf-8', callback);
}
module.exports = minify;

View File

@@ -0,0 +1,22 @@
'use strict';
/**
* The UglifyJS options object for
* [compress](https://github.com/mishoo/UglifyJS2#compressor-options),
* [mangle](https://github.com/mishoo/UglifyJS2#mangler-options), and
* [output](https://github.com/mishoo/UglifyJS2#beautifier-options) options.
*/
module.exports = {
'compress': {
'collapse_vars': true,
'negate_iife': false,
'pure_getters': true,
'unsafe': true,
'warnings': false
},
'output': {
'ascii_only': true,
'comments': /@license/,
'max_line_len': 500
}
};

40
lib/common/util.js Normal file
View File

@@ -0,0 +1,40 @@
'use strict';
const _ = require('lodash');
/*----------------------------------------------------------------------------*/
/**
* Creates a hash object. If a `properties` object is provided, its own
* enumerable properties are assigned to the created hash.
*
* @memberOf util
* @param {Object} [properties] The properties to assign to the hash.
* @returns {Object} Returns the new hash object.
*/
function Hash(properties) {
return _.transform(properties, (result, value, key) => {
result[key] = (_.isPlainObject(value) && !(value instanceof Hash))
? new Hash(value)
: value;
}, this);
}
Hash.prototype = Object.create(null);
/**
* This method throws any error it receives.
*
* @memberOf util
* @param {Object} [error] The error object.
*/
function pitch(error) {
if (error != null) {
throw error;
}
}
module.exports = {
Hash,
pitch
};

56
lib/fp/build-dist.js Normal file
View File

@@ -0,0 +1,56 @@
'use strict';
const _ = require('lodash');
const async = require('async');
const path = require('path');
const webpack = require('webpack');
const file = require('../common/file');
const util = require('../common/util');
const basePath = path.join(__dirname, '..', '..');
const distPath = path.join(basePath, 'dist');
const fpPath = path.join(basePath, 'fp');
const filename = 'lodash.fp.js';
const fpConfig = {
'entry': path.join(fpPath, '_convertBrowser.js'),
'output': {
'path': distPath,
'filename': filename,
'library': 'fp',
'libraryTarget': 'umd'
},
'plugins': [
new webpack.optimize.OccurenceOrderPlugin,
new webpack.optimize.DedupePlugin
]
};
const mappingConfig = {
'entry': path.join(fpPath, '_mapping.js'),
'output': {
'path': distPath,
'filename': 'mapping.fp.js',
'library': 'mapping',
'libraryTarget': 'umd'
}
};
/*----------------------------------------------------------------------------*/
/**
* Creates browser builds of the FP converter and mappings at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build() {
async.series([
_.partial(webpack, mappingConfig),
_.partial(webpack, fpConfig),
file.min(path.join(distPath, filename))
], util.pitch);
}
build();

78
lib/fp/build-doc.js Normal file
View File

@@ -0,0 +1,78 @@
'use strict';
const _ = require('lodash');
const fs = require('fs-extra');
const path = require('path');
const file = require('../common/file');
const mapping = require('../common/mapping');
const util = require('../common/util');
const templatePath = path.join(__dirname, 'template/doc');
const template = file.globTemplate(path.join(templatePath, '*.jst'));
const argNames = ['a', 'b', 'c', 'd'];
const templateData = {
mapping,
toArgOrder,
toFuncList
};
/**
* Converts arranged argument `indexes` into a named argument string
* representation of their order.
*
* @private
* @param {number[]} indexes The arranged argument indexes.
* @returns {string} Returns the named argument string.
*/
function toArgOrder(indexes) {
const reordered = [];
_.each(indexes, (newIndex, index) => {
reordered[newIndex] = argNames[index];
});
return '`(' + reordered.join(', ') + ')`';
}
/**
* Converts `funcNames` into a chunked list string representation.
*
* @private
* @param {string[]} funcNames The function names.
* @returns {string} Returns the function list string.
*/
function toFuncList(funcNames) {
let chunks = _.chunk(funcNames.slice().sort(), 5);
let lastChunk = _.last(chunks);
const lastName = lastChunk ? lastChunk.pop() : undefined;
chunks = _.reject(chunks, _.isEmpty);
lastChunk = _.last(chunks);
let result = '`' + _.map(chunks, chunk => chunk.join('`, `') + '`').join(',\n`');
if (lastName == null) {
return result;
}
if (_.size(chunks) > 1 || _.size(lastChunk) > 1) {
result += ',';
}
result += ' &';
result += _.size(lastChunk) < 5 ? ' ' : '\n';
return result + '`' + lastName + '`';
}
/*----------------------------------------------------------------------------*/
/**
* Creates the FP-Guide wiki at the `target` path.
*
* @private
* @param {string} target The output file path.
*/
function build(target) {
target = path.resolve(target);
fs.writeFile(target, template.wiki(templateData), util.pitch);
}
build(_.last(process.argv));

150
lib/fp/build-modules.js Normal file
View File

@@ -0,0 +1,150 @@
'use strict';
const _ = require('lodash');
const async = require('async');
const glob = require('glob');
const path = require('path');
const file = require('../common/file');
const mapping = require('../common/mapping');
const util = require('../common/util');
const templatePath = path.join(__dirname, 'template/modules');
const template = file.globTemplate(path.join(templatePath, '*.jst'));
const aryMethods = _.union(
mapping.aryMethod[1],
mapping.aryMethod[2],
mapping.aryMethod[3],
mapping.aryMethod[4]
);
const categories = [
'array',
'collection',
'date',
'function',
'lang',
'math',
'number',
'object',
'seq',
'string',
'util'
];
const ignored = [
'_*.js',
'core.js',
'core.min.js',
'fp.js',
'index.js',
'lodash.js',
'lodash.min.js'
];
/**
* Checks if `name` is a method alias.
*
* @private
* @param {string} name The name to check.
* @returns {boolean} Returns `true` if `name` is a method alias, else `false`.
*/
function isAlias(name) {
return _.has(mapping.aliasToReal, name);
}
/**
* Checks if `name` is a category name.
*
* @private
* @param {string} name The name to check.
* @returns {boolean} Returns `true` if `name` is a category name, else `false`.
*/
function isCategory(name) {
return _.includes(categories, name);
}
/**
* Checks if `name` belongs to a method that's passed thru and not wrapped.
*
* @private
* @param {string} name The name to check.
* @returns {boolean} Returns `true` if `name` is of a pass thru method,
* else `false`.
*/
function isThru(name) {
return !_.includes(aryMethods, name);
}
/**
* Gets metadata for `func`.
*
* @private
* @param {Function} func The function to query.
* @returns {*} Returns the metadata for `func`.
*/
function getTemplate(moduleName) {
const data = {
'name': _.get(mapping.aliasToReal, moduleName, moduleName),
'mapping': mapping
};
if (isAlias(moduleName)) {
return template.alias(data);
}
if (isCategory(moduleName)) {
return template.category(data);
}
if (isThru(moduleName)) {
return template.thru(data);
}
return template.module(data);
}
/*----------------------------------------------------------------------------*/
/**
* Creates FP modules at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build(target) {
target = path.resolve(target);
const fpPath = path.join(target, 'fp');
// Glob existing lodash module paths.
const modulePaths = glob.sync(path.join(target, '*.js'), {
'nodir': true,
'ignore': ignored.map(filename => {
return path.join(target, filename);
})
});
// Add FP alias and remapped module paths.
_.each([mapping.aliasToReal, mapping.remap], data => {
_.forOwn(data, (realName, alias) => {
const modulePath = path.join(target, alias + '.js');
if (!_.includes(modulePaths, modulePath)) {
modulePaths.push(modulePath);
}
});
});
const actions = modulePaths.map(modulePath => {
const moduleName = path.basename(modulePath, '.js');
return file.write(path.join(fpPath, moduleName + '.js'), getTemplate(moduleName));
});
actions.unshift(file.copy(path.join(__dirname, '../../fp'), fpPath));
actions.push(file.write(path.join(fpPath, '_falseOptions.js'), template._falseOptions()));
actions.push(file.write(path.join(fpPath, '_util.js'), template._util()));
actions.push(file.write(path.join(target, 'fp.js'), template.fp()));
actions.push(file.write(path.join(fpPath, 'convert.js'), template.convert()));
async.series(actions, util.pitch);
}
build(_.last(process.argv));

View File

@@ -0,0 +1,228 @@
## lodash/fp
The `lodash/fp` module promotes a more
[functional programming](https://en.wikipedia.org/wiki/Functional_programming)
(FP) friendly style by exporting an instance of `lodash` with its methods wrapped
to produce immutable auto-curried iteratee-first data-last methods.
## Installation
In a browser:
```html
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>
<script>
// Loading `lodash.fp.js` converts `_` to its fp variant.
_.defaults({ 'a': 2, 'b': 2 })({ 'a': 1 });
// ➜ { 'a': 1, 'b': 2 }
// Use `noConflict` to restore the pre-fp variant.
var fp = _.noConflict();
_.defaults({ 'a': 1 }, { 'a': 2, 'b': 2 });
// ➜ { 'a': 1, 'b': 2 }
fp.defaults({ 'a': 2, 'b': 2 })({ 'a': 1 });
// ➜ { 'a': 1, 'b': 2 }
</script>
```
In Node.js:
```js
// Load the fp build.
var fp = require('lodash/fp');
// Load a method category.
var object = require('lodash/fp/object');
// Load a single method for smaller builds with browserify/rollup/webpack.
var extend = require('lodash/fp/extend');
```
## Mapping
Immutable auto-curried iteratee-first data-last methods sound great, but what
does that really mean for each method? Below is a breakdown of the mapping used
to convert each method.
#### Capped Iteratee Arguments
Iteratee arguments are capped to avoid gotchas with variadic iteratees.
```js
// The `lodash/map` iteratee receives three arguments:
// (value, index|key, collection)
_.map(['6', '8', '10'], parseInt);
// ➜ [6, NaN, 2]
// The `lodash/fp/map` iteratee is capped at one argument:
// (value)
fp.map(parseInt)(['6', '8', '10']);
// ➜ [6, 8, 10]
```
Methods that cap iteratees to one argument:<br>
<%= toFuncList(_.keys(_.pickBy(mapping.iterateeAry, _.partial(_.eq, _, 1)))) %>
Methods that cap iteratees to two arguments:<br>
<%= toFuncList(_.keys(_.pickBy(mapping.iterateeAry, _.partial(_.eq, _, 2)))) %>
The iteratee of `mapKeys` is capped to one argument: `(key)`
#### Fixed Arity
Methods have fixed arities to support auto-currying.
```js
// `lodash/padStart` accepts an optional `chars` param.
_.padStart('a', 3, '-')
// ➜ '--a'
// `lodash/fp/padStart` does not.
fp.padStart(3)('a');
// ➜ ' a'
fp.padCharsStart('-')(3)('a');
// ➜ '--a'
```
Methods with a fixed arity of one:<br>
<%= toFuncList(_.difference(mapping.aryMethod[1], _.keys(mapping.skipFixed))) %>
Methods with a fixed arity of two:<br>
<%= toFuncList(_.difference(mapping.aryMethod[2], _.keys(mapping.skipFixed))) %>
Methods with a fixed arity of three:<br>
<%= toFuncList(_.difference(mapping.aryMethod[3], _.keys(mapping.skipFixed))) %>
Methods with a fixed arity of four:<br>
<%= toFuncList(_.difference(mapping.aryMethod[4], _.keys(mapping.skipFixed))) %>
#### Rearranged Arguments
Method arguments are rearranged to make composition easier.
```js
// `lodash/filter` is data-first iteratee-last:
// (collection, iteratee)
var compact = _.partial(_.filter, _, Boolean);
compact(['a', null, 'c']);
// ➜ ['a', 'c']
// `lodash/fp/filter` is iteratee-first data-last:
// (iteratee, collection)
var compact = fp.filter(Boolean);
compact(['a', null, 'c']);
// ➜ ['a', 'c']
```
##### Most methods follow these rules
A fixed arity of two has an argument order of:<br>
<%= toArgOrder(mapping.aryRearg[2]) %>
A fixed arity of three has an argument order of:<br>
<%= toArgOrder(mapping.aryRearg[3]) %>
A fixed arity of four has an argument order of:<br>
<%= toArgOrder(mapping.aryRearg[4]) %>
##### Exceptions to the rules
Methods that accept an array as their last, second to last, or only argument:<br>
<%= toFuncList(_.keys(mapping.methodSpread)) %>
Methods with unchanged argument orders:<br>
<%= toFuncList(_.keys(mapping.skipRearg)) %>
Methods with custom argument orders:<br>
<%= _.map(_.keys(mapping.methodRearg), methodName => {
const orders = mapping.methodRearg[methodName];
return ' * `_.' + methodName + '` has an order of ' + toArgOrder(orders);
}).join('\n') %>
The iteratee of `reduceRight` has an argument order of: `(b, a)`
#### New Methods
Not all variadic methods have corresponding new method variants. Feel free to
[request](https://github.com/lodash/lodash/blob/master/.github/CONTRIBUTING.md#feature-requests)
any additions.
Methods created to accommodate Lodashs variadic methods:<br>
<%= toFuncList(_.keys(mapping.remap)) %>
#### Aliases
There are <%= _.size(mapping.aliasToReal) %> method aliases:<br>
<%= _.map(_.keys(mapping.aliasToReal).sort(), alias => {
const realName = mapping.aliasToReal[alias];
return ' * `_.' + alias + '` is an alias of `_.' + realName + '`';
}).join('\n') %>
## Placeholders
The placeholder argument, which defaults to `_`, may be used to fill in method
arguments in a different order. Placeholders are filled by the first available
arguments of the curried returned function.
```js
// The equivalent of `2 > 5`.
_.gt(2)(5);
// ➜ false
// The equivalent of `_.gt(5, 2)` or `5 > 2`.
_.gt(_, 2)(5);
// ➜ true
```
## Chaining
The `lodash/fp` module **does not** convert chain sequence methods. See
[Izaak Schroeders article](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba)
on using functional composition as an alternative to method chaining.
## Convert
Although `lodash/fp` & its method modules come pre-converted, there are times
when you may want to customize the conversion. Thats when the `convert` method
comes in handy.
```js
// Every option is `true` by default.
var _fp = fp.convert({
// Specify capping iteratee arguments.
'cap': true,
// Specify currying.
'curry': true,
// Specify fixed arity.
'fixed': true,
// Specify immutable operations.
'immutable': true,
// Specify rearranging arguments.
'rearg': true
});
// The `convert` method is available on each method too.
var mapValuesWithKey = fp.mapValues.convert({ 'cap': false });
// Heres an example of disabling iteratee argument caps to access the `key` param.
mapValuesWithKey(function(value, key) {
return key == 'a' ? -1 : value;
})({ 'a': 1, 'b': 1 });
// => { 'a': -1, 'b': 1 }
```
Manual conversions are also possible with the `convert` module.
```js
var convert = require('lodash/fp/convert');
// Convert by name.
var assign = convert('assign', require('lodash.assign'));
// Convert by object.
var fp = convert({
'assign': require('lodash.assign'),
'chunk': require('lodash.chunk')
});
// Convert by `lodash` instance.
var fp = convert(lodash.runInContext());
```
## Tooling
Use [eslint-plugin-lodash-fp](https://www.npmjs.com/package/eslint-plugin-lodash-fp)
to help use `lodash/fp` more efficiently.

View File

@@ -0,0 +1,7 @@
module.exports = {
'cap': false,
'curry': false,
'fixed': false,
'immutable': false,
'rearg': false
};

View File

@@ -0,0 +1,16 @@
module.exports = {
'ary': require('../ary'),
'assign': require('../_baseAssign'),
'clone': require('../clone'),
'curry': require('../curry'),
'forEach': require('../_arrayEach'),
'isArray': require('../isArray'),
'isError': require('../isError'),
'isFunction': require('../isFunction'),
'isWeakMap': require('../isWeakMap'),
'iteratee': require('../iteratee'),
'keys': require('../_baseKeys'),
'rearg': require('../rearg'),
'toInteger': require('../toInteger'),
'toPath': require('../toPath')
};

View File

@@ -0,0 +1 @@
module.exports = require('./<%= name %>');

View File

@@ -0,0 +1,2 @@
var convert = require('./convert');
module.exports = convert(require('../<%= name %>'));

View File

@@ -0,0 +1,18 @@
var baseConvert = require('./_baseConvert'),
util = require('./_util');
/**
* Converts `func` of `name` to an immutable auto-curried iteratee-first data-last
* version with conversion `options` applied. If `name` is an object its methods
* will be converted.
*
* @param {string} name The name of the function to wrap.
* @param {Function} [func] The function to wrap.
* @param {Object} [options] The options object. See `baseConvert` for more details.
* @returns {Function|Object} Returns the converted function or object.
*/
function convert(name, func, options) {
return baseConvert(util, name, func, options);
}
module.exports = convert;

View File

@@ -0,0 +1,2 @@
var _ = require('./lodash.min').runInContext();
module.exports = require('./fp/_baseConvert')(_, _);

View File

@@ -0,0 +1,5 @@
var convert = require('./convert'),
func = convert('<%= name %>', require('../<%= _.get(mapping.remap, name, name) %>'));
func.placeholder = require('./placeholder');
module.exports = func;

View File

@@ -0,0 +1,5 @@
var convert = require('./convert'),
func = convert('<%= name %>', require('../<%= _.get(mapping.remap, name, name) %>'), require('./_falseOptions'));
func.placeholder = require('./placeholder');
module.exports = func;

31
lib/main/build-dist.js Normal file
View File

@@ -0,0 +1,31 @@
'use strict';
const async = require('async');
const path = require('path');
const file = require('../common/file');
const util = require('../common/util');
const basePath = path.join(__dirname, '..', '..');
const distPath = path.join(basePath, 'dist');
const filename = 'lodash.js';
const baseLodash = path.join(basePath, filename);
const distLodash = path.join(distPath, filename);
/*----------------------------------------------------------------------------*/
/**
* Creates browser builds of Lodash at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build() {
async.series([
file.copy(baseLodash, distLodash),
file.min(distLodash)
], util.pitch);
}
build();

83
lib/main/build-doc.js Normal file
View File

@@ -0,0 +1,83 @@
'use strict';
const _ = require('lodash');
const docdown = require('docdown');
const fs = require('fs-extra');
const path = require('path');
const util = require('../common/util');
const basePath = path.join(__dirname, '..', '..');
const docPath = path.join(basePath, 'doc');
const readmePath = path.join(docPath, 'README.md');
const pkg = require('../../package.json');
const version = pkg.version;
const config = {
'base': {
'path': path.join(basePath, 'lodash.js'),
'title': `<a href="https://lodash.com/">lodash</a> <span>v${ version }</span>`,
'toc': 'categories',
'url': `https://github.com/lodash/lodash/blob/${ version }/lodash.js`
},
'github': {
'style': 'github',
'sublinks': [npmLink('&#x24C3;', 'See the npm package')]
},
'site': {
'entryLink': '<a href="${entryHref}" class="fa fa-link"></a>',
'sourceLink': '[source](${sourceHref})',
'tocHref': '',
'tocLink': '',
'sublinks': [npmLink('npm package')]
}
};
/**
* Composes a npm link from `text` and optional `title`.
*
* @private
* @param {string} text The link text.
* @param {string} [title] The link title.
* @returns {string} Returns the composed npm link.
*/
function npmLink(text, title) {
return (
'<% if (name == "templateSettings" || !/^(?:methods|properties|seq)$/i.test(category)) {' +
'print(' +
'"[' + text + '](https://www.npmjs.com/package/lodash." + name.toLowerCase() + ' +
'"' + (title == null ? '' : ' \\"' + title + '\\"') + ')"' +
');' +
'} %>'
);
}
/**
* Post-process `markdown` to make adjustments.
*
* @private
* @param {string} markdown The markdown to process.
* @returns {string} Returns the processed markdown.
*/
function postprocess(markdown) {
// Wrap symbol property identifiers in brackets.
return markdown.replace(/\.(Symbol\.(?:[a-z]+[A-Z]?)+)/g, '[$1]');
}
/*----------------------------------------------------------------------------*/
/**
* Creates the documentation markdown formatted for 'github' or 'site'.
*
* @private
* @param {string} type The format type.
*/
function build(type) {
const options = _.defaults({}, config.base, config[type]);
const markdown = docdown(options);
fs.writeFile(readmePath, postprocess(markdown), util.pitch);
}
build(_.last(process.argv));

34
lib/main/build-modules.js Normal file
View File

@@ -0,0 +1,34 @@
'use strict';
const _ = require('lodash');
const async = require('async');
const path = require('path');
const file = require('../common/file');
const util = require('../common/util');
const basePath = path.join(__dirname, '..', '..');
const distPath = path.join(basePath, 'dist');
const filePairs = [
[path.join(distPath, 'lodash.core.js'), 'core.js'],
[path.join(distPath, 'lodash.core.min.js'), 'core.min.js'],
[path.join(distPath, 'lodash.min.js'), 'lodash.min.js']
];
/*----------------------------------------------------------------------------*/
/**
* Creates supplementary Lodash modules at the `target` path.
*
* @private
* @param {string} target The output directory path.
*/
function build(target) {
const actions = _.map(filePairs, pair =>
file.copy(pair[0], path.join(target, pair[1])));
async.series(actions, util.pitch);
}
build(_.last(process.argv));

224
lib/main/build-site.js Normal file
View File

@@ -0,0 +1,224 @@
'use strict';
const _ = require('lodash');
const cheerio = require('cheerio');
const fs = require('fs');
const marky = require('marky-markdown');
const path = require('path');
const util = require('../common/util');
const basePath = path.join(__dirname, '..', '..');
const docPath = path.join(basePath, 'doc');
const readmePath = path.join(docPath, 'README.md');
const highlights = {
'html': [
'string'
],
'js': [
'comment',
'console',
'delimiter',
'method',
'modifier',
'name',
'numeric',
'string',
'support',
'type'
]
};
const exts = _.keys(highlights);
/**
* Converts Lodash method references into documentation links.
*
* @private
* @param {Object} $ The Cheerio object.
*/
function autoLink($) {
$('.doc-container code').each(function() {
const $code = $(this);
const html = $code.html();
if (/^_\.\w+$/.test(html)) {
const id = html.split('.')[1];
$code.replaceWith(`<a href="#${ id }"><code>_.${ id }</code></a>`);
}
});
}
/**
* Removes horizontal rules from the document.
*
* @private
* @param {Object} $ The Cheerio object.
*/
function removeHorizontalRules($) {
$('hr').remove();
}
/**
* Removes marky-markdown specific ids and class names.
*
* @private
* @param {Object} $ The Cheerio object.
*/
function removeMarkyAttributes($) {
$('[id^="user-content-"]')
.attr('class', null)
.attr('id', null);
$(':header:not(h3) > a').each(function() {
const $a = $(this);
$a.replaceWith($a.html());
});
}
/**
* Renames "_" id and anchor references to "lodash".
*
* @private
* @param {Object} $ The Cheerio object.
*/
function renameLodashId($) {
$('#_').attr('id', 'lodash');
$('[href="#_"]').attr('href', '#lodash');
}
/**
* Repairs broken marky-markdown headers.
* See https://github.com/npm/marky-markdown/issues/217 for more details.
*
* @private
* @param {Object} $ The Cheerio object.
*/
function repairMarkyHeaders($) {
$('p:empty + h3').prev().remove();
$('h3 ~ p:empty').each(function() {
const $p = $(this);
let node = this.prev;
while ((node = node.prev) && node.name != 'h3' && node.name != 'p') {
$p.prepend(node.next);
}
});
$('h3 code em').parent().each(function() {
const $code = $(this);
$code.html($code.html().replace(/<\/?em>/g, '_'));
});
}
/**
* Cleans up highlights blocks by removing extraneous class names and elements.
*
* @private
* @param {Object} $ The Cheerio object.
*/
function tidyHighlights($) {
$('.highlight').each(function() {
let $spans;
const $parent = $(this);
const classes = $parent.find('.source,.text').first().attr('class').split(' ');
const ext = _(classes).intersection(exts).last();
$parent.addClass(ext);
// Remove line indicators for single line snippets.
$parent.children('pre').each(function() {
const $divs = $(this).children('div');
if ($divs.length == 1) {
$divs.replaceWith($divs.html());
}
});
// Remove extraneous class names.
$parent.find('[class]').each(function() {
const $element = $(this);
const classes = $element.attr('class').split(' ');
const attr = _(classes).intersection(highlights[ext]).join(' ');
$element.attr('class', attr || null);
});
// Collapse nested comment highlights.
$parent.find(`[class~="comment"]`).each(function() {
const $element = $(this);
$element.text($element.text().trim());
});
// Collapse nested string highlights.
$parent.find(`[class~="string"]`).each(function() {
const $element = $(this);
$element.text($element.text());
});
// Collapse nested spans.
while (($spans = $parent.find('span:not([class])')).length) {
$spans.each(function() {
let $span = $(this);
while ($span[0] && $span[0].name == 'span' && !$span.attr('class')) {
const $parent = $span.parent();
$span.replaceWith($span.html());
$span = $parent;
}
});
}
});
}
/*----------------------------------------------------------------------------*/
/**
* Creates the documentation HTML.
*
* @private
*/
function build() {
const markdown = fs
// Load markdown.
.readFileSync(readmePath, 'utf8')
// Uncomment docdown HTML hints.
.replace(/(<)!--\s*|\s*--(>)/g, '$1$2')
// Convert source and npm package links to anchors.
.replace(/\[source\]\(([^)]+)\) \[npm package\]\(([^)]+)\)/g, (match, href1, href2) =>
`<p><a href="${ href1 }">source</a> <a href="${ href2 }">npm package</a></p>`
);
const $ = cheerio.load(marky(markdown, {
'enableHeadingLinkIcons': false,
'sanitize': false
}));
const $header = $('h1').first().remove();
const version = $header.find('span').first().text().trim().slice(1);
// Auto-link Lodash method references.
autoLink($);
// Rename "_" id references to "lodash".
renameLodashId($);
// Remove docdown horizontal rules.
removeHorizontalRules($);
// Remove marky-markdown attribute additions.
removeMarkyAttributes($);
// Repair marky-markdown wrapping around headers.
repairMarkyHeaders($);
// Cleanup highlights.
tidyHighlights($);
const html = [
// Append YAML front matter.
'---',
'id: docs',
'layout: docs',
'title: Lodash Documentation',
'version: ' + (version || null),
'---',
'',
// Wrap in raw tags to avoid Liquid template tag processing.
'{% raw %}',
$.html().trim(),
'{% endraw %}',
''
].join('\n');
fs.writeFile(path.join(docPath, version + '.html'), html, util.pitch);
}
build();

21447
lodash.js

File diff suppressed because it is too large Load Diff

5845
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,62 +1,66 @@
{
"name": "lodash",
"version": "2.2.0",
"description": "A utility library delivering consistency, customization, performance, & extras.",
"homepage": "http://lodash.com/",
"version": "4.17.21",
"license": "MIT",
"main": "dist/lodash.js",
"keywords": ["amd", "browser", "client", "customize", "functional", "server", "util"],
"author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
"contributors": [
"John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
"Blaine Bublitz <blaine@iceddev.com> (http://iceddev.com/)",
"Kit Cambridge <github@kitcambridge.be> (http://kitcambridge.be/)",
"Mathias Bynens <mathias@qiwi.be> (http://mathiasbynens.be/)"
],
"bugs": "https://github.com/lodash/lodash/issues",
"repository": { "type": "git", "url": "https://github.com/lodash/lodash.git" },
"engines": ["node", "rhino"],
"files": [
"LICENSE.txt",
"lodash.js",
"dist/lodash.js",
"dist/lodash.min.js",
"dist/lodash.compat.js",
"dist/lodash.compat.min.js",
"dist/lodash.underscore.js",
"dist/lodash.underscore.min.js"
],
"jam": {
"main": "dist/lodash.compat.js",
"include": [
"LICENSE.txt",
"dist/lodash.js",
"dist/lodash.min.js",
"dist/lodash.compat.js",
"dist/lodash.compat.min.js",
"dist/lodash.underscore.js",
"dist/lodash.underscore.min.js"
]
"private": true,
"main": "lodash.js",
"engines": {
"node": ">=4.0.0"
},
"volo": {
"type": "directory",
"scripts": {
"build": "npm run build:main && npm run build:fp",
"build:fp": "node lib/fp/build-dist.js",
"build:fp-modules": "node lib/fp/build-modules.js",
"build:main": "node lib/main/build-dist.js",
"build:main-modules": "node lib/main/build-modules.js",
"doc": "node lib/main/build-doc github && npm run test:doc",
"doc:fp": "node lib/fp/build-doc",
"doc:site": "node lib/main/build-doc site",
"doc:sitehtml": "optional-dev-dependency marky-markdown@^9.0.1 && npm run doc:site && node lib/main/build-site",
"pretest": "npm run build",
"style": "npm run style:main && npm run style:fp && npm run style:perf && npm run style:test",
"style:fp": "jscs fp/*.js lib/**/*.js",
"style:main": "jscs lodash.js",
"style:perf": "jscs perf/*.js perf/**/*.js",
"style:test": "jscs test/*.js test/**/*.js",
"test": "npm run test:main && npm run test:fp",
"test:doc": "markdown-doctest doc/*.md",
"test:fp": "node test/test-fp",
"test:main": "node test/test",
"validate": "npm run style && npm run test"
},
"devDependencies": {
"async": "^2.6.3",
"benchmark": "^2.1.3",
"chalk": "^1.1.3",
"cheerio": "^0.22.0",
"codecov.io": "~0.1.6",
"coveralls": "^2.11.15",
"curl-amd": "~0.8.12",
"docdown": "~0.7.2",
"dojo": "^1.15.0",
"ecstatic": "^2.2.2",
"fs-extra": "~1.0.0",
"glob": "^7.1.4",
"istanbul": "0.4.5",
"jquery": "^3.4.1",
"jscs": "^3.0.7",
"lodash": "4.17.20",
"lodash-doc-globals": "^0.1.1",
"markdown-doctest": "^0.9.1",
"optional-dev-dependency": "^2.0.0",
"platform": "^1.3.3",
"qunit-extras": "^3.0.0",
"qunitjs": "^2.1.0",
"request": "^2.88.0",
"requirejs": "^2.3.6",
"sauce-tunnel": "^2.5.0",
"uglify-js": "2.7.5",
"webpack": "^1.14.0"
},
"greenkeeper": {
"ignore": [
".*",
"*.custom.*",
"*.min.*",
"*.template.*",
"*.map",
"*.md",
"lodash.js",
"index.js",
"bower.json",
"component.json",
"doc",
"modularize",
"node_modules",
"perf",
"test",
"vendor"
"lodash"
]
}
}

112
perf/asset/perf-ui.js Normal file
View File

@@ -0,0 +1,112 @@
;(function(window) {
'use strict';
/** The base path of the lodash builds. */
var basePath = '../';
/** The lodash build to load. */
var build = (build = /build=([^&]+)/.exec(location.search)) && decodeURIComponent(build[1]);
/** The other library to load. */
var other = (other = /other=([^&]+)/.exec(location.search)) && decodeURIComponent(other[1]);
/** The `ui` object. */
var ui = {};
/*--------------------------------------------------------------------------*/
// Initialize controls.
addEventListener('load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
otherIndex = otherList.selectedIndex,
search = location.search.replace(/^\?|&?(?:build|other)=[^&]*&?/g, '');
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
location.href =
location.href.split('?')[0] + '?' +
(search ? search + '&' : '') +
'build=' + (buildIndex < 0 ? build : buildList[buildIndex].value) + '&' +
'other=' + (otherIndex < 0 ? other : otherList[otherIndex].value);
}
var span1 = document.createElement('span');
span1.style.cssText = 'float:right';
span1.innerHTML =
'<label for="perf-build">Build: </label>' +
'<select id="perf-build">' +
'<option value="lodash">lodash (production)</option>' +
'</select>';
var span2 = document.createElement('span');
span2.style.cssText = 'float:right';
span2.innerHTML =
'<label for="perf-other">Other Library: </label>' +
'<select id="perf-other">' +
'<option value="underscore-dev">Underscore (development)</option>' +
'<option value="underscore">Underscore (production)</option>' +
'<option value="lodash">lodash</option>' +
'</select>';
var buildList = span1.lastChild,
otherList = span2.lastChild,
toolbar = document.getElementById('perf-toolbar');
toolbar.appendChild(span2);
toolbar.appendChild(span1);
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash':
case null: return 0;
}
return -1;
}());
otherList.selectedIndex = (function() {
switch (other) {
case 'underscore-dev': return 0;
case 'lodash': return 2;
case 'underscore':
case null: return 1;
}
return -1;
}());
buildList.addEventListener('change', eventHandler);
otherList.addEventListener('change', eventHandler);
});
// The lodash build file path.
ui.buildPath = (function() {
var result;
switch (build) {
case null: build = 'lodash';
case 'lodash': result = 'dist/lodash.min.js'; break;
default: return build;
}
return basePath + result;
}());
// The other library file path.
ui.otherPath = (function() {
var result;
switch (other) {
case 'lodash': result = 'dist/lodash.min.js'; break;
case 'underscore-dev': result = 'vendor/underscore/underscore.js'; break;
case null: other = 'underscore';
case 'underscore': result = 'vendor/underscore/underscore-min.js'; break;
default: return other;
}
return basePath + result;
}());
ui.urlParams = { 'build': build, 'other': other };
window.ui = ui;
}(this));

View File

@@ -1,82 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Lo-Dash Performance Suite</title>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
}
applet {
position: absolute;
left: -9999em;
}
#FirebugUI {
top: 2em;
}
#perf-toolbar {
background-color: #EEE;
color: #5E740B;
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
font-size: small;
padding: 0.5em 0 0.5em 2em;
overflow: hidden;
}
</style>
</head>
<body>
<div id="perf-toolbar"></div>
<script src="../vendor/platform.js/platform.js"></script>
<script src="../lodash.js"></script>
<script src="../vendor/benchmark.js/benchmark.js"></script>
<script src="../vendor/firebug-lite/src/firebug-lite-debug.js"></script>
<script src="perf-ui.js"></script>
<script>
document.write('<script src="' + ui.buildPath + '"><\/script>');
</script>
<script>
var lodash = _.noConflict();
</script>
<script>
document.write('<script src="' + ui.otherPath + '"><\/script>');
</script>
<script src="perf.js"></script>
<script>
(function() {
var measured,
perfNow,
begin = new Date;
<head>
<meta charset="utf-8">
<title>lodash Performance Suite</title>
<style>
html, body {
margin: 0;
padding: 0;
height: 100%;
}
#FirebugUI {
top: 2.5em;
}
#perf-toolbar {
background-color: #EEE;
color: #5E740B;
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
font-size: small;
padding: 0.5em 1em 0.5em 1em;
overflow: hidden;
}
#perf-toolbar label {
display: inline-block;
margin-right: 0.5em;
}
#perf-toolbar span {
display: inline-block;
float: right;
line-height: 2.1em;
margin-left: 1em;
margin-top: 0;
}
</style>
</head>
<body>
<div id="perf-toolbar"></div>
<script src="../lodash.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="../node_modules/benchmark/benchmark.js"></script>
<script src="../vendor/firebug-lite/src/firebug-lite-debug.js"></script>
<script src="./asset/perf-ui.js"></script>
<script>
document.write('<script src="' + ui.buildPath + '"><\/script>');
</script>
<script>
var lodash = _.noConflict();
</script>
<script>
document.write('<script src="' + ui.otherPath + '"><\/script>');
</script>
<script src="perf.js"></script>
<script>
(function() {
var measured,
perfNow,
begin = new Date;
function init() {
var fbUI = document.getElementById('FirebugUI'),
fbDoc = fbUI && (fbDoc = fbUI.contentWindow || fbUI.contentDocument).document || fbDoc,
fbCommandLine = fbDoc && fbDoc.getElementById('fbCommandLine');
function init() {
var fbUI = document.getElementById('FirebugUI'),
fbDoc = fbUI && (fbDoc = fbUI.contentWindow || fbUI.contentDocument).document || fbDoc,
fbCommandLine = fbDoc && fbDoc.getElementById('fbCommandLine');
if (!fbCommandLine) {
return setTimeout(init, 15);
}
fbUI.style.height = (
Math.max(document.documentElement.clientHeight, document.body.clientHeight) -
document.getElementById('perf-toolbar').clientHeight
) + 'px';
if (!fbCommandLine) {
return setTimeout(init, 15);
}
fbUI.style.height = (
Math.max(document.documentElement.clientHeight, document.body.clientHeight) -
document.getElementById('perf-toolbar').clientHeight
) + 'px';
fbDoc.body.style.height = fbDoc.documentElement.style.height = '100%';
setTimeout(run, 15);
}
fbDoc.body.style.height = fbDoc.documentElement.style.height = '100%';
setTimeout(run, 15);
}
// is the applet permitted?
if (!/[?&]nojava=true(?:&|$)/.test(location.search)) {
// is the applet really needed?
while (!(measured = new Date - begin)) { }
if (measured != 1 && !((perfNow = window.performance) && typeof (perfNow.now || perfNow.webkitNow) == 'function')) {
// load applet
document.write('<applet code="nano" archive="../vendor/benchmark.js/nano.jar"></applet>');
}
}
window.onload = init;
}());
</script>
</body>
window.onload = init;
}());
</script>
</body>
</html>

View File

@@ -1,172 +0,0 @@
;(function(window) {
'use strict';
/** The base path of the builds */
var basePath = '../';
/** The Lo-Dash build to load */
var build = (build = /build=([^&]+)/.exec(location.search)) && decodeURIComponent(build[1]);
/** The other library to load */
var other = (other = /other=([^&]+)/.exec(location.search)) && decodeURIComponent(other[1]);
/** The `ui` object */
var ui = {};
/*--------------------------------------------------------------------------*/
/**
* Registers an event listener on an element.
*
* @private
* @param {Element} element The element.
* @param {string} eventName The name of the event.
* @param {Function} handler The event handler.
* @returns {Element} The element.
*/
function addListener(element, eventName, handler) {
if (typeof element.addEventListener != 'undefined') {
element.addEventListener(eventName, handler, false);
} else if (typeof element.attachEvent != 'undefined') {
element.attachEvent('on' + eventName, handler);
}
}
/*--------------------------------------------------------------------------*/
// expose `ui.urlParams` properties
ui.urlParams = {
'build': build,
'other': other
};
// expose Lo-Dash build file path
ui.buildPath = (function() {
var result;
switch (build) {
case 'lodash-compat': result = 'dist/lodash.compat.min.js'; break;
case 'lodash-legacy': result = 'dist/lodash.legacy.min.js'; break;
case 'lodash-mobile': result = 'dist/lodash.mobile.min.js'; break;
case 'lodash-underscore': result = 'dist/lodash.underscore.min.js'; break;
case 'lodash-custom-dev': result = 'lodash.custom.js'; break;
case 'lodash-custom': result = 'lodash.custom.min.js'; break;
case 'lodash-modern':
case null: result = 'dist/lodash.min.js'; break;
default: return build;
}
return basePath + result;
}());
// expose other library file path
ui.otherPath = (function() {
var result;
switch (other) {
case 'lodash-compat': result = 'dist/lodash.compat.min.js'; break;
case 'lodash-legacy': result = 'dist/lodash.legacy.min.js'; break;
case 'lodash-mobile': result = 'dist/lodash.mobile.min.js'; break;
case 'lodash-modern': result = 'dist/lodash.min.js'; break;
case 'lodash-underscore': result = 'dist/lodash.underscore.min.js'; break;
case 'lodash-custom-dev': result = 'lodash.custom.js'; break;
case 'lodash-custom': result = 'lodash.custom.min.js'; break;
case 'underscore-dev': result = 'vendor/underscore/underscore.js'; break;
case 'underscore':
case null: result = 'vendor/underscore/underscore-min.js'; break;
default: return other;
}
return basePath + result;
}());
// initialize controls
addListener(window, 'load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
otherIndex = otherList.selectedIndex,
search = location.search.replace(/^\?|&?(?:build|other)=[^&]*&?/g, '');
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
location.href =
location.href.split('?')[0] + '?' +
(search ? search + '&' : '') +
'build=' + (buildIndex < 0 ? build : buildList[buildIndex].value) + '&' +
'other=' + (otherIndex < 0 ? other : otherList[otherIndex].value);
}
var span1 = document.createElement('span');
span1.style.cssText = 'float:right';
span1.innerHTML =
'<label for="perf-build">Build: </label>' +
'<select id="perf-build">' +
'<option value="lodash-compat">Lo-Dash (compat)</option>' +
'<option value="lodash-legacy">Lo-Dash (legacy)</option>' +
'<option value="lodash-mobile">Lo-Dash (mobile)</option>' +
'<option value="lodash-modern">Lo-Dash (modern)</option>' +
'<option value="lodash-underscore">Lo-Dash (underscore)</option>' +
'<option value="lodash-custom-dev">Lo-Dash (custom development)</option>' +
'<option value="lodash-custom">Lo-Dash (custom production)</option>' +
'</select>';
var span2 = document.createElement('span');
span2.style.cssText = 'float:right';
span2.innerHTML =
'<label for="perf-other">Other Library: </label>' +
'<select id="perf-other">' +
'<option value="underscore-dev">Underscore (development)</option>' +
'<option value="underscore">Underscore (production)</option>' +
'<option value="lodash-compat">Lo-Dash (compat)</option>' +
'<option value="lodash-legacy">Lo-Dash (legacy)</option>' +
'<option value="lodash-mobile">Lo-Dash (mobile)</option>' +
'<option value="lodash-modern">Lo-Dash (modern)</option>' +
'<option value="lodash-underscore">Lo-Dash (underscore)</option>' +
'<option value="lodash-custom-dev">Lo-Dash (custom development)</option>' +
'<option value="lodash-custom">Lo-Dash (custom production)</option>' +
'</select>';
var buildList = span1.lastChild,
otherList = span2.lastChild,
toolbar = document.getElementById('perf-toolbar');
toolbar.appendChild(span2);
toolbar.appendChild(span1);
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash-compat': return 0;
case 'lodash-legacy': return 1;
case 'lodash-mobile': return 2;
case 'lodash-underscore': return 4;
case 'lodash-custom-dev': return 5;
case 'lodash-custom': return 6;
case 'lodash-modern':
case null: return 3;
}
return -1;
}());
otherList.selectedIndex = (function() {
switch (other) {
case 'underscore-dev': return 0;
case 'lodash-compat': return 2;
case 'lodash-legacy': return 3;
case 'lodash-mobile': return 4;
case 'lodash-modern': return 5;
case 'lodash-underscore': return 6;
case 'lodash-custom-dev': return 7;
case 'lodash-custom': return 8;
case 'underscore':
case null: return 1;
}
return -1;
}());
addListener(buildList, 'change', eventHandler);
addListener(otherList, 'change', eventHandler);
});
// expose `ui`
window.ui = ui;
}(this));

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +0,0 @@
cd "$(dirname "$0")"
echo "Running performance suite in node..."
node perf.js ../dist/lodash.js && node perf.js ../dist/lodash.min.js
for cmd in rhino "rhino -require" narwhal ringo phantomjs; do
echo ""
echo "Running performance suite in $cmd..."
$cmd perf.js ../dist/lodash.compat.js && $cmd perf.js ../dist/lodash.compat.min.js
done
echo ""
echo "Running performance suite in a browser..."
open index.html

155
test/asset/test-ui.js Normal file
View File

@@ -0,0 +1,155 @@
;(function(window) {
'use strict';
/** The base path of the lodash builds. */
var basePath = '../';
/** The lodash build to load. */
var build = (build = /build=([^&]+)/.exec(location.search)) && decodeURIComponent(build[1]);
/** The module loader to use. */
var loader = (loader = /loader=([^&]+)/.exec(location.search)) && decodeURIComponent(loader[1]);
/** The `ui` object. */
var ui = {};
/*--------------------------------------------------------------------------*/
// Initialize controls.
addEventListener('load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
loaderIndex = loaderList.selectedIndex,
search = location.search.replace(/^\?|&?(?:build|loader)=[^&]*&?/g, '');
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
location.href =
location.href.split('?')[0] + '?' +
(search ? search + '&' : '') +
'build=' + (buildIndex < 0 ? build : buildList[buildIndex].value) + '&' +
'loader=' + (loaderIndex < 0 ? loader : loaderList[loaderIndex].value);
}
function init() {
var toolbar = document.getElementById('qunit-testrunner-toolbar');
if (!toolbar) {
setTimeout(init, 15);
return;
}
toolbar.insertBefore(span2, toolbar.lastChild);
toolbar.insertBefore(span1, span2);
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash': return 1;
case 'lodash-core-dev': return 2;
case 'lodash-core': return 3;
case 'lodash-dev':
case null: return 0;
}
return -1;
}());
loaderList.selectedIndex = (function() {
switch (loader) {
case 'curl': return 1;
case 'dojo': return 2;
case 'requirejs': return 3;
case 'none':
case null: return 0;
}
return -1;
}());
buildList.addEventListener('change', eventHandler);
loaderList.addEventListener('change', eventHandler);
}
var span1 = document.createElement('span');
span1.innerHTML =
'<label for="qunit-build">Build: </label>' +
'<select id="qunit-build">' +
'<option value="lodash-dev">lodash (development)</option>' +
'<option value="lodash">lodash (production)</option>' +
'<option value="lodash-core-dev">lodash-core (development)</option>' +
'<option value="lodash-core">lodash-core (production)</option>' +
'</select>';
var span2 = document.createElement('span');
span2.innerHTML =
'<label for="qunit-loader">Loader: </label>' +
'<select id="qunit-loader">' +
'<option value="none">None</option>' +
'<option value="curl">Curl</option>' +
'<option value="dojo">Dojo</option>' +
'<option value="requirejs">RequireJS</option>' +
'</select>';
span1.style.cssText =
span2.style.cssText = 'display:inline-block;float:right;line-height:2.1em;margin-left:1em;margin-top:0;';
span1.firstChild.style.cssText =
span2.firstChild.style.cssText = 'display:inline-block;margin-right:.5em;';
var buildList = span1.lastChild,
loaderList = span2.lastChild;
setTimeout(function() {
ui.timing.loadEventEnd = +new Date;
}, 1);
init();
});
// The lodash build file path.
ui.buildPath = (function() {
var result;
switch (build) {
case 'lodash': result = 'dist/lodash.min.js'; break;
case 'lodash-core-dev': result = 'dist/lodash.core.js'; break;
case 'lodash-core': result = 'dist/lodash.core.min.js'; break;
case null: build = 'lodash-dev';
case 'lodash-dev': result = 'lodash.js'; break;
default: return build;
}
return basePath + result;
}());
// The module loader file path.
ui.loaderPath = (function() {
var result;
switch (loader) {
case 'curl': result = 'node_modules/curl-amd/dist/curl-kitchen-sink/curl.js'; break;
case 'dojo': result = 'node_modules/dojo/dojo.js'; break;
case 'requirejs': result = 'node_modules/requirejs/require.js'; break;
case null: loader = 'none'; return '';
default: return loader;
}
return basePath + result;
}());
// Used to indicate testing a core build.
ui.isCore = /\bcore(\.min)?\.js\b/.test(ui.buildPath);
// Used to indicate testing a foreign file.
ui.isForeign = RegExp('^(\\w+:)?//').test(build);
// Used to indicate testing a modularized build.
ui.isModularize = /\b(?:amd|commonjs|es|node|npm|(index|main)\.js)\b/.test([location.pathname, location.search]);
// Used to indicate testing in Sauce Labs' automated test cloud.
ui.isSauceLabs = location.port == '9001';
// Used to indicate that lodash is in strict mode.
ui.isStrict = /\bes\b/.test([location.pathname, location.search]);
ui.urlParams = { 'build': build, 'loader': loader };
ui.timing = { 'loadEventEnd': 0 };
window.ui = ui;
}(this));

17
test/asset/worker.js Normal file
View File

@@ -0,0 +1,17 @@
'use strict';
self.console || (self.console = { 'log': function() {} });
addEventListener('message', function(e) {
if (e.data) {
try {
importScripts('../' + e.data);
} catch (e) {
var lineNumber = e.lineNumber,
message = (lineNumber == null ? '' : (lineNumber + ': ')) + e.message;
self._ = { 'VERSION': message };
}
postMessage(_.VERSION);
}
});

View File

@@ -1,47 +1,170 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Backbone Test Suite</title>
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
<style>
body > #qunit-header {
display: none;
}
</style>
</head>
<body>
<div id="qunit"></div>
<h1 id="qunit-header"></h1>
<div id="qunit-fixture">
<div id='testElement'>
<h1>Test</h1>
</div>
</div>
<script src="../vendor/json-js/json2.js"></script>
<script src="../vendor/jquery/jquery.js"></script>
<script src="../vendor/platform.js/platform.js"></script>
<script src="../vendor/qunit/qunit/qunit.js"></script>
<script src="test-ui.js"></script>
<script src="../lodash.js"></script>
<script>
var lodash = _.noConflict();
document.write('<script src="' + ui.buildPath + '"><\/script>');
</script>
<script>
_.mixin({
'debounce': _.debounce || lodash.debounce,
'defer': _.defer || lodash.defer
});
</script>
<script src="../vendor/backbone/backbone.js"></script>
<script src="../vendor/backbone/test/environment.js"></script>
<script src="../vendor/backbone/test/noconflict.js"></script>
<script src="../vendor/backbone/test/events.js"></script>
<script src="../vendor/backbone/test/model.js"></script>
<script src="../vendor/backbone/test/collection.js"></script>
<script src="../vendor/backbone/test/router.js"></script>
<script src="../vendor/backbone/test/view.js"></script>
<script src="../vendor/backbone/test/sync.js"></script>
</body>
<head>
<meta charset="utf-8">
<title>Backbone Test Suite</title>
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
</head>
<body>
<script>
// Avoid reporting tests to Sauce Labs when script errors occur.
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../vendor/json-js/json2.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./asset/test-ui.js"></script>
<script src="../lodash.js"></script>
<script>
QUnit.config.asyncRetries = 10;
QUnit.config.hidepassed = true;
var mixinPrereqs = (function() {
var aliasToReal = {
'indexBy': 'keyBy',
'invoke': 'invokeMap'
};
var keyMap = {
'rest': 'tail'
};
var lodash = _.noConflict();
return function(_) {
lodash(_)
.defaultsDeep({ 'templateSettings': lodash.templateSettings })
.mixin(lodash.pick(lodash, lodash.difference([
'countBy',
'debounce',
'difference',
'find',
'findIndex',
'findLastIndex',
'groupBy',
'includes',
'invert',
'invokeMap',
'keyBy',
'omit',
'partition',
'reduceRight',
'reject',
'sample',
'without'
], lodash.functions(_))))
.value();
lodash.forOwn(keyMap, function(realName, otherName) {
_[otherName] = lodash[realName];
_.prototype[otherName] = lodash.prototype[realName];
});
lodash.forOwn(aliasToReal, function(realName, alias) {
_[alias] = _[realName];
_.prototype[alias] = _.prototype[realName];
});
return _;
};
}());
// Load prerequisite scripts.
document.write(ui.urlParams.loader == 'none'
? '<script src="' + ui.buildPath + '"><\/script>'
: '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
);
</script>
<script>
if (ui.urlParams.loader == 'none') {
mixinPrereqs(_);
document.write([
'<script src="../node_modules/jquery/dist/jquery.js"><\/script>',
'<script src="../vendor/backbone/backbone.js"><\/script>',
'<script src="../vendor/backbone/test/setup/dom-setup.js"><\/script>',
'<script src="../vendor/backbone/test/setup/environment.js"><\/script>',
'<script src="../vendor/backbone/test/noconflict.js"><\/script>',
'<script src="../vendor/backbone/test/events.js"><\/script>',
'<script src="../vendor/backbone/test/model.js"><\/script>',
'<script src="../vendor/backbone/test/collection.js"><\/script>',
'<script src="../vendor/backbone/test/router.js"><\/script>',
'<script src="../vendor/backbone/test/view.js"><\/script>',
'<script src="../vendor/backbone/test/sync.js"><\/script>'
].join('\n'));
}
</script>
<script>
(function() {
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (!window.require) {
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, '').replace(/^\/|\/$/g, ''),
moduleMain = modulePath.match(reBasename)[0],
uid = +new Date;
function getConfig() {
var result = {
'baseUrl': './',
'urlArgs': 't=' + uid++,
'waitSeconds': 0,
'paths': {
'backbone': '../vendor/backbone/backbone',
'jquery': '../node_modules/jquery/dist/jquery'
},
'packages': [{
'name': 'test',
'location': '../vendor/backbone/test',
'config': {
// Work around no global being exported.
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}]
};
if (ui.isModularize) {
result.packages.push({
'name': 'underscore',
'location': locationPath,
'main': moduleMain
});
} else {
result.paths.underscore = modulePath;
}
return result;
}
QUnit.config.autostart = false;
require(getConfig(), ['underscore'], function(lodash) {
_ = mixinPrereqs(lodash);
require(getConfig(), ['backbone'], function() {
require(getConfig(), [
'test/setup/dom-setup',
'test/setup/environment',
'test/noconflict',
'test/events',
'test/model',
'test/collection',
'test/router',
'test/view',
'test/sync'
], QUnit.start);
});
});
}());
</script>
</body>
</html>

41
test/fp.html Normal file
View File

@@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>lodash-fp Test Suite</title>
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
</head>
<body>
<script>
// Avoid reporting tests to Sauce Labs when script errors occur.
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../lodash.js"></script>
<script src="../dist/lodash.fp.js"></script>
<script src="../dist/mapping.fp.js"></script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./test-fp.js"></script>
<div id="qunit"></div>
<script>
// Set a more readable browser name.
window.onload = function() {
var timeoutId = setInterval(function() {
var ua = document.getElementById('qunit-userAgent');
if (ua) {
ua.innerHTML = platform;
clearInterval(timeoutId);
}
}, 16);
};
</script>
</body>
</html>

View File

@@ -1,166 +1,341 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Lo-Dash Test Suite</title>
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
<style>
#exports {
display: none;
}
</style>
</head>
<body>
<script src="../vendor/qunit/qunit/qunit.js"></script>
<script src="../vendor/platform.js/platform.js"></script>
<script src="test-ui.js"></script>
<div id="qunit"></div>
<div id="exports"></div>
<script>
// set bad shims
Array._isArray = Array.isArray;
Array.isArray = function() { return false; };
<head>
<meta charset="utf-8">
<title>lodash Test Suite</title>
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
<style>
#exports, #module {
display: none;
}
</style>
</head>
<body>
<script>
// Avoid reporting tests to Sauce Labs when script errors occur.
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../node_modules/lodash/lodash.js"></script>
<script>var lodashStable = _.noConflict();</script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./asset/test-ui.js"></script>
<div id="qunit"></div>
<div id="exports"></div>
<div id="module"></div>
<script>
function setProperty(object, key, value) {
try {
Object.defineProperty(object, key, {
'configurable': true,
'enumerable': false,
'writable': true,
'value': value
});
} catch (e) {
object[key] = value;
}
return object;
}
Function.prototype._bind = Function.prototype.bind;
Function.prototype.bind = function() { return function() {}; };
function addBizarroMethods() {
var funcProto = Function.prototype,
objectProto = Object.prototype;
Object._defineProperty = Object.defineProperty;
Object.defineProperty = function() {};
var hasOwnProperty = objectProto.hasOwnProperty,
fnToString = funcProto.toString,
nativeString = fnToString.call(objectProto.toString),
noop = function() {},
propertyIsEnumerable = objectProto.propertyIsEnumerable,
reToString = /toString/g;
Object._keys = Object.keys;
Object.keys = function() { return []; };
function constant(value) {
return function() {
return value;
};
}
// load Lo-Dash and expose it to the bad `Object.keys` shim
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
</script>
<script>
// store Lo-Dash to test for bad shim detection
var lodashBadShim = window._;
function createToString(funcName) {
return constant(nativeString.replace(reToString, funcName));
}
// restore native methods
if (Array._isArray) {
Array.isArray = Array._isArray;
} else {
delete Array.isArray;
}
if (Function.prototype._bind) {
Function.prototype.bind = Function.prototype._bind;
} else {
delete Function.prototype.bind;
}
if (Object._defineProperty) {
Object.defineProperty = Object._defineProperty;
} else {
delete Object.defineProperty;
}
if (Object._keys) {
Object.keys = Object._keys;
} else {
delete Object.keys;
}
delete Array._isArray;
delete Function.prototype._bind;
delete Object._defineProperty;
delete Object._keys;
// Allow bypassing native checks.
setProperty(funcProto, 'toString', (function() {
function wrapper() {
setProperty(funcProto, 'toString', fnToString);
var result = hasOwnProperty.call(this, 'toString') ? this.toString() : fnToString.call(this);
setProperty(funcProto, 'toString', wrapper);
return result;
}
return wrapper;
}()));
// load Lo-Dash again to overwrite the existing `_` value
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
// Add prototype extensions.
funcProto._method = noop;
// load test.js if not using require.js
document.write(ui.urlParams.loader == 'none'
? '<script src="test.js"><\/script>'
: '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
);
</script>
<script>
var lodashModule,
shimmedModule,
underscoreModule;
// Set bad shims.
setProperty(Object, '_create', Object.create);
setProperty(Object, 'create', undefined);
(function() {
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (!window.require) {
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, ''),
moduleMain = modulePath.match(reBasename)[0];
setProperty(Object, '_getOwnPropertySymbols', Object.getOwnPropertySymbols);
setProperty(Object, 'getOwnPropertySymbols', undefined);
QUnit.config.autostart = false;
setProperty(objectProto, '_propertyIsEnumerable', propertyIsEnumerable);
setProperty(objectProto, 'propertyIsEnumerable', function(key) {
return !(key == 'valueOf' && this && this.valueOf === 1) && _propertyIsEnumerable.call(this, key);
});
// load Lo-Dash as a module
require({
'baseUrl': './',
'urlArgs': 't=' + (+new Date),
'packages': [
{
'name': 'lodash',
'location': locationPath,
'main': moduleMain
},
{
'name': 'shimmed',
'location': './abc/../' + locationPath,
'main': moduleMain
},
{
'name': 'underscore',
'location': './xyz/../' + locationPath,
'main': moduleMain
},
{
'name': 'test',
'location': basePath + '/test',
'main': 'test',
'config': {
// work around no global being exported
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}
],
'shim': {
'shimmed': {
'exports': '_'
}
}
},
['lodash', 'shimmed', 'underscore'], function(lodash, shimmed, underscore) {
if (shimmed && shimmed.noConflict) {
shimmedModule = shimmed.noConflict();
shimmedModule.moduleName = 'shimmed';
}
if (underscore && underscore.noConflict) {
underscoreModule = underscore.noConflict();
underscoreModule.moduleName = 'underscore';
}
if (lodash && lodash.noConflict) {
lodashModule = lodash.noConflict();
lodashModule.moduleName = 'lodash';
}
if (ui.isModularize) {
window._ = lodash;
}
require(['test'], function() {
QUnit.start();
});
});
}());
setProperty(window, '_Map', window.Map);
if (_Map) {
setProperty(window, 'Map', (function(Map) {
var count = 0;
return function() {
if (count++) {
return new Map;
}
var result = {};
setProperty(window, 'Map', Map);
return result;
};
}(_Map)));
// set a more readable browser name
window.onload = function() {
var timeoutId = setInterval(function() {
var ua = document.getElementById('qunit-userAgent');
if (ua) {
ua.innerHTML = platform;
clearInterval(timeoutId);
}
}, 16);
};
</script>
</body>
setProperty(Map, 'toString', createToString('Map'));
}
setProperty(window, '_Promise', window.Promise);
setProperty(window, 'Promise', noop);
setProperty(window, '_Set', window.Set);
setProperty(window, 'Set', noop);
setProperty(window, '_Symbol', window.Symbol);
setProperty(window, 'Symbol', undefined);
setProperty(window, '_WeakMap', window.WeakMap);
setProperty(window, 'WeakMap', noop);
// Fake `WinRTError`.
setProperty(window, 'WinRTError', Error);
// Fake free variable `global`.
setProperty(window, 'exports', window);
setProperty(window, 'global', window);
setProperty(window, 'module', {});
}
function removeBizarroMethods() {
var funcProto = Function.prototype,
objectProto = Object.prototype;
setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable);
if (Object._create) {
Object.create = Object._create;
} else {
delete Object.create;
}
if (Object._getOwnPropertySymbols) {
Object.getOwnPropertySymbols = Object._getOwnPropertySymbols;
} else {
delete Object.getOwnPropertySymbols;
}
if (_Map) {
Map = _Map;
} else {
setProperty(window, 'Map', undefined);
}
if (_Promise) {
Promise = _Promise;
} else {
setProperty(window, 'Promise', undefined);
}
if (_Set) {
Set = _Set;
} else {
setProperty(window, 'Set', undefined);
}
if (_Symbol) {
Symbol = _Symbol;
}
if (_WeakMap) {
WeakMap = _WeakMap;
} else {
setProperty(window, 'WeakMap', undefined);
}
setProperty(window, '_Map', undefined);
setProperty(window, '_Promise', undefined);
setProperty(window, '_Set', undefined);
setProperty(window, '_Symbol', undefined);
setProperty(window, '_WeakMap', undefined);
setProperty(window, 'WinRTError', undefined);
setProperty(window, 'exports', document.getElementById('exports'));
setProperty(window, 'global', undefined);
setProperty(window, 'module', document.getElementById('module'));
delete funcProto._method;
delete Object._create;
delete Object._getOwnPropertySymbols;
delete objectProto._propertyIsEnumerable;
}
// Load lodash to expose it to the bad extensions/shims.
if (!ui.isModularize) {
addBizarroMethods();
document.write('<script src="' + ui.buildPath + '"><\/script>');
}
</script>
<script>
// Store lodash to test for bad extensions/shims.
if (!ui.isModularize) {
var lodashBizarro = window._;
window._ = undefined;
removeBizarroMethods();
}
// Load test scripts.
document.write((ui.isForeign || ui.urlParams.loader == 'none')
? '<script src="' + ui.buildPath + '"><\/script><script src="test.js"><\/script>'
: '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
);
</script>
<script>
var lodashModule,
shimmedModule,
underscoreModule;
(function() {
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (ui.isForeign || !window.require) {
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
moduleMain = modulePath.match(reBasename)[0],
locationPath = modulePath.replace(reBasename, '').replace(/^\/|\/$/g, ''),
shimmedLocationPath = './abc/../' + locationPath,
underscoreLocationPath = './xyz/../' + locationPath,
uid = +new Date;
function getConfig() {
var result = {
'baseUrl': './',
'urlArgs': 't=' + uid++,
'waitSeconds': 0,
'paths': {},
'packages': [{
'name': 'test',
'location': basePath + 'test',
'main': 'test',
'config': {
// Work around no global being exported.
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}],
'shim': {
'shimmed': {
'exports': '_'
}
}
};
if (ui.isModularize) {
result.packages.push({
'name': 'lodash',
'location': locationPath,
'main': moduleMain
}, {
'name': 'shimmed',
'location': shimmedLocationPath,
'main': moduleMain
}, {
'name': 'underscore',
'location': underscoreLocationPath,
'main': moduleMain
});
} else {
result.paths.lodash = modulePath;
result.paths.shimmed = shimmedLocationPath + '/' + moduleMain;
result.paths.underscore = underscoreLocationPath + '/' + moduleMain;
}
return result;
}
function loadTests() {
require(getConfig(), ['test'], function() {
QUnit.start();
});
}
function loadModulesAndTests() {
require(getConfig(), ['lodash', 'shimmed', 'underscore'], function(lodash, shimmed, underscore) {
lodashModule = lodash;
lodashModule.moduleName = 'lodash';
if (shimmed) {
shimmedModule = shimmed.result(shimmed, 'noConflict') || shimmed;
shimmedModule.moduleName = 'shimmed';
}
if (underscore) {
underscoreModule = underscore.result(underscore, 'noConflict') || underscore;
underscoreModule.moduleName = 'underscore';
}
window._ = lodash;
if (ui.isModularize) {
require(getConfig(), [
'lodash/_baseEach',
'lodash/_isIndex',
'lodash/_isIterateeCall'
], function(baseEach, isIndex, isIterateeCall) {
lodash._baseEach = baseEach;
lodash._isIndex = isIndex;
lodash._isIterateeCall = isIterateeCall;
loadTests();
});
} else {
loadTests();
}
});
}
QUnit.config.autostart = false;
if (window.requirejs) {
addBizarroMethods();
require(getConfig(), ['lodash'], function(lodash) {
lodashBizarro = lodash.result(lodash, 'noConflict') || lodash;
delete requirejs.s.contexts._;
removeBizarroMethods();
loadModulesAndTests();
});
} else {
loadModulesAndTests();
}
}());
// Set a more readable browser name.
window.onload = function() {
var timeoutId = setInterval(function() {
var ua = document.getElementById('qunit-userAgent');
if (ua) {
ua.innerHTML = platform;
clearInterval(timeoutId);
}
}, 16);
};
</script>
</body>
</html>

27
test/remove.js Normal file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env node
'use strict';
var _ = require('../lodash'),
fs = require('fs'),
path = require('path');
var args = (args = process.argv)
.slice((args[0] === process.execPath || args[0] === 'node') ? 2 : 0);
var filePath = path.resolve(args[1]),
reLine = /.*/gm;
var pattern = (function() {
var result = args[0],
delimiter = result.charAt(0),
lastIndex = result.lastIndexOf(delimiter);
return RegExp(result.slice(1, lastIndex), result.slice(lastIndex + 1));
}());
/*----------------------------------------------------------------------------*/
fs.writeFileSync(filePath, fs.readFileSync(filePath, 'utf8').replace(pattern, function(match) {
var snippet = _.slice(arguments, -3, -2)[0];
return match.replace(snippet, snippet.replace(reLine, ''));
}));

View File

@@ -1,14 +0,0 @@
cd "$(dirname "$0")"
for cmd in rhino "rhino -require" narwhal ringo phantomjs; do
echo "Testing in $cmd..."
$cmd test.js ../dist/lodash.compat.js && $cmd test.js ../dist/lodash.compat.min.js
echo ""
done
echo "Testing in node..."
node test.js ../dist/lodash.js && node test.js ../dist/lodash.min.js
echo ""
echo "Testing in a browser..."
open index.html

908
test/saucelabs.js Normal file
View File

@@ -0,0 +1,908 @@
#!/usr/bin/env node
'use strict';
/** Environment shortcut. */
var env = process.env;
/** Load Node.js modules. */
var EventEmitter = require('events').EventEmitter,
http = require('http'),
path = require('path'),
url = require('url'),
util = require('util');
/** Load other modules. */
var _ = require('../lodash.js'),
chalk = require('chalk'),
ecstatic = require('ecstatic'),
request = require('request'),
SauceTunnel = require('sauce-tunnel');
/** Used for Sauce Labs credentials. */
var accessKey = env.SAUCE_ACCESS_KEY,
username = env.SAUCE_USERNAME;
/** Used as the default maximum number of times to retry a job and tunnel. */
var maxJobRetries = 3,
maxTunnelRetries = 3;
/** Used as the static file server middleware. */
var mount = ecstatic({
'cache': 'no-cache',
'root': process.cwd()
});
/** Used as the list of ports supported by Sauce Connect. */
var ports = [
80, 443, 888, 2000, 2001, 2020, 2109, 2222, 2310, 3000, 3001, 3030, 3210,
3333, 4000, 4001, 4040, 4321, 4502, 4503, 4567, 5000, 5001, 5050, 5555, 5432,
6000, 6001, 6060, 6666, 6543, 7000, 7070, 7774, 7777, 8000, 8001, 8003, 8031,
8080, 8081, 8765, 8777, 8888, 9000, 9001, 9080, 9090, 9876, 9877, 9999, 49221,
55001
];
/** Used by `logInline` to clear previously logged messages. */
var prevLine = '';
/** Method shortcut. */
var push = Array.prototype.push;
/** Used to detect error messages. */
var reError = /(?:\be|E)rror\b/;
/** Used to detect valid job ids. */
var reJobId = /^[a-z0-9]{32}$/;
/** Used to display the wait throbber. */
var throbberDelay = 500,
waitCount = -1;
/**
* Used as Sauce Labs config values.
* See the [Sauce Labs documentation](https://docs.saucelabs.com/reference/test-configuration/)
* for more details.
*/
var advisor = getOption('advisor', false),
build = getOption('build', (env.TRAVIS_COMMIT || '').slice(0, 10)),
commandTimeout = getOption('commandTimeout', 90),
compatMode = getOption('compatMode', null),
customData = Function('return {' + getOption('customData', '').replace(/^\{|}$/g, '') + '}')(),
deviceOrientation = getOption('deviceOrientation', 'portrait'),
framework = getOption('framework', 'qunit'),
idleTimeout = getOption('idleTimeout', 60),
jobName = getOption('name', 'unit tests'),
maxDuration = getOption('maxDuration', 180),
port = ports[Math.min(_.sortedIndex(ports, getOption('port', 9001)), ports.length - 1)],
publicAccess = getOption('public', true),
queueTimeout = getOption('queueTimeout', 240),
recordVideo = getOption('recordVideo', true),
recordScreenshots = getOption('recordScreenshots', false),
runner = getOption('runner', 'test/index.html').replace(/^\W+/, ''),
runnerUrl = getOption('runnerUrl', 'http://localhost:' + port + '/' + runner),
statusInterval = getOption('statusInterval', 5),
tags = getOption('tags', []),
throttled = getOption('throttled', 10),
tunneled = getOption('tunneled', true),
tunnelId = getOption('tunnelId', 'tunnel_' + (env.TRAVIS_JOB_ID || 0)),
tunnelTimeout = getOption('tunnelTimeout', 120),
videoUploadOnPass = getOption('videoUploadOnPass', false);
/** Used to convert Sauce Labs browser identifiers to their formal names. */
var browserNameMap = {
'googlechrome': 'Chrome',
'iehta': 'Internet Explorer',
'ipad': 'iPad',
'iphone': 'iPhone',
'microsoftedge': 'Edge'
};
/** List of platforms to load the runner on. */
var platforms = [
['Linux', 'android', '5.1'],
['Windows 10', 'chrome', '54'],
['Windows 10', 'chrome', '53'],
['Windows 10', 'firefox', '50'],
['Windows 10', 'firefox', '49'],
['Windows 10', 'microsoftedge', '14'],
['Windows 10', 'internet explorer', '11'],
['Windows 8', 'internet explorer', '10'],
['Windows 7', 'internet explorer', '9'],
['macOS 10.12', 'safari', '10'],
['OS X 10.11', 'safari', '9']
];
/** Used to tailor the `platforms` array. */
var isAMD = _.includes(tags, 'amd'),
isBackbone = _.includes(tags, 'backbone'),
isModern = _.includes(tags, 'modern');
// The platforms to test IE compatibility modes.
if (compatMode) {
platforms = [
['Windows 10', 'internet explorer', '11'],
['Windows 8', 'internet explorer', '10'],
['Windows 7', 'internet explorer', '9'],
['Windows 7', 'internet explorer', '8']
];
}
// The platforms for AMD tests.
if (isAMD) {
platforms = _.filter(platforms, function(platform) {
var browser = browserName(platform[1]),
version = +platform[2];
switch (browser) {
case 'Android': return version >= 4.4;
case 'Opera': return version >= 10;
}
return true;
});
}
// The platforms for Backbone tests.
if (isBackbone) {
platforms = _.filter(platforms, function(platform) {
var browser = browserName(platform[1]),
version = +platform[2];
switch (browser) {
case 'Firefox': return version >= 4;
case 'Internet Explorer': return version >= 7;
case 'iPad': return version >= 5;
case 'Opera': return version >= 12;
}
return true;
});
}
// The platforms for modern builds.
if (isModern) {
platforms = _.filter(platforms, function(platform) {
var browser = browserName(platform[1]),
version = +platform[2];
switch (browser) {
case 'Android': return version >= 4.1;
case 'Firefox': return version >= 10;
case 'Internet Explorer': return version >= 9;
case 'iPad': return version >= 6;
case 'Opera': return version >= 12;
case 'Safari': return version >= 6;
}
return true;
});
}
/** Used as the default `Job` options object. */
var jobOptions = {
'build': build,
'command-timeout': commandTimeout,
'custom-data': customData,
'device-orientation': deviceOrientation,
'framework': framework,
'idle-timeout': idleTimeout,
'max-duration': maxDuration,
'name': jobName,
'public': publicAccess,
'platforms': platforms,
'record-screenshots': recordScreenshots,
'record-video': recordVideo,
'sauce-advisor': advisor,
'tags': tags,
'url': runnerUrl,
'video-upload-on-pass': videoUploadOnPass
};
if (publicAccess === true) {
jobOptions['public'] = 'public';
}
if (tunneled) {
jobOptions['tunnel-identifier'] = tunnelId;
}
/*----------------------------------------------------------------------------*/
/**
* Resolves the formal browser name for a given Sauce Labs browser identifier.
*
* @private
* @param {string} identifier The browser identifier.
* @returns {string} Returns the formal browser name.
*/
function browserName(identifier) {
return browserNameMap[identifier] || _.startCase(identifier);
}
/**
* Gets the value for the given option name. If no value is available the
* `defaultValue` is returned.
*
* @private
* @param {string} name The name of the option.
* @param {*} defaultValue The default option value.
* @returns {*} Returns the option value.
*/
function getOption(name, defaultValue) {
var isArr = _.isArray(defaultValue);
return _.reduce(process.argv, function(result, value) {
if (isArr) {
value = optionToArray(name, value);
return _.isEmpty(value) ? result : value;
}
value = optionToValue(name, value);
return value == null ? result : value;
}, defaultValue);
}
/**
* Checks if `value` is a job ID.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a job ID, else `false`.
*/
function isJobId(value) {
return reJobId.test(value);
}
/**
* Writes an inline message to standard output.
*
* @private
* @param {string} [text=''] The text to log.
*/
function logInline(text) {
var blankLine = _.repeat(' ', _.size(prevLine));
prevLine = text = _.truncate(text, { 'length': 40 });
process.stdout.write(text + blankLine.slice(text.length) + '\r');
}
/**
* Writes the wait throbber to standard output.
*
* @private
*/
function logThrobber() {
logInline('Please wait' + _.repeat('.', (++waitCount % 3) + 1));
}
/**
* Converts a comma separated option value into an array.
*
* @private
* @param {string} name The name of the option to inspect.
* @param {string} string The options string.
* @returns {Array} Returns the new converted array.
*/
function optionToArray(name, string) {
return _.compact(_.invokeMap((optionToValue(name, string) || '').split(/, */), 'trim'));
}
/**
* Extracts the option value from an option string.
*
* @private
* @param {string} name The name of the option to inspect.
* @param {string} string The options string.
* @returns {string|undefined} Returns the option value, else `undefined`.
*/
function optionToValue(name, string) {
var result = string.match(RegExp('^' + name + '(?:=([\\s\\S]+))?$'));
if (result) {
result = _.get(result, 1);
result = result ? _.trim(result) : true;
}
if (result === 'false') {
return false;
}
return result || undefined;
}
/*----------------------------------------------------------------------------*/
/**
* The `Job#remove` and `Tunnel#stop` callback used by `Jobs#restart`
* and `Tunnel#restart` respectively.
*
* @private
*/
function onGenericRestart() {
this.restarting = false;
this.emit('restart');
this.start();
}
/**
* The `request.put` and `SauceTunnel#stop` callback used by `Jobs#stop`
* and `Tunnel#stop` respectively.
*
* @private
* @param {Object} [error] The error object.
*/
function onGenericStop(error) {
this.running = this.stopping = false;
this.emit('stop', error);
}
/**
* The `request.del` callback used by `Jobs#remove`.
*
* @private
*/
function onJobRemove(error, res, body) {
this.id = this.taskId = this.url = null;
this.removing = false;
this.emit('remove');
}
/**
* The `Job#remove` callback used by `Jobs#reset`.
*
* @private
*/
function onJobReset() {
this.attempts = 0;
this.failed = this.resetting = false;
this._pollerId = this.id = this.result = this.taskId = this.url = null;
this.emit('reset');
}
/**
* The `request.post` callback used by `Jobs#start`.
*
* @private
* @param {Object} [error] The error object.
* @param {Object} res The response data object.
* @param {Object} body The response body JSON object.
*/
function onJobStart(error, res, body) {
this.starting = false;
if (this.stopping) {
return;
}
var statusCode = _.get(res, 'statusCode'),
taskId = _.first(_.get(body, 'js tests'));
if (error || !taskId || statusCode != 200) {
if (this.attempts < this.retries) {
this.restart();
return;
}
var na = 'unavailable',
bodyStr = _.isObject(body) ? '\n' + JSON.stringify(body) : na,
statusStr = _.isFinite(statusCode) ? statusCode : na;
logInline();
console.error('Failed to start job; status: %s, body: %s', statusStr, bodyStr);
if (error) {
console.error(error);
}
this.failed = true;
this.emit('complete');
return;
}
this.running = true;
this.taskId = taskId;
this.timestamp = _.now();
this.emit('start');
this.status();
}
/**
* The `request.post` callback used by `Job#status`.
*
* @private
* @param {Object} [error] The error object.
* @param {Object} res The response data object.
* @param {Object} body The response body JSON object.
*/
function onJobStatus(error, res, body) {
this.checking = false;
if (!this.running || this.stopping) {
return;
}
var completed = _.get(body, 'completed', false),
data = _.first(_.get(body, 'js tests')),
elapsed = (_.now() - this.timestamp) / 1000,
jobId = _.get(data, 'job_id', null),
jobResult = _.get(data, 'result', null),
jobStatus = _.get(data, 'status', ''),
jobUrl = _.get(data, 'url', null),
expired = (elapsed >= queueTimeout && !_.includes(jobStatus, 'in progress')),
options = this.options,
platform = options.platforms[0];
if (_.isObject(jobResult)) {
var message = _.get(jobResult, 'message');
} else {
if (typeof jobResult == 'string') {
message = jobResult;
}
jobResult = null;
}
if (isJobId(jobId)) {
this.id = jobId;
this.result = jobResult;
this.url = jobUrl;
} else {
completed = false;
}
this.emit('status', jobStatus);
if (!completed && !expired) {
this._pollerId = _.delay(_.bind(this.status, this), this.statusInterval * 1000);
return;
}
var description = browserName(platform[1]) + ' ' + platform[2] + ' on ' + _.startCase(platform[0]),
errored = !jobResult || !jobResult.passed || reError.test(message) || reError.test(jobStatus),
failures = _.get(jobResult, 'failed'),
label = options.name + ':',
tunnel = this.tunnel;
if (errored || failures) {
if (errored && this.attempts < this.retries) {
this.restart();
return;
}
var details = 'See ' + jobUrl + ' for details.';
this.failed = true;
logInline();
if (failures) {
console.error(label + ' %s ' + chalk.red('failed') + ' %d test' + (failures > 1 ? 's' : '') + '. %s', description, failures, details);
}
else if (tunnel.attempts < tunnel.retries) {
tunnel.restart();
return;
}
else {
if (message === undefined) {
message = 'Results are unavailable. ' + details;
}
console.error(label, description, chalk.red('failed') + ';', message);
}
}
else {
logInline();
console.log(label, description, chalk.green('passed'));
}
this.running = false;
this.emit('complete');
}
/**
* The `SauceTunnel#start` callback used by `Tunnel#start`.
*
* @private
* @param {boolean} success The connection success indicator.
*/
function onTunnelStart(success) {
this.starting = false;
if (this._timeoutId) {
clearTimeout(this._timeoutId);
this._timeoutId = null;
}
if (!success) {
if (this.attempts < this.retries) {
this.restart();
return;
}
logInline();
console.error('Failed to open Sauce Connect tunnel');
process.exit(2);
}
logInline();
console.log('Sauce Connect tunnel opened');
var jobs = this.jobs;
push.apply(jobs.queue, jobs.all);
this.running = true;
this.emit('start');
console.log('Starting jobs...');
this.dequeue();
}
/*----------------------------------------------------------------------------*/
/**
* The Job constructor.
*
* @private
* @param {Object} [properties] The properties to initialize a job with.
*/
function Job(properties) {
EventEmitter.call(this);
this.options = {};
_.merge(this, properties);
_.defaults(this.options, _.cloneDeep(jobOptions));
this.attempts = 0;
this.checking = this.failed = this.removing = this.resetting = this.restarting = this.running = this.starting = this.stopping = false;
this._pollerId = this.id = this.result = this.taskId = this.url = null;
}
util.inherits(Job, EventEmitter);
/**
* Removes the job.
*
* @memberOf Job
* @param {Function} callback The function called once the job is removed.
* @param {Object} Returns the job instance.
*/
Job.prototype.remove = function(callback) {
this.once('remove', _.iteratee(callback));
if (this.removing) {
return this;
}
this.removing = true;
return this.stop(function() {
var onRemove = _.bind(onJobRemove, this);
if (!this.id) {
_.defer(onRemove);
return;
}
request.del(_.template('https://saucelabs.com/rest/v1/${user}/jobs/${id}')(this), {
'auth': { 'user': this.user, 'pass': this.pass }
}, onRemove);
});
};
/**
* Resets the job.
*
* @memberOf Job
* @param {Function} callback The function called once the job is reset.
* @param {Object} Returns the job instance.
*/
Job.prototype.reset = function(callback) {
this.once('reset', _.iteratee(callback));
if (this.resetting) {
return this;
}
this.resetting = true;
return this.remove(onJobReset);
};
/**
* Restarts the job.
*
* @memberOf Job
* @param {Function} callback The function called once the job is restarted.
* @param {Object} Returns the job instance.
*/
Job.prototype.restart = function(callback) {
this.once('restart', _.iteratee(callback));
if (this.restarting) {
return this;
}
this.restarting = true;
var options = this.options,
platform = options.platforms[0],
description = browserName(platform[1]) + ' ' + platform[2] + ' on ' + _.startCase(platform[0]),
label = options.name + ':';
logInline();
console.log('%s %s restart %d of %d', label, description, ++this.attempts, this.retries);
return this.remove(onGenericRestart);
};
/**
* Starts the job.
*
* @memberOf Job
* @param {Function} callback The function called once the job is started.
* @param {Object} Returns the job instance.
*/
Job.prototype.start = function(callback) {
this.once('start', _.iteratee(callback));
if (this.starting || this.running) {
return this;
}
this.starting = true;
request.post(_.template('https://saucelabs.com/rest/v1/${user}/js-tests')(this), {
'auth': { 'user': this.user, 'pass': this.pass },
'json': this.options
}, _.bind(onJobStart, this));
return this;
};
/**
* Checks the status of a job.
*
* @memberOf Job
* @param {Function} callback The function called once the status is resolved.
* @param {Object} Returns the job instance.
*/
Job.prototype.status = function(callback) {
this.once('status', _.iteratee(callback));
if (this.checking || this.removing || this.resetting || this.restarting || this.starting || this.stopping) {
return this;
}
this._pollerId = null;
this.checking = true;
request.post(_.template('https://saucelabs.com/rest/v1/${user}/js-tests/status')(this), {
'auth': { 'user': this.user, 'pass': this.pass },
'json': { 'js tests': [this.taskId] }
}, _.bind(onJobStatus, this));
return this;
};
/**
* Stops the job.
*
* @memberOf Job
* @param {Function} callback The function called once the job is stopped.
* @param {Object} Returns the job instance.
*/
Job.prototype.stop = function(callback) {
this.once('stop', _.iteratee(callback));
if (this.stopping) {
return this;
}
this.stopping = true;
if (this._pollerId) {
clearTimeout(this._pollerId);
this._pollerId = null;
this.checking = false;
}
var onStop = _.bind(onGenericStop, this);
if (!this.running || !this.id) {
_.defer(onStop);
return this;
}
request.put(_.template('https://saucelabs.com/rest/v1/${user}/jobs/${id}/stop')(this), {
'auth': { 'user': this.user, 'pass': this.pass }
}, onStop);
return this;
};
/*----------------------------------------------------------------------------*/
/**
* The Tunnel constructor.
*
* @private
* @param {Object} [properties] The properties to initialize the tunnel with.
*/
function Tunnel(properties) {
EventEmitter.call(this);
_.merge(this, properties);
var active = [],
queue = [];
var all = _.map(this.platforms, _.bind(function(platform) {
return new Job(_.merge({
'user': this.user,
'pass': this.pass,
'tunnel': this,
'options': { 'platforms': [platform] }
}, this.job));
}, this));
var completed = 0,
restarted = [],
success = true,
total = all.length,
tunnel = this;
_.invokeMap(all, 'on', 'complete', function() {
_.pull(active, this);
if (success) {
success = !this.failed;
}
if (++completed == total) {
tunnel.stop(_.partial(tunnel.emit, 'complete', success));
return;
}
tunnel.dequeue();
});
_.invokeMap(all, 'on', 'restart', function() {
if (!_.includes(restarted, this)) {
restarted.push(this);
}
// Restart tunnel if all active jobs have restarted.
var threshold = Math.min(all.length, _.isFinite(throttled) ? throttled : 3);
if (tunnel.attempts < tunnel.retries &&
active.length >= threshold && _.isEmpty(_.difference(active, restarted))) {
tunnel.restart();
}
});
this.on('restart', function() {
completed = 0;
success = true;
restarted.length = 0;
});
this._timeoutId = null;
this.attempts = 0;
this.restarting = this.running = this.starting = this.stopping = false;
this.jobs = { 'active': active, 'all': all, 'queue': queue };
this.connection = new SauceTunnel(this.user, this.pass, this.id, this.tunneled, ['-P', '0']);
}
util.inherits(Tunnel, EventEmitter);
/**
* Restarts the tunnel.
*
* @memberOf Tunnel
* @param {Function} callback The function called once the tunnel is restarted.
*/
Tunnel.prototype.restart = function(callback) {
this.once('restart', _.iteratee(callback));
if (this.restarting) {
return this;
}
this.restarting = true;
logInline();
console.log('Tunnel %s: restart %d of %d', this.id, ++this.attempts, this.retries);
var jobs = this.jobs,
active = jobs.active,
all = jobs.all;
var reset = _.after(all.length, _.bind(this.stop, this, onGenericRestart)),
stop = _.after(active.length, _.partial(_.invokeMap, all, 'reset', reset));
if (_.isEmpty(active)) {
_.defer(stop);
}
if (_.isEmpty(all)) {
_.defer(reset);
}
_.invokeMap(active, 'stop', function() {
_.pull(active, this);
stop();
});
if (this._timeoutId) {
clearTimeout(this._timeoutId);
this._timeoutId = null;
}
return this;
};
/**
* Starts the tunnel.
*
* @memberOf Tunnel
* @param {Function} callback The function called once the tunnel is started.
* @param {Object} Returns the tunnel instance.
*/
Tunnel.prototype.start = function(callback) {
this.once('start', _.iteratee(callback));
if (this.starting || this.running) {
return this;
}
this.starting = true;
logInline();
console.log('Opening Sauce Connect tunnel...');
var onStart = _.bind(onTunnelStart, this);
if (this.timeout) {
this._timeoutId = _.delay(onStart, this.timeout * 1000, false);
}
this.connection.start(onStart);
return this;
};
/**
* Removes jobs from the queue and starts them.
*
* @memberOf Tunnel
* @param {Object} Returns the tunnel instance.
*/
Tunnel.prototype.dequeue = function() {
var count = 0,
jobs = this.jobs,
active = jobs.active,
queue = jobs.queue,
throttled = this.throttled;
while (queue.length && (active.length < throttled)) {
var job = queue.shift();
active.push(job);
_.delay(_.bind(job.start, job), ++count * 1000);
}
return this;
};
/**
* Stops the tunnel.
*
* @memberOf Tunnel
* @param {Function} callback The function called once the tunnel is stopped.
* @param {Object} Returns the tunnel instance.
*/
Tunnel.prototype.stop = function(callback) {
this.once('stop', _.iteratee(callback));
if (this.stopping) {
return this;
}
this.stopping = true;
logInline();
console.log('Shutting down Sauce Connect tunnel...');
var jobs = this.jobs,
active = jobs.active;
var stop = _.after(active.length, _.bind(function() {
var onStop = _.bind(onGenericStop, this);
if (this.running) {
this.connection.stop(onStop);
} else {
onStop();
}
}, this));
jobs.queue.length = 0;
if (_.isEmpty(active)) {
_.defer(stop);
}
_.invokeMap(active, 'stop', function() {
_.pull(active, this);
stop();
});
if (this._timeoutId) {
clearTimeout(this._timeoutId);
this._timeoutId = null;
}
return this;
};
/*----------------------------------------------------------------------------*/
// Cleanup any inline logs when exited via `ctrl+c`.
process.on('SIGINT', function() {
logInline();
process.exit();
});
// Create a web server for the current working directory.
http.createServer(function(req, res) {
// See http://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx.
if (compatMode && path.extname(url.parse(req.url).pathname) == '.html') {
res.setHeader('X-UA-Compatible', 'IE=' + compatMode);
}
mount(req, res);
}).listen(port);
// Setup Sauce Connect so we can use this server from Sauce Labs.
var tunnel = new Tunnel({
'user': username,
'pass': accessKey,
'id': tunnelId,
'job': { 'retries': maxJobRetries, 'statusInterval': statusInterval },
'platforms': platforms,
'retries': maxTunnelRetries,
'throttled': throttled,
'tunneled': tunneled,
'timeout': tunnelTimeout
});
tunnel.on('complete', function(success) {
process.exit(success ? 0 : 1);
});
tunnel.start();
setInterval(logThrobber, throbberDelay);

2322
test/test-fp.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,174 +0,0 @@
;(function(window) {
'use strict';
/** The base path of the builds */
var basePath = '../';
/** The Lo-Dash build to load */
var build = (build = /build=([^&]+)/.exec(location.search)) && decodeURIComponent(build[1]);
/** The module loader to use */
var loader = (loader = /loader=([^&]+)/.exec(location.search)) && decodeURIComponent(loader[1]);
/** The `ui` object */
var ui = {};
/*--------------------------------------------------------------------------*/
/**
* Registers an event listener on an element.
*
* @private
* @param {Element} element The element.
* @param {string} eventName The name of the event.
* @param {Function} handler The event handler.
* @returns {Element} The element.
*/
function addListener(element, eventName, handler) {
if (typeof element.addEventListener != 'undefined') {
element.addEventListener(eventName, handler, false);
} else if (typeof element.attachEvent != 'undefined') {
element.attachEvent('on' + eventName, handler);
}
}
/*--------------------------------------------------------------------------*/
// expose `ui.urlParams` properties
ui.urlParams = {
'build': build,
'loader': loader
};
// expose Lo-Dash build file path
ui.buildPath = (function() {
var result;
switch (build) {
case 'lodash-compat': result = 'dist/lodash.compat.min.js'; break;
case 'lodash-modern-dev': result = 'dist/lodash.js'; break;
case 'lodash-modern': result = 'dist/lodash.min.js'; break;
case 'lodash-legacy': result = 'dist/lodash.legacy.min.js'; break;
case 'lodash-mobile': result = 'dist/lodash.mobile.min.js'; break;
case 'lodash-underscore': result = 'dist/lodash.underscore.min.js'; break;
case 'lodash-custom-dev': result = 'lodash.custom.js'; break;
case 'lodash-custom': result = 'lodash.custom.min.js'; break;
case 'lodash-compat-dev':
case null: result = 'lodash.js'; break;
default: return build;
}
return basePath + result;
}());
// expose module loader file path
ui.loaderPath = (function() {
var result;
switch (loader) {
case 'curl': result = 'vendor/curl/dist/curl-kitchen-sink/curl.js'; break;
case 'dojo': result = 'vendor/dojo/dojo.js'; break;
case 'requirejs':
case null: result = 'vendor/requirejs/require.js'; break;
default: return loader;
}
return basePath + result;
}());
// used to indicate testing a modularized build
ui.isModularize = /\b(?:commonjs|(index|main)\.js|lodash-(?:amd|node)|modularize)\b/.test([location.pathname, location.search, ui.buildPath]);
// initialize controls
addListener(window, 'load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
loaderIndex = loaderList.selectedIndex,
search = location.search.replace(/^\?|&?(?:build|loader)=[^&]*&?/g, '');
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
location.href =
location.href.split('?')[0] + '?' +
(search ? search + '&' : '') +
'build=' + (buildIndex < 0 ? build : buildList[buildIndex].value) + '&' +
'loader=' + (loaderIndex < 0 ? loader : loaderList[loaderIndex].value);
}
function init() {
var toolbar = document.getElementById('qunit-testrunner-toolbar');
if (toolbar) {
toolbar.appendChild(span1);
toolbar.appendChild(span2);
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash-compat': return 1;
case 'lodash-modern-dev': return 2;
case 'lodash-modern': return 3;
case 'lodash-legacy': return 4;
case 'lodash-mobile': return 5;
case 'lodash-underscore': return 6;
case 'lodash-custom-dev': return 7;
case 'lodash-custom': return 8;
case 'lodash-compat-dev':
case null: return 0;
}
return -1;
}());
loaderList.selectedIndex = (function() {
switch (loader) {
case 'none': return 0
case 'curl': return 1;
case 'dojo': return 2;
case 'requirejs':
case null: return 3;
}
return -1;
}());
addListener(buildList, 'change', eventHandler);
addListener(loaderList, 'change', eventHandler);
}
else {
setTimeout(init, 15);
}
}
var span1 = document.createElement('span');
span1.style.cssText = 'float:right';
span1.innerHTML =
'<label for="qunit-build">Build: </label>' +
'<select id="qunit-build">' +
'<option value="lodash-compat-dev">Lo-Dash (compat development)</option>' +
'<option value="lodash-compat">Lo-Dash (compat production)</option>' +
'<option value="lodash-modern-dev">Lo-Dash (modern development)</option>' +
'<option value="lodash-modern">Lo-Dash (modern production)</option>' +
'<option value="lodash-legacy">Lo-Dash (legacy)</option>' +
'<option value="lodash-mobile">Lo-Dash (mobile)</option>' +
'<option value="lodash-underscore">Lo-Dash (underscore)</option>' +
'<option value="lodash-custom-dev">Lo-Dash (custom development)</option>' +
'<option value="lodash-custom">Lo-Dash (custom production)</option>' +
'</select>';
var span2 = document.createElement('span');
span2.style.cssText = 'float:right';
span2.innerHTML =
'<label for="qunit-loader">Loader: </label>' +
'<select id="qunit-loader">' +
'<option value="none">None</option>' +
'<option value="curl">Curl</option>' +
'<option value="dojo">Dojo</option>' +
'<option value="requirejs">RequireJS</option>' +
'</select>';
var buildList = span1.lastChild,
loaderList = span2.lastChild;
init();
});
// expose `ui`
window.ui = ui;
}(this));

28145
test/test.js

File diff suppressed because it is too large Load Diff

View File

@@ -1,142 +1,466 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Underscore Test Suite</title>
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
<style>
iframe {
display: none;
}
</style>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture">
<div id="map-test">
<div id="id1"></div>
<div id="id2"></div>
</div>
<img id="chart_image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
</div>
<script src="../vendor/qunit/qunit/qunit.js"></script>
<script src="../vendor/jquery/jquery.js"></script>
<script src="../vendor/platform.js/platform.js"></script>
<script src="test-ui.js"></script>
<script>
function init(lodash) {
var arrayRef = [],
push = arrayRef.push;
<head>
<meta charset="utf-8">
<title>Underscore Test Suite</title>
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
</head>
<body>
<div id="qunit"></div>
<script>
// Avoid reporting tests to Sauce Labs when script errors occur.
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../node_modules/jquery/dist/jquery.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./asset/test-ui.js"></script>
<script src="../lodash.js"></script>
<script>
QUnit.config.asyncRetries = 10;
QUnit.config.hidepassed = true;
QUnit.config.excused = {
'Arrays': {
'chunk': [
'defaults to empty array (chunk size 0)'
],
'difference': [
'can perform an OO-style difference'
],
'drop': [
'is an alias for rest'
],
'first': [
'returns an empty array when n <= 0 (0 case)',
'returns an empty array when n <= 0 (negative case)',
'can fetch the first n elements',
'returns the whole array if n > length'
],
'findIndex': [
'called with context'
],
'findLastIndex': [
'called with context'
],
'flatten': [
'supports empty arrays',
'can flatten nested arrays',
'works on an arguments object',
'can handle very deep arrays'
],
'indexOf': [
"sorted indexOf doesn't uses binary search",
'0'
],
'initial': [
'returns all but the last n elements',
'returns an empty array when n > length',
'works on an arguments object'
],
'intersection': [
'can perform an OO-style intersection'
],
'last': [
'returns an empty array when n <= 0 (0 case)',
'returns an empty array when n <= 0 (negative case)',
'can fetch the last n elements',
'returns the whole array if n > length'
],
'lastIndexOf': [
'should treat falsey `fromIndex` values, except `0` and `NaN`, as `array.length`',
'should treat non-number `fromIndex` values as `array.length`',
'[0,-1,-1]'
],
'object': [
'an array of pairs zipped together into an object',
'an object converted to pairs and back to an object'
],
'rest': [
'returns the whole array when index is 0',
'returns elements starting at the given index',
'works on an arguments object'
],
'sortedIndex': [
'2',
'3'
],
'tail': [
'is an alias for rest'
],
'take': [
'is an alias for first'
],
'uniq': [
'uses the result of `iterator` for uniqueness comparisons (unsorted case)',
'`sorted` argument defaults to false when omitted',
'when `iterator` is a string, uses that key for comparisons (unsorted case)',
'uses the result of `iterator` for uniqueness comparisons (sorted case)',
'when `iterator` is a string, uses that key for comparisons (sorted case)',
'can use falsey pluck like iterator'
],
'union': [
'can perform an OO-style union'
]
},
'Chaining': {
'pop': true,
'shift': true,
'splice': true,
'reverse/concat/unshift/pop/map': [
'can chain together array functions.'
]
},
'Collections': {
'lookupIterator with contexts': true,
'Iterating objects with sketchy length properties': true,
'Resistant to collection length and properties changing while iterating': true,
'countBy': [
'{}',
'[{}]'
],
'each': [
'context object property accessed'
],
'every': [
'Can be called with object',
'Died on test #15',
'context works'
],
'filter': [
'given context',
'OO-filter'
],
'find': [
'called with context'
],
'findWhere': [
'checks properties given function'
],
'groupBy': [
'{}',
'[{}]'
],
'includes': [
"doesn't delegate to binary search"
],
'invoke': [
'handles null & undefined'
],
'map': [
'tripled numbers with context',
'OO-style doubled numbers'
],
'max': [
'can handle null/undefined',
'can perform a computation-based max',
'Maximum value of an empty object',
'Maximum value of an empty array',
'Maximum value of a non-numeric collection',
'Finds correct max in array starting with num and containing a NaN',
'Finds correct max in array starting with NaN',
'Respects iterator return value of -Infinity',
'String keys use property iterator',
'Iterator context',
'Lookup falsy iterator'
],
'min': [
'can handle null/undefined',
'can perform a computation-based min',
'Minimum value of an empty object',
'Minimum value of an empty array',
'Minimum value of a non-numeric collection',
'Finds correct min in array starting with NaN',
'Respects iterator return value of Infinity',
'String keys use property iterator',
'Iterator context',
'Lookup falsy iterator'
],
'partition': [
'can reference the array index',
'Died on test #8',
'partition takes a context argument'
],
'pluck': [
'[1]'
],
'reduce': [
'can reduce with a context object'
],
'reject': [
'Returns empty list given empty array'
],
'sample': [
'behaves correctly on negative n',
'Died on test #3'
],
'some': [
'Can be called with object',
'Died on test #17',
'context works'
],
'where': [
'checks properties given function'
],
'Can use various collection methods on NodeLists': [
'<span id="id2"></span>'
]
},
'Functions': {
'debounce asap': true,
'debounce asap cancel': true,
'debounce asap recursively': true,
'debounce after system time is set backwards': true,
'debounce re-entrant': true,
'throttle repeatedly with results': true,
'more throttle does not trigger leading call when leading is set to false': true,
'throttle does not trigger trailing call when trailing is set to false': true,
'before': true,
'bind': [
'Died on test #2'
],
'bindAll': [
'throws an error for bindAll with no functions named'
],
'debounce': [
'incr was debounced'
],
'iteratee': [
'"bbiz"',
'"foo"',
'1'
],
'memoize': [
'{"bar":"BAR","foo":"FOO"}',
'Died on test #8'
]
},
'Objects': {
'#1929 Typed Array constructors are functions': true,
'allKeys': [
'is not fooled by sparse arrays; see issue #95',
'is not fooled by sparse arrays with additional properties',
'[]'
],
'extend': [
'extending null results in null',
'extending undefined results in undefined'
],
'extendOwn': [
'extending non-objects results in returning the non-object value',
'extending undefined results in undefined'
],
'functions': [
'also looks up functions on the prototype'
],
'isEqual': [
'`0` is not equal to `-0`',
'Commutative equality is implemented for `0` and `-0`',
'`new Number(0)` and `-0` are not equal',
'Commutative equality is implemented for `new Number(0)` and `-0`',
'Invalid dates are not equal',
'false'
],
'isFinite': [
'Numeric strings are numbers',
'Number instances can be finite'
],
'isSet': [
'Died on test #9'
],
'findKey': [
'called with context'
],
'keys': [
'is not fooled by sparse arrays; see issue #95',
'[]'
],
'mapObject': [
'keep context',
'called with context',
'mapValue identity'
],
'omit': [
'can accept a predicate',
'function is given context'
],
'pick': [
'can accept a predicate and context',
'function is given context'
]
},
'Utility': {
'_.escape & unescape': [
'` is escaped',
'` can be unescaped',
'can escape multiple occurances of `',
'multiple occurrences of ` can be unescaped'
],
'now': [
'Produces the correct time in milliseconds'
],
'times': [
'works as a wrapper'
]
}
};
if (!lodash().map()) {
return;
}
lodash.mixin = function(object) {
lodash.forEach(lodash.functions(object), function(methodName) {
var func = lodash[methodName] = object[methodName];
lodash.prototype[methodName] = function() {
var args = [this.__wrapped__];
push.apply(args, arguments);
var mixinPrereqs = (function() {
var aliasToReal = {
'all': 'every',
'allKeys': 'keysIn',
'any': 'some',
'collect': 'map',
'compose': 'flowRight',
'contains': 'includes',
'detect': 'find',
'extendOwn': 'assign',
'findWhere': 'find',
'foldl': 'reduce',
'foldr': 'reduceRight',
'include': 'includes',
'indexBy': 'keyBy',
'inject': 'reduce',
'invoke': 'invokeMap',
'mapObject': 'mapValues',
'matcher': 'matches',
'methods': 'functions',
'object': 'zipObject',
'pairs': 'toPairs',
'pluck': 'map',
'restParam': 'restArgs',
'select': 'filter',
'unique': 'uniq',
'where': 'filter'
};
var result = func.apply(lodash, args);
if (this.__chain__) {
result = new lodash(result);
result.__chain__ = true;
}
return result;
};
});
};
var keyMap = {
'rest': 'tail',
'restArgs': 'rest'
};
lodash.forEach(['pop', 'shift'], function(methodName) {
var func = arrayRef[methodName];
lodash.prototype[methodName] = function() {
func.apply(this.__wrapped__, arguments);
return this;
};
});
var lodash = _.noConflict();
return function(_) {
lodash(_)
.defaultsDeep({ 'templateSettings': lodash.templateSettings })
.mixin(lodash.pick(lodash, lodash.difference(lodash.functions(lodash), lodash.functions(_))))
.value();
lodash.mixin(lodash);
lodash.forOwn(keyMap, function(realName, otherName) {
_[otherName] = lodash[realName];
_.prototype[otherName] = lodash.prototype[realName];
});
lodash.forOwn(aliasToReal, function(realName, alias) {
_[alias] = _[realName];
_.prototype[alias] = _.prototype[realName];
});
return _;
};
}());
// expose lodash
window._ = lodash;
}
// Only excuse in Sauce Labs.
if (!ui.isSauceLabs) {
delete QUnit.config.excused.Functions['throttle does not trigger trailing call when trailing is set to false'];
delete QUnit.config.excused.Utility.now;
}
// Load prerequisite scripts.
document.write(ui.urlParams.loader == 'none'
? '<script src="' + ui.buildPath + '"><\/script>'
: '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
);
</script>
<script>
if (ui.urlParams.loader == 'none') {
mixinPrereqs(_);
document.write([
'<script src="../vendor/underscore/test/collections.js"><\/script>',
'<script src="../vendor/underscore/test/arrays.js"><\/script>',
'<script src="../vendor/underscore/test/functions.js"><\/script>',
'<script src="../vendor/underscore/test/objects.js"><\/script>',
'<script src="../vendor/underscore/test/cross-document.js"><\/script>',
'<script src="../vendor/underscore/test/utility.js"><\/script>',
'<script src="../vendor/underscore/test/chaining.js"><\/script>'
].join('\n'));
}
</script>
<script>
(function() {
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (!window.require) {
return;
}
// Wrap to work around tests assuming Node `require` use.
require = (function(func) {
return function() {
return arguments[0] === '..' ? window._ : func.apply(null, arguments);
};
}(require));
// load Lo-Dash again to overwrite the existing `_` value
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, '').replace(/^\/|\/$/g, ''),
moduleId = /\bunderscore\b/i.test(ui.buildPath) ? 'underscore' : 'lodash',
moduleMain = modulePath.match(reBasename)[0],
uid = +new Date;
// load test.js if not using require.js
document.write(ui.urlParams.loader != 'none'
? '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
: ([
'<script src="../vendor/underscore/test/collections.js"><\/script>',
'<script src="../vendor/underscore/test/arrays.js"><\/script>',
'<script src="../vendor/underscore/test/functions.js"><\/script>',
'<script src="../vendor/underscore/test/objects.js"><\/script>',
'<script src="../vendor/underscore/test/utility.js"><\/script>',
'<script src="../vendor/underscore/test/chaining.js"><\/script>'
].join('\n'))
);
</script>
<script>
(function() {
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (!window.require) {
init(_);
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, ''),
moduleMain = modulePath.match(reBasename)[0];
function getConfig() {
var result = {
'baseUrl': './',
'urlArgs': 't=' + uid++,
'waitSeconds': 0,
'paths': {},
'packages': [{
'name': 'test',
'location': '../vendor/underscore/test',
'config': {
// Work around no global being exported.
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}]
};
QUnit.config.autostart = false;
if (ui.isModularize) {
result.packages.push({
'name': moduleId,
'location': locationPath,
'main': moduleMain
});
} else {
result.paths[moduleId] = modulePath;
}
return result;
}
// load Lo-Dash as a module
require({
'baseUrl': './',
'urlArgs': 't=' + (+new Date),
'packages': [
{
'name': 'lodash',
'location': locationPath,
'main': moduleMain
},
{
'name': 'test',
'location': '../vendor/underscore/test',
'config': {
// work around no global being exported
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}
]
},
['lodash'], function(lodash) {
init(lodash);
require([
'test/collections',
'test/arrays',
'test/functions',
'test/objects',
'test/utility',
'test/chaining'
], function() {
QUnit.start();
});
});
}());
</script>
<script type="text/html" id="template">
<%
// a comment
if (data) { data += 12345; }; %>
<li><%= data %></li>
</script>
</body>
QUnit.config.autostart = false;
QUnit.config.excused.Functions.iteratee = true;
QUnit.config.excused.Utility.noConflict = true;
QUnit.config.excused.Utility['noConflict (node vm)'] = true;
require(getConfig(), [moduleId], function(lodash) {
_ = mixinPrereqs(lodash);
require(getConfig(), [
'test/collections',
'test/arrays',
'test/functions',
'test/objects',
'test/cross-document',
'test/utility',
'test/chaining'
], QUnit.start);
});
}());
</script>
</body>
</html>

View File

@@ -1,6 +0,0 @@
addEventListener('message', function(e) {
if (e.data) {
importScripts(e.data);
postMessage(_.VERSION);
}
}, false);

View File

@@ -1,4 +1,4 @@
Copyright (c) 2010-2013 Jeremy Ashkenas, DocumentCloud
Copyright (c) 2010-2016 Jeremy Ashkenas, DocumentCloud
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,45 +0,0 @@
(function() {
var Environment = this.Environment = function(){};
_.extend(Environment.prototype, {
ajax: Backbone.ajax,
sync: Backbone.sync,
emulateHTTP: Backbone.emulateHTTP,
emulateJSON: Backbone.emulateJSON,
setup: function() {
var env = this;
// Capture ajax settings for comparison.
Backbone.ajax = function(settings) {
env.ajaxSettings = settings;
};
// Capture the arguments to Backbone.sync for comparison.
Backbone.sync = function(method, model, options) {
env.syncArgs = {
method: method,
model: model,
options: options
};
env.sync.apply(this, arguments);
};
},
teardown: function() {
this.syncArgs = null;
this.ajaxSettings = null;
Backbone.sync = this.sync;
Backbone.ajax = this.ajax;
Backbone.emulateHTTP = this.emulateHTTP;
Backbone.emulateJSON = this.emulateJSON;
}
});
})();

View File

@@ -1,42 +1,44 @@
$(document).ready(function() {
(function(QUnit) {
module("Backbone.Events");
QUnit.module('Backbone.Events');
test("on and trigger", 2, function() {
var obj = { counter: 0 };
_.extend(obj,Backbone.Events);
QUnit.test('on and trigger', function(assert) {
assert.expect(2);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
obj.on('event', function() { obj.counter += 1; });
obj.trigger('event');
equal(obj.counter,1,'counter should be incremented.');
assert.equal(obj.counter, 1, 'counter should be incremented.');
obj.trigger('event');
obj.trigger('event');
obj.trigger('event');
obj.trigger('event');
equal(obj.counter, 5, 'counter should be incremented five times.');
assert.equal(obj.counter, 5, 'counter should be incremented five times.');
});
test("binding and triggering multiple events", 4, function() {
var obj = { counter: 0 };
QUnit.test('binding and triggering multiple events', function(assert) {
assert.expect(4);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
obj.on('a b c', function() { obj.counter += 1; });
obj.trigger('a');
equal(obj.counter, 1);
assert.equal(obj.counter, 1);
obj.trigger('a b');
equal(obj.counter, 3);
assert.equal(obj.counter, 3);
obj.trigger('c');
equal(obj.counter, 4);
assert.equal(obj.counter, 4);
obj.off('a c');
obj.trigger('a b c');
equal(obj.counter, 5);
assert.equal(obj.counter, 5);
});
test("binding and triggering with event maps", function() {
var obj = { counter: 0 };
QUnit.test('binding and triggering with event maps', function(assert) {
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
var increment = function() {
@@ -50,36 +52,85 @@ $(document).ready(function() {
}, obj);
obj.trigger('a');
equal(obj.counter, 1);
assert.equal(obj.counter, 1);
obj.trigger('a b');
equal(obj.counter, 3);
assert.equal(obj.counter, 3);
obj.trigger('c');
equal(obj.counter, 4);
assert.equal(obj.counter, 4);
obj.off({
a: increment,
c: increment
}, obj);
obj.trigger('a b c');
equal(obj.counter, 5);
assert.equal(obj.counter, 5);
});
test("listenTo and stopListening", 1, function() {
QUnit.test('binding and triggering multiple event names with event maps', function(assert) {
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
var increment = function() {
this.counter += 1;
};
obj.on({
'a b c': increment
});
obj.trigger('a');
assert.equal(obj.counter, 1);
obj.trigger('a b');
assert.equal(obj.counter, 3);
obj.trigger('c');
assert.equal(obj.counter, 4);
obj.off({
'a c': increment
});
obj.trigger('a b c');
assert.equal(obj.counter, 5);
});
QUnit.test('binding and trigger with event maps context', function(assert) {
assert.expect(2);
var obj = {counter: 0};
var context = {};
_.extend(obj, Backbone.Events);
obj.on({
a: function() {
assert.strictEqual(this, context, 'defaults `context` to `callback` param');
}
}, context).trigger('a');
obj.off().on({
a: function() {
assert.strictEqual(this, context, 'will not override explicit `context` param');
}
}, this, context).trigger('a');
});
QUnit.test('listenTo and stopListening', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenTo(b, 'all', function(){ ok(true); });
a.listenTo(b, 'all', function(){ assert.ok(true); });
b.trigger('anything');
a.listenTo(b, 'all', function(){ ok(false); });
a.listenTo(b, 'all', function(){ assert.ok(false); });
a.stopListening();
b.trigger('anything');
});
test("listenTo and stopListening with event maps", 4, function() {
QUnit.test('listenTo and stopListening with event maps', function(assert) {
assert.expect(4);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
var cb = function(){ ok(true); };
var cb = function(){ assert.ok(true); };
a.listenTo(b, {event: cb});
b.trigger('event');
a.listenTo(b, {event2: cb});
@@ -90,10 +141,11 @@ $(document).ready(function() {
b.trigger('event event2');
});
test("stopListening with omitted args", 2, function () {
QUnit.test('stopListening with omitted args', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
var cb = function () { ok(true); };
var cb = function() { assert.ok(true); };
a.listenTo(b, 'event', cb);
b.on('event', cb);
a.listenTo(b, 'event2', cb);
@@ -106,98 +158,237 @@ $(document).ready(function() {
b.trigger('event2');
});
test("listenToOnce and stopListening", 1, function() {
QUnit.test('listenToOnce', function(assert) {
assert.expect(2);
// Same as the previous test, but we use once rather than having to explicitly unbind
var obj = {counterA: 0, counterB: 0};
_.extend(obj, Backbone.Events);
var incrA = function(){ obj.counterA += 1; obj.trigger('event'); };
var incrB = function(){ obj.counterB += 1; };
obj.listenToOnce(obj, 'event', incrA);
obj.listenToOnce(obj, 'event', incrB);
obj.trigger('event');
assert.equal(obj.counterA, 1, 'counterA should have only been incremented once.');
assert.equal(obj.counterB, 1, 'counterB should have only been incremented once.');
});
QUnit.test('listenToOnce and stopListening', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenToOnce(b, 'all', function() { ok(true); });
a.listenToOnce(b, 'all', function() { assert.ok(true); });
b.trigger('anything');
b.trigger('anything');
a.listenToOnce(b, 'all', function() { ok(false); });
a.listenToOnce(b, 'all', function() { assert.ok(false); });
a.stopListening();
b.trigger('anything');
});
test("listenTo, listenToOnce and stopListening", 1, function() {
QUnit.test('listenTo, listenToOnce and stopListening', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenToOnce(b, 'all', function() { ok(true); });
a.listenToOnce(b, 'all', function() { assert.ok(true); });
b.trigger('anything');
b.trigger('anything');
a.listenTo(b, 'all', function() { ok(false); });
a.listenTo(b, 'all', function() { assert.ok(false); });
a.stopListening();
b.trigger('anything');
});
test("listenTo and stopListening with event maps", 1, function() {
QUnit.test('listenTo and stopListening with event maps', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenTo(b, {change: function(){ ok(true); }});
a.listenTo(b, {change: function(){ assert.ok(true); }});
b.trigger('change');
a.listenTo(b, {change: function(){ ok(false); }});
a.listenTo(b, {change: function(){ assert.ok(false); }});
a.stopListening();
b.trigger('change');
});
test("listenTo yourself", 1, function(){
QUnit.test('listenTo yourself', function(assert) {
assert.expect(1);
var e = _.extend({}, Backbone.Events);
e.listenTo(e, "foo", function(){ ok(true); });
e.trigger("foo");
e.listenTo(e, 'foo', function(){ assert.ok(true); });
e.trigger('foo');
});
test("listenTo yourself cleans yourself up with stopListening", 1, function(){
QUnit.test('listenTo yourself cleans yourself up with stopListening', function(assert) {
assert.expect(1);
var e = _.extend({}, Backbone.Events);
e.listenTo(e, "foo", function(){ ok(true); });
e.trigger("foo");
e.listenTo(e, 'foo', function(){ assert.ok(true); });
e.trigger('foo');
e.stopListening();
e.trigger("foo");
e.trigger('foo');
});
test("listenTo with empty callback doesn't throw an error", 1, function(){
QUnit.test('stopListening cleans up references', function(assert) {
assert.expect(12);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
var fn = function() {};
b.on('event', fn);
a.listenTo(b, 'event', fn).stopListening();
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
a.listenTo(b, 'event', fn).stopListening(b);
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
a.listenTo(b, 'event', fn).stopListening(b, 'event');
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
a.listenTo(b, 'event', fn).stopListening(b, 'event', fn);
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
});
QUnit.test('stopListening cleans up references from listenToOnce', function(assert) {
assert.expect(12);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
var fn = function() {};
b.on('event', fn);
a.listenToOnce(b, 'event', fn).stopListening();
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
a.listenToOnce(b, 'event', fn).stopListening(b);
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
a.listenToOnce(b, 'event', fn).stopListening(b, 'event');
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
a.listenToOnce(b, 'event', fn).stopListening(b, 'event', fn);
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._events.event), 1);
assert.equal(_.size(b._listeners), 0);
});
QUnit.test('listenTo and off cleaning up references', function(assert) {
assert.expect(8);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
var fn = function() {};
a.listenTo(b, 'event', fn);
b.off();
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._listeners), 0);
a.listenTo(b, 'event', fn);
b.off('event');
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._listeners), 0);
a.listenTo(b, 'event', fn);
b.off(null, fn);
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._listeners), 0);
a.listenTo(b, 'event', fn);
b.off(null, null, a);
assert.equal(_.size(a._listeningTo), 0);
assert.equal(_.size(b._listeners), 0);
});
QUnit.test('listenTo and stopListening cleaning up references', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenTo(b, 'all', function(){ assert.ok(true); });
b.trigger('anything');
a.listenTo(b, 'other', function(){ assert.ok(false); });
a.stopListening(b, 'other');
a.stopListening(b, 'all');
assert.equal(_.size(a._listeningTo), 0);
});
QUnit.test('listenToOnce without context cleans up references after the event has fired', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenToOnce(b, 'all', function(){ assert.ok(true); });
b.trigger('anything');
assert.equal(_.size(a._listeningTo), 0);
});
QUnit.test('listenToOnce with event maps cleans up references', function(assert) {
assert.expect(2);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenToOnce(b, {
one: function() { assert.ok(true); },
two: function() { assert.ok(false); }
});
b.trigger('one');
assert.equal(_.size(a._listeningTo), 1);
});
QUnit.test('listenToOnce with event maps binds the correct `this`', function(assert) {
assert.expect(1);
var a = _.extend({}, Backbone.Events);
var b = _.extend({}, Backbone.Events);
a.listenToOnce(b, {
one: function() { assert.ok(this === a); },
two: function() { assert.ok(false); }
});
b.trigger('one');
});
QUnit.test("listenTo with empty callback doesn't throw an error", function(assert) {
assert.expect(1);
var e = _.extend({}, Backbone.Events);
e.listenTo(e, "foo", null);
e.trigger("foo");
ok(true);
e.listenTo(e, 'foo', null);
e.trigger('foo');
assert.ok(true);
});
test("trigger all for each event", 3, function() {
var a, b, obj = { counter: 0 };
QUnit.test('trigger all for each event', function(assert) {
assert.expect(3);
var a, b, obj = {counter: 0};
_.extend(obj, Backbone.Events);
obj.on('all', function(event) {
obj.counter++;
if (event == 'a') a = true;
if (event == 'b') b = true;
if (event === 'a') a = true;
if (event === 'b') b = true;
})
.trigger('a b');
ok(a);
ok(b);
equal(obj.counter, 2);
assert.ok(a);
assert.ok(b);
assert.equal(obj.counter, 2);
});
test("on, then unbind all functions", 1, function() {
var obj = { counter: 0 };
_.extend(obj,Backbone.Events);
QUnit.test('on, then unbind all functions', function(assert) {
assert.expect(1);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
var callback = function() { obj.counter += 1; };
obj.on('event', callback);
obj.trigger('event');
obj.off('event');
obj.trigger('event');
equal(obj.counter, 1, 'counter should have only been incremented once.');
assert.equal(obj.counter, 1, 'counter should have only been incremented once.');
});
test("bind two callbacks, unbind only one", 2, function() {
var obj = { counterA: 0, counterB: 0 };
_.extend(obj,Backbone.Events);
QUnit.test('bind two callbacks, unbind only one', function(assert) {
assert.expect(2);
var obj = {counterA: 0, counterB: 0};
_.extend(obj, Backbone.Events);
var callback = function() { obj.counterA += 1; };
obj.on('event', callback);
obj.on('event', function() { obj.counterB += 1; });
obj.trigger('event');
obj.off('event', callback);
obj.trigger('event');
equal(obj.counterA, 1, 'counterA should have only been incremented once.');
equal(obj.counterB, 2, 'counterB should have been incremented twice.');
assert.equal(obj.counterA, 1, 'counterA should have only been incremented once.');
assert.equal(obj.counterB, 2, 'counterB should have been incremented twice.');
});
test("unbind a callback in the midst of it firing", 1, function() {
QUnit.test('unbind a callback in the midst of it firing', function(assert) {
assert.expect(1);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
var callback = function() {
@@ -208,12 +399,13 @@ $(document).ready(function() {
obj.trigger('event');
obj.trigger('event');
obj.trigger('event');
equal(obj.counter, 1, 'the callback should have been unbound.');
assert.equal(obj.counter, 1, 'the callback should have been unbound.');
});
test("two binds that unbind themeselves", 2, function() {
var obj = { counterA: 0, counterB: 0 };
_.extend(obj,Backbone.Events);
QUnit.test('two binds that unbind themeselves', function(assert) {
assert.expect(2);
var obj = {counterA: 0, counterB: 0};
_.extend(obj, Backbone.Events);
var incrA = function(){ obj.counterA += 1; obj.off('event', incrA); };
var incrB = function(){ obj.counterB += 1; obj.off('event', incrB); };
obj.on('event', incrA);
@@ -221,49 +413,64 @@ $(document).ready(function() {
obj.trigger('event');
obj.trigger('event');
obj.trigger('event');
equal(obj.counterA, 1, 'counterA should have only been incremented once.');
equal(obj.counterB, 1, 'counterB should have only been incremented once.');
assert.equal(obj.counterA, 1, 'counterA should have only been incremented once.');
assert.equal(obj.counterB, 1, 'counterB should have only been incremented once.');
});
test("bind a callback with a supplied context", 1, function () {
var TestClass = function () {
return this;
};
TestClass.prototype.assertTrue = function () {
ok(true, '`this` was bound to the callback');
};
QUnit.test('bind a callback with a default context when none supplied', function(assert) {
assert.expect(1);
var obj = _.extend({
assertTrue: function() {
assert.equal(this, obj, '`this` was bound to the callback');
}
}, Backbone.Events);
var obj = _.extend({},Backbone.Events);
obj.on('event', function () { this.assertTrue(); }, (new TestClass));
obj.once('event', obj.assertTrue);
obj.trigger('event');
});
test("nested trigger with unbind", 1, function () {
var obj = { counter: 0 };
QUnit.test('bind a callback with a supplied context', function(assert) {
assert.expect(1);
var TestClass = function() {
return this;
};
TestClass.prototype.assertTrue = function() {
assert.ok(true, '`this` was bound to the callback');
};
var obj = _.extend({}, Backbone.Events);
obj.on('event', function() { this.assertTrue(); }, new TestClass);
obj.trigger('event');
});
QUnit.test('nested trigger with unbind', function(assert) {
assert.expect(1);
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
var incr1 = function(){ obj.counter += 1; obj.off('event', incr1); obj.trigger('event'); };
var incr2 = function(){ obj.counter += 1; };
obj.on('event', incr1);
obj.on('event', incr2);
obj.trigger('event');
equal(obj.counter, 3, 'counter should have been incremented three times');
assert.equal(obj.counter, 3, 'counter should have been incremented three times');
});
test("callback list is not altered during trigger", 2, function () {
QUnit.test('callback list is not altered during trigger', function(assert) {
assert.expect(2);
var counter = 0, obj = _.extend({}, Backbone.Events);
var incr = function(){ counter++; };
obj.on('event', function(){ obj.on('event', incr).on('all', incr); })
.trigger('event');
equal(counter, 0, 'bind does not alter callback list');
obj.off()
.on('event', function(){ obj.off('event', incr).off('all', incr); })
.on('event', incr)
.on('all', incr)
.trigger('event');
equal(counter, 2, 'unbind does not alter callback list');
var incrOn = function(){ obj.on('event all', incr); };
var incrOff = function(){ obj.off('event all', incr); };
obj.on('event all', incrOn).trigger('event');
assert.equal(counter, 0, 'on does not alter callback list');
obj.off().on('event', incrOff).on('event all', incr).trigger('event');
assert.equal(counter, 2, 'off does not alter callback list');
});
test("#1282 - 'all' callback list is retrieved after each event.", 1, function() {
QUnit.test("#1282 - 'all' callback list is retrieved after each event.", function(assert) {
assert.expect(1);
var counter = 0;
var obj = _.extend({}, Backbone.Events);
var incr = function(){ counter++; };
@@ -271,61 +478,68 @@ $(document).ready(function() {
obj.on('y', incr).on('all', incr);
})
.trigger('x y');
strictEqual(counter, 2);
assert.strictEqual(counter, 2);
});
test("if no callback is provided, `on` is a noop", 0, function() {
QUnit.test('if no callback is provided, `on` is a noop', function(assert) {
assert.expect(0);
_.extend({}, Backbone.Events).on('test').trigger('test');
});
test("if callback is truthy but not a function, `on` should throw an error just like jQuery", 1, function() {
QUnit.test('if callback is truthy but not a function, `on` should throw an error just like jQuery', function(assert) {
assert.expect(1);
var view = _.extend({}, Backbone.Events).on('test', 'noop');
throws(function() {
assert.raises(function() {
view.trigger('test');
});
});
test("remove all events for a specific context", 4, function() {
QUnit.test('remove all events for a specific context', function(assert) {
assert.expect(4);
var obj = _.extend({}, Backbone.Events);
obj.on('x y all', function() { ok(true); });
obj.on('x y all', function() { ok(false); }, obj);
obj.on('x y all', function() { assert.ok(true); });
obj.on('x y all', function() { assert.ok(false); }, obj);
obj.off(null, null, obj);
obj.trigger('x y');
});
test("remove all events for a specific callback", 4, function() {
QUnit.test('remove all events for a specific callback', function(assert) {
assert.expect(4);
var obj = _.extend({}, Backbone.Events);
var success = function() { ok(true); };
var fail = function() { ok(false); };
var success = function() { assert.ok(true); };
var fail = function() { assert.ok(false); };
obj.on('x y all', success);
obj.on('x y all', fail);
obj.off(null, fail);
obj.trigger('x y');
});
test("#1310 - off does not skip consecutive events", 0, function() {
QUnit.test('#1310 - off does not skip consecutive events', function(assert) {
assert.expect(0);
var obj = _.extend({}, Backbone.Events);
obj.on('event', function() { ok(false); }, obj);
obj.on('event', function() { ok(false); }, obj);
obj.on('event', function() { assert.ok(false); }, obj);
obj.on('event', function() { assert.ok(false); }, obj);
obj.off(null, null, obj);
obj.trigger('event');
});
test("once", 2, function() {
QUnit.test('once', function(assert) {
assert.expect(2);
// Same as the previous test, but we use once rather than having to explicitly unbind
var obj = { counterA: 0, counterB: 0 };
var obj = {counterA: 0, counterB: 0};
_.extend(obj, Backbone.Events);
var incrA = function(){ obj.counterA += 1; obj.trigger('event'); };
var incrB = function(){ obj.counterB += 1; };
obj.once('event', incrA);
obj.once('event', incrB);
obj.trigger('event');
equal(obj.counterA, 1, 'counterA should have only been incremented once.');
equal(obj.counterB, 1, 'counterB should have only been incremented once.');
assert.equal(obj.counterA, 1, 'counterA should have only been incremented once.');
assert.equal(obj.counterB, 1, 'counterB should have only been incremented once.');
});
test("once variant one", 3, function() {
var f = function(){ ok(true); };
QUnit.test('once variant one', function(assert) {
assert.expect(3);
var f = function(){ assert.ok(true); };
var a = _.extend({}, Backbone.Events).once('event', f);
var b = _.extend({}, Backbone.Events).on('event', f);
@@ -336,8 +550,9 @@ $(document).ready(function() {
b.trigger('event');
});
test("once variant two", 3, function() {
var f = function(){ ok(true); };
QUnit.test('once variant two', function(assert) {
assert.expect(3);
var f = function(){ assert.ok(true); };
var obj = _.extend({}, Backbone.Events);
obj
@@ -347,8 +562,9 @@ $(document).ready(function() {
.trigger('event');
});
test("once with off", 0, function() {
var f = function(){ ok(true); };
QUnit.test('once with off', function(assert) {
assert.expect(0);
var f = function(){ assert.ok(true); };
var obj = _.extend({}, Backbone.Events);
obj.once('event', f);
@@ -356,8 +572,8 @@ $(document).ready(function() {
obj.trigger('event');
});
test("once with event maps", function() {
var obj = { counter: 0 };
QUnit.test('once with event maps', function(assert) {
var obj = {counter: 0};
_.extend(obj, Backbone.Events);
var increment = function() {
@@ -371,82 +587,120 @@ $(document).ready(function() {
}, obj);
obj.trigger('a');
equal(obj.counter, 1);
assert.equal(obj.counter, 1);
obj.trigger('a b');
equal(obj.counter, 2);
assert.equal(obj.counter, 2);
obj.trigger('c');
equal(obj.counter, 3);
assert.equal(obj.counter, 3);
obj.trigger('a b c');
equal(obj.counter, 3);
assert.equal(obj.counter, 3);
});
test("once with off only by context", 0, function() {
QUnit.test('bind a callback with a supplied context using once with object notation', function(assert) {
assert.expect(1);
var obj = {counter: 0};
var context = {};
_.extend(obj, Backbone.Events);
obj.once({
a: function() {
assert.strictEqual(this, context, 'defaults `context` to `callback` param');
}
}, context).trigger('a');
});
QUnit.test('once with off only by context', function(assert) {
assert.expect(0);
var context = {};
var obj = _.extend({}, Backbone.Events);
obj.once('event', function(){ ok(false); }, context);
obj.once('event', function(){ assert.ok(false); }, context);
obj.off(null, null, context);
obj.trigger('event');
});
test("Backbone object inherits Events", function() {
ok(Backbone.on === Backbone.Events.on);
QUnit.test('Backbone object inherits Events', function(assert) {
assert.ok(Backbone.on === Backbone.Events.on);
});
asyncTest("once with asynchronous events", 1, function() {
var func = _.debounce(function() { ok(true); start(); }, 50);
QUnit.test('once with asynchronous events', function(assert) {
var done = assert.async();
assert.expect(1);
var func = _.debounce(function() { assert.ok(true); done(); }, 50);
var obj = _.extend({}, Backbone.Events).once('async', func);
obj.trigger('async');
obj.trigger('async');
});
test("once with multiple events.", 2, function() {
QUnit.test('once with multiple events.', function(assert) {
assert.expect(2);
var obj = _.extend({}, Backbone.Events);
obj.once('x y', function() { ok(true); });
obj.once('x y', function() { assert.ok(true); });
obj.trigger('x y');
});
test("Off during iteration with once.", 2, function() {
QUnit.test('Off during iteration with once.', function(assert) {
assert.expect(2);
var obj = _.extend({}, Backbone.Events);
var f = function(){ this.off('event', f); };
obj.on('event', f);
obj.once('event', function(){});
obj.on('event', function(){ ok(true); });
obj.on('event', function(){ assert.ok(true); });
obj.trigger('event');
obj.trigger('event');
});
test("`once` on `all` should work as expected", 1, function() {
QUnit.test('`once` on `all` should work as expected', function(assert) {
assert.expect(1);
Backbone.once('all', function() {
ok(true);
assert.ok(true);
Backbone.trigger('all');
});
Backbone.trigger('all');
});
test("once without a callback is a noop", 0, function() {
QUnit.test('once without a callback is a noop', function(assert) {
assert.expect(0);
_.extend({}, Backbone.Events).once('event').trigger('event');
});
test("event functions are chainable", function() {
QUnit.test('listenToOnce without a callback is a noop', function(assert) {
assert.expect(0);
var obj = _.extend({}, Backbone.Events);
obj.listenToOnce(obj, 'event').trigger('event');
});
QUnit.test('event functions are chainable', function(assert) {
var obj = _.extend({}, Backbone.Events);
var obj2 = _.extend({}, Backbone.Events);
var fn = function() {};
equal(obj, obj.trigger('noeventssetyet'));
equal(obj, obj.off('noeventssetyet'));
equal(obj, obj.stopListening('noeventssetyet'));
equal(obj, obj.on('a', fn));
equal(obj, obj.once('c', fn));
equal(obj, obj.trigger('a'));
equal(obj, obj.listenTo(obj2, 'a', fn));
equal(obj, obj.listenToOnce(obj2, 'b', fn));
equal(obj, obj.off('a c'));
equal(obj, obj.stopListening(obj2, 'a'));
equal(obj, obj.stopListening());
assert.equal(obj, obj.trigger('noeventssetyet'));
assert.equal(obj, obj.off('noeventssetyet'));
assert.equal(obj, obj.stopListening('noeventssetyet'));
assert.equal(obj, obj.on('a', fn));
assert.equal(obj, obj.once('c', fn));
assert.equal(obj, obj.trigger('a'));
assert.equal(obj, obj.listenTo(obj2, 'a', fn));
assert.equal(obj, obj.listenToOnce(obj2, 'b', fn));
assert.equal(obj, obj.off('a c'));
assert.equal(obj, obj.stopListening(obj2, 'a'));
assert.equal(obj, obj.stopListening());
});
});
QUnit.test('#3448 - listenToOnce with space-separated events', function(assert) {
assert.expect(2);
var one = _.extend({}, Backbone.Events);
var two = _.extend({}, Backbone.Events);
var count = 1;
one.listenToOnce(two, 'x y', function(n) { assert.ok(n === count++); });
two.trigger('x', 1);
two.trigger('x', 1);
two.trigger('y', 2);
two.trigger('y', 2);
});
})(QUnit);

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,13 @@
$(document).ready(function() {
(function(QUnit) {
module("Backbone.noConflict");
QUnit.module('Backbone.noConflict');
test('noConflict', 2, function() {
QUnit.test('noConflict', function(assert) {
assert.expect(2);
var noconflictBackbone = Backbone.noConflict();
equal(window.Backbone, undefined, 'Returned window.Backbone');
assert.equal(window.Backbone, undefined, 'Returned window.Backbone');
window.Backbone = noconflictBackbone;
equal(window.Backbone, noconflictBackbone, 'Backbone is still pointing to the original Backbone');
assert.equal(window.Backbone, noconflictBackbone, 'Backbone is still pointing to the original Backbone');
});
});
})(QUnit);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
$('body').append(
'<div id="qunit"></div>' +
'<div id="qunit-fixture"></div>'
);

View File

@@ -0,0 +1,45 @@
(function(QUnit) {
var sync = Backbone.sync;
var ajax = Backbone.ajax;
var emulateHTTP = Backbone.emulateHTTP;
var emulateJSON = Backbone.emulateJSON;
var history = window.history;
var pushState = history.pushState;
var replaceState = history.replaceState;
QUnit.config.noglobals = true;
QUnit.testStart(function() {
var env = QUnit.config.current.testEnvironment;
// We never want to actually call these during tests.
history.pushState = history.replaceState = function() {};
// Capture ajax settings for comparison.
Backbone.ajax = function(settings) {
env.ajaxSettings = settings;
};
// Capture the arguments to Backbone.sync for comparison.
Backbone.sync = function(method, model, options) {
env.syncArgs = {
method: method,
model: model,
options: options
};
sync.apply(this, arguments);
};
});
QUnit.testDone(function() {
Backbone.sync = sync;
Backbone.ajax = ajax;
Backbone.emulateHTTP = emulateHTTP;
Backbone.emulateJSON = emulateJSON;
history.pushState = pushState;
history.replaceState = replaceState;
});
})(QUnit);

View File

@@ -1,212 +1,239 @@
$(document).ready(function() {
(function(QUnit) {
var Library = Backbone.Collection.extend({
url : function() { return '/library'; }
url: function() { return '/library'; }
});
var library;
var attrs = {
title : "The Tempest",
author : "Bill Shakespeare",
length : 123
title: 'The Tempest',
author: 'Bill Shakespeare',
length: 123
};
module("Backbone.sync", _.extend(new Environment, {
QUnit.module('Backbone.sync', {
setup : function() {
Environment.prototype.setup.apply(this, arguments);
beforeEach: function(assert) {
library = new Library;
library.create(attrs, {wait: false});
},
teardown: function() {
Environment.prototype.teardown.apply(this, arguments);
afterEach: function(assert) {
Backbone.emulateHTTP = false;
}
}));
});
test("read", 4, function() {
QUnit.test('read', function(assert) {
assert.expect(4);
library.fetch();
equal(this.ajaxSettings.url, '/library');
equal(this.ajaxSettings.type, 'GET');
equal(this.ajaxSettings.dataType, 'json');
ok(_.isEmpty(this.ajaxSettings.data));
assert.equal(this.ajaxSettings.url, '/library');
assert.equal(this.ajaxSettings.type, 'GET');
assert.equal(this.ajaxSettings.dataType, 'json');
assert.ok(_.isEmpty(this.ajaxSettings.data));
});
test("passing data", 3, function() {
QUnit.test('passing data', function(assert) {
assert.expect(3);
library.fetch({data: {a: 'a', one: 1}});
equal(this.ajaxSettings.url, '/library');
equal(this.ajaxSettings.data.a, 'a');
equal(this.ajaxSettings.data.one, 1);
assert.equal(this.ajaxSettings.url, '/library');
assert.equal(this.ajaxSettings.data.a, 'a');
assert.equal(this.ajaxSettings.data.one, 1);
});
test("create", 6, function() {
equal(this.ajaxSettings.url, '/library');
equal(this.ajaxSettings.type, 'POST');
equal(this.ajaxSettings.dataType, 'json');
QUnit.test('create', function(assert) {
assert.expect(6);
assert.equal(this.ajaxSettings.url, '/library');
assert.equal(this.ajaxSettings.type, 'POST');
assert.equal(this.ajaxSettings.dataType, 'json');
var data = JSON.parse(this.ajaxSettings.data);
equal(data.title, 'The Tempest');
equal(data.author, 'Bill Shakespeare');
equal(data.length, 123);
assert.equal(data.title, 'The Tempest');
assert.equal(data.author, 'Bill Shakespeare');
assert.equal(data.length, 123);
});
test("update", 7, function() {
QUnit.test('update', function(assert) {
assert.expect(7);
library.first().save({id: '1-the-tempest', author: 'William Shakespeare'});
equal(this.ajaxSettings.url, '/library/1-the-tempest');
equal(this.ajaxSettings.type, 'PUT');
equal(this.ajaxSettings.dataType, 'json');
assert.equal(this.ajaxSettings.url, '/library/1-the-tempest');
assert.equal(this.ajaxSettings.type, 'PUT');
assert.equal(this.ajaxSettings.dataType, 'json');
var data = JSON.parse(this.ajaxSettings.data);
equal(data.id, '1-the-tempest');
equal(data.title, 'The Tempest');
equal(data.author, 'William Shakespeare');
equal(data.length, 123);
assert.equal(data.id, '1-the-tempest');
assert.equal(data.title, 'The Tempest');
assert.equal(data.author, 'William Shakespeare');
assert.equal(data.length, 123);
});
test("update with emulateHTTP and emulateJSON", 7, function() {
QUnit.test('update with emulateHTTP and emulateJSON', function(assert) {
assert.expect(7);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
emulateHTTP: true,
emulateJSON: true
});
equal(this.ajaxSettings.url, '/library/2-the-tempest');
equal(this.ajaxSettings.type, 'POST');
equal(this.ajaxSettings.dataType, 'json');
equal(this.ajaxSettings.data._method, 'PUT');
assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
assert.equal(this.ajaxSettings.type, 'POST');
assert.equal(this.ajaxSettings.dataType, 'json');
assert.equal(this.ajaxSettings.data._method, 'PUT');
var data = JSON.parse(this.ajaxSettings.data.model);
equal(data.id, '2-the-tempest');
equal(data.author, 'Tim Shakespeare');
equal(data.length, 123);
assert.equal(data.id, '2-the-tempest');
assert.equal(data.author, 'Tim Shakespeare');
assert.equal(data.length, 123);
});
test("update with just emulateHTTP", 6, function() {
QUnit.test('update with just emulateHTTP', function(assert) {
assert.expect(6);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
emulateHTTP: true
});
equal(this.ajaxSettings.url, '/library/2-the-tempest');
equal(this.ajaxSettings.type, 'POST');
equal(this.ajaxSettings.contentType, 'application/json');
assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
assert.equal(this.ajaxSettings.type, 'POST');
assert.equal(this.ajaxSettings.contentType, 'application/json');
var data = JSON.parse(this.ajaxSettings.data);
equal(data.id, '2-the-tempest');
equal(data.author, 'Tim Shakespeare');
equal(data.length, 123);
assert.equal(data.id, '2-the-tempest');
assert.equal(data.author, 'Tim Shakespeare');
assert.equal(data.length, 123);
});
test("update with just emulateJSON", 6, function() {
QUnit.test('update with just emulateJSON', function(assert) {
assert.expect(6);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'}, {
emulateJSON: true
});
equal(this.ajaxSettings.url, '/library/2-the-tempest');
equal(this.ajaxSettings.type, 'PUT');
equal(this.ajaxSettings.contentType, 'application/x-www-form-urlencoded');
assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
assert.equal(this.ajaxSettings.type, 'PUT');
assert.equal(this.ajaxSettings.contentType, 'application/x-www-form-urlencoded');
var data = JSON.parse(this.ajaxSettings.data.model);
equal(data.id, '2-the-tempest');
equal(data.author, 'Tim Shakespeare');
equal(data.length, 123);
assert.equal(data.id, '2-the-tempest');
assert.equal(data.author, 'Tim Shakespeare');
assert.equal(data.length, 123);
});
test("read model", 3, function() {
QUnit.test('read model', function(assert) {
assert.expect(3);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
library.first().fetch();
equal(this.ajaxSettings.url, '/library/2-the-tempest');
equal(this.ajaxSettings.type, 'GET');
ok(_.isEmpty(this.ajaxSettings.data));
assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
assert.equal(this.ajaxSettings.type, 'GET');
assert.ok(_.isEmpty(this.ajaxSettings.data));
});
test("destroy", 3, function() {
QUnit.test('destroy', function(assert) {
assert.expect(3);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
library.first().destroy({wait: true});
equal(this.ajaxSettings.url, '/library/2-the-tempest');
equal(this.ajaxSettings.type, 'DELETE');
equal(this.ajaxSettings.data, null);
assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
assert.equal(this.ajaxSettings.type, 'DELETE');
assert.equal(this.ajaxSettings.data, null);
});
test("destroy with emulateHTTP", 3, function() {
QUnit.test('destroy with emulateHTTP', function(assert) {
assert.expect(3);
library.first().save({id: '2-the-tempest', author: 'Tim Shakespeare'});
library.first().destroy({
emulateHTTP: true,
emulateJSON: true
});
equal(this.ajaxSettings.url, '/library/2-the-tempest');
equal(this.ajaxSettings.type, 'POST');
equal(JSON.stringify(this.ajaxSettings.data), '{"_method":"DELETE"}');
assert.equal(this.ajaxSettings.url, '/library/2-the-tempest');
assert.equal(this.ajaxSettings.type, 'POST');
assert.equal(JSON.stringify(this.ajaxSettings.data), '{"_method":"DELETE"}');
});
test("urlError", 2, function() {
QUnit.test('urlError', function(assert) {
assert.expect(2);
var model = new Backbone.Model();
raises(function() {
assert.raises(function() {
model.fetch();
});
model.fetch({url: '/one/two'});
equal(this.ajaxSettings.url, '/one/two');
assert.equal(this.ajaxSettings.url, '/one/two');
});
test("#1052 - `options` is optional.", 0, function() {
QUnit.test('#1052 - `options` is optional.', function(assert) {
assert.expect(0);
var model = new Backbone.Model();
model.url = '/test';
Backbone.sync('create', model);
});
test("Backbone.ajax", 1, function() {
Backbone.ajax = function(settings){
strictEqual(settings.url, '/test');
QUnit.test('Backbone.ajax', function(assert) {
assert.expect(1);
Backbone.ajax = function(settings) {
assert.strictEqual(settings.url, '/test');
};
var model = new Backbone.Model();
model.url = '/test';
Backbone.sync('create', model);
});
test("Call provided error callback on error.", 1, function() {
QUnit.test('Call provided error callback on error.', function(assert) {
assert.expect(1);
var model = new Backbone.Model;
model.url = '/test';
Backbone.sync('read', model, {
error: function() { ok(true); }
error: function() { assert.ok(true); }
});
this.ajaxSettings.error();
});
test('Use Backbone.emulateHTTP as default.', 2, function() {
QUnit.test('Use Backbone.emulateHTTP as default.', function(assert) {
assert.expect(2);
var model = new Backbone.Model;
model.url = '/test';
Backbone.emulateHTTP = true;
model.sync('create', model);
strictEqual(this.ajaxSettings.emulateHTTP, true);
assert.strictEqual(this.ajaxSettings.emulateHTTP, true);
Backbone.emulateHTTP = false;
model.sync('create', model);
strictEqual(this.ajaxSettings.emulateHTTP, false);
assert.strictEqual(this.ajaxSettings.emulateHTTP, false);
});
test('Use Backbone.emulateJSON as default.', 2, function() {
QUnit.test('Use Backbone.emulateJSON as default.', function(assert) {
assert.expect(2);
var model = new Backbone.Model;
model.url = '/test';
Backbone.emulateJSON = true;
model.sync('create', model);
strictEqual(this.ajaxSettings.emulateJSON, true);
assert.strictEqual(this.ajaxSettings.emulateJSON, true);
Backbone.emulateJSON = false;
model.sync('create', model);
strictEqual(this.ajaxSettings.emulateJSON, false);
assert.strictEqual(this.ajaxSettings.emulateJSON, false);
});
test("#1756 - Call user provided beforeSend function.", 4, function() {
QUnit.test('#1756 - Call user provided beforeSend function.', function(assert) {
assert.expect(4);
Backbone.emulateHTTP = true;
var model = new Backbone.Model;
model.url = '/test';
var xhr = {
setRequestHeader: function(header, value) {
strictEqual(header, 'X-HTTP-Method-Override');
strictEqual(value, 'DELETE');
assert.strictEqual(header, 'X-HTTP-Method-Override');
assert.strictEqual(value, 'DELETE');
}
};
model.sync('delete', model, {
beforeSend: function(_xhr) {
ok(_xhr === xhr);
assert.ok(_xhr === xhr);
return false;
}
});
strictEqual(this.ajaxSettings.beforeSend(xhr), false);
assert.strictEqual(this.ajaxSettings.beforeSend(xhr), false);
});
});
QUnit.test('#2928 - Pass along `textStatus` and `errorThrown`.', function(assert) {
assert.expect(2);
var model = new Backbone.Model;
model.url = '/test';
model.on('error', function(m, xhr, options) {
assert.strictEqual(options.textStatus, 'textStatus');
assert.strictEqual(options.errorThrown, 'errorThrown');
});
model.fetch();
this.ajaxSettings.error({}, 'textStatus', 'errorThrown');
});
})(QUnit);

View File

@@ -1,71 +1,137 @@
$(document).ready(function() {
(function(QUnit) {
var view;
module("Backbone.View", {
QUnit.module('Backbone.View', {
beforeEach: function() {
$('#qunit-fixture').append(
'<div id="testElement"><h1>Test</h1></div>'
);
setup: function() {
view = new Backbone.View({
id : 'test-view',
className : 'test-view',
other : 'non-special-option'
id: 'test-view',
className: 'test-view',
other: 'non-special-option'
});
},
afterEach: function() {
$('#testElement').remove();
$('#test-view').remove();
}
});
test("constructor", 6, function() {
equal(view.el.id, 'test-view');
equal(view.el.className, 'test-view');
equal(view.el.other, void 0);
equal(view.options.id, 'test-view');
equal(view.options.className, 'test-view');
equal(view.options.other, 'non-special-option');
QUnit.test('constructor', function(assert) {
assert.expect(3);
assert.equal(view.el.id, 'test-view');
assert.equal(view.el.className, 'test-view');
assert.equal(view.el.other, void 0);
});
test("jQuery", 1, function() {
var view = new Backbone.View;
view.setElement('<p><a><b>test</b></a></p>');
strictEqual(view.$('a b').html(), 'test');
QUnit.test('$', function(assert) {
assert.expect(2);
var myView = new Backbone.View;
myView.setElement('<p><a><b>test</b></a></p>');
var result = myView.$('a b');
assert.strictEqual(result[0].innerHTML, 'test');
assert.ok(result.length === +result.length);
});
test("initialize", 1, function() {
QUnit.test('$el', function(assert) {
assert.expect(3);
var myView = new Backbone.View;
myView.setElement('<p><a><b>test</b></a></p>');
assert.strictEqual(myView.el.nodeType, 1);
assert.ok(myView.$el instanceof Backbone.$);
assert.strictEqual(myView.$el[0], myView.el);
});
QUnit.test('initialize', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
initialize: function() {
this.one = 1;
}
});
strictEqual(new View().one, 1);
assert.strictEqual(new View().one, 1);
});
test("delegateEvents", 6, function() {
QUnit.test('preinitialize', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
preinitialize: function() {
this.one = 1;
}
});
assert.strictEqual(new View().one, 1);
});
QUnit.test('preinitialize occurs before the view is set up', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
preinitialize: function() {
assert.equal(this.el, undefined);
}
});
var _view = new View({});
assert.notEqual(_view.el, undefined);
});
QUnit.test('render', function(assert) {
assert.expect(1);
var myView = new Backbone.View;
assert.equal(myView.render(), myView, '#render returns the view instance');
});
QUnit.test('delegateEvents', function(assert) {
assert.expect(6);
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '<p><a id="test"></a></p>'});
view.increment = function(){ counter1++; };
view.$el.on('click', function(){ counter2++; });
var myView = new Backbone.View({el: '#testElement'});
myView.increment = function() { counter1++; };
myView.$el.on('click', function() { counter2++; });
var events = {'click #test': 'increment'};
var events = {'click h1': 'increment'};
view.delegateEvents(events);
view.$('#test').trigger('click');
equal(counter1, 1);
equal(counter2, 1);
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 1);
assert.equal(counter2, 1);
view.$('#test').trigger('click');
equal(counter1, 2);
equal(counter2, 2);
myView.$('h1').trigger('click');
assert.equal(counter1, 2);
assert.equal(counter2, 2);
view.delegateEvents(events);
view.$('#test').trigger('click');
equal(counter1, 3);
equal(counter2, 3);
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 3);
assert.equal(counter2, 3);
});
test("delegateEvents allows functions for callbacks", 3, function() {
var view = new Backbone.View({el: '<p></p>'});
view.counter = 0;
QUnit.test('delegate', function(assert) {
assert.expect(3);
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', 'h1', function() {
assert.ok(true);
});
myView.delegate('click', function() {
assert.ok(true);
});
myView.$('h1').trigger('click');
assert.equal(myView.delegate(), myView, '#delegate returns the view instance');
});
QUnit.test('delegateEvents allows functions for callbacks', function(assert) {
assert.expect(3);
var myView = new Backbone.View({el: '<p></p>'});
myView.counter = 0;
var events = {
click: function() {
@@ -73,76 +139,147 @@ $(document).ready(function() {
}
};
view.delegateEvents(events);
view.$el.trigger('click');
equal(view.counter, 1);
myView.delegateEvents(events);
myView.$el.trigger('click');
assert.equal(myView.counter, 1);
view.$el.trigger('click');
equal(view.counter, 2);
myView.$el.trigger('click');
assert.equal(myView.counter, 2);
view.delegateEvents(events);
view.$el.trigger('click');
equal(view.counter, 3);
myView.delegateEvents(events);
myView.$el.trigger('click');
assert.equal(myView.counter, 3);
});
test("delegateEvents ignore undefined methods", 0, function() {
var view = new Backbone.View({el: '<p></p>'});
view.delegateEvents({'click': 'undefinedMethod'});
view.$el.trigger('click');
QUnit.test('delegateEvents ignore undefined methods', function(assert) {
assert.expect(0);
var myView = new Backbone.View({el: '<p></p>'});
myView.delegateEvents({click: 'undefinedMethod'});
myView.$el.trigger('click');
});
test("undelegateEvents", 6, function() {
QUnit.test('undelegateEvents', function(assert) {
assert.expect(7);
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '<p><a id="test"></a></p>'});
view.increment = function(){ counter1++; };
view.$el.on('click', function(){ counter2++; });
var myView = new Backbone.View({el: '#testElement'});
myView.increment = function() { counter1++; };
myView.$el.on('click', function() { counter2++; });
var events = {'click #test': 'increment'};
var events = {'click h1': 'increment'};
view.delegateEvents(events);
view.$('#test').trigger('click');
equal(counter1, 1);
equal(counter2, 1);
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 1);
assert.equal(counter2, 1);
view.undelegateEvents();
view.$('#test').trigger('click');
equal(counter1, 1);
equal(counter2, 2);
myView.undelegateEvents();
myView.$('h1').trigger('click');
assert.equal(counter1, 1);
assert.equal(counter2, 2);
view.delegateEvents(events);
view.$('#test').trigger('click');
equal(counter1, 2);
equal(counter2, 3);
myView.delegateEvents(events);
myView.$('h1').trigger('click');
assert.equal(counter1, 2);
assert.equal(counter2, 3);
assert.equal(myView.undelegateEvents(), myView, '#undelegateEvents returns the view instance');
});
test("_ensureElement with DOM node el", 1, function() {
QUnit.test('undelegate', function(assert) {
assert.expect(1);
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(false); });
myView.delegate('click', 'h1', function() { assert.ok(false); });
myView.undelegate('click');
myView.$('h1').trigger('click');
myView.$el.trigger('click');
assert.equal(myView.undelegate(), myView, '#undelegate returns the view instance');
});
QUnit.test('undelegate with passed handler', function(assert) {
assert.expect(1);
var myView = new Backbone.View({el: '#testElement'});
var listener = function() { assert.ok(false); };
myView.delegate('click', listener);
myView.delegate('click', function() { assert.ok(true); });
myView.undelegate('click', listener);
myView.$el.trigger('click');
});
QUnit.test('undelegate with selector', function(assert) {
assert.expect(2);
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(true); });
myView.delegate('click', 'h1', function() { assert.ok(false); });
myView.undelegate('click', 'h1');
myView.$('h1').trigger('click');
myView.$el.trigger('click');
});
QUnit.test('undelegate with handler and selector', function(assert) {
assert.expect(2);
var myView = new Backbone.View({el: '#testElement'});
myView.delegate('click', function() { assert.ok(true); });
var handler = function() { assert.ok(false); };
myView.delegate('click', 'h1', handler);
myView.undelegate('click', 'h1', handler);
myView.$('h1').trigger('click');
myView.$el.trigger('click');
});
QUnit.test('tagName can be provided as a string', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
tagName: 'span'
});
assert.equal(new View().el.tagName, 'SPAN');
});
QUnit.test('tagName can be provided as a function', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
tagName: function() {
return 'p';
}
});
assert.ok(new View().$el.is('p'));
});
QUnit.test('_ensureElement with DOM node el', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
el: document.body
});
equal(new View().el, document.body);
assert.equal(new View().el, document.body);
});
test("_ensureElement with string el", 3, function() {
QUnit.test('_ensureElement with string el', function(assert) {
assert.expect(3);
var View = Backbone.View.extend({
el: "body"
el: 'body'
});
strictEqual(new View().el, document.body);
assert.strictEqual(new View().el, document.body);
View = Backbone.View.extend({
el: "#testElement > h1"
el: '#testElement > h1'
});
strictEqual(new View().el, $("#testElement > h1").get(0));
assert.strictEqual(new View().el, $('#testElement > h1').get(0));
View = Backbone.View.extend({
el: "#nonexistent"
el: '#nonexistent'
});
ok(!new View().el);
assert.ok(!new View().el);
});
test("with className and id functions", 2, function() {
QUnit.test('with className and id functions', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
className: function() {
return 'className';
@@ -152,57 +289,54 @@ $(document).ready(function() {
}
});
strictEqual(new View().el.className, 'className');
strictEqual(new View().el.id, 'id');
assert.strictEqual(new View().el.className, 'className');
assert.strictEqual(new View().el.id, 'id');
});
test("with options function", 3, function() {
var View1 = Backbone.View.extend({
options: function() {
return {
title: 'title1',
acceptText: 'confirm'
};
}
});
var View2 = View1.extend({
options: function() {
return _.extend(View1.prototype.options.call(this), {
title: 'title2',
fixed: true
});
}
});
strictEqual(new View2().options.title, 'title2');
strictEqual(new View2().options.acceptText, 'confirm');
strictEqual(new View2().options.fixed, true);
});
test("with attributes", 2, function() {
QUnit.test('with attributes', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
attributes: {
id: 'id',
'id': 'id',
'class': 'class'
}
});
strictEqual(new View().el.className, 'class');
strictEqual(new View().el.id, 'id');
assert.strictEqual(new View().el.className, 'class');
assert.strictEqual(new View().el.id, 'id');
});
test("with attributes as a function", 1, function() {
QUnit.test('with attributes as a function', function(assert) {
assert.expect(1);
var View = Backbone.View.extend({
attributes: function() {
return {'class': 'dynamic'};
}
});
strictEqual(new View().el.className, 'dynamic');
assert.strictEqual(new View().el.className, 'dynamic');
});
test("multiple views per element", 3, function() {
QUnit.test('should default to className/id properties', function(assert) {
assert.expect(4);
var View = Backbone.View.extend({
className: 'backboneClass',
id: 'backboneId',
attributes: {
'class': 'attributeClass',
'id': 'attributeId'
}
});
var myView = new View;
assert.strictEqual(myView.el.className, 'backboneClass');
assert.strictEqual(myView.el.id, 'backboneId');
assert.strictEqual(myView.$el.attr('class'), 'backboneClass');
assert.strictEqual(myView.$el.attr('id'), 'backboneId');
});
QUnit.test('multiple views per element', function(assert) {
assert.expect(3);
var count = 0;
var $el = $('<p></p>');
@@ -216,142 +350,167 @@ $(document).ready(function() {
});
var view1 = new View;
$el.trigger("click");
equal(1, count);
$el.trigger('click');
assert.equal(1, count);
var view2 = new View;
$el.trigger("click");
equal(3, count);
$el.trigger('click');
assert.equal(3, count);
view1.delegateEvents();
$el.trigger("click");
equal(5, count);
$el.trigger('click');
assert.equal(5, count);
});
test("custom events, with namespaces", 2, function() {
var count = 0;
QUnit.test('custom events', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
el: $('body'),
events: function() {
return {"fake$event.namespaced": "run"};
},
run: function() {
count++;
events: {
fake$event: function() { assert.ok(true); }
}
});
var view = new View;
var myView = new View;
$('body').trigger('fake$event').trigger('fake$event');
equal(count, 2);
$('body').unbind('.namespaced');
$('body').off('fake$event');
$('body').trigger('fake$event');
equal(count, 2);
});
test("#1048 - setElement uses provided object.", 2, function() {
QUnit.test('#1048 - setElement uses provided object.', function(assert) {
assert.expect(2);
var $el = $('body');
var view = new Backbone.View({el: $el});
ok(view.$el === $el);
var myView = new Backbone.View({el: $el});
assert.ok(myView.$el === $el);
view.setElement($el = $($el));
ok(view.$el === $el);
myView.setElement($el = $($el));
assert.ok(myView.$el === $el);
});
test("#986 - Undelegate before changing element.", 1, function() {
QUnit.test('#986 - Undelegate before changing element.', function(assert) {
assert.expect(1);
var button1 = $('<button></button>');
var button2 = $('<button></button>');
var View = Backbone.View.extend({
events: {
click: function(e) {
ok(view.el === e.target);
assert.ok(myView.el === e.target);
}
}
});
var view = new View({el: button1});
view.setElement(button2);
var myView = new View({el: button1});
myView.setElement(button2);
button1.trigger('click');
button2.trigger('click');
});
test("#1172 - Clone attributes object", 2, function() {
QUnit.test('#1172 - Clone attributes object', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
attributes: {foo: 'bar'}
});
var view1 = new View({id: 'foo'});
strictEqual(view1.el.id, 'foo');
assert.strictEqual(view1.el.id, 'foo');
var view2 = new View();
ok(!view2.el.id);
assert.ok(!view2.el.id);
});
test("#1228 - tagName can be provided as a function", 1, function() {
var View = Backbone.View.extend({
tagName: function() {
return 'p';
}
});
ok(new View().$el.is('p'));
});
test("views stopListening", 0, function() {
QUnit.test('views stopListening', function(assert) {
assert.expect(0);
var View = Backbone.View.extend({
initialize: function() {
this.listenTo(this.model, 'all x', function(){ ok(false); }, this);
this.listenTo(this.collection, 'all x', function(){ ok(false); }, this);
this.listenTo(this.model, 'all x', function() { assert.ok(false); });
this.listenTo(this.collection, 'all x', function() { assert.ok(false); });
}
});
var view = new View({
var myView = new View({
model: new Backbone.Model,
collection: new Backbone.Collection
});
view.stopListening();
view.model.trigger('x');
view.collection.trigger('x');
myView.stopListening();
myView.model.trigger('x');
myView.collection.trigger('x');
});
test("Provide function for el.", 1, function() {
QUnit.test('Provide function for el.', function(assert) {
assert.expect(2);
var View = Backbone.View.extend({
el: function() {
return "<p><a></a></p>";
return '<p><a></a></p>';
}
});
var view = new View;
ok(view.$el.is('p:has(a)'));
var myView = new View;
assert.ok(myView.$el.is('p'));
assert.ok(myView.$el.has('a'));
});
test("events passed in options", 2, function() {
QUnit.test('events passed in options', function(assert) {
assert.expect(1);
var counter = 0;
var View = Backbone.View.extend({
el: '<p><a id="test"></a></p>',
el: '#testElement',
increment: function() {
counter++;
}
});
var view = new View({events:{'click #test':'increment'}});
var view2 = new View({events:function(){
return {'click #test':'increment'};
}});
var myView = new View({
events: {
'click h1': 'increment'
}
});
view.$('#test').trigger('click');
view2.$('#test').trigger('click');
equal(counter, 2);
view.$('#test').trigger('click');
view2.$('#test').trigger('click');
equal(counter, 4);
myView.$('h1').trigger('click').trigger('click');
assert.equal(counter, 2);
});
});
QUnit.test('remove', function(assert) {
assert.expect(2);
var myView = new Backbone.View;
document.body.appendChild(view.el);
myView.delegate('click', function() { assert.ok(false); });
myView.listenTo(myView, 'all x', function() { assert.ok(false); });
assert.equal(myView.remove(), myView, '#remove returns the view instance');
myView.$el.trigger('click');
myView.trigger('x');
// In IE8 and below, parentNode still exists but is not document.body.
assert.notEqual(myView.el.parentNode, document.body);
});
QUnit.test('setElement', function(assert) {
assert.expect(3);
var myView = new Backbone.View({
events: {
click: function() { assert.ok(false); }
}
});
myView.events = {
click: function() { assert.ok(true); }
};
var oldEl = myView.el;
var $oldEl = myView.$el;
myView.setElement(document.createElement('div'));
$oldEl.click();
myView.$el.click();
assert.notEqual(oldEl, myView.el);
assert.notEqual($oldEl, myView.$el);
});
})(QUnit);

View File

@@ -1,22 +0,0 @@
Copyright 2010-2013 Mathias Bynens <http://mathiasbynens.be/>
Based on JSLitmus.js, copyright Robert Kieffer <http://broofa.com/>
Modified by John-David Dalton <http://allyoucanleet.com/>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,24 +0,0 @@
Open Source Initiative OSI - The MIT License
http://www.opensource.org/licenses/mit-license.php
Copyright (c) 2010-2013 Brian Cavalier and John Hann
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,48 +0,0 @@
(function(){/*
MIT License (c) copyright 2010-2013 B Cavalier & J Hann MIT (c) copyright 2010-2013 B Cavalier & J Hann */
(function(d){function l(){}function k(b,e){return 0==U.call(b).indexOf("[object "+e)}function n(b){return b&&"/"==b.charAt(b.length-1)?b.substr(0,b.length-1):b}function h(b,e){var m,g,x,P;m=1;g=b;"."==g.charAt(0)&&(x=!0,g=g.replace(V,function(b,e,g,x){g&&m++;return x||""}));if(x){x=e.split("/");P=x.length-m;if(0>P)return b;x.splice(P,m);return x.concat(g||[]).join("/")}return g}function p(b){var e=b.indexOf("!");return{h:b.substr(e+1),e:0<=e&&b.substr(0,e)}}function v(){}function r(b,e){v.prototype=
b||Q;var m=new v;v.prototype=Q;for(var g in e)m[g]=e[g];return m}function z(){function b(b,e,m){g.push([b,e,m])}function e(b,e){for(var m,x=0;m=g[x++];)(m=m[b])&&m(e)}var m,g,x;m=this;g=[];x=function(m,f){b=m?function(b){b&&b(f)}:function(b,e){e&&e(f)};x=l;e(m?0:1,f);e=l;g=G};this.j=function(e,g,x){b(e,g,x);return m};this.g=function(b){m.I=b;x(!0,b)};this.d=function(b){m.Aa=b;x(!1,b)};this.G=function(b){e(2,b)}}function y(b){return b instanceof z||b instanceof t}function q(b,e,m,g){y(b)?b.j(e,m,g):
e(b)}function w(b,e,m){var g;return function(){0<=--b&&e&&(g=e.apply(G,arguments));0==b&&m&&m(g);return g}}function c(){var b,e;b=[].slice.call(arguments);k(b[0],"Object")&&(e=b.shift(),e=a(e));return new t(b[0],b[1],b[2],e)}function a(b,e,m){var g,x,a;if(b&&(u.V(b),f=u.b(b),"preloads"in b&&(g=new t(b.preloads,G,m,J,!0),u.C(function(){J=g})),a=(a=b.main)&&String(a).split(W)))return x=new z,x.j(e,m),b=a[1]?function(){new t([a[1]],x.g,x.d)}:x.d,new t([a[0]],x.g,b),x}function t(b,e,m,g,x){var s;s=u.k(f,
G,[].concat(b),x);this.then=this.j=b=function(b,e){q(s,function(e){b&&b.apply(G,e)},function(b){if(e)e(b);else throw b;});return this};this.next=function(b,e,g){return new t(b,e,g,s)};this.config=a;(e||m)&&b(e,m);u.C(function(){q(x||J,function(){q(g,function(){u.A(s)},m)})})}function A(b){var e,m;e=b.id;e==G&&(K!==G?K={M:"Multiple anonymous defines encountered"}:(e=u.ia())||(K=b));if(e!=G){m=E[e];e in E||(m=u.m(e,f),m=u.J(m.b,e),E[e]=m);if(!y(m))throw Error("duplicate define: "+e);m.na=!1;u.K(m,b)}}
function C(){var b=u.fa(arguments);A(b)}var f,B,F,H=d.document,D=H&&(H.head||H.getElementsByTagName("head")[0]),R=D&&D.getElementsByTagName("base")[0]||null,L={},M={},I={},s="addEventListener"in d?{}:{loaded:1,complete:1},Q={},U=Q.toString,G,E={},N={},J=!1,K,T=/^\/|^[^:]+:\/\//,V=/(\.)(\.?)(?:$|\/([^\.\/]+.*)?)/g,X=/\/\*[\s\S]*?\*\/|\/\/.*?[\n\r]/g,Y=/require\s*\(\s*(["'])(.*?[^\\])\1\s*\)|[^\\]?(["'])/g,W=/\s*,\s*/,S,u;u={t:function(b,e,m){var g;b=h(b,e);if("."==b.charAt(0))return b;g=p(b);b=(e=
g.e)||g.h;b in m.c&&(b=m.c[b].q||b);e&&(0>e.indexOf("/")&&!(e in m.c)&&(b=n(m.T)+"/"+e),b=b+"!"+g.h);return b},k:function(b,e,m,g){function x(e,g){var m,a;m=u.t(e,f.id,b);if(!g)return m;a=p(m);if(!a.e)return m;m=E[a.e];a.h="normalize"in m?m.normalize(a.h,x,f.b)||"":x(a.h);return a.e+"!"+a.h}function a(e,m,s){var c;c=m&&function(b){m.apply(G,b)};if(k(e,"String")){if(c)throw Error("require(id, callback) not allowed");s=x(e,!0);e=E[s];if(!(s in E))throw Error("Module not resolved: "+s);return(s=y(e)&&
e.a)||e}q(u.A(u.k(b,f.id,e,g)),c,s)}var f;f=new z;f.id=e||"";f.ja=g;f.L=m;f.b=b;f.s=a;a.toUrl=function(e){return u.m(x(e,!0),b).url};f.t=x;return f},J:function(b,e,m){var g,x,a;g=u.k(b,e,G,m);x=g.g;a=w(1,function(b){g.w=b;try{return u.aa(g)}catch(e){g.d(e)}});g.g=function(b){q(m||J,function(){x(E[g.id]=N[g.url]=a(b))})};g.N=function(b){q(m||J,function(){g.a&&(a(b),g.G(M))})};return g},Z:function(b,e,m,g){return u.k(b,m,G,g)},ha:function(b){return b.s},P:function(b){return b.a||(b.a={})},ga:function(b){var e=
b.B;e||(e=b.B={id:b.id,uri:u.Q(b),exports:u.P(b),config:function(){return b.b}},e.a=e.exports);return e},Q:function(b){return b.url||(b.url=u.u(b.s.toUrl(b.id),b.b))},V:function(b){var e,m,g,a,f;e="curl";m="define";g=a=d;if(b&&(f=b.overwriteApi||b.xa,e=b.apiName||b.pa||e,g=b.apiContext||b.oa||g,m=b.defineName||b.ta||m,a=b.defineContext||b.sa||a,B&&k(B,"Function")&&(d.curl=B),B=null,F&&k(F,"Function")&&(d.define=F),F=null,!f)){if(g[e]&&g[e]!=c)throw Error(e+" already exists");if(a[m]&&a[m]!=C)throw Error(m+
" already exists");}g[e]=c;a[m]=C},b:function(b){function e(b,e){var m,g,f,c,d;for(d in b){f=b[d];k(f,"String")&&(f={path:b[d]});f.name=f.name||d;c=a;g=p(n(f.name));m=g.h;if(g=g.e)c=s[g],c||(c=s[g]=r(a),c.c=r(a.c),c.f=[]),delete b[d];g=f;var l=e,q=void 0;g.path=n(g.path||g.location||"");l&&(q=g.main||"./main","."==q.charAt(0)||(q="./"+q),g.q=h(q,g.name+"/"));g.b=g.config;g.b&&(g.b=r(a,g.b));g.W=m.split("/").length;m?(c.c[m]=g,c.f.push(m)):c.n=u.U(f.path,a)}}function m(b){var e=b.c;b.S=RegExp("^("+
b.f.sort(function(b,g){return e[g].W-e[b].W}).join("|").replace(/\/|\./g,"\\$&")+")(?=\\/|$)");delete b.f}var g,a,s,c;"baseUrl"in b&&(b.n=b.baseUrl);"main"in b&&(b.q=b.main);"preloads"in b&&(b.ya=b.preloads);"pluginPath"in b&&(b.T=b.pluginPath);if("dontAddFileExt"in b||b.l)b.l=RegExp(b.dontAddFileExt||b.l);g=f;a=r(g,b);a.c=r(g.c);s=b.plugins||{};a.plugins=r(g.plugins);a.F=r(g.F,b.F);a.D=r(g.D,b.D);a.f=[];e(b.packages,!0);e(b.paths,!1);for(c in s)b=u.t(c+"!","",a),a.plugins[b.substr(0,b.length-1)]=
s[c];s=a.plugins;for(c in s)if(s[c]=r(a,s[c]),b=s[c].f)s[c].f=b.concat(a.f),m(s[c]);for(c in g.c)a.c.hasOwnProperty(c)||a.f.push(c);m(a);return a},m:function(b,e){var a,g,c,s;a=e.c;c=T.test(b)?b:b.replace(e.S,function(b){g=a[b]||{};s=g.b;return g.path||""});return{b:s||f,url:u.U(c,e)}},U:function(b,e){var a=e.n;return a&&!T.test(b)?n(a)+"/"+b:b},u:function(b,e){return b+((e||f).l.test(b)?"":".js")},p:function(b,e,a){var g=H.createElement("script");g.onload=g.onreadystatechange=function(a){a=a||d.event;
if("load"==a.type||s[g.readyState])delete I[b.id],g.onload=g.onreadystatechange=g.onerror="",e()};g.onerror=function(){a(Error("Syntax or http error: "+b.url))};g.type=b.r||"text/javascript";g.charset="utf-8";g.async=!b.R;g.src=b.url;I[b.id]=g;D.insertBefore(g,R);return g},O:function(b){var e=[],a;("string"==typeof b?b:b.toSource?b.toSource():b.toString()).replace(X,"").replace(Y,function(b,f,c,s){s?a=a==s?G:a:a||e.push(c);return""});return e},fa:function(b){var e,a,g,f,c,s;c=b.length;g=b[c-1];f=
k(g,"Function")?g.length:-1;2==c?k(b[0],"Array")?a=b[0]:e=b[0]:3==c&&(e=b[0],a=b[1]);!a&&0<f&&(s=!0,a=["require","exports","module"].slice(0,f).concat(u.O(g)));return{id:e,w:a||[],H:0<=f?g:function(){return g},v:s}},aa:function(b){var e;e=b.H.apply(b.v?b.a:G,b.w);e===G&&b.a&&(e=b.B?b.a=b.B.a:b.a);return e},K:function(b,e){b.H=e.H;b.v=e.v;b.L=e.w;u.A(b)},A:function(b){function e(b,e,a){s[e]=b;a&&k(b,e)}function a(e,g){var f,c,s,m;f=w(1,function(b){c(b);p(b,g)});c=w(1,function(b){k(b,g)});s=u.ca(e,
b);(m=y(s)&&s.a)&&c(m);q(s,f,b.d,b.a&&function(b){s.a&&(b==L?c(s.a):b==M&&f(s.a))})}function g(){b.g(s)}var f,c,s,d,h,k,p;s=[];c=b.L;d=c.length;0==c.length&&g();k=w(d,e,function(){b.N&&b.N(s)});p=w(d,e,g);for(f=0;f<d;f++)h=c[f],h in S?(p(S[h](b),f,!0),b.a&&b.G(L)):h?a(h,f):p(G,f,!0);return b},da:function(b){u.Q(b);u.p(b,function(){var e=K;K=G;!1!==b.na&&(!e||e.M?b.d(Error(e&&e.M||"define() missing or duplicated: "+b.url)):u.K(b,e))},b.d);return b},ca:function(b,e){var a,g,s,c,d,h,k,l,n,r,t,B;a=e.t;
g=e.ja;s=e.b||f;d=a(b);d in E?h=d:(c=p(d),l=c.h,h=c.e||l,n=u.m(h,s));if(!(d in E))if(B=u.m(l,s).b,c.e)k=h;else if(k=B.moduleLoader||B.wa||B.loader||B.va)l=h,h=k,n=u.m(k,s);h in E?r=E[h]:n.url in N?r=E[h]=N[n.url]:(r=u.J(B,h,g),r.url=u.u(n.url,n.b),E[h]=N[n.url]=r,u.da(r));h==k&&(c.e&&s.plugins[c.e]&&(B=s.plugins[c.e]),t=new z,q(r,function(b){var e,c,s;s=b.dynamic;l="normalize"in b?b.normalize(l,a,r.b)||"":a(l);c=k+"!"+l;e=E[c];if(!(c in E)){e=u.Z(B,c,l,g);s||(E[c]=e);var f=function(b){s||(E[c]=b);
e.g(b)};f.resolve=f;f.reject=f.error=e.d;b.load(l,e.s,f,B)}t!=e&&q(e,t.g,t.d,t.G)},t.d));return t||r},ia:function(){var b;if(!k(d.opera,"Opera"))for(var e in I)if("interactive"==I[e].readyState){b=e;break}return b},ea:function(b){var e=0,a,c;for(a=H&&(H.scripts||H.getElementsByTagName("script"));a&&(c=a[e++]);)if(b(c))return c},ba:function(b){var e;(e=u.ea(function(e){if(e=e.getAttribute("data-curl-run"))b.q=e;return e}))&&e.setAttribute("data-curl-run","");return b},C:function(b){setTimeout(b,0)}};
S={require:u.ha,exports:u.P,module:u.ga};c.version="0.8.1";c.config=a;C.amd={plugins:!0,jQuery:!0,curl:"0.8.1"};f={n:"",T:"curl/plugin",l:/\?|\.js\b/,F:{},D:{},plugins:{},c:{},S:/$^/};f=u.ba(f);B=d.curl;F=d.define;B&&k(B,"Object")||f.q?(d.curl=G,a(B||f)):u.V();E.curl=c;E["curl/_privileged"]={core:u,cache:E,config:function(){return f},_define:A,_curl:c,Promise:z}})(this.window||"undefined"!=typeof global&&global||this);
(function(d,l){function k(){if(!l.body)return!1;C||(C=l.createTextNode(""));try{return l.body.removeChild(l.body.appendChild(C)),C=A,!0}catch(a){return!1}}function n(){var f;f=v[l[p]]&&k();if(!y&&f){y=!0;for(clearTimeout(t);c=a.pop();)c();z&&(l[p]="complete");for(var h;h=r.shift();)h()}return f}function h(){n();y||(t=setTimeout(h,q))}var p="readyState",v={loaded:1,interactive:1,complete:1},r=[],z=l&&"string"!=typeof l[p],y=!1,q=10,w,c,a=[],t,A,C;w="addEventListener"in d?function(a,c){a.addEventListener(c,
n,!1);return function(){a.removeEventListener(c,n,!1)}}:function(a,c){a.attachEvent("on"+c,n);return function(){a.detachEvent(c,n)}};l&&!n()&&(a=[w(d,"load"),w(l,"readystatechange"),w(d,"DOMContentLoaded")],t=setTimeout(h,q));define("curl/domReady",function(){function a(c){y?c():r.push(c)}a.then=a;a.amd=!0;return a})})(this,this.document);var O;
(function(d,l){define("curl/shim/dojo18",["curl/_privileged"],function(k){function n(a){a.has||(a.has=c);a.on||(a.on=p);a.idle||(a.idle=h);a.async=!0}function h(){for(var a in r)if(r[a]instanceof z)return!1;return!0}function p(){}var v,r,z,y;v=k._curl;r=k.cache;z=k.Promise;y=k.core.k;var q,w,c;q=k.b().ua||{};w=l&&l.createElement("div");c=function(a){return"function"==typeof q[a]?q[a]=q[a](d,l,w):q[a]};c.add=function(a,h,d,k){if(void 0===q[a]||k)q[a]=h;if(d)return c(a)};q["dojo-loader"]=!1;r["dojo/_base/loader"]=
0;"undefined"==typeof O&&(n(v),O=v);k.core.k=function(){var a=y.apply(this,arguments);n(a.s);return a};return!0})})("object"==typeof global?global:this.window||this.global,"object"==typeof document&&document);
(function(d,l,k){define("curl/plugin/js",["curl/_privileged"],function(d){function h(c,a,h){function l(){f||(p<new Date?h():setTimeout(l,10))}var p,f,r;p=(new Date).valueOf()+(c.ma||3E5);h&&c.a&&setTimeout(l,10);r=d.core.p(c,function(){f=!0;c.a&&(c.I=k(c.a));!c.a||c.I?a(r):h()},function(a){f=!0;h(a)})}function p(c,a){h(c,function(){var h=r.shift();q=0<r.length;h&&p.apply(null,h);a.g(c.I||!0)},function(c){a.d(c)})}var v={},r=[],z=l&&!0==l.createElement("script").async,y,q,w=/\?|\.js\b/;y=d.Promise;
return{dynamic:!0,normalize:function(c,a){var h=c.indexOf("!");return 0<=h?a(c.substr(0,h))+c.substr(h):a(c)},load:function(c,a,d,k){function l(a){(d.error||function(a){throw a;})(a)}var f,n,F,H,D;f=0<c.indexOf("!order");n=c.indexOf("!exports=");F=0<n?c.substr(n+9):k.a;H="prefetch"in k?k.prefetch:!0;c=f||0<n?c.substr(0,c.indexOf("!")):c;n=(n=k.dontAddFileExt||k.l)?RegExp(n):w;D=a.toUrl(c);n.test(D)||(D=D.lastIndexOf(".")<=D.lastIndexOf("/")?D+".js":D);D in v?v[D]instanceof y?v[D].j(d,l):d(v[D]):(c=
{name:c,url:D,R:f,a:F,ma:k.timeout},v[D]=a=new y,a.j(function(a){v[D]=a;d(a)},l),f&&!z&&q?(r.push([c,a]),H&&(c.r="text/cache",h(c,function(a){a&&a.parentNode.removeChild(a)},function(){}),c.r="")):(q=q||f,p(c,a)))},cramPlugin:"../cram/js"}})})(this,this.document,function(d){try{return eval(d)}catch(l){}});
define("curl/plugin/_fetchText",[],function(){var d,l;l=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d=function(){if("undefined"!==typeof XMLHttpRequest)d=function(){return new XMLHttpRequest};else for(var k=d=function(){throw Error("getXhr(): XMLHttpRequest not available");};0<l.length&&d===k;)(function(k){try{new ActiveXObject(k),d=function(){return new ActiveXObject(k)}}catch(h){}})(l.shift());return d()};return function(k,l,h){var p=d();p.open("GET",k,!0);p.onreadystatechange=function(){4===
p.readyState&&(400>p.status?l(p.responseText):h(Error("fetchText() failed. status: "+p.statusText)))};p.send(null)}});define("curl/plugin/text",["./_fetchText"],function(d){function l(d){throw d;}return{normalize:function(d,l){return d?l(d.split("!")[0]):d},load:function(k,n,h){d(n.toUrl(k),h,h.error||l)},cramPlugin:"../cram/text"}});
define("curl/plugin/async",function(){return{load:function(d,l,k){function n(h){"function"==typeof k.error&&k.error(h)}l([d],function(h){"function"==typeof h.j?h.j(function(d){0==arguments.length&&(d=h);k(d)},n):k(h)},k.error||function(h){throw h;})},analyze:function(d,l,k){k(d)}}});
(function(d){function l(){var a;a=f[A]("link");a.rel="stylesheet";a.type="text/css";return a}function k(a,c){a.onload=function(){I.load=I.load||!0;c()}}function n(a,c){a.onerror=function(){I.error=I.error||!0;c()}}function h(a,c,f){D.push({url:a,X:c,$:function(){f(Error(M))}});(a=v())&&p(a)}function p(a){var c,f;c=D.shift();f=a.styleSheet;c?(a.onload=function(){c.X(c.la);p(a)},a.onerror=function(){c.$();p(a)},c.la=f.imports[f.addImport(c.url)]):(a.onload=a.onerror=t,H.push(a))}function v(){var a;
a=H.shift();!a&&F.length<R&&(a=f.createElement("style"),F.push(a),B.appendChild(a));return a}function r(a){var c,h,d;if(!a.href||f.readyState&&"complete"!=f.readyState)return!1;c=!1;try{if(h=a.sheet)d=h.cssRules,c=null===d,!c&&d&&(h.insertRule("-curl-css-test {}",0),h.deleteRule(0),c=!0)}catch(k){c="[object Opera]"!=Object.prototype.toString.call(window.opera)&&/security|denied/i.test(k.message)}return c}function z(a,c,f){I.load||(r(a)?f(a.sheet):a.onload==t||!a.onload||C(function(){z(a,c,f)},c))}
function y(a,f,h){function d(){a.onload!=t&&a.onload&&(a.onload=a.onerror=t,c(function(){h(a.sheet)}))}k(a,d);z(a,f,d)}function q(a,c){n(a,function(){a.onload!=t&&a.onload&&(a.onload=a.onerror=t,c(Error(M)))})}function w(a,c,f,h){var d;d=l();y(d,h,c);q(d,f);d.href=a;B.appendChild(d)}function c(a){function c(){f.readyState&&"complete"!=f.readyState?C(c,10):a()}c()}function a(a){return a.lastIndexOf(".")<=a.lastIndexOf("/")?a+".css":a}function t(){}var A="createElement",C=d.setTimeout,f=d.document,
B;d=f&&f.createStyleSheet&&!(10<=f.documentMode);var F=[],H=[],D=[],R=12,L,M="HTTP or network error.",I={};f&&(B=f.head||f.getElementsByTagName("head")[0],L=d?h:w);define("curl/plugin/css",{normalize:function(a,c){var f,h;if(!a)return a;f=a.split(",");h=[];for(var d=0,k=f.length;d<k;d++)h.push(c(f[d]));return h.join(",")},load:function(c,f,h,d){function k(a){1<n.length&&p.push(a);0==--w&&h(1==n.length?a:p)}function r(a){(h.d||function(a){throw a;})(a)}var p,n,q,w,F;p=[];n=(c||"").split(",");q=d.cssWatchPeriod||
50;d=d.cssNoWait;w=n.length;for(F=0;F<n.length;F++){c=n[F];var t;c=a(f.toUrl(c));d?(t=l(),t.href=c,B.appendChild(t),k(t.sheet||t.styleSheet)):L(c,k,r,q)}},cramPlugin:"../cram/css"})})(this);
(function(d){var l=d.document,k=/^\/\//,n;l&&(n=l.head||(l.head=l.getElementsByTagName("head")[0]));define("curl/plugin/link",{load:function(d,p,v,r){d=p.toUrl(d);d=d.lastIndexOf(".")<=d.lastIndexOf("/")?d+".css":d;r=d=(r="fixSchemalessUrls"in r?r.fixSchemalessUrls:l.location.protocol)?d.replace(k,r+"//"):d;d=l.createElement("link");d.rel="stylesheet";d.type="text/css";d.href=r;n.appendChild(d);v(d.sheet||d.styleSheet)}})})(this);
define("curl/plugin/domReady",["../domReady"],function(d){return{load:function(l,k,n){d(n)}}});(function(d){define("curl/shim/_fetchText",function(){function l(d,h,k){n.za(d,function(d,l){d?k(d):h(l.toString())})}function k(d,k,l){var n;d=p.parse(d,!1,!0);n="";h.get(d,function(d){d.i("data",function(c){n+=c}).i("end",function(){k(n)}).i("error",l)}).i("error",l)}var n,h,p;n=d("fs");h=d("http");p=d("url");var v;v=/^https?:/;return function(d,h,n){v.test(d)?k(d,h,n):l(d,h,n)}})})(O);define.amd.Ca=!0;
(function(d,l){define("curl/shim/ssjs",["curl/_privileged","./_fetchText"],function(k,n){function h(a,c,d){try{l(a.url),c()}catch(f){d(f)}}function p(a,c,f){var h;try{h=a.url.replace(/\.js$/,""),d(h),c()}catch(k){f(k)}}function v(a,c,f){var h;a=d("url").parse(a.url,!1,!0);h="";A.get(a,function(a){a.i("data",function(a){h+=a}).i("end",function(){z(h);c()}).i("error",f)}).i("error",f)}function r(a){throw Error("ssjs: unable to load module in current environment: "+a.url);}function z(a){eval(a)}function y(c){return c&&
c.replace(a,function(a,c){return c})}var q,w,c,a,t,A,C,f;if("object"!=typeof window||!window.ra&&!window.navigator){q=k.qa;w=k.b();c=/^\w+:\/\//;a=/(^\w+:)?.*$/;"undefined"==typeof XMLHttpRequest&&(q["curl/plugin/_fetchText"]=n);t=(w.o&&":"!=w.o[w.o.length-1]?w.o+":":w.o)||y(w.n)||"http:";if(l)C=f=h;else if(d){C=p;try{A=d("http"),f=v}catch(B){f=r}}else C=f=r;"object"===typeof process&&process.ka&&(k.Y.C=process.ka);k.Y.p=function(a,d,h){/^\/\//.test(a.url)&&(a.url=t+a.url);return c.test(a.url)?f(a,
d,h):C(a,d,h)}}})})(O,void 0);
(function(d,l,k){define("curl/loader/cjsm11",["../plugin/_fetchText","curl/_privileged"],function(d,h){function p(d,c){p="text"in d?function(a,c){a.text=c}:function(a,c){a.appendChild(l.createTextNode(c))};p(d,c)}function v(d,c,a){a=a?"/*\n////@ sourceURL="+a.replace(/\s/g,"%20")+".js\n*/":"";return"define('"+c+"',['require','exports','module'],function(require,exports,module){"+d+"\n});\n"+a+"\n"}var r,z,y,q;z=(r=l&&(l.head||l.getElementsByTagName("head")[0]))&&r.getElementsByTagName("base")[0]||null;
y=h.core.O;q=h.core.u;v.load=function(h,c,a,t){var A,C,f;A=a.error||function(a){throw a;};C=q(c.Ea(h),t);f=!1!==t.injectSourceUrl&&C;d(C,function(d){var n;n=y(d);c(n,function(){d=v(d,h,f);if(t.injectScript){var n=d,q=l.createElement("script");p(q,n);q.charset="utf-8";r.insertBefore(q,z)}else k(d);a(c(h))},A)},A)};v.cramPlugin="../cram/cjsm11";return v})})(this,this.document,function(d){eval(d)});
define("curl/plugin/locale",function(){function d(d,h){var k;if(d&&(k=d.locale,"function"==typeof k&&(k=k(d,h)),"string"==typeof k))return k;if("undefined"==typeof window)return!1;k=window.clientInformation||window.navigator;return(k&&(k.language||k.userLanguage)||"").toLowerCase()}function l(d,h){return d.replace(k,(h?"/"+h:"")+"$&")}var k;k=/(\.js)?$/;d.toModuleId=l;d.load=function(k,h,p,v){function r(){var c=Error("Unable to find correct locale for "+k);if(p.error)p.error(c);else throw c;}var z,
y;z=d(v,k);y=v.localeToModuleId||l;v=z?y(k,z):k;try{p(h(v))}catch(q){y=z?y(k,!1):k;if(y==v)return r();try{p(h(y))}catch(w){if(!0!==z)return r();h(["i18n!"+k],p,r)}}};return d});
define("curl/plugin/i18n",["./locale"],function(d){function l(d,l,h,p,v){d([l],function(d){p(d,h)},v)}return{load:function(k,n,h,p){function v(a,c){w[c]=a;r()}function r(){var d;if(++c==a.length)if(0==w.length)z(Error('No i18n bundles found: "'+k+'", locale "'+q+'"'));else{d=w[0]||{};for(A=1;A<w.length;A++){var f=w[A],l={},n=void 0;for(n in d)l[n]=d[n];if(f)for(n in f)l[n]=f[n];d=l}h(d)}}var z,y,q,w,c,a,t,A;z=h.error;k||z(Error("blank i18n bundle id."));y=p.localeToModuleId||d.Da;q=d(p,k);a=[k];w=
[];c=0;if(q&&!1!==p.locale)for(a=a.concat(q.split("-")),t=[],A=1;A<a.length;A++)t[A-1]=a[A],p=y(k,t.join("-")),l(n,p,A,v,r);l(n,k,0,v,r)},cramPlugin:"../cram/i18n"}});
(function(d,l,k){define("curl/loader/legacy",["curl/_privileged"],function(n){var h,p,v;h=l&&!0==l.createElement("script").async;p=n.core.p;v=/\?|\.js\b/;return{load:function(l,n,y,q){function w(){B.r="";p(B,c,a)}function c(){var c;if(!(0<--F)){if(A)try{c=A.call(d,l)}catch(f){a(Error("Factory for legacy "+l+" failed: "+f.message))}else try{c=k(t)}catch(h){a(Error("Failed to find exports "+t+" for legacy "+l))}y(c)}}function a(a){(y.error||function(a){throw a;})(a)}var t,A,C,f,B,F;t=q.exports||q.a;
A=q.factory||q.factory;if(!t&&!A)throw Error("`exports` or `factory` required for legacy: "+l);C=[].concat(q.requires||q.Ba||[]);q=(q=q.dontAddFileExt||q.l)?RegExp(q):v;f=n.toUrl(l);q.test(f)||(f=f.lastIndexOf(".")<=f.lastIndexOf("/")?f+".js":f);B={url:f,R:!0,r:h||!C.length?"":"text/cache"};C.length?(F=2,n(C,h?c:w,a)):F=1;p(B,c,a)},cramPlugin:"../cram/legacy"}})})(this,this.document,function(d){return(0,eval)(d)});
}).call(this);

View File

@@ -1,20 +0,0 @@
Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,38 +0,0 @@
<?php
/*!
* Docdown v1.0.0-pre
* Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>
* Available under MIT license <http://mths.be/mit>
*/
require(dirname(__FILE__) . '/src/DocDown/MarkdownGenerator.php');
/**
* Generates Markdown from JSDoc entries in a given file.
*
* @param {Array} [$options=array()] The options array.
* @returns {string} The generated Markdown.
* @example
*
* // specify a file path
* $markdown = docdown(array(
* // path to js file
* 'path' => $filepath,
* // url used to reference line numbers in code
* 'url' => 'https://github.com/username/project/blob/master/my.js'
* ));
*
* // or pass raw js
* $markdown = docdown(array(
* // raw JavaScript source
* 'source' => $rawJS,
* // documentation title
* 'title' => 'My API Documentation',
* // url used to reference line numbers in code
* 'url' => 'https://github.com/username/project/blob/master/my.js'
* ));
*/
function docdown( $options = array() ) {
$gen = new MarkdownGenerator($options);
return $gen->generate();
}
?>

View File

@@ -1,226 +0,0 @@
<?php
/**
* A class to represent a JSDoc entry alias.
*/
class Alias {
/**
* The alias owner.
*
* @memberOf Alias
* @type Object
*/
public $owner;
/*--------------------------------------------------------------------------*/
/**
* The Alias constructor.
*
* @constructor
* @param {string} $name The alias name.
* @param {Object} $owner The alias owner.
*/
public function __construct( $name, $owner ) {
$this->owner = $owner;
$this->_name = $name;
$this->_call = $owner->getCall();
$this->_category = $owner->getCategory();
$this->_desc = $owner->getDesc();
$this->_example = $owner->getExample();
$this->_isCtor = $owner->isCtor();
$this->_isLicense = $owner->isLicense();
$this->_isPlugin = $owner->isPlugin();
$this->_isPrivate = $owner->isPrivate();
$this->_isStatic = $owner->isStatic();
$this->_lineNumber = $owner->getLineNumber();
$this->_members = $owner->getMembers();
$this->_params = $owner->getParams();
$this->_returns = $owner->getReturns();
$this->_type = $owner->getType();
}
/*--------------------------------------------------------------------------*/
/**
* Extracts the entry's `alias` objects.
*
* @memberOf Alias
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The entry's `alias` objects.
*/
public function getAliases( $index = null ) {
$result = array();
return $index !== null
? @$result[$index]
: $result;
}
/**
* Extracts the function call from the owner entry.
*
* @memberOf Alias
* @returns {string} The function call.
*/
public function getCall() {
return $this->_call;
}
/**
* Extracts the owner entry's `category` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `category` data.
*/
public function getCategory() {
return $this->_category;
}
/**
* Extracts the owner entry's description.
*
* @memberOf Alias
* @returns {string} The owner entry's description.
*/
public function getDesc() {
return $this->_desc;
}
/**
* Extracts the owner entry's `example` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `example` data.
*/
public function getExample() {
return $this->_example;
}
/**
* Checks if the entry is an alias.
*
* @memberOf Alias
* @returns {boolean} Returns `true`.
*/
public function isAlias() {
return true;
}
/**
* Checks if the owner entry is a constructor.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if a constructor, else `false`.
*/
public function isCtor() {
return $this->_isCtor;
}
/**
* Checks if the owner entry is a license.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if a license, else `false`.
*/
public function isLicense() {
return $this->_isLicense;
}
/**
* Checks if the owner entry *is* assigned to a prototype.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if assigned to a prototype, else `false`.
*/
public function isPlugin() {
return $this->_isPlugin;
}
/**
* Checks if the owner entry is private.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if private, else `false`.
*/
public function isPrivate() {
return $this->_isPrivate;
}
/**
* Checks if the owner entry is *not* assigned to a prototype.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if not assigned to a prototype, else `false`.
*/
public function isStatic() {
return $this->_isStatic;
}
/**
* Resolves the owner entry's line number.
*
* @memberOf Alias
* @returns {number} The owner entry's line number.
*/
public function getLineNumber() {
return $this->_lineNumber;
}
/**
* Extracts the owner entry's `member` data.
*
* @memberOf Alias
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The owner entry's `member` data.
*/
public function getMembers( $index = null ) {
return $index !== null
? @$this->_members[$index]
: $this->_members;
}
/**
* Extracts the owner entry's `name` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `name` data.
*/
public function getName() {
return $this->_name;
}
/**
* Extracts the owner entry's `param` data.
*
* @memberOf Alias
* @param {number} $index The index of the array value to return.
* @returns {Array} The owner entry's `param` data.
*/
public function getParams( $index = null ) {
return $index !== null
? @$this->_params[$index]
: $this->_params;
}
/**
* Extracts the owner entry's `returns` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `returns` data.
*/
public function getReturns() {
return $this->_returns;
}
/**
* Extracts the owner entry's `type` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `type` data.
*/
public function getType() {
return $this->_type;
}
}
?>

View File

@@ -1,451 +0,0 @@
<?php
require(dirname(__FILE__) . "/Alias.php");
/**
* A class to simplify parsing a single JSDoc entry.
*/
class Entry {
/**
* The documentation entry.
*
* @memberOf Entry
* @type string
*/
public $entry = '';
/**
* The language highlighter used for code examples.
*
* @memberOf Entry
* @type string
*/
public $lang = '';
/**
* The source code.
*
* @memberOf Entry
* @type string
*/
public $source = '';
/*--------------------------------------------------------------------------*/
/**
* The Entry constructor.
*
* @constructor
* @param {string} $entry The documentation entry to analyse.
* @param {string} $source The source code.
* @param {string} [$lang ='js'] The language highlighter used for code examples.
*/
public function __construct( $entry, $source, $lang = 'js' ) {
$this->entry = $entry;
$this->lang = $lang;
$this->source = str_replace(PHP_EOL, "\n", $source);
}
/*--------------------------------------------------------------------------*/
/**
* Extracts the documentation entries from source code.
*
* @static
* @memberOf Entry
* @param {string} $source The source code.
* @returns {Array} The array of entries.
*/
public static function getEntries( $source ) {
preg_match_all('#/\*\*(?![-!])[\s\S]*?\*/\s*.+#', $source, $result);
return array_pop($result);
}
/*--------------------------------------------------------------------------*/
/**
* Checks if the entry is a function reference.
*
* @private
* @memberOf Entry
* @returns {boolean} Returns `true` if the entry is a function reference, else `false`.
*/
private function isFunction() {
if (!isset($this->_isFunction)) {
$this->_isFunction = !!(
$this->isCtor() ||
count($this->getParams()) ||
count($this->getReturns()) ||
preg_match('/\*[\t ]*@function\b/', $this->entry)
);
}
return $this->_isFunction;
}
/*--------------------------------------------------------------------------*/
/**
* Extracts the entry's `alias` objects.
*
* @memberOf Entry
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The entry's `alias` objects.
*/
public function getAliases( $index = null ) {
if (!isset($this->_aliases)) {
preg_match('#\*[\t ]*@alias\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
$result = preg_split('/,\s*/', $result);
natsort($result);
foreach ($result as $resultIndex => $value) {
$result[$resultIndex] = new Alias($value, $this);
}
}
$this->_aliases = $result;
}
return $index !== null
? @$this->_aliases[$index]
: $this->_aliases;
}
/**
* Extracts the function call from the entry.
*
* @memberOf Entry
* @returns {string} The function call.
*/
public function getCall() {
if (isset($this->_call)) {
return $this->_call;
}
preg_match('#\*/\s*(?:function ([^(]*)|(.*?)(?=[:=,]|return\b))#', $this->entry, $result);
if ($result = array_pop($result)) {
$result = array_pop(explode('var ', trim(trim(array_pop(explode('.', $result))), "'")));
}
// resolve name
// avoid $this->getName() because it calls $this->getCall()
preg_match('#\*[\t ]*@name\s+(.+)#', $this->entry, $name);
if (count($name)) {
$name = trim($name[1]);
} else {
$name = $result;
}
// compile function call syntax
if ($this->isFunction()) {
// compose parts
$result = array($result);
$params = $this->getParams();
foreach ($params as $param) {
// skip params that are properties of other params (e.g. `options.leading`)
if (!preg_match('/\w+\.[\w.]+\s*=/', $param[1])) {
$result[] = $param[1];
}
}
// format
$result = $name .'('. implode(array_slice($result, 1), ', ') .')';
}
$this->_call = $result ? $result : $name;
return $this->_call;
}
/**
* Extracts the entry's `category` data.
*
* @memberOf Entry
* @returns {string} The entry's `category` data.
*/
public function getCategory() {
if (isset($this->_category)) {
return $this->_category;
}
preg_match('#\*[\t ]*@category\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
} else {
$result = $this->getType() == 'Function' ? 'Methods' : 'Properties';
}
$this->_category = $result;
return $result;
}
/**
* Extracts the entry's description.
*
* @memberOf Entry
* @returns {string} The entry's description.
*/
public function getDesc() {
if (isset($this->_desc)) {
return $this->_desc;
}
preg_match('#/\*\*(?:\s*\*)?([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
if (count($result)) {
$type = $this->getType();
$result = preg_replace('/:\n[\t ]*\*[\t ]*/', ":<br>\n", $result[1]);
$result = preg_replace('/(?:^|\n)[\t ]*\*\n[\t ]*\*[\t ]*/', "\n\n", $result);
$result = preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result);
$result = trim($result);
$result = ($type == 'Function' ? '' : '(' . str_replace('|', ', ', trim($type, '{}')) . '): ') . $result;
}
$this->_desc = $result;
return $result;
}
/**
* Extracts the entry's `example` data.
*
* @memberOf Entry
* @returns {string} The entry's `example` data.
*/
public function getExample() {
if (isset($this->_example)) {
return $this->_example;
}
preg_match('#\*[\t ]*@example\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', "\n", $result[1]));
$result = '```' . $this->lang . "\n" . $result . "\n```";
}
$this->_example = $result;
return $result;
}
/**
* Checks if the entry is an alias.
*
* @memberOf Entry
* @returns {boolean} Returns `false`.
*/
public function isAlias() {
return false;
}
/**
* Checks if the entry is a constructor.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if a constructor, else `false`.
*/
public function isCtor() {
if (!isset($this->_isCtor)) {
$this->_isCtor = !!preg_match('/\*[\t ]*@constructor\b/', $this->entry);
}
return $this->_isCtor;
}
/**
* Checks if the entry is a license.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if a license, else `false`.
*/
public function isLicense() {
if (!isset($this->_isLicense)) {
$this->_isLicense = !!preg_match('/\*[\t ]*@license\b/', $this->entry);
}
return $this->_isLicense;
}
/**
* Checks if the entry *is* assigned to a prototype.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if assigned to a prototype, else `false`.
*/
public function isPlugin() {
if (!isset($this->_isPlugin)) {
$this->_isPlugin = !$this->isCtor() && !$this->isPrivate() && !$this->isStatic();
}
return $this->_isPlugin;
}
/**
* Checks if the entry is private.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if private, else `false`.
*/
public function isPrivate() {
if (!isset($this->_isPrivate)) {
$this->_isPrivate = $this->isLicense() || !!preg_match('/\*[\t ]*@private\b/', $this->entry) || !preg_match('/\*[\t ]*@[a-z]+\b/', $this->entry);
}
return $this->_isPrivate;
}
/**
* Checks if the entry is *not* assigned to a prototype.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if not assigned to a prototype, else `false`.
*/
public function isStatic() {
if (isset($this->_isStatic)) {
return $this->_isStatic;
}
$public = !$this->isPrivate();
$result = $public && !!preg_match('/\*[\t ]*@static\b/', $this->entry);
// set in cases where it isn't explicitly stated
if ($public && !$result) {
if ($parent = array_pop(preg_split('/[#.]/', $this->getMembers(0)))) {
foreach (Entry::getEntries($this->source) as $entry) {
$entry = new Entry($entry, $this->source);
if ($entry->getName() == $parent) {
$result = !$entry->isCtor();
break;
}
}
} else {
$result = true;
}
}
$this->_isStatic = $result;
return $result;
}
/**
* Resolves the entry's line number.
*
* @memberOf Entry
* @returns {number} The entry's line number.
*/
public function getLineNumber() {
if (!isset($this->_lineNumber)) {
preg_match_all('/\n/', substr($this->source, 0, strrpos($this->source, $this->entry) + strlen($this->entry)), $lines);
$this->_lineNumber = count(array_pop($lines)) + 1;
}
return $this->_lineNumber;
}
/**
* Extracts the entry's `member` data.
*
* @memberOf Entry
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The entry's `member` data.
*/
public function getMembers( $index = null ) {
if (!isset($this->_members)) {
preg_match('#\*[\t ]*@member(?:Of)?\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
$result = preg_split('/,\s*/', $result);
natsort($result);
}
$this->_members = $result;
}
return $index !== null
? @$this->_members[$index]
: $this->_members;
}
/**
* Extracts the entry's `name` data.
*
* @memberOf Entry
* @returns {string} The entry's `name` data.
*/
public function getName() {
if (isset($this->_name)) {
return $this->_name;
}
preg_match('#\*[\t ]*@name\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
} else {
$result = array_shift(explode('(', $this->getCall()));
}
$this->_name = $result;
return $result;
}
/**
* Extracts the entry's `param` data.
*
* @memberOf Entry
* @param {number} $index The index of the array value to return.
* @returns {Array} The entry's `param` data.
*/
public function getParams( $index = null ) {
if (!isset($this->_params)) {
preg_match_all('#\*[\t ]*@param\s+\{\(?([^})]+)\)?\}\s+(\[.+\]|[$\w|]+(?:\[.+\])?)\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#i', $this->entry, $matchTuples);
$matchTuples = array_filter(array_slice($matchTuples, 1));
$result = array();
if (count($matchTuples)) {
foreach ($matchTuples as $tupleKey => $tuple) {
foreach ($tuple as $key => $value) {
if (!isset($result[$key])) {
$result[$key] = array();
}
$result[$key][] = $tupleKey
? trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]*/', ' ', $value))
: trim($value);
}
}
}
$this->_params = $result;
}
return $index !== null
? @$this->_params[$index]
: $this->_params;
}
/**
* Extracts the entry's `returns` data.
*
* @memberOf Entry
* @returns {string} The entry's `returns` data.
*/
public function getReturns() {
if (isset($this->_returns)) {
return $this->_returns;
}
preg_match('#\*[\t ]*@returns\s+\{([^}]+)\}\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
if (count($result)) {
$result = array_map('trim', array_slice($result, 1));
$result[0] = str_replace('|', ', ', $result[0]);
$result[1] = preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]);
}
$this->_returns = $result;
return $result;
}
/**
* Extracts the entry's `type` data.
*
* @memberOf Entry
* @returns {string} The entry's `type` data.
*/
public function getType() {
if (isset($this->_type)) {
return $this->_type;
}
preg_match('#\*[\t ]*@type\s(?:\{\(?)?([^)}\n]+)#', $this->entry, $result);
if (count($result)) {
$result = trim($result[1]);
if (preg_match('/^(?:array|function|object|regexp)$/', $result)) {
$result = ucfirst($result);
}
} else {
$result = $this->isFunction() ? 'Function' : 'unknown';
}
$this->_type = $result;
return $result;
}
}
?>

View File

@@ -1,567 +0,0 @@
<?php
require(dirname(__FILE__) . "/Entry.php");
/**
* Generates Markdown from JSDoc entries.
*/
class MarkdownGenerator {
/**
* The HTML for the close tag.
*
* @static
* @memberOf MarkdownGenerator
* @type string
*/
public $closeTag = "\n<!-- /div -->\n";
/**
* An array of JSDoc entries.
*
* @memberOf MarkdownGenerator
* @type Array
*/
public $entries = array();
/**
* The HTML for the open tag.
*
* @static
* @memberOf MarkdownGenerator
* @type string
*/
public $openTag = "\n<!-- div -->\n";
/**
* An options array used to configure the generator.
*
* @memberOf MarkdownGenerator
* @type Array
*/
public $options = array();
/**
* The file's source code.
*
* @memberOf MarkdownGenerator
* @type string
*/
public $source = '';
/*--------------------------------------------------------------------------*/
/**
* The MarkdownGenerator constructor.
*
* @constructor
* @param {string} $source The source code to parse.
* @param {Array} $options The options array.
*/
public function __construct( $source, $options = array() ) {
// juggle arguments
if (is_array($source)) {
$options = $source;
} else {
$options['source'] = $source;
}
if (isset($options['source']) && realpath($options['source'])) {
$options['path'] = $options['source'];
}
if (isset($options['path'])) {
preg_match('/(?<=\.)[a-z]+$/', $options['path'], $ext);
$options['source'] = file_get_contents($options['path']);
$ext = array_pop($ext);
if (!isset($options['lang']) && $ext) {
$options['lang'] = $ext;
}
if (!isset($options['title'])) {
$options['title'] = ucfirst(basename($options['path'])) . ' API documentation';
}
}
if (!isset($options['lang'])) {
$options['lang'] = 'js';
}
if (!isset($options['toc'])) {
$options['toc'] = 'properties';
}
$this->options = $options;
$this->source = str_replace(PHP_EOL, "\n", $options['source']);
$this->entries = Entry::getEntries($this->source);
foreach ($this->entries as $index => $value) {
$this->entries[$index] = new Entry($value, $this->source, $options['lang']);
}
}
/*--------------------------------------------------------------------------*/
/**
* Performs common string formatting operations.
*
* @private
* @static
* @memberOf MarkdownGenerator
* @param {string} $string The string to format.
* @returns {string} The formatted string.
*/
private static function format( $string ) {
$counter = 0;
// tokenize inline code snippets
preg_match_all('/`[^`]+`/', $string, $tokenized);
$tokenized = $tokenized[0];
foreach ($tokenized as $snippet) {
$string = str_replace($snippet, '__token' . ($counter++) .'__', $string);
}
// italicize parentheses
$string = preg_replace('/(^|\s)(\([^)]+\))/', '$1*$2*', $string);
// mark numbers as inline code
$string = preg_replace('/[\t ](-?\d+(?:.\d+)?)(?!\.[^\n])/', ' `$1`', $string);
// detokenize inline code snippets
$counter = 0;
foreach ($tokenized as $snippet) {
$string = str_replace('__token' . ($counter++) . '__', $snippet, $string);
}
return trim($string);
}
/**
* Modify a string by replacing named tokens with matching assoc. array values.
*
* @private
* @static
* @memberOf MarkdownGenerator
* @param {string} $string The string to modify.
* @param {Array|Object} $object The template object.
* @returns {string} The modified string.
*/
private static function interpolate( $string, $object ) {
preg_match_all('/#\{([^}]+)\}/', $string, $tokens);
$tokens = array_unique(array_pop($tokens));
foreach ($tokens as $token) {
$pattern = '/#\{' . preg_replace('/([.*+?^${}()|[\]\\\])/', '\\\$1', $token) . '\}/';
$replacement = '';
if (is_object($object)) {
preg_match('/\(([^)]+?)\)$/', $token, $args);
$args = preg_split('/,\s*/', array_pop($args));
$method = 'get' . ucfirst(preg_replace('/\([^)]+?\)$/', '', $token));
if (method_exists($object, $method)) {
$replacement = (string) call_user_func_array(array($object, $method), $args);
} else if (isset($object->{$token})) {
$replacement = (string) $object->{$token};
}
} else if (isset($object[$token])) {
$replacement = (string) $object[$token];
}
$string = preg_replace($pattern, trim($replacement), $string);
}
return MarkdownGenerator::format($string);
}
/*--------------------------------------------------------------------------*/
/**
* Adds the given `$entries` to the `$result` array.
*
* @private
* @memberOf MarkdownGenerator
* @param {Array} $result The result array to modify.
* @param {Array} $entries The entries to add to the `$result`.
*/
private function addEntries( &$result, $entries ) {
foreach ($entries as $entry) {
// skip aliases
if ($entry->isAlias()) {
continue;
}
// name and description
array_push(
$result,
$this->openTag,
MarkdownGenerator::interpolate("### <a id=\"#{hash}\"></a>`#{member}#{separator}#{call}`\n<a href=\"##{hash}\">#</a> [&#x24C8;](#{href} \"View in source\") [&#x24C9;][1]\n\n#{desc}", $entry)
);
// @alias
if (count($aliases = $entry->getAliases())) {
array_push($result, '', '#### Aliases');
foreach ($aliases as $index => $alias) {
$aliases[$index] = MarkdownGenerator::interpolate('#{member}#{separator}#{name}', $alias);
}
$result[] = '*' . implode(', ', $aliases) . '*';
}
// @param
if (count($params = $entry->getParams())) {
array_push($result, '', '#### Arguments');
foreach ($params as $index => $param) {
$result[] = MarkdownGenerator::interpolate('#{num}. `#{name}` (#{type}): #{desc}', array(
'desc' => $param[2],
'name' => $param[1],
'num' => $index + 1,
'type' => preg_replace('/(?<!\\\)(\*)/', '\\\$1', $param[0])
));
}
}
// @returns
if (count($returns = $entry->getReturns())) {
array_push(
$result, '',
'#### Returns',
MarkdownGenerator::interpolate('(#{type}): #{desc}', array(
'desc' => $returns[1],
'type' => preg_replace('/(?<!\\\)(\*)/', '\\\$1', $returns[0])
))
);
}
// @example
if ($example = $entry->getExample()) {
array_push($result, '', '#### Example', $example);
}
array_push($result, "\n* * *", $this->closeTag);
}
}
/**
* Resolves the entry's hash used to navigate the documentation.
*
* @private
* @memberOf MarkdownGenerator
* @param {number|Object} $entry The entry object.
* @param {string} $member The name of the member.
* @returns {string} The url hash.
*/
private function getHash( $entry, $member = '' ) {
$entry = is_numeric($entry) ? $this->entries[$entry] : $entry;
$member = !$member ? $entry->getMembers(0) : $member;
$result = ($member ? $member . ($entry->isPlugin() ? 'prototype' : '') : '') . $entry->getCall();
$result = preg_replace('/\(\[|\[\]/', '', $result);
$result = preg_replace('/[\t =|\'"{}.()\]]/', '', $result);
$result = preg_replace('/[[#,]/', '-', $result);
return strtolower($result);
}
/**
* Resolves the entry's url for the specific line number.
*
* @private
* @memberOf MarkdownGenerator
* @param {number|Object} $entry The entry object.
* @returns {string} The url.
*/
private function getLineUrl( $entry ) {
$entry = is_numeric($entry) ? $this->entries($entry) : $entry;
return $this->options['url'] . '#L' . $entry->getLineNumber();
}
/**
* Extracts the character used to separate the entry's name from its member.
*
* @private
* @memberOf MarkdownGenerator
* @param {number|Object} $entry The entry object.
* @returns {string} The separator.
*/
private function getSeparator( $entry ) {
$entry = is_numeric($entry) ? $this->entries($entry) : $entry;
return $entry->isPlugin() ? '.prototype.' : '.';
}
/*--------------------------------------------------------------------------*/
/**
* Generates Markdown from JSDoc entries.
*
* @memberOf MarkdownGenerator
* @returns {string} The rendered Markdown.
*/
public function generate() {
$api = array();
$byCategory = $this->options['toc'] == 'categories';
$categories = array();
$closeTag = $this->closeTag;
$compiling = false;
$openTag = $this->openTag;
$result = array('# ' . $this->options['title']);
$toc = 'toc';
// initialize $api array
foreach ($this->entries as $entry) {
// skip invalid or private entries
$name = $entry->getName();
if (!$name || $entry->isPrivate()) {
continue;
}
$members = $entry->getMembers();
$members = count($members) ? $members : array('');
foreach ($members as $member) {
// create api category arrays
if ($member && !isset($api[$member])) {
// create temporary entry to be replaced later
$api[$member] = new stdClass;
$api[$member]->static = array();
$api[$member]->plugin = array();
}
// append entry to api member
if (!$member || $entry->isCtor() || ($entry->getType() == 'Object' &&
!preg_match('/[=:]\s*(?:null|undefined)\s*[,;]?$/', $entry->entry))) {
// assign the real entry, replacing the temporary entry if it exist
$member = ($member ? $member . ($entry->isPlugin() ? '#' : '.') : '') . $name;
$entry->static = @$api[$member] ? $api[$member]->static : array();
$entry->plugin = @$api[$member] ? $api[$member]->plugin : array();
$api[$member] = $entry;
foreach ($entry->getAliases() as $alias) {
$api[$member]->static[] = $alias;
}
}
else if ($entry->isStatic()) {
$api[$member]->static[] = $entry;
foreach ($entry->getAliases() as $alias) {
$api[$member]->static[] = $alias;
}
}
else if (!$entry->isCtor()) {
$api[$member]->plugin[] = $entry;
foreach ($entry->getAliases() as $alias) {
$api[$member]->plugin[] = $alias;
}
}
}
}
// add properties to each entry
foreach ($api as $entry) {
$entry->hash = $this->getHash($entry);
$entry->href = $this->getLineUrl($entry);
$member = $entry->getMembers(0);
$member = ($member ? $member . $this->getSeparator($entry) : '') . $entry->getName();
$entry->member = preg_replace('/' . $entry->getName() . '$/', '', $member);
// add properties to static and plugin sub-entries
foreach (array('static', 'plugin') as $kind) {
foreach ($entry->{$kind} as $subentry) {
$subentry->hash = $this->getHash($subentry);
$subentry->href = $this->getLineUrl($subentry);
$subentry->member = $member;
$subentry->separator = $this->getSeparator($subentry);
}
}
}
/*------------------------------------------------------------------------*/
// custom sort for root level entries
// TODO: see how well it handles deeper namespace traversal
function sortCompare($a, $b) {
$score = array( 'a' => 0, 'b' => 0);
foreach (array( 'a' => $a, 'b' => $b) as $key => $value) {
// capitalized properties are last
if (preg_match('/[#.][A-Z]/', $value)) {
$score[$key] = 0;
}
// lowercase prototype properties are next to last
else if (preg_match('/#[a-z]/', $value)) {
$score[$key] = 1;
}
// lowercase static properties next to first
else if (preg_match('/\.[a-z]/', $value)) {
$score[$key] = 2;
}
// root properties are first
else if (preg_match('/^[^#.]+$/', $value)) {
$score[$key] = 3;
}
}
$score = $score['b'] - $score['a'];
return $score ? $score : strcasecmp($a, $b);
}
uksort($api, 'sortCompare');
// sort static and plugin sub-entries
foreach ($api as $entry) {
foreach (array('static', 'plugin') as $kind) {
$sortBy = array( 'a' => array(), 'b' => array(), 'c' => array() );
foreach ($entry->{$kind} as $subentry) {
$name = $subentry->getName();
// functions w/o ALL-CAPs names are last
$sortBy['a'][] = $subentry->getType() == 'Function' && !preg_match('/^[A-Z_]+$/', $name);
// ALL-CAPs properties first
$sortBy['b'][] = preg_match('/^[A-Z_]+$/', $name);
// lowercase alphanumeric sort
$sortBy['c'][] = strtolower($name);
}
array_multisort($sortBy['a'], SORT_ASC, $sortBy['b'], SORT_DESC, $sortBy['c'], SORT_ASC, $entry->{$kind});
}
}
/*------------------------------------------------------------------------*/
// add categories
foreach ($api as $entry) {
$categories[$entry->getCategory()][] = $entry;
foreach (array('static', 'plugin') as $kind) {
foreach ($entry->{$kind} as $subentry) {
$categories[$subentry->getCategory()][] = $subentry;
}
}
}
// sort categories
ksort($categories);
foreach(array('Methods', 'Properties') as $category) {
if (isset($categories[$category])) {
$entries = $categories[$category];
unset($categories[$category]);
$categories[$category] = $entries;
}
}
/*------------------------------------------------------------------------*/
// compile TOC
$result[] = $openTag;
// compile TOC by categories
if ($byCategory) {
foreach ($categories as $category => $entries) {
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
// assign TOC hash
if (count($result) == 2) {
$toc = $category;
}
// add category
array_push(
$result,
$openTag, '## ' . (count($result) == 2 ? '<a id="' . $toc . '"></a>' : '') . '`' . $category . '`'
);
// add entries
foreach ($entries as $entry) {
$result[] = MarkdownGenerator::interpolate('* [`#{member}#{separator}#{name}`](##{hash})', $entry);
}
}
}
// compile TOC by namespace
else {
foreach ($api as $entry) {
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
$member = $entry->member . $entry->getName();
// assign TOC hash
if (count($result) == 2) {
$toc = $member;
}
// add root entry
array_push(
$result,
$openTag, '## ' . (count($result) == 2 ? '<a id="' . $toc . '"></a>' : '') . '`' . $member . '`',
MarkdownGenerator::interpolate('* [`' . $member . '`](##{hash})', $entry)
);
// add static and plugin sub-entries
foreach (array('static', 'plugin') as $kind) {
if ($kind == 'plugin' && count($entry->plugin)) {
array_push(
$result,
$closeTag,
$openTag,
'## `' . $member . ($entry->isCtor() ? '.prototype`' : '`')
);
}
foreach ($entry->{$kind} as $subentry) {
$subentry->member = $member;
$result[] = MarkdownGenerator::interpolate('* [`#{member}#{separator}#{name}`](##{hash})', $subentry);
}
}
}
}
array_push($result, $closeTag, $closeTag);
/*------------------------------------------------------------------------*/
// compile content
$compiling = false;
$result[] = $openTag;
if ($byCategory) {
foreach ($categories as $category => $entries) {
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
if ($category != 'Methods' && $category != 'Properties') {
$category = '“' . $category . '” Methods';
}
array_push($result, $openTag, '## `' . $category . '`');
$this->addEntries($result, $entries);
}
}
else {
foreach ($api as $entry) {
// skip aliases
if ($entry->isAlias()) {
continue;
}
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
// add root entry name
$member = $entry->member . $entry->getName();
array_push($result, $openTag, '## `' . $member . '`');
foreach (array($entry, 'static', 'plugin') as $kind) {
$subentries = is_string($kind) ? $entry->{$kind} : array($kind);
// add sub-entry name
if ($kind != 'static' && $entry->getType() != 'Object' &&
count($subentries) && $subentries[0] != $kind) {
if ($kind == 'plugin') {
$result[] = $closeTag;
}
array_push(
$result,
$openTag,
'## `' . $member . ($kind == 'plugin' ? '.prototype`' : '`')
);
}
$this->addEntries($result, $subentries);
}
}
}
// close tags add TOC link reference
array_push($result, $closeTag, $closeTag, '', ' [1]: #' . $toc . ' "Jump back to the TOC."');
// cleanup whitespace
return trim(preg_replace('/[\t ]+\n/', "\n", join($result, "\n")));
}
}
?>

195
vendor/dojo/LICENSE vendored
View File

@@ -1,195 +0,0 @@
Dojo is available under *either* the terms of the modified BSD license *or* the
Academic Free License version 2.1. As a recipient of Dojo, you may choose which
license to receive this code under (except as noted in per-module LICENSE
files). Some modules may not be the copyright of the Dojo Foundation. These
modules contain explicit declarations of copyright in both the LICENSE files in
the directories in which they reside and in the code itself. No external
contributions are allowed under licenses which are fundamentally incompatible
with the AFL or BSD licenses that Dojo is distributed under.
The text of the AFL and BSD licenses is reproduced below.
-------------------------------------------------------------------------------
The "New" BSD License:
**********************
Copyright (c) 2005-2013, The Dojo Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Dojo Foundation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------------------
The Academic Free License, v. 2.1:
**********************************
This Academic Free License (the "License") applies to any original work of
authorship (the "Original Work") whose owner (the "Licensor") has placed the
following notice immediately following the copyright notice for the Original
Work:
Licensed under the Academic Free License version 2.1
1) Grant of Copyright License. Licensor hereby grants You a world-wide,
royalty-free, non-exclusive, perpetual, sublicenseable license to do the
following:
a) to reproduce the Original Work in copies;
b) to prepare derivative works ("Derivative Works") based upon the Original
Work;
c) to distribute copies of the Original Work and Derivative Works to the
public;
d) to perform the Original Work publicly; and
e) to display the Original Work publicly.
2) Grant of Patent License. Licensor hereby grants You a world-wide,
royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
claims owned or controlled by the Licensor that are embodied in the Original
Work as furnished by the Licensor, to make, use, sell and offer for sale the
Original Work and Derivative Works.
3) Grant of Source Code License. The term "Source Code" means the preferred
form of the Original Work for making modifications to it and all available
documentation describing how to modify the Original Work. Licensor hereby
agrees to provide a machine-readable copy of the Source Code of the Original
Work along with each copy of the Original Work that Licensor distributes.
Licensor reserves the right to satisfy this obligation by placing a
machine-readable copy of the Source Code in an information repository
reasonably calculated to permit inexpensive and convenient access by You for as
long as Licensor continues to distribute the Original Work, and by publishing
the address of that information repository in a notice immediately following
the copyright notice that applies to the Original Work.
4) Exclusions From License Grant. Neither the names of Licensor, nor the names
of any contributors to the Original Work, nor any of their trademarks or
service marks, may be used to endorse or promote products derived from this
Original Work without express prior written permission of the Licensor. Nothing
in this License shall be deemed to grant any rights to trademarks, copyrights,
patents, trade secrets or any other intellectual property of Licensor except as
expressly stated herein. No patent license is granted to make, use, sell or
offer to sell embodiments of any patent claims other than the licensed claims
defined in Section 2. No right is granted to the trademarks of Licensor even if
such marks are included in the Original Work. Nothing in this License shall be
interpreted to prohibit Licensor from licensing under different terms from this
License any Original Work that Licensor otherwise would have a right to
license.
5) This section intentionally omitted.
6) Attribution Rights. You must retain, in the Source Code of any Derivative
Works that You create, all copyright, patent or trademark notices from the
Source Code of the Original Work, as well as any notices of licensing and any
descriptive text identified therein as an "Attribution Notice." You must cause
the Source Code for any Derivative Works that You create to carry a prominent
Attribution Notice reasonably calculated to inform recipients that You have
modified the Original Work.
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
the copyright in and to the Original Work and the patent rights granted herein
by Licensor are owned by the Licensor or are sublicensed to You under the terms
of this License with the permission of the contributor(s) of those copyrights
and patent rights. Except as expressly stated in the immediately proceeding
sentence, the Original Work is provided under this License on an "AS IS" BASIS
and WITHOUT WARRANTY, either express or implied, including, without limitation,
the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
license to Original Work is granted hereunder except under this disclaimer.
8) Limitation of Liability. Under no circumstances and under no legal theory,
whether in tort (including negligence), contract, or otherwise, shall the
Licensor be liable to any person for any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License
or the use of the Original Work including, without limitation, damages for loss
of goodwill, work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses. This limitation of liability shall not
apply to liability for death or personal injury resulting from Licensor's
negligence to the extent applicable law prohibits such limitation. Some
jurisdictions do not allow the exclusion or limitation of incidental or
consequential damages, so this exclusion and limitation may not apply to You.
9) Acceptance and Termination. If You distribute copies of the Original Work or
a Derivative Work, You must make a reasonable effort under the circumstances to
obtain the express assent of recipients to the terms of this License. Nothing
else but this License (or another written agreement between Licensor and You)
grants You permission to create Derivative Works based upon the Original Work
or to exercise any of the rights granted in Section 1 herein, and any attempt
to do so except under the terms of this License (or another written agreement
between Licensor and You) is expressly prohibited by U.S. copyright law, the
equivalent laws of other countries, and by international treaty. Therefore, by
exercising any of the rights granted to You in Section 1 herein, You indicate
Your acceptance of this License and all of its terms and conditions.
10) Termination for Patent Action. This License shall terminate automatically
and You may no longer exercise any of the rights granted to You by this License
as of the date You commence an action, including a cross-claim or counterclaim,
against Licensor or any licensee alleging that the Original Work infringes a
patent. This termination provision shall not apply for an action alleging
patent infringement by combinations of the Original Work with other software or
hardware.
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
License may be brought only in the courts of a jurisdiction wherein the
Licensor resides or in which Licensor conducts its primary business, and under
the laws of that jurisdiction excluding its conflict-of-law provisions. The
application of the United Nations Convention on Contracts for the International
Sale of Goods is expressly excluded. Any use of the Original Work outside the
scope of this License or after its termination shall be subject to the
requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et
seq., the equivalent laws of other countries, and international treaty. This
section shall survive the termination of this License.
12) Attorneys Fees. In any action to enforce the terms of this License or
seeking damages relating thereto, the prevailing party shall be entitled to
recover its costs and expenses, including, without limitation, reasonable
attorneys' fees and costs incurred in connection with such action, including
any appeal of such action. This section shall survive the termination of this
License.
13) Miscellaneous. This License represents the complete agreement concerning
the subject matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent necessary to
make it enforceable.
14) Definition of "You" in This License. "You" throughout this License, whether
in upper or lower case, means an individual or a legal entity exercising rights
under, and complying with all of the terms of, this License. For legal
entities, "You" includes any entity that controls, is controlled by, or is
under common control with you. For purposes of this definition, "control" means
(i) the power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent
(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
entity.
15) Right to Use. You may use the Original Work in all ways not otherwise
restricted or conditioned by this License or by law, and Licensor promises not
to interfere with or be responsible for such uses by You.
This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved.
Permission is hereby granted to copy and distribute this license without
modification. This license may not be modified without the express written
permission of its copyright owner.

1997
vendor/dojo/dojo.js vendored

File diff suppressed because it is too large Load Diff

0
vendor/firebug-lite/license.txt vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/blank.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

0
vendor/firebug-lite/skin/xp/buttonBg.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 167 B

Some files were not shown because too many files have changed in this diff Show More