@vinicunca/perkakas 0.3.1 → 0.3.5

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 (338) hide show
  1. package/dist/commonjs/array/all-pass.js +2 -2
  2. package/dist/commonjs/array/any-pass.js +2 -2
  3. package/dist/commonjs/array/chunk.js +3 -3
  4. package/dist/commonjs/array/concat.js +2 -2
  5. package/dist/commonjs/array/count-by.js +8 -6
  6. package/dist/commonjs/array/difference-with.js +5 -15
  7. package/dist/commonjs/array/difference.js +5 -15
  8. package/dist/commonjs/array/drop-first-by.js +1 -1
  9. package/dist/commonjs/array/drop-last-while.js +2 -2
  10. package/dist/commonjs/array/drop-last.js +3 -3
  11. package/dist/commonjs/array/drop-while.js +2 -2
  12. package/dist/commonjs/array/drop.js +5 -12
  13. package/dist/commonjs/array/filter.js +3 -16
  14. package/dist/commonjs/array/find-index.js +12 -25
  15. package/dist/commonjs/array/find-last-index.js +3 -3
  16. package/dist/commonjs/array/find-last.js +3 -3
  17. package/dist/commonjs/array/find.js +10 -22
  18. package/dist/commonjs/array/first.js +4 -10
  19. package/dist/commonjs/array/flat-map-to-obj.js +10 -9
  20. package/dist/commonjs/array/flat-map.js +5 -15
  21. package/dist/commonjs/array/flatten-deep.js +9 -19
  22. package/dist/commonjs/array/flatten.js +5 -17
  23. package/dist/commonjs/array/for-each.js +18 -22
  24. package/dist/commonjs/array/group-by.js +5 -5
  25. package/dist/commonjs/array/index-by.js +20 -7
  26. package/dist/commonjs/array/index.js +4 -0
  27. package/dist/commonjs/array/intersection-with.js +5 -15
  28. package/dist/commonjs/array/intersection.js +6 -16
  29. package/dist/commonjs/array/last.js +2 -2
  30. package/dist/commonjs/array/length.js +2 -2
  31. package/dist/commonjs/array/map-to-obj.js +8 -7
  32. package/dist/commonjs/array/map.js +11 -15
  33. package/dist/commonjs/array/max-by.js +6 -6
  34. package/dist/commonjs/array/mean-by.js +6 -6
  35. package/dist/commonjs/array/merge-all.js +5 -1
  36. package/dist/commonjs/array/min-by.js +6 -6
  37. package/dist/commonjs/array/only.js +3 -6
  38. package/dist/commonjs/array/partition.js +5 -5
  39. package/dist/commonjs/array/range.js +2 -2
  40. package/dist/commonjs/array/rank-by.js +1 -1
  41. package/dist/commonjs/array/reduce.js +3 -3
  42. package/dist/commonjs/array/reject.js +9 -22
  43. package/dist/commonjs/array/reverse.js +2 -2
  44. package/dist/commonjs/array/sample.js +1 -1
  45. package/dist/commonjs/array/shuffle.js +3 -3
  46. package/dist/commonjs/array/sort-by.js +5 -43
  47. package/dist/commonjs/array/sort.js +3 -3
  48. package/dist/commonjs/array/sorted-index-by.js +19 -0
  49. package/dist/commonjs/array/sorted-index-with.js +15 -0
  50. package/dist/commonjs/array/sorted-index.js +12 -0
  51. package/dist/commonjs/array/sorted-last-index-by.js +19 -0
  52. package/dist/commonjs/array/sorted-last-index.js +12 -0
  53. package/dist/commonjs/array/splice.js +3 -3
  54. package/dist/commonjs/array/split-at.js +3 -3
  55. package/dist/commonjs/array/split-when.js +6 -6
  56. package/dist/commonjs/array/sum-by.js +6 -6
  57. package/dist/commonjs/array/swap-indices.js +7 -7
  58. package/dist/commonjs/array/take-first-by.js +1 -1
  59. package/dist/commonjs/array/take-while.js +2 -2
  60. package/dist/commonjs/array/take.js +8 -21
  61. package/dist/commonjs/array/uniq-by.js +4 -11
  62. package/dist/commonjs/array/uniq-with.js +8 -18
  63. package/dist/commonjs/array/uniq.js +4 -11
  64. package/dist/commonjs/array/zip-obj.js +2 -2
  65. package/dist/commonjs/array/zip-with.js +4 -4
  66. package/dist/commonjs/array/zip.js +2 -2
  67. package/dist/commonjs/function/create-pipe.js +1 -1
  68. package/dist/commonjs/function/index.js +1 -0
  69. package/dist/commonjs/function/pipe.js +18 -24
  70. package/dist/commonjs/function/purry.js +8 -9
  71. package/dist/commonjs/function/times.js +18 -0
  72. package/dist/commonjs/guard/is-defined.js +1 -1
  73. package/dist/commonjs/guard/is-empty.js +4 -4
  74. package/dist/commonjs/guard/is-nil.js +1 -1
  75. package/dist/commonjs/guard/is-not.js +1 -3
  76. package/dist/commonjs/number/add.js +2 -2
  77. package/dist/commonjs/number/clamp.js +6 -6
  78. package/dist/commonjs/number/divide.js +2 -2
  79. package/dist/commonjs/number/multiply.js +2 -2
  80. package/dist/commonjs/number/subtract.js +2 -2
  81. package/dist/commonjs/object/add-prop.js +2 -2
  82. package/dist/commonjs/object/clone.js +5 -5
  83. package/dist/commonjs/object/equals.js +48 -52
  84. package/dist/commonjs/object/for-each-obj.js +9 -9
  85. package/dist/commonjs/object/from-pairs.js +6 -2
  86. package/dist/commonjs/object/invert.js +5 -3
  87. package/dist/commonjs/object/keys.js +3 -2
  88. package/dist/commonjs/object/map-keys.js +2 -2
  89. package/dist/commonjs/object/map-values.js +2 -2
  90. package/dist/commonjs/object/merge-deep.js +2 -2
  91. package/dist/commonjs/object/merge.js +2 -2
  92. package/dist/commonjs/object/omit-by.js +7 -6
  93. package/dist/commonjs/object/omit.js +2 -2
  94. package/dist/commonjs/object/path-or.js +6 -6
  95. package/dist/commonjs/object/pick-by.js +9 -8
  96. package/dist/commonjs/object/pick.js +7 -9
  97. package/dist/commonjs/object/set-path.js +14 -15
  98. package/dist/commonjs/object/set.js +2 -2
  99. package/dist/commonjs/object/swap-props.js +2 -2
  100. package/dist/commonjs/string/random-string.js +11 -5
  101. package/dist/commonjs/string/string-to-path.js +5 -5
  102. package/dist/commonjs/utils/binary-search-cutoff-index.js +19 -0
  103. package/dist/commonjs/utils/heap.js +1 -1
  104. package/dist/commonjs/utils/purry-order-rules.js +1 -1
  105. package/dist/commonjs/utils/quick-select.js +2 -2
  106. package/dist/commonjs/utils/reduce-lazy.js +9 -6
  107. package/dist/commonjs/utils/to-single.js +1 -2
  108. package/dist/es/array/all-pass.js +2 -2
  109. package/dist/es/array/any-pass.js +2 -2
  110. package/dist/es/array/chunk.js +3 -3
  111. package/dist/es/array/concat.js +2 -2
  112. package/dist/es/array/count-by.js +8 -6
  113. package/dist/es/array/difference-with.js +5 -15
  114. package/dist/es/array/difference.js +5 -15
  115. package/dist/es/array/drop-first-by.js +1 -1
  116. package/dist/es/array/drop-last-while.js +2 -2
  117. package/dist/es/array/drop-last.js +3 -3
  118. package/dist/es/array/drop-while.js +2 -2
  119. package/dist/es/array/drop.js +5 -12
  120. package/dist/es/array/filter.js +3 -16
  121. package/dist/es/array/find-index.js +12 -25
  122. package/dist/es/array/find-last-index.js +3 -3
  123. package/dist/es/array/find-last.js +3 -3
  124. package/dist/es/array/find.js +10 -22
  125. package/dist/es/array/first.js +4 -10
  126. package/dist/es/array/flat-map-to-obj.js +10 -9
  127. package/dist/es/array/flat-map.js +5 -15
  128. package/dist/es/array/flatten-deep.js +9 -19
  129. package/dist/es/array/flatten.js +5 -17
  130. package/dist/es/array/for-each.js +18 -22
  131. package/dist/es/array/group-by.js +5 -5
  132. package/dist/es/array/index-by.js +20 -7
  133. package/dist/es/array/index.js +4 -0
  134. package/dist/es/array/intersection-with.js +5 -15
  135. package/dist/es/array/intersection.js +6 -16
  136. package/dist/es/array/last.js +2 -2
  137. package/dist/es/array/length.js +2 -2
  138. package/dist/es/array/map-to-obj.js +8 -7
  139. package/dist/es/array/map.js +11 -15
  140. package/dist/es/array/max-by.js +6 -6
  141. package/dist/es/array/mean-by.js +6 -6
  142. package/dist/es/array/merge-all.js +5 -1
  143. package/dist/es/array/min-by.js +6 -6
  144. package/dist/es/array/only.js +3 -6
  145. package/dist/es/array/partition.js +5 -5
  146. package/dist/es/array/range.js +2 -2
  147. package/dist/es/array/rank-by.js +1 -1
  148. package/dist/es/array/reduce.js +3 -3
  149. package/dist/es/array/reject.js +9 -22
  150. package/dist/es/array/reverse.js +2 -2
  151. package/dist/es/array/sample.js +1 -1
  152. package/dist/es/array/shuffle.js +3 -3
  153. package/dist/es/array/sort-by.js +5 -43
  154. package/dist/es/array/sort.js +3 -3
  155. package/dist/es/array/sorted-index-by.js +15 -0
  156. package/dist/es/array/sorted-index-with.js +11 -0
  157. package/dist/es/array/sorted-index.js +8 -0
  158. package/dist/es/array/sorted-last-index-by.js +15 -0
  159. package/dist/es/array/sorted-last-index.js +8 -0
  160. package/dist/es/array/splice.js +3 -3
  161. package/dist/es/array/split-at.js +3 -3
  162. package/dist/es/array/split-when.js +6 -6
  163. package/dist/es/array/sum-by.js +6 -6
  164. package/dist/es/array/swap-indices.js +7 -7
  165. package/dist/es/array/take-first-by.js +1 -1
  166. package/dist/es/array/take-while.js +2 -2
  167. package/dist/es/array/take.js +8 -21
  168. package/dist/es/array/uniq-by.js +4 -11
  169. package/dist/es/array/uniq-with.js +8 -18
  170. package/dist/es/array/uniq.js +4 -11
  171. package/dist/es/array/zip-obj.js +2 -2
  172. package/dist/es/array/zip-with.js +4 -4
  173. package/dist/es/array/zip.js +2 -2
  174. package/dist/es/function/index.js +1 -0
  175. package/dist/es/function/pipe.js +18 -24
  176. package/dist/es/function/purry.js +8 -9
  177. package/dist/es/function/times.js +14 -0
  178. package/dist/es/guard/is-defined.js +1 -1
  179. package/dist/es/guard/is-empty.js +4 -4
  180. package/dist/es/guard/is-nil.js +1 -1
  181. package/dist/es/guard/is-not.js +1 -3
  182. package/dist/es/number/add.js +2 -2
  183. package/dist/es/number/clamp.js +6 -6
  184. package/dist/es/number/divide.js +2 -2
  185. package/dist/es/number/multiply.js +2 -2
  186. package/dist/es/number/subtract.js +2 -2
  187. package/dist/es/object/add-prop.js +2 -2
  188. package/dist/es/object/clone.js +5 -5
  189. package/dist/es/object/equals.js +48 -52
  190. package/dist/es/object/for-each-obj.js +9 -9
  191. package/dist/es/object/from-pairs.js +5 -1
  192. package/dist/es/object/invert.js +5 -3
  193. package/dist/es/object/keys.js +3 -2
  194. package/dist/es/object/map-keys.js +2 -2
  195. package/dist/es/object/map-values.js +2 -2
  196. package/dist/es/object/merge-deep.js +2 -2
  197. package/dist/es/object/merge.js +2 -2
  198. package/dist/es/object/omit-by.js +7 -6
  199. package/dist/es/object/omit.js +2 -2
  200. package/dist/es/object/path-or.js +6 -6
  201. package/dist/es/object/pick-by.js +9 -8
  202. package/dist/es/object/pick.js +7 -9
  203. package/dist/es/object/set-path.js +12 -13
  204. package/dist/es/object/set.js +2 -2
  205. package/dist/es/object/swap-props.js +2 -2
  206. package/dist/es/string/random-string.js +11 -5
  207. package/dist/es/string/string-to-path.js +5 -5
  208. package/dist/es/utils/binary-search-cutoff-index.js +15 -0
  209. package/dist/es/utils/heap.js +1 -1
  210. package/dist/es/utils/purry-order-rules.js +1 -1
  211. package/dist/es/utils/quick-select.js +2 -2
  212. package/dist/es/utils/reduce-lazy.js +9 -6
  213. package/dist/es/utils/to-single.js +1 -2
  214. package/dist/metadata.json +7915 -4373
  215. package/dist/types/array/count-by.d.ts.map +1 -1
  216. package/dist/types/array/difference-with.d.ts +2 -2
  217. package/dist/types/array/difference-with.d.ts.map +1 -1
  218. package/dist/types/array/difference.d.ts +2 -2
  219. package/dist/types/array/difference.d.ts.map +1 -1
  220. package/dist/types/array/drop.d.ts +2 -2
  221. package/dist/types/array/drop.d.ts.map +1 -1
  222. package/dist/types/array/filter.d.ts +5 -5
  223. package/dist/types/array/filter.d.ts.map +1 -1
  224. package/dist/types/array/find-index.d.ts +5 -20
  225. package/dist/types/array/find-index.d.ts.map +1 -1
  226. package/dist/types/array/find.d.ts +5 -12
  227. package/dist/types/array/find.d.ts.map +1 -1
  228. package/dist/types/array/first.d.ts +2 -5
  229. package/dist/types/array/first.d.ts.map +1 -1
  230. package/dist/types/array/flat-map-to-obj.d.ts +4 -4
  231. package/dist/types/array/flat-map-to-obj.d.ts.map +1 -1
  232. package/dist/types/array/flat-map.d.ts +2 -11
  233. package/dist/types/array/flat-map.d.ts.map +1 -1
  234. package/dist/types/array/flatten-deep.d.ts +15 -5
  235. package/dist/types/array/flatten-deep.d.ts.map +1 -1
  236. package/dist/types/array/flatten.d.ts +17 -2
  237. package/dist/types/array/flatten.d.ts.map +1 -1
  238. package/dist/types/array/for-each.d.ts +3 -3
  239. package/dist/types/array/for-each.d.ts.map +1 -1
  240. package/dist/types/array/group-by.d.ts.map +1 -1
  241. package/dist/types/array/index-by.d.ts +25 -6
  242. package/dist/types/array/index-by.d.ts.map +1 -1
  243. package/dist/types/array/index.d.ts +4 -0
  244. package/dist/types/array/index.d.ts.map +1 -1
  245. package/dist/types/array/intersection-with.d.ts +2 -2
  246. package/dist/types/array/intersection-with.d.ts.map +1 -1
  247. package/dist/types/array/intersection.d.ts +2 -2
  248. package/dist/types/array/intersection.d.ts.map +1 -1
  249. package/dist/types/array/last.d.ts +13 -4
  250. package/dist/types/array/last.d.ts.map +1 -1
  251. package/dist/types/array/map.d.ts +3 -3
  252. package/dist/types/array/map.d.ts.map +1 -1
  253. package/dist/types/array/max-by.d.ts.map +1 -1
  254. package/dist/types/array/mean-by.d.ts.map +1 -1
  255. package/dist/types/array/merge-all.d.ts +1 -1
  256. package/dist/types/array/merge-all.d.ts.map +1 -1
  257. package/dist/types/array/min-by.d.ts.map +1 -1
  258. package/dist/types/array/reduce.d.ts +2 -2
  259. package/dist/types/array/reduce.d.ts.map +1 -1
  260. package/dist/types/array/reject.d.ts +3 -3
  261. package/dist/types/array/reject.d.ts.map +1 -1
  262. package/dist/types/array/sort-by.d.ts +33 -33
  263. package/dist/types/array/sort-by.d.ts.map +1 -1
  264. package/dist/types/array/sort.d.ts.map +1 -1
  265. package/dist/types/array/sorted-index-by.d.ts +63 -0
  266. package/dist/types/array/sorted-index-by.d.ts.map +1 -0
  267. package/dist/types/array/sorted-index-with.d.ts +65 -0
  268. package/dist/types/array/sorted-index-with.d.ts.map +1 -0
  269. package/dist/types/array/sorted-index.d.ts +47 -0
  270. package/dist/types/array/sorted-index.d.ts.map +1 -0
  271. package/dist/types/array/sorted-last-index-by.d.ts +63 -0
  272. package/dist/types/array/sorted-last-index-by.d.ts.map +1 -0
  273. package/dist/types/array/sorted-last-index.d.ts +47 -0
  274. package/dist/types/array/sorted-last-index.d.ts.map +1 -0
  275. package/dist/types/array/sum-by.d.ts.map +1 -1
  276. package/dist/types/array/take.d.ts +2 -2
  277. package/dist/types/array/take.d.ts.map +1 -1
  278. package/dist/types/array/uniq-with.d.ts +3 -3
  279. package/dist/types/array/uniq-with.d.ts.map +1 -1
  280. package/dist/types/array/uniq.d.ts +15 -4
  281. package/dist/types/array/uniq.d.ts.map +1 -1
  282. package/dist/types/array/zip-obj.d.ts +2 -2
  283. package/dist/types/array/zip-obj.d.ts.map +1 -1
  284. package/dist/types/array/zip.d.ts.map +1 -1
  285. package/dist/types/function/conditional.d.ts.map +1 -1
  286. package/dist/types/function/index.d.ts +1 -0
  287. package/dist/types/function/index.d.ts.map +1 -1
  288. package/dist/types/function/noop.d.ts.map +1 -1
  289. package/dist/types/function/pipe.d.ts +21 -0
  290. package/dist/types/function/pipe.d.ts.map +1 -1
  291. package/dist/types/function/purry.d.ts +21 -6
  292. package/dist/types/function/purry.d.ts.map +1 -1
  293. package/dist/types/function/times.d.ts +29 -0
  294. package/dist/types/function/times.d.ts.map +1 -0
  295. package/dist/types/guard/is-empty.d.ts +15 -4
  296. package/dist/types/guard/is-empty.d.ts.map +1 -1
  297. package/dist/types/guard/is-not.d.ts +1 -1
  298. package/dist/types/guard/is-not.d.ts.map +1 -1
  299. package/dist/types/guard/is-object.d.ts +1 -1
  300. package/dist/types/guard/is-object.d.ts.map +1 -1
  301. package/dist/types/number/clamp.d.ts +7 -8
  302. package/dist/types/number/clamp.d.ts.map +1 -1
  303. package/dist/types/object/add-prop.d.ts +2 -2
  304. package/dist/types/object/add-prop.d.ts.map +1 -1
  305. package/dist/types/object/equals.d.ts +2 -2
  306. package/dist/types/object/equals.d.ts.map +1 -1
  307. package/dist/types/object/for-each-obj.d.ts +6 -6
  308. package/dist/types/object/for-each-obj.d.ts.map +1 -1
  309. package/dist/types/object/from-pairs.d.ts +9 -0
  310. package/dist/types/object/from-pairs.d.ts.map +1 -1
  311. package/dist/types/object/keys.d.ts +8 -4
  312. package/dist/types/object/keys.d.ts.map +1 -1
  313. package/dist/types/object/pick.d.ts +9 -9
  314. package/dist/types/object/pick.d.ts.map +1 -1
  315. package/dist/types/object/prop.d.ts.map +1 -1
  316. package/dist/types/object/set-path.d.ts +1 -1
  317. package/dist/types/object/set-path.d.ts.map +1 -1
  318. package/dist/types/object/to-pairs.d.ts +1 -1
  319. package/dist/types/object/to-pairs.d.ts.map +1 -1
  320. package/dist/types/string/random-string.d.ts +6 -2
  321. package/dist/types/string/random-string.d.ts.map +1 -1
  322. package/dist/types/string/string-to-path.d.ts.map +1 -1
  323. package/dist/types/type/type.d.ts.map +1 -1
  324. package/dist/types/utils/binary-search-cutoff-index.d.ts +2 -0
  325. package/dist/types/utils/binary-search-cutoff-index.d.ts.map +1 -0
  326. package/dist/types/utils/narrow.d.ts +1 -1
  327. package/dist/types/utils/narrow.d.ts.map +1 -1
  328. package/dist/types/utils/purry-on.d.ts +1 -1
  329. package/dist/types/utils/purry-on.d.ts.map +1 -1
  330. package/dist/types/utils/reduce-lazy.d.ts +2 -21
  331. package/dist/types/utils/reduce-lazy.d.ts.map +1 -1
  332. package/dist/types/utils/swap-in-place.d.ts.map +1 -1
  333. package/dist/types/utils/to-single.d.ts +4 -2
  334. package/dist/types/utils/to-single.d.ts.map +1 -1
  335. package/dist/types/utils/types.d.ts +2 -2
  336. package/dist/types/utils/types.d.ts.map +1 -1
  337. package/dist/types/utils/with-precision.d.ts.map +1 -1
  338. package/package.json +2 -4
