@kineviz/lodash 4.17.21 → 4.17.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1051) hide show
  1. package/LICENSE +47 -47
  2. package/README.md +39 -39
  3. package/_DataView.js +7 -7
  4. package/_Hash.js +32 -32
  5. package/_LazyWrapper.js +28 -28
  6. package/_ListCache.js +32 -32
  7. package/_LodashWrapper.js +22 -22
  8. package/_Map.js +7 -7
  9. package/_MapCache.js +32 -32
  10. package/_Promise.js +7 -7
  11. package/_Set.js +7 -7
  12. package/_SetCache.js +27 -27
  13. package/_Stack.js +27 -27
  14. package/_Symbol.js +6 -6
  15. package/_Uint8Array.js +6 -6
  16. package/_WeakMap.js +7 -7
  17. package/_apply.js +21 -21
  18. package/_arrayAggregator.js +22 -22
  19. package/_arrayEach.js +22 -22
  20. package/_arrayEachRight.js +21 -21
  21. package/_arrayEvery.js +23 -23
  22. package/_arrayFilter.js +25 -25
  23. package/_arrayIncludes.js +17 -17
  24. package/_arrayIncludesWith.js +22 -22
  25. package/_arrayLikeKeys.js +49 -49
  26. package/_arrayMap.js +21 -21
  27. package/_arrayPush.js +20 -20
  28. package/_arrayReduce.js +26 -26
  29. package/_arrayReduceRight.js +24 -24
  30. package/_arraySample.js +15 -15
  31. package/_arraySampleSize.js +17 -17
  32. package/_arrayShuffle.js +15 -15
  33. package/_arraySome.js +23 -23
  34. package/_asciiSize.js +12 -12
  35. package/_asciiToArray.js +12 -12
  36. package/_asciiWords.js +15 -15
  37. package/_assignMergeValue.js +20 -20
  38. package/_assignValue.js +28 -28
  39. package/_assocIndexOf.js +21 -21
  40. package/_baseAggregator.js +21 -21
  41. package/_baseAssign.js +17 -17
  42. package/_baseAssignIn.js +17 -17
  43. package/_baseAssignValue.js +25 -25
  44. package/_baseAt.js +23 -23
  45. package/_baseClamp.js +22 -22
  46. package/_baseClone.js +166 -166
  47. package/_baseConforms.js +18 -18
  48. package/_baseConformsTo.js +27 -27
  49. package/_baseCreate.js +30 -30
  50. package/_baseDelay.js +21 -21
  51. package/_baseDifference.js +67 -67
  52. package/_baseEach.js +14 -14
  53. package/_baseEachRight.js +14 -14
  54. package/_baseEvery.js +21 -21
  55. package/_baseExtremum.js +32 -32
  56. package/_baseFill.js +32 -32
  57. package/_baseFilter.js +21 -21
  58. package/_baseFindIndex.js +24 -24
  59. package/_baseFindKey.js +23 -23
  60. package/_baseFlatten.js +38 -38
  61. package/_baseFor.js +16 -16
  62. package/_baseForOwn.js +16 -16
  63. package/_baseForOwnRight.js +16 -16
  64. package/_baseForRight.js +15 -15
  65. package/_baseFunctions.js +19 -19
  66. package/_baseGet.js +24 -24
  67. package/_baseGetAllKeys.js +20 -20
  68. package/_baseGetTag.js +28 -28
  69. package/_baseGt.js +14 -14
  70. package/_baseHas.js +19 -19
  71. package/_baseHasIn.js +13 -13
  72. package/_baseInRange.js +18 -18
  73. package/_baseIndexOf.js +20 -20
  74. package/_baseIndexOfWith.js +23 -23
  75. package/_baseIntersection.js +74 -74
  76. package/_baseInverter.js +21 -21
  77. package/_baseInvoke.js +24 -24
  78. package/_baseIsArguments.js +18 -18
  79. package/_baseIsArrayBuffer.js +17 -17
  80. package/_baseIsDate.js +18 -18
  81. package/_baseIsEqual.js +28 -28
  82. package/_baseIsEqualDeep.js +83 -83
  83. package/_baseIsMap.js +18 -18
  84. package/_baseIsMatch.js +62 -62
  85. package/_baseIsNaN.js +12 -12
  86. package/_baseIsNative.js +47 -47
  87. package/_baseIsRegExp.js +18 -18
  88. package/_baseIsSet.js +18 -18
  89. package/_baseIsTypedArray.js +60 -60
  90. package/_baseIteratee.js +31 -31
  91. package/_baseKeys.js +30 -30
  92. package/_baseKeysIn.js +33 -33
  93. package/_baseLodash.js +10 -10
  94. package/_baseLt.js +14 -14
  95. package/_baseMap.js +22 -22
  96. package/_baseMatches.js +22 -22
  97. package/_baseMatchesProperty.js +33 -33
  98. package/_baseMean.js +20 -20
  99. package/_baseMerge.js +42 -42
  100. package/_baseMergeDeep.js +94 -94
  101. package/_baseNth.js +20 -20
  102. package/_baseOrderBy.js +49 -49
  103. package/_basePick.js +19 -19
  104. package/_basePickBy.js +30 -30
  105. package/_baseProperty.js +14 -14
  106. package/_basePropertyDeep.js +16 -16
  107. package/_basePropertyOf.js +14 -14
  108. package/_basePullAll.js +51 -51
  109. package/_basePullAt.js +37 -37
  110. package/_baseRandom.js +18 -18
  111. package/_baseRange.js +28 -28
  112. package/_baseReduce.js +23 -23
  113. package/_baseRepeat.js +35 -35
  114. package/_baseRest.js +17 -17
  115. package/_baseSample.js +15 -15
  116. package/_baseSampleSize.js +18 -18
  117. package/_baseSet.js +51 -51
  118. package/_baseSetData.js +17 -17
  119. package/_baseSetToString.js +22 -22
  120. package/_baseShuffle.js +15 -15
  121. package/_baseSlice.js +31 -31
  122. package/_baseSome.js +22 -22
  123. package/_baseSortBy.js +21 -21
  124. package/_baseSortedIndex.js +42 -42
  125. package/_baseSortedIndexBy.js +67 -67
  126. package/_baseSortedUniq.js +30 -30
  127. package/_baseSum.js +24 -24
  128. package/_baseTimes.js +20 -20
  129. package/_baseToNumber.js +24 -24
  130. package/_baseToPairs.js +18 -18
  131. package/_baseToString.js +37 -37
  132. package/_baseTrim.js +19 -19
  133. package/_baseUnary.js +14 -14
  134. package/_baseUniq.js +72 -72
  135. package/_baseUnset.js +65 -20
  136. package/_baseUpdate.js +18 -18
  137. package/_baseValues.js +19 -19
  138. package/_baseWhile.js +26 -26
  139. package/_baseWrapperValue.js +25 -25
  140. package/_baseXor.js +36 -36
  141. package/_baseZipObject.js +23 -23
  142. package/_cacheHas.js +13 -13
  143. package/_castArrayLikeObject.js +14 -14
  144. package/_castFunction.js +14 -14
  145. package/_castPath.js +21 -21
  146. package/_castRest.js +14 -14
  147. package/_castSlice.js +18 -18
  148. package/_charsEndIndex.js +19 -19
  149. package/_charsStartIndex.js +20 -20
  150. package/_cloneArrayBuffer.js +16 -16
  151. package/_cloneBuffer.js +35 -35
  152. package/_cloneDataView.js +16 -16
  153. package/_cloneRegExp.js +17 -17
  154. package/_cloneSymbol.js +18 -18
  155. package/_cloneTypedArray.js +16 -16
  156. package/_compareAscending.js +41 -41
  157. package/_compareMultiple.js +44 -44
  158. package/_composeArgs.js +39 -39
  159. package/_composeArgsRight.js +41 -41
  160. package/_copyArray.js +20 -20
  161. package/_copyObject.js +40 -40
  162. package/_copySymbols.js +16 -16
  163. package/_copySymbolsIn.js +16 -16
  164. package/_coreJsData.js +6 -6
  165. package/_countHolders.js +21 -21
  166. package/_createAggregator.js +23 -23
  167. package/_createAssigner.js +37 -37
  168. package/_createBaseEach.js +32 -32
  169. package/_createBaseFor.js +25 -25
  170. package/_createBind.js +28 -28
  171. package/_createCaseFirst.js +33 -33
  172. package/_createCompounder.js +24 -24
  173. package/_createCtor.js +37 -37
  174. package/_createCurry.js +46 -46
  175. package/_createFind.js +25 -25
  176. package/_createFlow.js +78 -78
  177. package/_createHybrid.js +92 -92
  178. package/_createInverter.js +17 -17
  179. package/_createMathOperation.js +38 -38
  180. package/_createOver.js +27 -27
  181. package/_createPadding.js +33 -33
  182. package/_createPartial.js +43 -43
  183. package/_createRange.js +30 -30
  184. package/_createRecurry.js +56 -56
  185. package/_createRelationalOperation.js +20 -20
  186. package/_createRound.js +35 -35
  187. package/_createSet.js +19 -19
  188. package/_createToPairs.js +30 -30
  189. package/_createWrap.js +106 -106
  190. package/_customDefaultsAssignIn.js +29 -29
  191. package/_customDefaultsMerge.js +28 -28
  192. package/_customOmitClone.js +16 -16
  193. package/_deburrLetter.js +71 -71
  194. package/_defineProperty.js +11 -11
  195. package/_equalArrays.js +84 -84
  196. package/_equalByTag.js +112 -112
  197. package/_equalObjects.js +90 -90
  198. package/_escapeHtmlChar.js +21 -21
  199. package/_escapeStringChar.js +22 -22
  200. package/_flatRest.js +16 -16
  201. package/_freeGlobal.js +4 -4
  202. package/_getAllKeys.js +16 -16
  203. package/_getAllKeysIn.js +17 -17
  204. package/_getData.js +15 -15
  205. package/_getFuncName.js +31 -31
  206. package/_getHolder.js +13 -13
  207. package/_getMapData.js +18 -18
  208. package/_getMatchData.js +24 -24
  209. package/_getNative.js +17 -17
  210. package/_getPrototype.js +6 -6
  211. package/_getRawTag.js +46 -46
  212. package/_getSymbols.js +30 -30
  213. package/_getSymbolsIn.js +25 -25
  214. package/_getTag.js +58 -58
  215. package/_getValue.js +13 -13
  216. package/_getView.js +33 -33
  217. package/_getWrapDetails.js +17 -17
  218. package/_hasPath.js +39 -39
  219. package/_hasUnicode.js +26 -26
  220. package/_hasUnicodeWord.js +15 -15
  221. package/_hashClear.js +15 -15
  222. package/_hashDelete.js +17 -17
  223. package/_hashGet.js +30 -30
  224. package/_hashHas.js +23 -23
  225. package/_hashSet.js +23 -23
  226. package/_initCloneArray.js +26 -26
  227. package/_initCloneByTag.js +77 -77
  228. package/_initCloneObject.js +18 -18
  229. package/_insertWrapDetails.js +23 -23
  230. package/_isFlattenable.js +20 -20
  231. package/_isIndex.js +25 -25
  232. package/_isIterateeCall.js +30 -30
  233. package/_isKey.js +29 -29
  234. package/_isKeyable.js +15 -15
  235. package/_isLaziable.js +28 -28
  236. package/_isMaskable.js +14 -14
  237. package/_isMasked.js +20 -20
  238. package/_isPrototype.js +18 -18
  239. package/_isStrictComparable.js +15 -15
  240. package/_iteratorToArray.js +18 -18
  241. package/_lazyClone.js +23 -23
  242. package/_lazyReverse.js +23 -23
  243. package/_lazyValue.js +69 -69
  244. package/_listCacheClear.js +13 -13
  245. package/_listCacheDelete.js +35 -35
  246. package/_listCacheGet.js +19 -19
  247. package/_listCacheHas.js +16 -16
  248. package/_listCacheSet.js +26 -26
  249. package/_mapCacheClear.js +21 -21
  250. package/_mapCacheDelete.js +18 -18
  251. package/_mapCacheGet.js +16 -16
  252. package/_mapCacheHas.js +16 -16
  253. package/_mapCacheSet.js +22 -22
  254. package/_mapToArray.js +18 -18
  255. package/_matchesStrictComparable.js +20 -20
  256. package/_memoizeCapped.js +26 -26
  257. package/_mergeData.js +90 -90
  258. package/_metaMap.js +6 -6
  259. package/_nativeCreate.js +6 -6
  260. package/_nativeKeys.js +6 -6
  261. package/_nativeKeysIn.js +20 -20
  262. package/_nodeUtil.js +30 -30
  263. package/_objectToString.js +22 -22
  264. package/_overArg.js +15 -15
  265. package/_overRest.js +36 -36
  266. package/_parent.js +16 -16
  267. package/_reEscape.js +4 -4
  268. package/_reEvaluate.js +4 -4
  269. package/_reInterpolate.js +4 -4
  270. package/_realNames.js +4 -4
  271. package/_reorder.js +29 -29
  272. package/_replaceHolders.js +29 -29
  273. package/_root.js +9 -9
  274. package/_safeGet.js +21 -21
  275. package/_setCacheAdd.js +19 -19
  276. package/_setCacheHas.js +14 -14
  277. package/_setData.js +20 -20
  278. package/_setToArray.js +18 -18
  279. package/_setToPairs.js +18 -18
  280. package/_setToString.js +14 -14
  281. package/_setWrapToString.js +21 -21
  282. package/_shortOut.js +37 -37
  283. package/_shuffleSelf.js +28 -28
  284. package/_stackClear.js +15 -15
  285. package/_stackDelete.js +18 -18
  286. package/_stackGet.js +14 -14
  287. package/_stackHas.js +14 -14
  288. package/_stackSet.js +34 -34
  289. package/_strictIndexOf.js +23 -23
  290. package/_strictLastIndexOf.js +21 -21
  291. package/_stringSize.js +18 -18
  292. package/_stringToArray.js +18 -18
  293. package/_stringToPath.js +27 -27
  294. package/_toKey.js +21 -21
  295. package/_toSource.js +26 -26
  296. package/_trimmedEndIndex.js +19 -19
  297. package/_unescapeHtmlChar.js +21 -21
  298. package/_unicodeSize.js +44 -44
  299. package/_unicodeToArray.js +40 -40
  300. package/_unicodeWords.js +69 -69
  301. package/_updateWrapDetails.js +46 -46
  302. package/_wrapperClone.js +23 -23
  303. package/add.js +22 -22
  304. package/after.js +42 -42
  305. package/array.js +67 -67
  306. package/ary.js +29 -29
  307. package/assign.js +58 -58
  308. package/assignIn.js +40 -40
  309. package/assignInWith.js +38 -38
  310. package/assignWith.js +37 -37
  311. package/at.js +23 -23
  312. package/attempt.js +35 -35
  313. package/before.js +40 -40
  314. package/bind.js +57 -57
  315. package/bindAll.js +41 -41
  316. package/bindKey.js +68 -68
  317. package/camelCase.js +29 -29
  318. package/capitalize.js +23 -23
  319. package/castArray.js +44 -44
  320. package/ceil.js +26 -26
  321. package/chain.js +38 -38
  322. package/chunk.js +50 -50
  323. package/clamp.js +39 -39
  324. package/clone.js +36 -36
  325. package/cloneDeep.js +29 -29
  326. package/cloneDeepWith.js +40 -40
  327. package/cloneWith.js +42 -42
  328. package/collection.js +30 -30
  329. package/commit.js +33 -33
  330. package/compact.js +31 -31
  331. package/concat.js +43 -43
  332. package/cond.js +60 -60
  333. package/conforms.js +35 -35
  334. package/conformsTo.js +32 -32
  335. package/constant.js +26 -26
  336. package/core.js +3877 -3877
  337. package/core.min.js +6 -25
  338. package/countBy.js +40 -40
  339. package/create.js +43 -43
  340. package/curry.js +57 -57
  341. package/curryRight.js +54 -54
  342. package/date.js +3 -3
  343. package/debounce.js +191 -191
  344. package/deburr.js +45 -45
  345. package/defaultTo.js +25 -25
  346. package/defaults.js +64 -64
  347. package/defaultsDeep.js +30 -30
  348. package/defer.js +26 -26
  349. package/delay.js +28 -28
  350. package/difference.js +33 -33
  351. package/differenceBy.js +44 -44
  352. package/differenceWith.js +40 -40
  353. package/divide.js +22 -22
  354. package/drop.js +38 -38
  355. package/dropRight.js +39 -39
  356. package/dropRightWhile.js +45 -45
  357. package/dropWhile.js +45 -45
  358. package/each.js +1 -1
  359. package/eachRight.js +1 -1
  360. package/endsWith.js +43 -43
  361. package/entries.js +1 -1
  362. package/entriesIn.js +1 -1
  363. package/eq.js +37 -37
  364. package/escape.js +43 -43
  365. package/escapeRegExp.js +32 -32
  366. package/every.js +56 -56
  367. package/extend.js +1 -1
  368. package/extendWith.js +1 -1
  369. package/fill.js +45 -45
  370. package/filter.js +52 -52
  371. package/find.js +42 -42
  372. package/findIndex.js +55 -55
  373. package/findKey.js +44 -44
  374. package/findLast.js +25 -25
  375. package/findLastIndex.js +59 -59
  376. package/findLastKey.js +44 -44
  377. package/first.js +1 -1
  378. package/flatMap.js +29 -29
  379. package/flatMapDeep.js +31 -31
  380. package/flatMapDepth.js +31 -31
  381. package/flatten.js +22 -22
  382. package/flattenDeep.js +25 -25
  383. package/flattenDepth.js +33 -33
  384. package/flip.js +28 -28
  385. package/floor.js +26 -26
  386. package/flow.js +27 -27
  387. package/flowRight.js +26 -26
  388. package/forEach.js +41 -41
  389. package/forEachRight.js +31 -31
  390. package/forIn.js +39 -39
  391. package/forInRight.js +37 -37
  392. package/forOwn.js +36 -36
  393. package/forOwnRight.js +34 -34
  394. package/fp/F.js +1 -1
  395. package/fp/T.js +1 -1
  396. package/fp/__.js +1 -1
  397. package/fp/_baseConvert.js +569 -569
  398. package/fp/_convertBrowser.js +18 -18
  399. package/fp/_falseOptions.js +7 -7
  400. package/fp/_mapping.js +358 -358
  401. package/fp/_util.js +16 -16
  402. package/fp/add.js +5 -5
  403. package/fp/after.js +5 -5
  404. package/fp/all.js +1 -1
  405. package/fp/allPass.js +1 -1
  406. package/fp/always.js +1 -1
  407. package/fp/any.js +1 -1
  408. package/fp/anyPass.js +1 -1
  409. package/fp/apply.js +1 -1
  410. package/fp/array.js +2 -2
  411. package/fp/ary.js +5 -5
  412. package/fp/assign.js +5 -5
  413. package/fp/assignAll.js +5 -5
  414. package/fp/assignAllWith.js +5 -5
  415. package/fp/assignIn.js +5 -5
  416. package/fp/assignInAll.js +5 -5
  417. package/fp/assignInAllWith.js +5 -5
  418. package/fp/assignInWith.js +5 -5
  419. package/fp/assignWith.js +5 -5
  420. package/fp/assoc.js +1 -1
  421. package/fp/assocPath.js +1 -1
  422. package/fp/at.js +5 -5
  423. package/fp/attempt.js +5 -5
  424. package/fp/before.js +5 -5
  425. package/fp/bind.js +5 -5
  426. package/fp/bindAll.js +5 -5
  427. package/fp/bindKey.js +5 -5
  428. package/fp/camelCase.js +5 -5
  429. package/fp/capitalize.js +5 -5
  430. package/fp/castArray.js +5 -5
  431. package/fp/ceil.js +5 -5
  432. package/fp/chain.js +5 -5
  433. package/fp/chunk.js +5 -5
  434. package/fp/clamp.js +5 -5
  435. package/fp/clone.js +5 -5
  436. package/fp/cloneDeep.js +5 -5
  437. package/fp/cloneDeepWith.js +5 -5
  438. package/fp/cloneWith.js +5 -5
  439. package/fp/collection.js +2 -2
  440. package/fp/commit.js +5 -5
  441. package/fp/compact.js +5 -5
  442. package/fp/complement.js +1 -1
  443. package/fp/compose.js +1 -1
  444. package/fp/concat.js +5 -5
  445. package/fp/cond.js +5 -5
  446. package/fp/conforms.js +1 -1
  447. package/fp/conformsTo.js +5 -5
  448. package/fp/constant.js +5 -5
  449. package/fp/contains.js +1 -1
  450. package/fp/convert.js +18 -18
  451. package/fp/countBy.js +5 -5
  452. package/fp/create.js +5 -5
  453. package/fp/curry.js +5 -5
  454. package/fp/curryN.js +5 -5
  455. package/fp/curryRight.js +5 -5
  456. package/fp/curryRightN.js +5 -5
  457. package/fp/date.js +2 -2
  458. package/fp/debounce.js +5 -5
  459. package/fp/deburr.js +5 -5
  460. package/fp/defaultTo.js +5 -5
  461. package/fp/defaults.js +5 -5
  462. package/fp/defaultsAll.js +5 -5
  463. package/fp/defaultsDeep.js +5 -5
  464. package/fp/defaultsDeepAll.js +5 -5
  465. package/fp/defer.js +5 -5
  466. package/fp/delay.js +5 -5
  467. package/fp/difference.js +5 -5
  468. package/fp/differenceBy.js +5 -5
  469. package/fp/differenceWith.js +5 -5
  470. package/fp/dissoc.js +1 -1
  471. package/fp/dissocPath.js +1 -1
  472. package/fp/divide.js +5 -5
  473. package/fp/drop.js +5 -5
  474. package/fp/dropLast.js +1 -1
  475. package/fp/dropLastWhile.js +1 -1
  476. package/fp/dropRight.js +5 -5
  477. package/fp/dropRightWhile.js +5 -5
  478. package/fp/dropWhile.js +5 -5
  479. package/fp/each.js +1 -1
  480. package/fp/eachRight.js +1 -1
  481. package/fp/endsWith.js +5 -5
  482. package/fp/entries.js +1 -1
  483. package/fp/entriesIn.js +1 -1
  484. package/fp/eq.js +5 -5
  485. package/fp/equals.js +1 -1
  486. package/fp/escape.js +5 -5
  487. package/fp/escapeRegExp.js +5 -5
  488. package/fp/every.js +5 -5
  489. package/fp/extend.js +1 -1
  490. package/fp/extendAll.js +1 -1
  491. package/fp/extendAllWith.js +1 -1
  492. package/fp/extendWith.js +1 -1
  493. package/fp/fill.js +5 -5
  494. package/fp/filter.js +5 -5
  495. package/fp/find.js +5 -5
  496. package/fp/findFrom.js +5 -5
  497. package/fp/findIndex.js +5 -5
  498. package/fp/findIndexFrom.js +5 -5
  499. package/fp/findKey.js +5 -5
  500. package/fp/findLast.js +5 -5
  501. package/fp/findLastFrom.js +5 -5
  502. package/fp/findLastIndex.js +5 -5
  503. package/fp/findLastIndexFrom.js +5 -5
  504. package/fp/findLastKey.js +5 -5
  505. package/fp/first.js +1 -1
  506. package/fp/flatMap.js +5 -5
  507. package/fp/flatMapDeep.js +5 -5
  508. package/fp/flatMapDepth.js +5 -5
  509. package/fp/flatten.js +5 -5
  510. package/fp/flattenDeep.js +5 -5
  511. package/fp/flattenDepth.js +5 -5
  512. package/fp/flip.js +5 -5
  513. package/fp/floor.js +5 -5
  514. package/fp/flow.js +5 -5
  515. package/fp/flowRight.js +5 -5
  516. package/fp/forEach.js +5 -5
  517. package/fp/forEachRight.js +5 -5
  518. package/fp/forIn.js +5 -5
  519. package/fp/forInRight.js +5 -5
  520. package/fp/forOwn.js +5 -5
  521. package/fp/forOwnRight.js +5 -5
  522. package/fp/fromPairs.js +5 -5
  523. package/fp/function.js +2 -2
  524. package/fp/functions.js +5 -5
  525. package/fp/functionsIn.js +5 -5
  526. package/fp/get.js +5 -5
  527. package/fp/getOr.js +5 -5
  528. package/fp/groupBy.js +5 -5
  529. package/fp/gt.js +5 -5
  530. package/fp/gte.js +5 -5
  531. package/fp/has.js +5 -5
  532. package/fp/hasIn.js +5 -5
  533. package/fp/head.js +5 -5
  534. package/fp/identical.js +1 -1
  535. package/fp/identity.js +5 -5
  536. package/fp/inRange.js +5 -5
  537. package/fp/includes.js +5 -5
  538. package/fp/includesFrom.js +5 -5
  539. package/fp/indexBy.js +1 -1
  540. package/fp/indexOf.js +5 -5
  541. package/fp/indexOfFrom.js +5 -5
  542. package/fp/init.js +1 -1
  543. package/fp/initial.js +5 -5
  544. package/fp/intersection.js +5 -5
  545. package/fp/intersectionBy.js +5 -5
  546. package/fp/intersectionWith.js +5 -5
  547. package/fp/invert.js +5 -5
  548. package/fp/invertBy.js +5 -5
  549. package/fp/invertObj.js +1 -1
  550. package/fp/invoke.js +5 -5
  551. package/fp/invokeArgs.js +5 -5
  552. package/fp/invokeArgsMap.js +5 -5
  553. package/fp/invokeMap.js +5 -5
  554. package/fp/isArguments.js +5 -5
  555. package/fp/isArray.js +5 -5
  556. package/fp/isArrayBuffer.js +5 -5
  557. package/fp/isArrayLike.js +5 -5
  558. package/fp/isArrayLikeObject.js +5 -5
  559. package/fp/isBoolean.js +5 -5
  560. package/fp/isBuffer.js +5 -5
  561. package/fp/isDate.js +5 -5
  562. package/fp/isElement.js +5 -5
  563. package/fp/isEmpty.js +5 -5
  564. package/fp/isEqual.js +5 -5
  565. package/fp/isEqualWith.js +5 -5
  566. package/fp/isError.js +5 -5
  567. package/fp/isFinite.js +5 -5
  568. package/fp/isFunction.js +5 -5
  569. package/fp/isInteger.js +5 -5
  570. package/fp/isLength.js +5 -5
  571. package/fp/isMap.js +5 -5
  572. package/fp/isMatch.js +5 -5
  573. package/fp/isMatchWith.js +5 -5
  574. package/fp/isNaN.js +5 -5
  575. package/fp/isNative.js +5 -5
  576. package/fp/isNil.js +5 -5
  577. package/fp/isNull.js +5 -5
  578. package/fp/isNumber.js +5 -5
  579. package/fp/isObject.js +5 -5
  580. package/fp/isObjectLike.js +5 -5
  581. package/fp/isPlainObject.js +5 -5
  582. package/fp/isRegExp.js +5 -5
  583. package/fp/isSafeInteger.js +5 -5
  584. package/fp/isSet.js +5 -5
  585. package/fp/isString.js +5 -5
  586. package/fp/isSymbol.js +5 -5
  587. package/fp/isTypedArray.js +5 -5
  588. package/fp/isUndefined.js +5 -5
  589. package/fp/isWeakMap.js +5 -5
  590. package/fp/isWeakSet.js +5 -5
  591. package/fp/iteratee.js +5 -5
  592. package/fp/join.js +5 -5
  593. package/fp/juxt.js +1 -1
  594. package/fp/kebabCase.js +5 -5
  595. package/fp/keyBy.js +5 -5
  596. package/fp/keys.js +5 -5
  597. package/fp/keysIn.js +5 -5
  598. package/fp/lang.js +2 -2
  599. package/fp/last.js +5 -5
  600. package/fp/lastIndexOf.js +5 -5
  601. package/fp/lastIndexOfFrom.js +5 -5
  602. package/fp/lowerCase.js +5 -5
  603. package/fp/lowerFirst.js +5 -5
  604. package/fp/lt.js +5 -5
  605. package/fp/lte.js +5 -5
  606. package/fp/map.js +5 -5
  607. package/fp/mapKeys.js +5 -5
  608. package/fp/mapValues.js +5 -5
  609. package/fp/matches.js +1 -1
  610. package/fp/matchesProperty.js +5 -5
  611. package/fp/math.js +2 -2
  612. package/fp/max.js +5 -5
  613. package/fp/maxBy.js +5 -5
  614. package/fp/mean.js +5 -5
  615. package/fp/meanBy.js +5 -5
  616. package/fp/memoize.js +5 -5
  617. package/fp/merge.js +5 -5
  618. package/fp/mergeAll.js +5 -5
  619. package/fp/mergeAllWith.js +5 -5
  620. package/fp/mergeWith.js +5 -5
  621. package/fp/method.js +5 -5
  622. package/fp/methodOf.js +5 -5
  623. package/fp/min.js +5 -5
  624. package/fp/minBy.js +5 -5
  625. package/fp/mixin.js +5 -5
  626. package/fp/multiply.js +5 -5
  627. package/fp/nAry.js +1 -1
  628. package/fp/negate.js +5 -5
  629. package/fp/next.js +5 -5
  630. package/fp/noop.js +5 -5
  631. package/fp/now.js +5 -5
  632. package/fp/nth.js +5 -5
  633. package/fp/nthArg.js +5 -5
  634. package/fp/number.js +2 -2
  635. package/fp/object.js +2 -2
  636. package/fp/omit.js +5 -5
  637. package/fp/omitAll.js +1 -1
  638. package/fp/omitBy.js +5 -5
  639. package/fp/once.js +5 -5
  640. package/fp/orderBy.js +5 -5
  641. package/fp/over.js +5 -5
  642. package/fp/overArgs.js +5 -5
  643. package/fp/overEvery.js +5 -5
  644. package/fp/overSome.js +5 -5
  645. package/fp/pad.js +5 -5
  646. package/fp/padChars.js +5 -5
  647. package/fp/padCharsEnd.js +5 -5
  648. package/fp/padCharsStart.js +5 -5
  649. package/fp/padEnd.js +5 -5
  650. package/fp/padStart.js +5 -5
  651. package/fp/parseInt.js +5 -5
  652. package/fp/partial.js +5 -5
  653. package/fp/partialRight.js +5 -5
  654. package/fp/partition.js +5 -5
  655. package/fp/path.js +1 -1
  656. package/fp/pathEq.js +1 -1
  657. package/fp/pathOr.js +1 -1
  658. package/fp/paths.js +1 -1
  659. package/fp/pick.js +5 -5
  660. package/fp/pickAll.js +1 -1
  661. package/fp/pickBy.js +5 -5
  662. package/fp/pipe.js +1 -1
  663. package/fp/placeholder.js +6 -6
  664. package/fp/plant.js +5 -5
  665. package/fp/pluck.js +1 -1
  666. package/fp/prop.js +1 -1
  667. package/fp/propEq.js +1 -1
  668. package/fp/propOr.js +1 -1
  669. package/fp/property.js +1 -1
  670. package/fp/propertyOf.js +5 -5
  671. package/fp/props.js +1 -1
  672. package/fp/pull.js +5 -5
  673. package/fp/pullAll.js +5 -5
  674. package/fp/pullAllBy.js +5 -5
  675. package/fp/pullAllWith.js +5 -5
  676. package/fp/pullAt.js +5 -5
  677. package/fp/random.js +5 -5
  678. package/fp/range.js +5 -5
  679. package/fp/rangeRight.js +5 -5
  680. package/fp/rangeStep.js +5 -5
  681. package/fp/rangeStepRight.js +5 -5
  682. package/fp/rearg.js +5 -5
  683. package/fp/reduce.js +5 -5
  684. package/fp/reduceRight.js +5 -5
  685. package/fp/reject.js +5 -5
  686. package/fp/remove.js +5 -5
  687. package/fp/repeat.js +5 -5
  688. package/fp/replace.js +5 -5
  689. package/fp/rest.js +5 -5
  690. package/fp/restFrom.js +5 -5
  691. package/fp/result.js +5 -5
  692. package/fp/reverse.js +5 -5
  693. package/fp/round.js +5 -5
  694. package/fp/sample.js +5 -5
  695. package/fp/sampleSize.js +5 -5
  696. package/fp/seq.js +2 -2
  697. package/fp/set.js +5 -5
  698. package/fp/setWith.js +5 -5
  699. package/fp/shuffle.js +5 -5
  700. package/fp/size.js +5 -5
  701. package/fp/slice.js +5 -5
  702. package/fp/snakeCase.js +5 -5
  703. package/fp/some.js +5 -5
  704. package/fp/sortBy.js +5 -5
  705. package/fp/sortedIndex.js +5 -5
  706. package/fp/sortedIndexBy.js +5 -5
  707. package/fp/sortedIndexOf.js +5 -5
  708. package/fp/sortedLastIndex.js +5 -5
  709. package/fp/sortedLastIndexBy.js +5 -5
  710. package/fp/sortedLastIndexOf.js +5 -5
  711. package/fp/sortedUniq.js +5 -5
  712. package/fp/sortedUniqBy.js +5 -5
  713. package/fp/split.js +5 -5
  714. package/fp/spread.js +5 -5
  715. package/fp/spreadFrom.js +5 -5
  716. package/fp/startCase.js +5 -5
  717. package/fp/startsWith.js +5 -5
  718. package/fp/string.js +2 -2
  719. package/fp/stubArray.js +5 -5
  720. package/fp/stubFalse.js +5 -5
  721. package/fp/stubObject.js +5 -5
  722. package/fp/stubString.js +5 -5
  723. package/fp/stubTrue.js +5 -5
  724. package/fp/subtract.js +5 -5
  725. package/fp/sum.js +5 -5
  726. package/fp/sumBy.js +5 -5
  727. package/fp/symmetricDifference.js +1 -1
  728. package/fp/symmetricDifferenceBy.js +1 -1
  729. package/fp/symmetricDifferenceWith.js +1 -1
  730. package/fp/tail.js +5 -5
  731. package/fp/take.js +5 -5
  732. package/fp/takeLast.js +1 -1
  733. package/fp/takeLastWhile.js +1 -1
  734. package/fp/takeRight.js +5 -5
  735. package/fp/takeRightWhile.js +5 -5
  736. package/fp/takeWhile.js +5 -5
  737. package/fp/tap.js +5 -5
  738. package/fp/template.js +5 -5
  739. package/fp/templateSettings.js +5 -5
  740. package/fp/throttle.js +5 -5
  741. package/fp/thru.js +5 -5
  742. package/fp/times.js +5 -5
  743. package/fp/toArray.js +5 -5
  744. package/fp/toFinite.js +5 -5
  745. package/fp/toInteger.js +5 -5
  746. package/fp/toIterator.js +5 -5
  747. package/fp/toJSON.js +5 -5
  748. package/fp/toLength.js +5 -5
  749. package/fp/toLower.js +5 -5
  750. package/fp/toNumber.js +5 -5
  751. package/fp/toPairs.js +5 -5
  752. package/fp/toPairsIn.js +5 -5
  753. package/fp/toPath.js +5 -5
  754. package/fp/toPlainObject.js +5 -5
  755. package/fp/toSafeInteger.js +5 -5
  756. package/fp/toString.js +5 -5
  757. package/fp/toUpper.js +5 -5
  758. package/fp/transform.js +5 -5
  759. package/fp/trim.js +5 -5
  760. package/fp/trimChars.js +5 -5
  761. package/fp/trimCharsEnd.js +5 -5
  762. package/fp/trimCharsStart.js +5 -5
  763. package/fp/trimEnd.js +5 -5
  764. package/fp/trimStart.js +5 -5
  765. package/fp/truncate.js +5 -5
  766. package/fp/unapply.js +1 -1
  767. package/fp/unary.js +5 -5
  768. package/fp/unescape.js +5 -5
  769. package/fp/union.js +5 -5
  770. package/fp/unionBy.js +5 -5
  771. package/fp/unionWith.js +5 -5
  772. package/fp/uniq.js +5 -5
  773. package/fp/uniqBy.js +5 -5
  774. package/fp/uniqWith.js +5 -5
  775. package/fp/uniqueId.js +5 -5
  776. package/fp/unnest.js +1 -1
  777. package/fp/unset.js +5 -5
  778. package/fp/unzip.js +5 -5
  779. package/fp/unzipWith.js +5 -5
  780. package/fp/update.js +5 -5
  781. package/fp/updateWith.js +5 -5
  782. package/fp/upperCase.js +5 -5
  783. package/fp/upperFirst.js +5 -5
  784. package/fp/useWith.js +1 -1
  785. package/fp/util.js +2 -2
  786. package/fp/value.js +5 -5
  787. package/fp/valueOf.js +5 -5
  788. package/fp/values.js +5 -5
  789. package/fp/valuesIn.js +5 -5
  790. package/fp/where.js +1 -1
  791. package/fp/whereEq.js +1 -1
  792. package/fp/without.js +5 -5
  793. package/fp/words.js +5 -5
  794. package/fp/wrap.js +5 -5
  795. package/fp/wrapperAt.js +5 -5
  796. package/fp/wrapperChain.js +5 -5
  797. package/fp/wrapperLodash.js +5 -5
  798. package/fp/wrapperReverse.js +5 -5
  799. package/fp/wrapperValue.js +5 -5
  800. package/fp/xor.js +5 -5
  801. package/fp/xorBy.js +5 -5
  802. package/fp/xorWith.js +5 -5
  803. package/fp/zip.js +5 -5
  804. package/fp/zipAll.js +5 -5
  805. package/fp/zipObj.js +1 -1
  806. package/fp/zipObject.js +5 -5
  807. package/fp/zipObjectDeep.js +5 -5
  808. package/fp/zipWith.js +5 -5
  809. package/fp.js +2 -2
  810. package/fromPairs.js +28 -28
  811. package/function.js +25 -25
  812. package/functions.js +31 -31
  813. package/functionsIn.js +31 -31
  814. package/get.js +33 -33
  815. package/groupBy.js +41 -41
  816. package/gt.js +29 -29
  817. package/gte.js +30 -30
  818. package/has.js +35 -35
  819. package/hasIn.js +34 -34
  820. package/head.js +23 -23
  821. package/identity.js +21 -21
  822. package/inRange.js +55 -55
  823. package/includes.js +53 -53
  824. package/indexOf.js +42 -42
  825. package/initial.js +22 -22
  826. package/intersection.js +30 -30
  827. package/intersectionBy.js +45 -45
  828. package/intersectionWith.js +41 -41
  829. package/invert.js +42 -42
  830. package/invertBy.js +56 -56
  831. package/invoke.js +24 -24
  832. package/invokeMap.js +41 -41
  833. package/isArguments.js +36 -36
  834. package/isArray.js +26 -26
  835. package/isArrayBuffer.js +27 -27
  836. package/isArrayLike.js +33 -33
  837. package/isArrayLikeObject.js +33 -33
  838. package/isBoolean.js +29 -29
  839. package/isBuffer.js +38 -38
  840. package/isDate.js +27 -27
  841. package/isElement.js +25 -25
  842. package/isEmpty.js +77 -77
  843. package/isEqual.js +35 -35
  844. package/isEqualWith.js +41 -41
  845. package/isError.js +36 -36
  846. package/isFinite.js +36 -36
  847. package/isFunction.js +37 -37
  848. package/isInteger.js +33 -33
  849. package/isLength.js +35 -35
  850. package/isMap.js +27 -27
  851. package/isMatch.js +36 -36
  852. package/isMatchWith.js +41 -41
  853. package/isNaN.js +38 -38
  854. package/isNative.js +40 -40
  855. package/isNil.js +25 -25
  856. package/isNull.js +22 -22
  857. package/isNumber.js +38 -38
  858. package/isObject.js +31 -31
  859. package/isObjectLike.js +29 -29
  860. package/isPlainObject.js +62 -62
  861. package/isRegExp.js +27 -27
  862. package/isSafeInteger.js +37 -37
  863. package/isSet.js +27 -27
  864. package/isString.js +30 -30
  865. package/isSymbol.js +29 -29
  866. package/isTypedArray.js +27 -27
  867. package/isUndefined.js +22 -22
  868. package/isWeakMap.js +28 -28
  869. package/isWeakSet.js +28 -28
  870. package/iteratee.js +53 -53
  871. package/join.js +26 -26
  872. package/kebabCase.js +28 -28
  873. package/keyBy.js +36 -36
  874. package/keys.js +37 -37
  875. package/keysIn.js +32 -32
  876. package/lang.js +58 -58
  877. package/last.js +20 -20
  878. package/lastIndexOf.js +46 -46
  879. package/lodash.js +17248 -17209
  880. package/lodash.min.js +6 -135
  881. package/lowerCase.js +27 -27
  882. package/lowerFirst.js +22 -22
  883. package/lt.js +29 -29
  884. package/lte.js +30 -30
  885. package/map.js +53 -53
  886. package/mapKeys.js +36 -36
  887. package/mapValues.js +43 -43
  888. package/matches.js +46 -46
  889. package/matchesProperty.js +44 -44
  890. package/math.js +17 -17
  891. package/max.js +29 -29
  892. package/maxBy.js +34 -34
  893. package/mean.js +22 -22
  894. package/meanBy.js +31 -31
  895. package/memoize.js +73 -73
  896. package/merge.js +39 -39
  897. package/mergeWith.js +39 -39
  898. package/method.js +34 -34
  899. package/methodOf.js +33 -33
  900. package/min.js +29 -29
  901. package/minBy.js +34 -34
  902. package/mixin.js +74 -74
  903. package/multiply.js +22 -22
  904. package/negate.js +40 -40
  905. package/next.js +35 -35
  906. package/noop.js +17 -17
  907. package/now.js +23 -23
  908. package/nth.js +29 -29
  909. package/nthArg.js +32 -32
  910. package/number.js +5 -5
  911. package/object.js +49 -49
  912. package/omit.js +57 -57
  913. package/omitBy.js +29 -29
  914. package/once.js +25 -25
  915. package/orderBy.js +47 -47
  916. package/over.js +24 -24
  917. package/overArgs.js +61 -61
  918. package/overEvery.js +34 -34
  919. package/overSome.js +37 -37
  920. package/package.json +30 -27
  921. package/pad.js +49 -49
  922. package/padEnd.js +39 -39
  923. package/padStart.js +39 -39
  924. package/parseInt.js +43 -43
  925. package/partial.js +50 -50
  926. package/partialRight.js +49 -49
  927. package/partition.js +43 -43
  928. package/pick.js +25 -25
  929. package/pickBy.js +37 -37
  930. package/plant.js +48 -48
  931. package/property.js +32 -32
  932. package/propertyOf.js +30 -30
  933. package/pull.js +29 -29
  934. package/pullAll.js +29 -29
  935. package/pullAllBy.js +33 -33
  936. package/pullAllWith.js +32 -32
  937. package/pullAt.js +43 -43
  938. package/random.js +82 -82
  939. package/range.js +46 -46
  940. package/rangeRight.js +41 -41
  941. package/rearg.js +33 -33
  942. package/reduce.js +51 -51
  943. package/reduceRight.js +36 -36
  944. package/reject.js +46 -46
  945. package/remove.js +53 -53
  946. package/repeat.js +37 -37
  947. package/replace.js +29 -29
  948. package/rest.js +40 -40
  949. package/result.js +56 -56
  950. package/reverse.js +34 -34
  951. package/round.js +26 -26
  952. package/sample.js +24 -24
  953. package/sampleSize.js +37 -37
  954. package/seq.js +16 -16
  955. package/set.js +35 -35
  956. package/setWith.js +32 -32
  957. package/shuffle.js +25 -25
  958. package/size.js +46 -46
  959. package/slice.js +37 -37
  960. package/snakeCase.js +28 -28
  961. package/some.js +51 -51
  962. package/sortBy.js +48 -48
  963. package/sortedIndex.js +24 -24
  964. package/sortedIndexBy.js +33 -33
  965. package/sortedIndexOf.js +31 -31
  966. package/sortedLastIndex.js +25 -25
  967. package/sortedLastIndexBy.js +33 -33
  968. package/sortedLastIndexOf.js +31 -31
  969. package/sortedUniq.js +24 -24
  970. package/sortedUniqBy.js +26 -26
  971. package/split.js +52 -52
  972. package/spread.js +63 -63
  973. package/startCase.js +29 -29
  974. package/startsWith.js +39 -39
  975. package/string.js +33 -33
  976. package/stubArray.js +23 -23
  977. package/stubFalse.js +18 -18
  978. package/stubObject.js +23 -23
  979. package/stubString.js +18 -18
  980. package/stubTrue.js +18 -18
  981. package/subtract.js +22 -22
  982. package/sum.js +24 -24
  983. package/sumBy.js +33 -33
  984. package/tail.js +22 -22
  985. package/take.js +37 -37
  986. package/takeRight.js +39 -39
  987. package/takeRightWhile.js +45 -45
  988. package/takeWhile.js +45 -45
  989. package/tap.js +29 -29
  990. package/template.js +272 -272
  991. package/templateSettings.js +67 -67
  992. package/throttle.js +69 -69
  993. package/thru.js +28 -28
  994. package/times.js +51 -51
  995. package/toArray.js +58 -58
  996. package/toFinite.js +42 -42
  997. package/toInteger.js +36 -36
  998. package/toIterator.js +23 -23
  999. package/toJSON.js +1 -1
  1000. package/toLength.js +38 -38
  1001. package/toLower.js +28 -28
  1002. package/toNumber.js +64 -64
  1003. package/toPairs.js +30 -30
  1004. package/toPairsIn.js +30 -30
  1005. package/toPath.js +33 -33
  1006. package/toPlainObject.js +32 -32
  1007. package/toSafeInteger.js +37 -37
  1008. package/toString.js +28 -28
  1009. package/toUpper.js +28 -28
  1010. package/transform.js +65 -65
  1011. package/trim.js +47 -47
  1012. package/trimEnd.js +41 -41
  1013. package/trimStart.js +43 -43
  1014. package/truncate.js +111 -111
  1015. package/unary.js +22 -22
  1016. package/unescape.js +34 -34
  1017. package/union.js +26 -26
  1018. package/unionBy.js +39 -39
  1019. package/unionWith.js +34 -34
  1020. package/uniq.js +25 -25
  1021. package/uniqBy.js +31 -31
  1022. package/uniqWith.js +28 -28
  1023. package/uniqueId.js +28 -28
  1024. package/unset.js +34 -34
  1025. package/unzip.js +45 -45
  1026. package/unzipWith.js +39 -39
  1027. package/update.js +35 -35
  1028. package/updateWith.js +33 -33
  1029. package/upperCase.js +27 -27
  1030. package/upperFirst.js +22 -22
  1031. package/util.js +34 -34
  1032. package/value.js +1 -1
  1033. package/valueOf.js +1 -1
  1034. package/values.js +34 -34
  1035. package/valuesIn.js +32 -32
  1036. package/without.js +31 -31
  1037. package/words.js +35 -35
  1038. package/wrap.js +30 -30
  1039. package/wrapperAt.js +48 -48
  1040. package/wrapperChain.js +34 -34
  1041. package/wrapperLodash.js +147 -147
  1042. package/wrapperReverse.js +44 -44
  1043. package/wrapperValue.js +21 -21
  1044. package/xor.js +28 -28
  1045. package/xorBy.js +39 -39
  1046. package/xorWith.js +34 -34
  1047. package/zip.js +22 -22
  1048. package/zipObject.js +24 -24
  1049. package/zipObjectDeep.js +23 -23
  1050. package/zipWith.js +32 -32
  1051. package/_.log +0 -3