@@ -1,43 +1,33 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  export function flattenDeep(...args) {
4
- return purry(_flattenDeep, args, flattenDeep.lazy);
4
+ return purry(flattenDeep_, args, flattenDeep.lazy);
5
5
  }
6
- function _flattenDeep(items) {
6
+ function flattenDeep_(items) {
7
7
  return reduceLazy(items, flattenDeep.lazy());
8
8
  }
9
- function _flattenDeepValue(value) {
9
+ function flattenDeepValue_(value) {
10
10
  if (!Array.isArray(value)) {
11
11
  return value;
12
12
  }
13
13
  const ret = [];
14
- value.forEach((item) => {
14
+ for (const item of value) {
15
15
  if (Array.isArray(item)) {
16
16
  ret.push(...flattenDeep(item));
17
17
  }
18
18
  else {
19
19
  ret.push(item);
20
20
  }
21
- });
21
+ }
22
22
  return ret;
23
23
  }
24
24
  (function (flattenDeep) {
25
25
  function lazy() {
26
26
  return (value) => {
27
- const next = _flattenDeepValue(value);
28
- if (Array.isArray(next)) {
29
- return {
30
- done: false,
31
- hasMany: true,
32
- hasNext: true,
33
- next,
34
- };
35
- }
36
- return {
37
- done: false,
38
- hasNext: true,
39
- next,
40
- };
27
+ const next = flattenDeepValue_(value);
28
+ return Array.isArray(next)
29
+ ? { done: false, hasMany: true, hasNext: true, next }
30
+ : { done: false, hasNext: true, next };
41
31
  };
42
32
  }
43
33
  flattenDeep.lazy = lazy;
@@ -1,28 +1,16 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  export function flatten(...args) {
4
- return purry(_flatten, args, flatten.lazy);
4
+ return purry(flatten_, args, flatten.lazy);
5
5
  }
6
- function _flatten(items) {
6
+ function flatten_(items) {
7
7
  return reduceLazy(items, flatten.lazy());
8
8
  }
9
9
  (function (flatten) {
10
10
  function lazy() {
11
- return (next) => {
12
- if (Array.isArray(next)) {
13
- return {
14
- done: false,
15
- hasMany: true,
16
- hasNext: true,
17
- next,
18
- };
19
- }
20
- return {
21
- done: false,
22
- hasNext: true,
23
- next,
24
- };
25
- };
11
+ return (item) => Array.isArray(item)
12
+ ? { done: false, hasMany: true, hasNext: true, next: item }
13
+ : { done: false, hasNext: true, next: item };
26
14
  }
27
15
  flatten.lazy = lazy;
28
16
  })(flatten || (flatten = {}));
@@ -2,35 +2,31 @@ import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  import { toLazyIndexed } from '../utils/to-lazy-indexed';
4
4
  export function forEach(...args) {
5
- return purry(_forEach(false), args, forEach.lazy);
5
+ return purry(forEach_(false), args, forEach.lazy);
6
6
  }
7
- function _forEach(indexed) {
8
- return (array, fn) => {
9
- return reduceLazy(array, indexed ? forEach.lazyIndexed(fn) : forEach.lazy(fn), indexed);
10
- };
7
+ function forEach_(indexed) {
8
+ return (array, fn) => reduceLazy(array, indexed ? forEach.lazyIndexed(fn) : forEach.lazy(fn), indexed);
11
9
  }
12
- function _lazy(indexed) {
13
- return (fn) => {
14
- return (value, index, array) => {
15
- if (indexed) {
16
- fn(value, index, array);
17
- }
18
- else {
19
- fn(value);
20
- }
21
- return {
22
- done: false,
23
- hasNext: true,
24
- next: value,
25
- };
10
+ function lazy_(indexed) {
11
+ return (fn) => (value, index, array) => {
12
+ if (indexed) {
13
+ fn(value, index, array);
14
+ }
15
+ else {
16
+ fn(value);
17
+ }
18
+ return {
19
+ done: false,
20
+ hasNext: true,
21
+ next: value,
26
22
  };
27
23
  };
28
24
  }
29
25
  (function (forEach) {
30
26
  function indexed(...args) {
31
- return purry(_forEach(true), args, forEach.lazyIndexed);
27
+ return purry(forEach_(true), args, forEach.lazyIndexed);
32
28
  }
33
29
  forEach.indexed = indexed;
34
- forEach.lazy = _lazy(false);
35
- forEach.lazyIndexed = toLazyIndexed(_lazy(true));
30
+ forEach.lazy = lazy_(false);
31
+ forEach.lazyIndexed = toLazyIndexed(lazy_(true));
36
32
  })(forEach || (forEach = {}));
@@ -1,11 +1,11 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function groupBy(...args) {
3
- return purry(_groupBy(false), args);
3
+ return purry(groupBy_(false), args);
4
4
  }
5
- function _groupBy(indexed) {
5
+ function groupBy_(indexed) {
6
6
  return (array, fn) => {
7
7
  const ret = {};
8
- array.forEach((item, index) => {
8
+ for (const [index, item] of array.entries()) {
9
9
  const key = indexed ? fn(item, index, array) : fn(item);
10
10
  if (key !== undefined) {
11
11
  const actualKey = String(key);
@@ -16,13 +16,13 @@ function _groupBy(indexed) {
16
16
  }
17
17
  items.push(item);
18
18
  }
19
- });
19
+ }
20
20
  return ret;
21
21
  };
22
22
  }
23
23
  (function (groupBy) {
24
24
  function indexed(...args) {
25
- return purry(_groupBy(true), args);
25
+ return purry(groupBy_(true), args);
26
26
  }
27
27
  groupBy.indexed = indexed;
28
28
  groupBy.strict = groupBy;
@@ -1,20 +1,33 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function indexBy(...args) {
3
- return purry(_indexBy(false), args);
3
+ return purry(indexBy_(false), args);
4
4
  }
5
- function _indexBy(indexed) {
5
+ function indexBy_(indexed) {
6
6
  return (array, fn) => {
7
- return array.reduce((ret, item, index) => {
7
+ const out = {};
8
+ for (const [index, item] of array.entries()) {
8
9
  const value = indexed ? fn(item, index, array) : fn(item);
9
10
  const key = String(value);
10
- ret[key] = item;
11
- return ret;
12
- }, {});
11
+ out[key] = item;
12
+ }
13
+ return out;
13
14
  };
14
15
  }
16
+ function indexByStrict(...args) {
17
+ return purry(indexByStrict_, args);
18
+ }
19
+ function indexByStrict_(array, fn) {
20
+ const out = {};
21
+ for (const item of array) {
22
+ const key = fn(item);
23
+ out[key] = item;
24
+ }
25
+ return out;
26
+ }
15
27
  (function (indexBy) {
16
28
  function indexed(...args) {
17
- return purry(_indexBy(true), args);
29
+ return purry(indexBy_(true), args);
18
30
  }
19
31
  indexBy.indexed = indexed;
32
+ indexBy.strict = indexByStrict;
20
33
  })(indexBy || (indexBy = {}));
@@ -49,6 +49,10 @@ export * from './sample';
49
49
  export * from './shuffle';
50
50
  export * from './sort';
51
51
  export * from './sort-by';
52
+ export * from './sorted-index';
53
+ export * from './sorted-index-with';
54
+ export * from './sorted-index-by';
55
+ export * from './sorted-last-index';
52
56
  export * from './splice';
53
57
  export * from './split-at';
54
58
  export * from './split-when';
@@ -1,27 +1,17 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  export function intersectionWith(...args) {
4
- return purry(_intersectionWith, args, intersectionWith.lazy);
4
+ return purry(intersectionWith_, args, intersectionWith.lazy);
5
5
  }
6
- function _intersectionWith(array, other, comparator) {
6
+ function intersectionWith_(array, other, comparator) {
7
7
  const lazy = intersectionWith.lazy(other, comparator);
8
8
  return reduceLazy(array, lazy);
9
9
  }
10
10
  (function (intersectionWith) {
11
11
  function lazy(other, comparator) {
12
- return (value) => {
13
- if (other.some((otherValue) => comparator(value, otherValue))) {
14
- return {
15
- done: false,
16
- hasNext: true,
17
- next: value,
18
- };
19
- }
20
- return {
21
- done: false,
22
- hasNext: false,
23
- };
24
- };
12
+ return (value) => other.some((otherValue) => comparator(value, otherValue))
13
+ ? { done: false, hasNext: true, next: value }
14
+ : { done: false, hasNext: false };
25
15
  }
26
16
  intersectionWith.lazy = lazy;
27
17
  })(intersectionWith || (intersectionWith = {}));
@@ -1,28 +1,18 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  export function intersection(...args) {
4
- return purry(_intersection, args, intersection.lazy);
4
+ return purry(intersection_, args, intersection.lazy);
5
5
  }
6
- function _intersection(array, other) {
6
+ function intersection_(array, other) {
7
7
  const lazy = intersection.lazy(other);
8
8
  return reduceLazy(array, lazy);
9
9
  }
10
10
  (function (intersection) {
11
11
  function lazy(other) {
12
- return (value) => {
13
- const set = new Set(other);
14
- if (set.has(value)) {
15
- return {
16
- done: false,
17
- hasNext: true,
18
- next: value,
19
- };
20
- }
21
- return {
22
- done: false,
23
- hasNext: false,
24
- };
25
- };
12
+ const set = new Set(other);
13
+ return (value) => set.has(value)
14
+ ? { done: false, hasNext: true, next: value }
15
+ : { done: false, hasNext: false };
26
16
  }
27
17
  intersection.lazy = lazy;
28
18
  })(intersection || (intersection = {}));
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function last(...args) {
3
- return purry(_last, args);
3
+ return purry(last_, args);
4
4
  }
5
- function _last(array) {
5
+ function last_(array) {
6
6
  return array[array.length - 1];
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function length(...args) {
3
- return purry(_length, args);
3
+ return purry(length_, args);
4
4
  }
5
- function _length(items) {
5
+ function length_(items) {
6
6
  return 'length' in items ? items.length : Array.from(items).length;
7
7
  }
@@ -1,19 +1,20 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function mapToObj(...args) {
3
- return purry(_mapToObj(false), args);
3
+ return purry(mapToObj_(false), args);
4
4
  }
5
- function _mapToObj(indexed) {
5
+ function mapToObj_(indexed) {
6
6
  return (array, fn) => {
7
- return array.reduce((result, element, index) => {
7
+ const out = {};
8
+ for (const [index, element] of array.entries()) {
8
9
  const [key, value] = indexed ? fn(element, index, array) : fn(element);
9
- result[key] = value;
10
- return result;
11
- }, {});
10
+ out[key] = value;
11
+ }
12
+ return out;
12
13
  };
13
14
  }
14
15
  (function (mapToObj) {
15
16
  function indexed(...args) {
16
- return purry(_mapToObj(true), args);
17
+ return purry(mapToObj_(true), args);
17
18
  }
18
19
  mapToObj.indexed = indexed;
19
20
  })(mapToObj || (mapToObj = {}));
@@ -2,30 +2,26 @@ import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  import { toLazyIndexed } from '../utils/to-lazy-indexed';
4
4
  export function map(...args) {
5
- return purry(_map(false), args, map.lazy);
5
+ return purry(map_(false), args, map.lazy);
6
6
  }
7
- function _map(indexed) {
7
+ function map_(indexed) {
8
8
  return (array, fn) => {
9
9
  return reduceLazy(array, indexed ? map.lazyIndexed(fn) : map.lazy(fn), indexed);
10
10
  };
11
11
  }
12
- function _lazy(indexed) {
13
- return (fn) => {
14
- return (value, index, array) => {
15
- return {
16
- done: false,
17
- hasNext: true,
18
- next: indexed ? fn(value, index, array) : fn(value),
19
- };
20
- };
21
- };
12
+ function lazy_(indexed) {
13
+ return (fn) => (value, index, array) => ({
14
+ done: false,
15
+ hasNext: true,
16
+ next: indexed ? fn(value, index, array) : fn(value),
17
+ });
22
18
  }
23
19
  (function (map) {
24
20
  function indexed(...args) {
25
- return purry(_map(true), args, map.lazyIndexed);
21
+ return purry(map_(true), args, map.lazyIndexed);
26
22
  }
27
23
  map.indexed = indexed;
28
- map.lazy = _lazy(false);
29
- map.lazyIndexed = toLazyIndexed(_lazy(true));
24
+ map.lazy = lazy_(false);
25
+ map.lazyIndexed = toLazyIndexed(lazy_(true));
30
26
  map.strict = map;
31
27
  })(map || (map = {}));
@@ -1,24 +1,24 @@
1
1
  import { purry } from '../function/purry';
2
- function _maxBy(indexed) {
2
+ function maxBy_(indexed) {
3
3
  return (array, fn) => {
4
4
  let ret;
5
5
  let retMax;
6
- array.forEach((item, i) => {
7
- const max = indexed ? fn(item, i, array) : fn(item);
6
+ for (const [index, item] of array.entries()) {
7
+ const max = indexed ? fn(item, index, array) : fn(item);
8
8
  if (retMax === undefined || max > retMax) {
9
9
  ret = item;
10
10
  retMax = max;
11
11
  }
12
- });
12
+ }
13
13
  return ret;
14
14
  };
15
15
  }
16
16
  export function maxBy(...args) {
17
- return purry(_maxBy(false), args);
17
+ return purry(maxBy_(false), args);
18
18
  }
19
19
  (function (maxBy) {
20
20
  function indexed(...args) {
21
- return purry(_maxBy(true), args);
21
+ return purry(maxBy_(true), args);
22
22
  }
23
23
  maxBy.indexed = indexed;
24
24
  })(maxBy || (maxBy = {}));
@@ -1,22 +1,22 @@
1
1
  import { purry } from '../function/purry';
2
- function _meanBy(indexed) {
2
+ function meanBy_(indexed) {
3
3
  return (array, fn) => {
4
4
  if (array.length === 0) {
5
5
  return Number.NaN;
6
6
  }
7
7
  let sum = 0;
8
- array.forEach((item, i) => {
9
- sum += indexed ? fn(item, i, array) : fn(item);
10
- });
8
+ for (const [index, item] of array.entries()) {
9
+ sum += indexed ? fn(item, index, array) : fn(item);
10
+ }
11
11
  return sum / array.length;
12
12
  };
13
13
  }
14
14
  export function meanBy(...args) {
15
- return purry(_meanBy(false), args);
15
+ return purry(meanBy_(false), args);
16
16
  }
17
17
  (function (meanBy) {
18
18
  function indexed(...args) {
19
- return purry(_meanBy(true), args);
19
+ return purry(meanBy_(true), args);
20
20
  }
21
21
  meanBy.indexed = indexed;
22
22
  })(meanBy || (meanBy = {}));
@@ -1,3 +1,7 @@
1
1
  export function mergeAll(items) {
2
- return items.reduce((acc, x) => ({ ...acc, ...x }), {});
2
+ let out = {};
3
+ for (const item of items) {
4
+ out = { ...out, ...item };
5
+ }
6
+ return out;
3
7
  }
@@ -1,24 +1,24 @@
1
1
  import { purry } from '../function/purry';
2
- function _minBy(indexed) {
2
+ function minBy_(indexed) {
3
3
  return (array, fn) => {
4
4
  let ret;
5
5
  let retMin;
6
- array.forEach((item, i) => {
7
- const min = indexed ? fn(item, i, array) : fn(item);
6
+ for (const [index, item] of array.entries()) {
7
+ const min = indexed ? fn(item, index, array) : fn(item);
8
8
  if (retMin === undefined || min < retMin) {
9
9
  ret = item;
10
10
  retMin = min;
11
11
  }
12
- });
12
+ }
13
13
  return ret;
14
14
  };
15
15
  }
16
16
  export function minBy(...args) {
17
- return purry(_minBy(false), args);
17
+ return purry(minBy_(false), args);
18
18
  }
19
19
  (function (minBy) {
20
20
  function indexed(...args) {
21
- return purry(_minBy(true), args);
21
+ return purry(minBy_(true), args);
22
22
  }
23
23
  minBy.indexed = indexed;
24
24
  })(minBy || (minBy = {}));
@@ -1,10 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function only(...args) {
3
- return purry(_only, args);
3
+ return purry(only_, args);
4
4
  }
5
- function _only(array) {
6
- if (array.length === 1) {
7
- return array[0];
8
- }
9
- return undefined;
5
+ function only_(array) {
6
+ return array.length === 1 ? array[0] : undefined;
10
7
  }
@@ -1,20 +1,20 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function partition(...args) {
3
- return purry(_partition(false), args);
3
+ return purry(partition_(false), args);
4
4
  }
5
- function _partition(indexed) {
5
+ function partition_(indexed) {
6
6
  return (array, fn) => {
7
7
  const ret = [[], []];
8
- array.forEach((item, index) => {
8
+ for (const [index, item] of array.entries()) {
9
9
  const matches = indexed ? fn(item, index, array) : fn(item);
10
10
  ret[matches ? 0 : 1].push(item);
11
- });
11
+ }
12
12
  return ret;
13
13
  };
14
14
  }
15
15
  (function (partition) {
16
16
  function indexed(...args) {
17
- return purry(_partition(true), args);
17
+ return purry(partition_(true), args);
18
18
  }
19
19
  partition.indexed = indexed;
20
20
  })(partition || (partition = {}));
@@ -1,8 +1,8 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function range(...args) {
3
- return purry(_range, args);
3
+ return purry(range_, args);
4
4
  }
5
- function _range(start, end) {
5
+ function range_(start, end) {
6
6
  const ret = [];
7
7
  for (let i = start; i < end; i++) {
8
8
  ret.push(i);
@@ -6,7 +6,7 @@ function rankByImplementation(data, compareFn, targetItem) {
6
6
  let rank = 0;
7
7
  for (const item of data) {
8
8
  if (compareFn(targetItem, item) > 0) {
9
- rank++;
9
+ rank += 1;
10
10
  }
11
11
  }
12
12
  return rank;
@@ -1,15 +1,15 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function reduce(...args) {
3
- return purry(_reduce(false), args);
3
+ return purry(reduce_(false), args);
4
4
  }
5
- function _reduce(indexed) {
5
+ function reduce_(indexed) {
6
6
  return (items, fn, initialValue) => {
7
7
  return items.reduce((acc, item, index) => indexed ? fn(acc, item, index, items) : fn(acc, item), initialValue);
8
8
  };
9
9
  }
10
10
  (function (reduce) {
11
11
  function indexed(...args) {
12
- return purry(_reduce(true), args);
12
+ return purry(reduce_(true), args);
13
13
  }
14
14
  reduce.indexed = indexed;
15
15
  })(reduce || (reduce = {}));
@@ -2,36 +2,23 @@ import { purry } from '../function/purry';
2
2
  import { reduceLazy } from '../utils/reduce-lazy';
3
3
  import { toLazyIndexed } from '../utils/to-lazy-indexed';
4
4
  export function reject(...args) {
5
- return purry(_reject(false), args, reject.lazy);
5
+ return purry(reject_(false), args, reject.lazy);
6
6
  }
7
- function _reject(indexed) {
7
+ function reject_(indexed) {
8
8
  return (array, fn) => {
9
9
  return reduceLazy(array, indexed ? reject.lazyIndexed(fn) : reject.lazy(fn), indexed);
10
10
  };
11
11
  }
12
- function _lazy(indexed) {
13
- return (fn) => {
14
- return (value, index, array) => {
15
- const valid = indexed ? fn(value, index, array) : fn(value);
16
- if (!valid) {
17
- return {
18
- done: false,
19
- hasNext: true,
20
- next: value,
21
- };
22
- }
23
- return {
24
- done: false,
25
- hasNext: false,
26
- };
27
- };
28
- };
12
+ function lazy_(indexed) {
13
+ return (fn) => (item, index, data) => (indexed ? fn(item, index, data) : fn(item))
14
+ ? { done: false, hasNext: false }
15
+ : { done: false, hasNext: true, next: item };
29
16
  }
30
17
  (function (reject) {
31
18
  function indexed(...args) {
32
- return purry(_reject(true), args, reject.lazyIndexed);
19
+ return purry(reject_(true), args, reject.lazyIndexed);
33
20
  }
34
21
  reject.indexed = indexed;
35
- reject.lazy = _lazy(false);
36
- reject.lazyIndexed = toLazyIndexed(_lazy(true));
22
+ reject.lazy = lazy_(false);
23
+ reject.lazyIndexed = toLazyIndexed(lazy_(true));
37
24
  })(reject || (reject = {}));
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function reverse(...args) {
3
- return purry(_reverse, args);
3
+ return purry(reverse_, args);
4
4
  }
5
- function _reverse(array) {
5
+ function reverse_(array) {
6
6
  return array.slice().reverse();
7
7
  }
@@ -10,7 +10,7 @@ function sampleImplementation(data, sampleSize) {
10
10
  throw new TypeError(`sampleSize must be an integer: ${sampleSize}`);
11
11
  }
12
12
  if (sampleSize >= data.length) {
13
- return data;
13
+ return data.slice();
14
14
  }
15
15
  if (sampleSize === 0) {
16
16
  return [];
@@ -1,10 +1,10 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function shuffle(...args) {
3
- return purry(_shuffle, args);
3
+ return purry(shuffle_, args);
4
4
  }
5
- function _shuffle(items) {
5
+ function shuffle_(items) {
6
6
  const result = items.slice();
7
- for (let index = 0; index < items.length; index += 1) {
7
+ for (let index = 0; index < items.length; index++) {
8
8
  const rand = index + Math.floor(Math.random() * (items.length - index));
9
9
  const value = result[rand];
10
10
  result[rand] = result[index];