@@ -1,569 +1,569 @@
1
- var mapping = require('./_mapping'),
2
- fallbackHolder = require('./placeholder');
3
-
4
- /** Built-in value reference. */
5
- var push = Array.prototype.push;
6
-
7
- /**
8
- * Creates a function, with an arity of `n`, that invokes `func` with the
9
- * arguments it receives.
10
- *
11
- * @private
12
- * @param {Function} func The function to wrap.
13
- * @param {number} n The arity of the new function.
14
- * @returns {Function} Returns the new function.
15
- */
16
- function baseArity(func, n) {
17
- return n == 2
18
- ? function(a, b) { return func.apply(undefined, arguments); }
19
- : function(a) { return func.apply(undefined, arguments); };
20
- }
21
-
22
- /**
23
- * Creates a function that invokes `func`, with up to `n` arguments, ignoring
24
- * any additional arguments.
25
- *
26
- * @private
27
- * @param {Function} func The function to cap arguments for.
28
- * @param {number} n The arity cap.
29
- * @returns {Function} Returns the new function.
30
- */
31
- function baseAry(func, n) {
32
- return n == 2
33
- ? function(a, b) { return func(a, b); }
34
- : function(a) { return func(a); };
35
- }
36
-
37
- /**
38
- * Creates a clone of `array`.
39
- *
40
- * @private
41
- * @param {Array} array The array to clone.
42
- * @returns {Array} Returns the cloned array.
43
- */
44
- function cloneArray(array) {
45
- var length = array ? array.length : 0,
46
- result = Array(length);
47
-
48
- while (length--) {
49
- result[length] = array[length];
50
- }
51
- return result;
52
- }
53
-
54
- /**
55
- * Creates a function that clones a given object using the assignment `func`.
56
- *
57
- * @private
58
- * @param {Function} func The assignment function.
59
- * @returns {Function} Returns the new cloner function.
60
- */
61
- function createCloner(func) {
62
- return function(object) {
63
- return func({}, object);
64
- };
65
- }
66
-
67
- /**
68
- * A specialized version of `_.spread` which flattens the spread array into
69
- * the arguments of the invoked `func`.
70
- *
71
- * @private
72
- * @param {Function} func The function to spread arguments over.
73
- * @param {number} start The start position of the spread.
74
- * @returns {Function} Returns the new function.
75
- */
76
- function flatSpread(func, start) {
77
- return function() {
78
- var length = arguments.length,
79
- lastIndex = length - 1,
80
- args = Array(length);
81
-
82
- while (length--) {
83
- args[length] = arguments[length];
84
- }
85
- var array = args[start],
86
- otherArgs = args.slice(0, start);
87
-
88
- if (array) {
89
- push.apply(otherArgs, array);
90
- }
91
- if (start != lastIndex) {
92
- push.apply(otherArgs, args.slice(start + 1));
93
- }
94
- return func.apply(this, otherArgs);
95
- };
96
- }
97
-
98
- /**
99
- * Creates a function that wraps `func` and uses `cloner` to clone the first
100
- * argument it receives.
101
- *
102
- * @private
103
- * @param {Function} func The function to wrap.
104
- * @param {Function} cloner The function to clone arguments.
105
- * @returns {Function} Returns the new immutable function.
106
- */
107
- function wrapImmutable(func, cloner) {
108
- return function() {
109
- var length = arguments.length;
110
- if (!length) {
111
- return;
112
- }
113
- var args = Array(length);
114
- while (length--) {
115
- args[length] = arguments[length];
116
- }
117
- var result = args[0] = cloner.apply(undefined, args);
118
- func.apply(undefined, args);
119
- return result;
120
- };
121
- }
122
-
123
- /**
124
- * The base implementation of `convert` which accepts a `util` object of methods
125
- * required to perform conversions.
126
- *
127
- * @param {Object} util The util object.
128
- * @param {string} name The name of the function to convert.
129
- * @param {Function} func The function to convert.
130
- * @param {Object} [options] The options object.
131
- * @param {boolean} [options.cap=true] Specify capping iteratee arguments.
132
- * @param {boolean} [options.curry=true] Specify currying.
133
- * @param {boolean} [options.fixed=true] Specify fixed arity.
134
- * @param {boolean} [options.immutable=true] Specify immutable operations.
135
- * @param {boolean} [options.rearg=true] Specify rearranging arguments.
136
- * @returns {Function|Object} Returns the converted function or object.
137
- */
138
- function baseConvert(util, name, func, options) {
139
- var isLib = typeof name == 'function',
140
- isObj = name === Object(name);
141
-
142
- if (isObj) {
143
- options = func;
144
- func = name;
145
- name = undefined;
146
- }
147
- if (func == null) {
148
- throw new TypeError;
149
- }
150
- options || (options = {});
151
-
152
- var config = {
153
- 'cap': 'cap' in options ? options.cap : true,
154
- 'curry': 'curry' in options ? options.curry : true,
155
- 'fixed': 'fixed' in options ? options.fixed : true,
156
- 'immutable': 'immutable' in options ? options.immutable : true,
157
- 'rearg': 'rearg' in options ? options.rearg : true
158
- };
159
-
160
- var defaultHolder = isLib ? func : fallbackHolder,
161
- forceCurry = ('curry' in options) && options.curry,
162
- forceFixed = ('fixed' in options) && options.fixed,
163
- forceRearg = ('rearg' in options) && options.rearg,
164
- pristine = isLib ? func.runInContext() : undefined;
165
-
166
- var helpers = isLib ? func : {
167
- 'ary': util.ary,
168
- 'assign': util.assign,
169
- 'clone': util.clone,
170
- 'curry': util.curry,
171
- 'forEach': util.forEach,
172
- 'isArray': util.isArray,
173
- 'isError': util.isError,
174
- 'isFunction': util.isFunction,
175
- 'isWeakMap': util.isWeakMap,
176
- 'iteratee': util.iteratee,
177
- 'keys': util.keys,
178
- 'rearg': util.rearg,
179
- 'toInteger': util.toInteger,
180
- 'toPath': util.toPath
181
- };
182
-
183
- var ary = helpers.ary,
184
- assign = helpers.assign,
185
- clone = helpers.clone,
186
- curry = helpers.curry,
187
- each = helpers.forEach,
188
- isArray = helpers.isArray,
189
- isError = helpers.isError,
190
- isFunction = helpers.isFunction,
191
- isWeakMap = helpers.isWeakMap,
192
- keys = helpers.keys,
193
- rearg = helpers.rearg,
194
- toInteger = helpers.toInteger,
195
- toPath = helpers.toPath;
196
-
197
- var aryMethodKeys = keys(mapping.aryMethod);
198
-
199
- var wrappers = {
200
- 'castArray': function(castArray) {
201
- return function() {
202
- var value = arguments[0];
203
- return isArray(value)
204
- ? castArray(cloneArray(value))
205
- : castArray.apply(undefined, arguments);
206
- };
207
- },
208
- 'iteratee': function(iteratee) {
209
- return function() {
210
- var func = arguments[0],
211
- arity = arguments[1],
212
- result = iteratee(func, arity),
213
- length = result.length;
214
-
215
- if (config.cap && typeof arity == 'number') {
216
- arity = arity > 2 ? (arity - 2) : 1;
217
- return (length && length <= arity) ? result : baseAry(result, arity);
218
- }
219
- return result;
220
- };
221
- },
222
- 'mixin': function(mixin) {
223
- return function(source) {
224
- var func = this;
225
- if (!isFunction(func)) {
226
- return mixin(func, Object(source));
227
- }
228
- var pairs = [];
229
- each(keys(source), function(key) {
230
- if (isFunction(source[key])) {
231
- pairs.push([key, func.prototype[key]]);
232
- }
233
- });
234
-
235
- mixin(func, Object(source));
236
-
237
- each(pairs, function(pair) {
238
- var value = pair[1];
239
- if (isFunction(value)) {
240
- func.prototype[pair[0]] = value;
241
- } else {
242
- delete func.prototype[pair[0]];
243
- }
244
- });
245
- return func;
246
- };
247
- },
248
- 'nthArg': function(nthArg) {
249
- return function(n) {
250
- var arity = n < 0 ? 1 : (toInteger(n) + 1);
251
- return curry(nthArg(n), arity);
252
- };
253
- },
254
- 'rearg': function(rearg) {
255
- return function(func, indexes) {
256
- var arity = indexes ? indexes.length : 0;
257
- return curry(rearg(func, indexes), arity);
258
- };
259
- },
260
- 'runInContext': function(runInContext) {
261
- return function(context) {
262
- return baseConvert(util, runInContext(context), options);
263
- };
264
- }
265
- };
266
-
267
- /*--------------------------------------------------------------------------*/
268
-
269
- /**
270
- * Casts `func` to a function with an arity capped iteratee if needed.
271
- *
272
- * @private
273
- * @param {string} name The name of the function to inspect.
274
- * @param {Function} func The function to inspect.
275
- * @returns {Function} Returns the cast function.
276
- */
277
- function castCap(name, func) {
278
- if (config.cap) {
279
- var indexes = mapping.iterateeRearg[name];
280
- if (indexes) {
281
- return iterateeRearg(func, indexes);
282
- }
283
- var n = !isLib && mapping.iterateeAry[name];
284
- if (n) {
285
- return iterateeAry(func, n);
286
- }
287
- }
288
- return func;
289
- }
290
-
291
- /**
292
- * Casts `func` to a curried function if needed.
293
- *
294
- * @private
295
- * @param {string} name The name of the function to inspect.
296
- * @param {Function} func The function to inspect.
297
- * @param {number} n The arity of `func`.
298
- * @returns {Function} Returns the cast function.
299
- */
300
- function castCurry(name, func, n) {
301
- return (forceCurry || (config.curry && n > 1))
302
- ? curry(func, n)
303
- : func;
304
- }
305
-
306
- /**
307
- * Casts `func` to a fixed arity function if needed.
308
- *
309
- * @private
310
- * @param {string} name The name of the function to inspect.
311
- * @param {Function} func The function to inspect.
312
- * @param {number} n The arity cap.
313
- * @returns {Function} Returns the cast function.
314
- */
315
- function castFixed(name, func, n) {
316
- if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
317
- var data = mapping.methodSpread[name],
318
- start = data && data.start;
319
-
320
- return start === undefined ? ary(func, n) : flatSpread(func, start);
321
- }
322
- return func;
323
- }
324
-
325
- /**
326
- * Casts `func` to an rearged function if needed.
327
- *
328
- * @private
329
- * @param {string} name The name of the function to inspect.
330
- * @param {Function} func The function to inspect.
331
- * @param {number} n The arity of `func`.
332
- * @returns {Function} Returns the cast function.
333
- */
334
- function castRearg(name, func, n) {
335
- return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
336
- ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
337
- : func;
338
- }
339
-
340
- /**
341
- * Creates a clone of `object` by `path`.
342
- *
343
- * @private
344
- * @param {Object} object The object to clone.
345
- * @param {Array|string} path The path to clone by.
346
- * @returns {Object} Returns the cloned object.
347
- */
348
- function cloneByPath(object, path) {
349
- path = toPath(path);
350
-
351
- var index = -1,
352
- length = path.length,
353
- lastIndex = length - 1,
354
- result = clone(Object(object)),
355
- nested = result;
356
-
357
- while (nested != null && ++index < length) {
358
- var key = path[index],
359
- value = nested[key];
360
-
361
- if (value != null &&
362
- !(isFunction(value) || isError(value) || isWeakMap(value))) {
363
- nested[key] = clone(index == lastIndex ? value : Object(value));
364
- }
365
- nested = nested[key];
366
- }
367
- return result;
368
- }
369
-
370
- /**
371
- * Converts `lodash` to an immutable auto-curried iteratee-first data-last
372
- * version with conversion `options` applied.
373
- *
374
- * @param {Object} [options] The options object. See `baseConvert` for more details.
375
- * @returns {Function} Returns the converted `lodash`.
376
- */
377
- function convertLib(options) {
378
- return _.runInContext.convert(options)(undefined);
379
- }
380
-
381
- /**
382
- * Create a converter function for `func` of `name`.
383
- *
384
- * @param {string} name The name of the function to convert.
385
- * @param {Function} func The function to convert.
386
- * @returns {Function} Returns the new converter function.
387
- */
388
- function createConverter(name, func) {
389
- var realName = mapping.aliasToReal[name] || name,
390
- methodName = mapping.remap[realName] || realName,
391
- oldOptions = options;
392
-
393
- return function(options) {
394
- var newUtil = isLib ? pristine : helpers,
395
- newFunc = isLib ? pristine[methodName] : func,
396
- newOptions = assign(assign({}, oldOptions), options);
397
-
398
- return baseConvert(newUtil, realName, newFunc, newOptions);
399
- };
400
- }
401
-
402
- /**
403
- * Creates a function that wraps `func` to invoke its iteratee, with up to `n`
404
- * arguments, ignoring any additional arguments.
405
- *
406
- * @private
407
- * @param {Function} func The function to cap iteratee arguments for.
408
- * @param {number} n The arity cap.
409
- * @returns {Function} Returns the new function.
410
- */
411
- function iterateeAry(func, n) {
412
- return overArg(func, function(func) {
413
- return typeof func == 'function' ? baseAry(func, n) : func;
414
- });
415
- }
416
-
417
- /**
418
- * Creates a function that wraps `func` to invoke its iteratee with arguments
419
- * arranged according to the specified `indexes` where the argument value at
420
- * the first index is provided as the first argument, the argument value at
421
- * the second index is provided as the second argument, and so on.
422
- *
423
- * @private
424
- * @param {Function} func The function to rearrange iteratee arguments for.
425
- * @param {number[]} indexes The arranged argument indexes.
426
- * @returns {Function} Returns the new function.
427
- */
428
- function iterateeRearg(func, indexes) {
429
- return overArg(func, function(func) {
430
- var n = indexes.length;
431
- return baseArity(rearg(baseAry(func, n), indexes), n);
432
- });
433
- }
434
-
435
- /**
436
- * Creates a function that invokes `func` with its first argument transformed.
437
- *
438
- * @private
439
- * @param {Function} func The function to wrap.
440
- * @param {Function} transform The argument transform.
441
- * @returns {Function} Returns the new function.
442
- */
443
- function overArg(func, transform) {
444
- return function() {
445
- var length = arguments.length;
446
- if (!length) {
447
- return func();
448
- }
449
- var args = Array(length);
450
- while (length--) {
451
- args[length] = arguments[length];
452
- }
453
- var index = config.rearg ? 0 : (length - 1);
454
- args[index] = transform(args[index]);
455
- return func.apply(undefined, args);
456
- };
457
- }
458
-
459
- /**
460
- * Creates a function that wraps `func` and applys the conversions
461
- * rules by `name`.
462
- *
463
- * @private
464
- * @param {string} name The name of the function to wrap.
465
- * @param {Function} func The function to wrap.
466
- * @returns {Function} Returns the converted function.
467
- */
468
- function wrap(name, func, placeholder) {
469
- var result,
470
- realName = mapping.aliasToReal[name] || name,
471
- wrapped = func,
472
- wrapper = wrappers[realName];
473
-
474
- if (wrapper) {
475
- wrapped = wrapper(func);
476
- }
477
- else if (config.immutable) {
478
- if (mapping.mutate.array[realName]) {
479
- wrapped = wrapImmutable(func, cloneArray);
480
- }
481
- else if (mapping.mutate.object[realName]) {
482
- wrapped = wrapImmutable(func, createCloner(func));
483
- }
484
- else if (mapping.mutate.set[realName]) {
485
- wrapped = wrapImmutable(func, cloneByPath);
486
- }
487
- }
488
- each(aryMethodKeys, function(aryKey) {
489
- each(mapping.aryMethod[aryKey], function(otherName) {
490
- if (realName == otherName) {
491
- var data = mapping.methodSpread[realName],
492
- afterRearg = data && data.afterRearg;
493
-
494
- result = afterRearg
495
- ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)
496
- : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
497
-
498
- result = castCap(realName, result);
499
- result = castCurry(realName, result, aryKey);
500
- return false;
501
- }
502
- });
503
- return !result;
504
- });
505
-
506
- result || (result = wrapped);
507
- if (result == func) {
508
- result = forceCurry ? curry(result, 1) : function() {
509
- return func.apply(this, arguments);
510
- };
511
- }
512
- result.convert = createConverter(realName, func);
513
- result.placeholder = func.placeholder = placeholder;
514
-
515
- return result;
516
- }
517
-
518
- /*--------------------------------------------------------------------------*/
519
-
520
- if (!isObj) {
521
- return wrap(name, func, defaultHolder);
522
- }
523
- var _ = func;
524
-
525
- // Convert methods by ary cap.
526
- var pairs = [];
527
- each(aryMethodKeys, function(aryKey) {
528
- each(mapping.aryMethod[aryKey], function(key) {
529
- var func = _[mapping.remap[key] || key];
530
- if (func) {
531
- pairs.push([key, wrap(key, func, _)]);
532
- }
533
- });
534
- });
535
-
536
- // Convert remaining methods.
537
- each(keys(_), function(key) {
538
- var func = _[key];
539
- if (typeof func == 'function') {
540
- var length = pairs.length;
541
- while (length--) {
542
- if (pairs[length][0] == key) {
543
- return;
544
- }
545
- }
546
- func.convert = createConverter(key, func);
547
- pairs.push([key, func]);
548
- }
549
- });
550
-
551
- // Assign to `_` leaving `_.prototype` unchanged to allow chaining.
552
- each(pairs, function(pair) {
553
- _[pair[0]] = pair[1];
554
- });
555
-
556
- _.convert = convertLib;
557
- _.placeholder = _;
558
-
559
- // Assign aliases.
560
- each(keys(_), function(key) {
561
- each(mapping.realToAlias[key] || [], function(alias) {
562
- _[alias] = _[key];
563
- });
564
- });
565
-
566
- return _;
567
- }
568
-
569
- module.exports = baseConvert;
1
+ var mapping = require('./_mapping'),
2
+ fallbackHolder = require('./placeholder');
3
+
4
+ /** Built-in value reference. */
5
+ var push = Array.prototype.push;
6
+
7
+ /**
8
+ * Creates a function, with an arity of `n`, that invokes `func` with the
9
+ * arguments it receives.
10
+ *
11
+ * @private
12
+ * @param {Function} func The function to wrap.
13
+ * @param {number} n The arity of the new function.
14
+ * @returns {Function} Returns the new function.
15
+ */
16
+ function baseArity(func, n) {
17
+ return n == 2
18
+ ? function(a, b) { return func.apply(undefined, arguments); }
19
+ : function(a) { return func.apply(undefined, arguments); };
20
+ }
21
+
22
+ /**
23
+ * Creates a function that invokes `func`, with up to `n` arguments, ignoring
24
+ * any additional arguments.
25
+ *
26
+ * @private
27
+ * @param {Function} func The function to cap arguments for.
28
+ * @param {number} n The arity cap.
29
+ * @returns {Function} Returns the new function.
30
+ */
31
+ function baseAry(func, n) {
32
+ return n == 2
33
+ ? function(a, b) { return func(a, b); }
34
+ : function(a) { return func(a); };
35
+ }
36
+
37
+ /**
38
+ * Creates a clone of `array`.
39
+ *
40
+ * @private
41
+ * @param {Array} array The array to clone.
42
+ * @returns {Array} Returns the cloned array.
43
+ */
44
+ function cloneArray(array) {
45
+ var length = array ? array.length : 0,
46
+ result = Array(length);
47
+
48
+ while (length--) {
49
+ result[length] = array[length];
50
+ }
51
+ return result;
52
+ }
53
+
54
+ /**
55
+ * Creates a function that clones a given object using the assignment `func`.
56
+ *
57
+ * @private
58
+ * @param {Function} func The assignment function.
59
+ * @returns {Function} Returns the new cloner function.
60
+ */
61
+ function createCloner(func) {
62
+ return function(object) {
63
+ return func({}, object);
64
+ };
65
+ }
66
+
67
+ /**
68
+ * A specialized version of `_.spread` which flattens the spread array into
69
+ * the arguments of the invoked `func`.
70
+ *
71
+ * @private
72
+ * @param {Function} func The function to spread arguments over.
73
+ * @param {number} start The start position of the spread.
74
+ * @returns {Function} Returns the new function.
75
+ */
76
+ function flatSpread(func, start) {
77
+ return function() {
78
+ var length = arguments.length,
79
+ lastIndex = length - 1,
80
+ args = Array(length);
81
+
82
+ while (length--) {
83
+ args[length] = arguments[length];
84
+ }
85
+ var array = args[start],
86
+ otherArgs = args.slice(0, start);
87
+
88
+ if (array) {
89
+ push.apply(otherArgs, array);
90
+ }
91
+ if (start != lastIndex) {
92
+ push.apply(otherArgs, args.slice(start + 1));
93
+ }
94
+ return func.apply(this, otherArgs);
95
+ };
96
+ }
97
+
98
+ /**
99
+ * Creates a function that wraps `func` and uses `cloner` to clone the first
100
+ * argument it receives.
101
+ *
102
+ * @private
103
+ * @param {Function} func The function to wrap.
104
+ * @param {Function} cloner The function to clone arguments.
105
+ * @returns {Function} Returns the new immutable function.
106
+ */
107
+ function wrapImmutable(func, cloner) {
108
+ return function() {
109
+ var length = arguments.length;
110
+ if (!length) {
111
+ return;
112
+ }
113
+ var args = Array(length);
114
+ while (length--) {
115
+ args[length] = arguments[length];
116
+ }
117
+ var result = args[0] = cloner.apply(undefined, args);
118
+ func.apply(undefined, args);
119
+ return result;
120
+ };
121
+ }
122
+
123
+ /**
124
+ * The base implementation of `convert` which accepts a `util` object of methods
125
+ * required to perform conversions.
126
+ *
127
+ * @param {Object} util The util object.
128
+ * @param {string} name The name of the function to convert.
129
+ * @param {Function} func The function to convert.
130
+ * @param {Object} [options] The options object.
131
+ * @param {boolean} [options.cap=true] Specify capping iteratee arguments.
132
+ * @param {boolean} [options.curry=true] Specify currying.
133
+ * @param {boolean} [options.fixed=true] Specify fixed arity.
134
+ * @param {boolean} [options.immutable=true] Specify immutable operations.
135
+ * @param {boolean} [options.rearg=true] Specify rearranging arguments.
136
+ * @returns {Function|Object} Returns the converted function or object.
137
+ */
138
+ function baseConvert(util, name, func, options) {
139
+ var isLib = typeof name == 'function',
140
+ isObj = name === Object(name);
141
+
142
+ if (isObj) {
143
+ options = func;
144
+ func = name;
145
+ name = undefined;
146
+ }
147
+ if (func == null) {
148
+ throw new TypeError;
149
+ }
150
+ options || (options = {});
151
+
152
+ var config = {
153
+ 'cap': 'cap' in options ? options.cap : true,
154
+ 'curry': 'curry' in options ? options.curry : true,
155
+ 'fixed': 'fixed' in options ? options.fixed : true,
156
+ 'immutable': 'immutable' in options ? options.immutable : true,
157
+ 'rearg': 'rearg' in options ? options.rearg : true
158
+ };
159
+
160
+ var defaultHolder = isLib ? func : fallbackHolder,
161
+ forceCurry = ('curry' in options) && options.curry,
162
+ forceFixed = ('fixed' in options) && options.fixed,
163
+ forceRearg = ('rearg' in options) && options.rearg,
164
+ pristine = isLib ? func.runInContext() : undefined;
165
+
166
+ var helpers = isLib ? func : {
167
+ 'ary': util.ary,
168
+ 'assign': util.assign,
169
+ 'clone': util.clone,
170
+ 'curry': util.curry,
171
+ 'forEach': util.forEach,
172
+ 'isArray': util.isArray,
173
+ 'isError': util.isError,
174
+ 'isFunction': util.isFunction,
175
+ 'isWeakMap': util.isWeakMap,
176
+ 'iteratee': util.iteratee,
177
+ 'keys': util.keys,
178
+ 'rearg': util.rearg,
179
+ 'toInteger': util.toInteger,
180
+ 'toPath': util.toPath
181
+ };
182
+
183
+ var ary = helpers.ary,
184
+ assign = helpers.assign,
185
+ clone = helpers.clone,
186
+ curry = helpers.curry,
187
+ each = helpers.forEach,
188
+ isArray = helpers.isArray,
189
+ isError = helpers.isError,
190
+ isFunction = helpers.isFunction,
191
+ isWeakMap = helpers.isWeakMap,
192
+ keys = helpers.keys,
193
+ rearg = helpers.rearg,
194
+ toInteger = helpers.toInteger,
195
+ toPath = helpers.toPath;
196
+
197
+ var aryMethodKeys = keys(mapping.aryMethod);
198
+
199
+ var wrappers = {
200
+ 'castArray': function(castArray) {
201
+ return function() {
202
+ var value = arguments[0];
203
+ return isArray(value)
204
+ ? castArray(cloneArray(value))
205
+ : castArray.apply(undefined, arguments);
206
+ };
207
+ },
208
+ 'iteratee': function(iteratee) {
209
+ return function() {
210
+ var func = arguments[0],
211
+ arity = arguments[1],
212
+ result = iteratee(func, arity),
213
+ length = result.length;
214
+
215
+ if (config.cap && typeof arity == 'number') {
216
+ arity = arity > 2 ? (arity - 2) : 1;
217
+ return (length && length <= arity) ? result : baseAry(result, arity);
218
+ }
219
+ return result;
220
+ };
221
+ },
222
+ 'mixin': function(mixin) {
223
+ return function(source) {
224
+ var func = this;
225
+ if (!isFunction(func)) {
226
+ return mixin(func, Object(source));
227
+ }
228
+ var pairs = [];
229
+ each(keys(source), function(key) {
230
+ if (isFunction(source[key])) {
231
+ pairs.push([key, func.prototype[key]]);
232
+ }
233
+ });
234
+
235
+ mixin(func, Object(source));
236
+
237
+ each(pairs, function(pair) {
238
+ var value = pair[1];
239
+ if (isFunction(value)) {
240
+ func.prototype[pair[0]] = value;
241
+ } else {
242
+ delete func.prototype[pair[0]];
243
+ }
244
+ });
245
+ return func;
246
+ };
247
+ },
248
+ 'nthArg': function(nthArg) {
249
+ return function(n) {
250
+ var arity = n < 0 ? 1 : (toInteger(n) + 1);
251
+ return curry(nthArg(n), arity);
252
+ };
253
+ },
254
+ 'rearg': function(rearg) {
255
+ return function(func, indexes) {
256
+ var arity = indexes ? indexes.length : 0;
257
+ return curry(rearg(func, indexes), arity);
258
+ };
259
+ },
260
+ 'runInContext': function(runInContext) {
261
+ return function(context) {
262
+ return baseConvert(util, runInContext(context), options);
263
+ };
264
+ }
265
+ };
266
+
267
+ /*--------------------------------------------------------------------------*/
268
+
269
+ /**
270
+ * Casts `func` to a function with an arity capped iteratee if needed.
271
+ *
272
+ * @private
273
+ * @param {string} name The name of the function to inspect.
274
+ * @param {Function} func The function to inspect.
275
+ * @returns {Function} Returns the cast function.
276
+ */
277
+ function castCap(name, func) {
278
+ if (config.cap) {
279
+ var indexes = mapping.iterateeRearg[name];
280
+ if (indexes) {
281
+ return iterateeRearg(func, indexes);
282
+ }
283
+ var n = !isLib && mapping.iterateeAry[name];
284
+ if (n) {
285
+ return iterateeAry(func, n);
286
+ }
287
+ }
288
+ return func;
289
+ }
290
+
291
+ /**
292
+ * Casts `func` to a curried function if needed.
293
+ *
294
+ * @private
295
+ * @param {string} name The name of the function to inspect.
296
+ * @param {Function} func The function to inspect.
297
+ * @param {number} n The arity of `func`.
298
+ * @returns {Function} Returns the cast function.
299
+ */
300
+ function castCurry(name, func, n) {
301
+ return (forceCurry || (config.curry && n > 1))
302
+ ? curry(func, n)
303
+ : func;
304
+ }
305
+
306
+ /**
307
+ * Casts `func` to a fixed arity function if needed.
308
+ *
309
+ * @private
310
+ * @param {string} name The name of the function to inspect.
311
+ * @param {Function} func The function to inspect.
312
+ * @param {number} n The arity cap.
313
+ * @returns {Function} Returns the cast function.
314
+ */
315
+ function castFixed(name, func, n) {
316
+ if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
317
+ var data = mapping.methodSpread[name],
318
+ start = data && data.start;
319
+
320
+ return start === undefined ? ary(func, n) : flatSpread(func, start);
321
+ }
322
+ return func;
323
+ }
324
+
325
+ /**
326
+ * Casts `func` to an rearged function if needed.
327
+ *
328
+ * @private
329
+ * @param {string} name The name of the function to inspect.
330
+ * @param {Function} func The function to inspect.
331
+ * @param {number} n The arity of `func`.
332
+ * @returns {Function} Returns the cast function.
333
+ */
334
+ function castRearg(name, func, n) {
335
+ return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
336
+ ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
337
+ : func;
338
+ }
339
+
340
+ /**
341
+ * Creates a clone of `object` by `path`.
342
+ *
343
+ * @private
344
+ * @param {Object} object The object to clone.
345
+ * @param {Array|string} path The path to clone by.
346
+ * @returns {Object} Returns the cloned object.
347
+ */
348
+ function cloneByPath(object, path) {
349
+ path = toPath(path);
350
+
351
+ var index = -1,
352
+ length = path.length,
353
+ lastIndex = length - 1,
354
+ result = clone(Object(object)),
355
+ nested = result;
356
+
357
+ while (nested != null && ++index < length) {
358
+ var key = path[index],
359
+ value = nested[key];
360
+
361
+ if (value != null &&
362
+ !(isFunction(value) || isError(value) || isWeakMap(value))) {
363
+ nested[key] = clone(index == lastIndex ? value : Object(value));
364
+ }
365
+ nested = nested[key];
366
+ }
367
+ return result;
368
+ }
369
+
370
+ /**
371
+ * Converts `lodash` to an immutable auto-curried iteratee-first data-last
372
+ * version with conversion `options` applied.
373
+ *
374
+ * @param {Object} [options] The options object. See `baseConvert` for more details.
375
+ * @returns {Function} Returns the converted `lodash`.
376
+ */
377
+ function convertLib(options) {
378
+ return _.runInContext.convert(options)(undefined);
379
+ }
380
+
381
+ /**
382
+ * Create a converter function for `func` of `name`.
383
+ *
384
+ * @param {string} name The name of the function to convert.
385
+ * @param {Function} func The function to convert.
386
+ * @returns {Function} Returns the new converter function.
387
+ */
388
+ function createConverter(name, func) {
389
+ var realName = mapping.aliasToReal[name] || name,
390
+ methodName = mapping.remap[realName] || realName,
391
+ oldOptions = options;
392
+
393
+ return function(options) {
394
+ var newUtil = isLib ? pristine : helpers,
395
+ newFunc = isLib ? pristine[methodName] : func,
396
+ newOptions = assign(assign({}, oldOptions), options);
397
+
398
+ return baseConvert(newUtil, realName, newFunc, newOptions);
399
+ };
400
+ }
401
+
402
+ /**
403
+ * Creates a function that wraps `func` to invoke its iteratee, with up to `n`
404
+ * arguments, ignoring any additional arguments.
405
+ *
406
+ * @private
407
+ * @param {Function} func The function to cap iteratee arguments for.
408
+ * @param {number} n The arity cap.
409
+ * @returns {Function} Returns the new function.
410
+ */
411
+ function iterateeAry(func, n) {
412
+ return overArg(func, function(func) {
413
+ return typeof func == 'function' ? baseAry(func, n) : func;
414
+ });
415
+ }
416
+
417
+ /**
418
+ * Creates a function that wraps `func` to invoke its iteratee with arguments
419
+ * arranged according to the specified `indexes` where the argument value at
420
+ * the first index is provided as the first argument, the argument value at
421
+ * the second index is provided as the second argument, and so on.
422
+ *
423
+ * @private
424
+ * @param {Function} func The function to rearrange iteratee arguments for.
425
+ * @param {number[]} indexes The arranged argument indexes.
426
+ * @returns {Function} Returns the new function.
427
+ */
428
+ function iterateeRearg(func, indexes) {
429
+ return overArg(func, function(func) {
430
+ var n = indexes.length;
431
+ return baseArity(rearg(baseAry(func, n), indexes), n);
432
+ });
433
+ }
434
+
435
+ /**
436
+ * Creates a function that invokes `func` with its first argument transformed.
437
+ *
438
+ * @private
439
+ * @param {Function} func The function to wrap.
440
+ * @param {Function} transform The argument transform.
441
+ * @returns {Function} Returns the new function.
442
+ */
443
+ function overArg(func, transform) {
444
+ return function() {
445
+ var length = arguments.length;
446
+ if (!length) {
447
+ return func();
448
+ }
449
+ var args = Array(length);
450
+ while (length--) {
451
+ args[length] = arguments[length];
452
+ }
453
+ var index = config.rearg ? 0 : (length - 1);
454
+ args[index] = transform(args[index]);
455
+ return func.apply(undefined, args);
456
+ };
457
+ }
458
+
459
+ /**
460
+ * Creates a function that wraps `func` and applys the conversions
461
+ * rules by `name`.
462
+ *
463
+ * @private
464
+ * @param {string} name The name of the function to wrap.
465
+ * @param {Function} func The function to wrap.
466
+ * @returns {Function} Returns the converted function.
467
+ */
468
+ function wrap(name, func, placeholder) {
469
+ var result,
470
+ realName = mapping.aliasToReal[name] || name,
471
+ wrapped = func,
472
+ wrapper = wrappers[realName];
473
+
474
+ if (wrapper) {
475
+ wrapped = wrapper(func);
476
+ }
477
+ else if (config.immutable) {
478
+ if (mapping.mutate.array[realName]) {
479
+ wrapped = wrapImmutable(func, cloneArray);
480
+ }
481
+ else if (mapping.mutate.object[realName]) {
482
+ wrapped = wrapImmutable(func, createCloner(func));
483
+ }
484
+ else if (mapping.mutate.set[realName]) {
485
+ wrapped = wrapImmutable(func, cloneByPath);
486
+ }
487
+ }
488
+ each(aryMethodKeys, function(aryKey) {
489
+ each(mapping.aryMethod[aryKey], function(otherName) {
490
+ if (realName == otherName) {
491
+ var data = mapping.methodSpread[realName],
492
+ afterRearg = data && data.afterRearg;
493
+
494
+ result = afterRearg
495
+ ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)
496
+ : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
497
+
498
+ result = castCap(realName, result);
499
+ result = castCurry(realName, result, aryKey);
500
+ return false;
501
+ }
502
+ });
503
+ return !result;
504
+ });
505
+
506
+ result || (result = wrapped);
507
+ if (result == func) {
508
+ result = forceCurry ? curry(result, 1) : function() {
509
+ return func.apply(this, arguments);
510
+ };
511
+ }
512
+ result.convert = createConverter(realName, func);
513
+ result.placeholder = func.placeholder = placeholder;
514
+
515
+ return result;
516
+ }
517
+
518
+ /*--------------------------------------------------------------------------*/
519
+
520
+ if (!isObj) {
521
+ return wrap(name, func, defaultHolder);
522
+ }
523
+ var _ = func;
524
+
525
+ // Convert methods by ary cap.
526
+ var pairs = [];
527
+ each(aryMethodKeys, function(aryKey) {
528
+ each(mapping.aryMethod[aryKey], function(key) {
529
+ var func = _[mapping.remap[key] || key];
530
+ if (func) {
531
+ pairs.push([key, wrap(key, func, _)]);
532
+ }
533
+ });
534
+ });
535
+
536
+ // Convert remaining methods.
537
+ each(keys(_), function(key) {
538
+ var func = _[key];
539
+ if (typeof func == 'function') {
540
+ var length = pairs.length;
541
+ while (length--) {
542
+ if (pairs[length][0] == key) {
543
+ return;
544
+ }
545
+ }
546
+ func.convert = createConverter(key, func);
547
+ pairs.push([key, func]);
548
+ }
549
+ });
550
+
551
+ // Assign to `_` leaving `_.prototype` unchanged to allow chaining.
552
+ each(pairs, function(pair) {
553
+ _[pair[0]] = pair[1];
554
+ });
555
+
556
+ _.convert = convertLib;
557
+ _.placeholder = _;
558
+
559
+ // Assign aliases.
560
+ each(keys(_), function(key) {
561
+ each(mapping.realToAlias[key] || [], function(alias) {
562
+ _[alias] = _[key];
563
+ });
564
+ });
565
+
566
+ return _;
567
+ }
568
+
569
+ module.exports = baseConvert;