@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,13 +1,13 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function clamp(...args) {
3
- return purry(_clamp, args);
3
+ return purry(clamp_, args);
4
4
  }
5
- function _clamp(value, limits) {
6
- if (limits.min != null && limits.min > value) {
7
- return limits.min;
5
+ function clamp_(value, { max, min }) {
6
+ if (min !== undefined && value < min) {
7
+ return min;
8
8
  }
9
- if (limits.max != null && limits.max < value) {
10
- return limits.max;
9
+ if (max !== undefined && value > max) {
10
+ return max;
11
11
  }
12
12
  return value;
13
13
  }
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function divide(...args) {
3
- return purry(_divide, args);
3
+ return purry(divide_, args);
4
4
  }
5
- function _divide(value, divisor) {
5
+ function divide_(value, divisor) {
6
6
  return value / divisor;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function multiply(...args) {
3
- return purry(_multiply, args);
3
+ return purry(multiply_, args);
4
4
  }
5
- function _multiply(value, multiplicand) {
5
+ function multiply_(value, multiplicand) {
6
6
  return value * multiplicand;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function subtract(...args) {
3
- return purry(_subtract, args);
3
+ return purry(subtract_, args);
4
4
  }
5
- function _subtract(value, subtrahend) {
5
+ function subtract_(value, subtrahend) {
6
6
  return value - subtrahend;
7
7
  }
@@ -1,8 +1,8 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function addProp(...args) {
3
- return purry(_addProp, args);
3
+ return purry(addProp_, args);
4
4
  }
5
- function _addProp(obj, prop, value) {
5
+ function addProp_(obj, prop, value) {
6
6
  return {
7
7
  ...obj,
8
8
  [prop]: value,
@@ -1,12 +1,12 @@
1
1
  import { type } from '../type';
2
- function _cloneRegExp(pattern) {
2
+ function cloneRegExp_(pattern) {
3
3
  return new RegExp(pattern.source, (pattern.global ? 'g' : '')
4
4
  + (pattern.ignoreCase ? 'i' : '')
5
5
  + (pattern.multiline ? 'm' : '')
6
6
  + (pattern.sticky ? 'y' : '')
7
7
  + (pattern.unicode ? 'u' : ''));
8
8
  }
9
- function _clone(value, refFrom, refTo, deep) {
9
+ function clone_(value, refFrom, refTo, deep) {
10
10
  function copy(copiedValue) {
11
11
  const len = refFrom.length;
12
12
  let idx = 0;
@@ -20,7 +20,7 @@ function _clone(value, refFrom, refTo, deep) {
20
20
  refTo[idx + 1] = copiedValue;
21
21
  for (const key in value) {
22
22
  copiedValue[key] = deep
23
- ? _clone(value[key], refFrom, refTo, true)
23
+ ? clone_(value[key], refFrom, refTo, true)
24
24
  : value[key];
25
25
  }
26
26
  return copiedValue;
@@ -33,7 +33,7 @@ function _clone(value, refFrom, refTo, deep) {
33
33
  case 'Date':
34
34
  return new Date(value.valueOf());
35
35
  case 'RegExp':
36
- return _cloneRegExp(value);
36
+ return cloneRegExp_(value);
37
37
  default:
38
38
  return value;
39
39
  }
@@ -41,5 +41,5 @@ function _clone(value, refFrom, refTo, deep) {
41
41
  export function clone(value) {
42
42
  return value != null && typeof value.clone === 'function'
43
43
  ? value.clone()
44
- : _clone(value, [], [], true);
44
+ : clone_(value, [], [], true);
45
45
  }
@@ -1,67 +1,63 @@
1
1
  import { purry } from '../function/purry';
2
- const isArray = Array.isArray;
3
- const keyList = Object.keys;
4
2
  export function equals(...args) {
5
- return purry(_equals, args);
3
+ return purry(equals_, args);
6
4
  }
7
- function _equals(a, b) {
5
+ function equals_(a, b) {
8
6
  if (a === b) {
9
7
  return true;
10
8
  }
11
- if (a && b && typeof a === 'object' && typeof b === 'object') {
12
- const arrA = isArray(a);
13
- const arrB = isArray(b);
14
- let i;
15
- let length;
16
- let key;
17
- if (arrA && arrB) {
18
- length = a.length;
19
- if (length !== b.length) {
20
- return false;
21
- }
22
- for (i = length; i-- !== 0;) {
23
- if (!equals(a[i], b[i])) {
24
- return false;
25
- }
26
- }
27
- return true;
28
- }
29
- if (arrA !== arrB) {
30
- return false;
31
- }
32
- const dateA = a instanceof Date;
33
- const dateB = b instanceof Date;
34
- if (dateA !== dateB) {
9
+ if (typeof a === 'number' && typeof b === 'number') {
10
+ return Number.isNaN(a) && Number.isNaN(b);
11
+ }
12
+ if (typeof a !== 'object' || typeof b !== 'object') {
13
+ return false;
14
+ }
15
+ if (a === null || b === null) {
16
+ return false;
17
+ }
18
+ const isArrayA = Array.isArray(a);
19
+ const isArrayB = Array.isArray(b);
20
+ if (isArrayA && isArrayB) {
21
+ if (a.length !== b.length) {
35
22
  return false;
36
23
  }
37
- if (dateA && dateB) {
38
- return a.getTime() === b.getTime();
24
+ for (let i = 0; i < a.length; i++) {
25
+ if (!equals_(a[i], b[i])) {
26
+ return false;
27
+ }
39
28
  }
40
- const regexpA = a instanceof RegExp;
41
- const regexpB = b instanceof RegExp;
42
- if (regexpA !== regexpB) {
29
+ return true;
30
+ }
31
+ if (isArrayA !== isArrayB) {
32
+ return false;
33
+ }
34
+ const isDateA = a instanceof Date;
35
+ const isDateB = b instanceof Date;
36
+ if (isDateA && isDateB) {
37
+ return a.getTime() === b.getTime();
38
+ }
39
+ if (isDateA !== isDateB) {
40
+ return false;
41
+ }
42
+ const isRegExpA = a instanceof RegExp;
43
+ const isRegExpB = b instanceof RegExp;
44
+ if (isRegExpA && isRegExpB) {
45
+ return a.toString() === b.toString();
46
+ }
47
+ if (isRegExpA !== isRegExpB) {
48
+ return false;
49
+ }
50
+ const keys = Object.keys(a);
51
+ if (keys.length !== Object.keys(b).length) {
52
+ return false;
53
+ }
54
+ for (const key of keys) {
55
+ if (!Object.prototype.hasOwnProperty.call(b, key)) {
43
56
  return false;
44
57
  }
45
- if (regexpA && regexpB) {
46
- return a.toString() === b.toString();
47
- }
48
- const keys = keyList(a);
49
- length = keys.length;
50
- if (length !== keyList(b).length) {
58
+ if (!equals_(a[key], b[key])) {
51
59
  return false;
52
60
  }
53
- for (i = length; i-- !== 0;) {
54
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {
55
- return false;
56
- }
57
- }
58
- for (i = length; i-- !== 0;) {
59
- key = keys[i];
60
- if (!equals(a[key], b[key])) {
61
- return false;
62
- }
63
- }
64
- return true;
65
61
  }
66
- return a !== a && b !== b;
62
+ return true;
67
63
  }
@@ -1,26 +1,26 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function forEachObj(...args) {
3
- return purry(_forEachObj(false), args);
3
+ return purry(forEachObj_(false), args);
4
4
  }
5
- function _forEachObj(indexed) {
6
- return (object, fn) => {
7
- for (const key in object) {
8
- if (Object.prototype.hasOwnProperty.call(object, key)) {
9
- const val = object[key];
5
+ function forEachObj_(indexed) {
6
+ return (data, fn) => {
7
+ for (const key in data) {
8
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
9
+ const { [key]: val } = data;
10
10
  if (indexed) {
11
- fn(val, key, object);
11
+ fn(val, key, data);
12
12
  }
13
13
  else {
14
14
  fn(val);
15
15
  }
16
16
  }
17
17
  }
18
- return object;
18
+ return data;
19
19
  };
20
20
  }
21
21
  (function (forEachObj) {
22
22
  function indexed(...args) {
23
- return purry(_forEachObj(true), args);
23
+ return purry(forEachObj_(true), args);
24
24
  }
25
25
  forEachObj.indexed = indexed;
26
26
  })(forEachObj || (forEachObj = {}));
@@ -1,4 +1,8 @@
1
- export function fromPairs(entries) {
1
+ import { purry } from '../function/purry';
2
+ export function fromPairs(...args) {
3
+ return purry(fromPairsImplementation, args);
4
+ }
5
+ function fromPairsImplementation(entries) {
2
6
  const out = {};
3
7
  for (const [key, value] of entries) {
4
8
  out[key] = value;
@@ -1,11 +1,13 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function invert(...args) {
3
- return purry(_invert, args);
3
+ return purry(invert_, args);
4
4
  }
5
- function _invert(object) {
5
+ function invert_(object) {
6
6
  const result = {};
7
7
  for (const key in object) {
8
- result[object[key]] = key;
8
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
9
+ result[object[key]] = key;
10
+ }
9
11
  }
10
12
  return result;
11
13
  }
@@ -1,5 +1,6 @@
1
- export function keys(source) {
2
- return Object.keys(source);
1
+ import { purry } from '../function/purry';
2
+ export function keys(...args) {
3
+ return purry(Object.keys, args);
3
4
  }
4
5
  (function (keys) {
5
6
  keys.strict = keys;
@@ -1,9 +1,9 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { toPairs } from './to-pairs';
3
3
  export function mapKeys(...args) {
4
- return purry(_mapKeys, args);
4
+ return purry(mapKeys_, args);
5
5
  }
6
- function _mapKeys(data, fn) {
6
+ function mapKeys_(data, fn) {
7
7
  const out = {};
8
8
  for (const [key, value] of toPairs.strict(data)) {
9
9
  out[fn(key, value)] = value;
@@ -1,9 +1,9 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { toPairs } from './to-pairs';
3
3
  export function mapValues(...args) {
4
- return purry(_mapValues, args);
4
+ return purry(mapValues_, args);
5
5
  }
6
- function _mapValues(data, fn) {
6
+ function mapValues_(data, fn) {
7
7
  const out = {};
8
8
  for (const [key, value] of toPairs.strict(data)) {
9
9
  out[key] = fn(value, key);
@@ -8,11 +8,11 @@ function mergeDeepImplementation(destination, source) {
8
8
  if (!(key in destination)) {
9
9
  continue;
10
10
  }
11
- const destinationValue = destination[key];
11
+ const { [key]: destinationValue } = destination;
12
12
  if (!isRecord(destinationValue)) {
13
13
  continue;
14
14
  }
15
- const sourceValue = source[key];
15
+ const { [key]: sourceValue } = source;
16
16
  if (!isRecord(sourceValue)) {
17
17
  continue;
18
18
  }
@@ -1,7 +1,7 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function merge(...args) {
3
- return purry(_merge, args);
3
+ return purry(merge_, args);
4
4
  }
5
- function _merge(a, b) {
5
+ function merge_(a, b) {
6
6
  return Object.assign({}, a, b);
7
7
  }
@@ -1,16 +1,17 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { keys } from './keys';
3
3
  export function omitBy(...args) {
4
- return purry(_omitBy, args);
4
+ return purry(omitBy_, args);
5
5
  }
6
- function _omitBy(object, fn) {
6
+ function omitBy_(object, fn) {
7
7
  if (object === undefined || object === null) {
8
8
  return object;
9
9
  }
10
- return keys.strict(object).reduce((acc, key) => {
10
+ const out = {};
11
+ for (const key of keys.strict(object)) {
11
12
  if (!fn(object[key], key)) {
12
- acc[key] = object[key];
13
+ out[key] = object[key];
13
14
  }
14
- return acc;
15
- }, {});
15
+ }
16
+ return out;
16
17
  }
@@ -2,9 +2,9 @@ import { hasAtLeast } from '../array/has-at-least';
2
2
  import { purry } from '../function/purry';
3
3
  import { fromPairs } from './from-pairs';
4
4
  export function omit(...args) {
5
- return purry(_omit, args);
5
+ return purry(omit_, args);
6
6
  }
7
- function _omit(data, propNames) {
7
+ function omit_(data, propNames) {
8
8
  if (!hasAtLeast(propNames, 1)) {
9
9
  return { ...data };
10
10
  }
@@ -1,14 +1,14 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function pathOr(...args) {
3
- return purry(_pathOr, args);
3
+ return purry(pathOr_, args);
4
4
  }
5
- function _pathOr(object, path, defaultValue) {
6
- let current = object;
5
+ function pathOr_(data, path, defaultValue) {
6
+ let current = data;
7
7
  for (const prop of path) {
8
- if (current == null || current[prop] == null) {
9
- return defaultValue;
8
+ if (current === null || current === undefined) {
9
+ break;
10
10
  }
11
11
  current = current[prop];
12
12
  }
13
- return current;
13
+ return current ?? defaultValue;
14
14
  }
@@ -1,16 +1,17 @@
1
1
  import { purry } from '../function/purry';
2
2
  import { keys } from './keys';
3
3
  export function pickBy(...args) {
4
- return purry(_pickBy, args);
4
+ return purry(pickBy_, args);
5
5
  }
6
- function _pickBy(object, fn) {
7
- if (object == null) {
6
+ function pickBy_(data, fn) {
7
+ if (data === null || data === undefined) {
8
8
  return {};
9
9
  }
10
- return keys.strict(object).reduce((acc, key) => {
11
- if (fn(object[key], key)) {
12
- acc[key] = object[key];
10
+ const out = {};
11
+ for (const key of keys.strict(data)) {
12
+ if (fn(data[key], key)) {
13
+ out[key] = data[key];
13
14
  }
14
- return acc;
15
- }, {});
15
+ }
16
+ return out;
16
17
  }
@@ -1,15 +1,13 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function pick(...args) {
3
- return purry(_pick, args);
3
+ return purry(pick_, args);
4
4
  }
5
- function _pick(object, names) {
6
- if (object == null) {
7
- return {};
8
- }
9
- return names.reduce((acc, name) => {
5
+ function pick_(object, names) {
6
+ const out = {};
7
+ for (const name of names) {
10
8
  if (name in object) {
11
- acc[name] = object[name];
9
+ out[name] = object[name];
12
10
  }
13
- return acc;
14
- }, {});
11
+ }
12
+ return out;
15
13
  }
@@ -1,21 +1,20 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function setPath(...args) {
3
- return purry(_setPath, args);
3
+ return purry(setPath_, args);
4
4
  }
5
- export function _setPath(object, path, defaultValue) {
6
- if (path.length === 0) {
7
- return defaultValue;
5
+ export function setPath_(data, path, value) {
6
+ const [current, ...rest] = path;
7
+ if (current === undefined) {
8
+ return value;
8
9
  }
9
- if (Array.isArray(object)) {
10
- return object.map((item, index) => {
11
- if (index === path[0]) {
12
- return _setPath(item, path.slice(1), defaultValue);
13
- }
14
- return item;
15
- });
10
+ if (Array.isArray(data)) {
11
+ return data.map((item, index) => index === current ? setPath_(item, rest, value) : item);
12
+ }
13
+ if (data === null || data === undefined) {
14
+ throw new Error('Path doesn\'t exist in object!');
16
15
  }
17
16
  return {
18
- ...object,
19
- [path[0]]: _setPath(object[path[0]], path.slice(1), defaultValue),
17
+ ...data,
18
+ [current]: setPath_(data[current], rest, value),
20
19
  };
21
20
  }
@@ -1,8 +1,8 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function set(...args) {
3
- return purry(_set, args);
3
+ return purry(set_, args);
4
4
  }
5
- function _set(obj, prop, value) {
5
+ function set_(obj, prop, value) {
6
6
  return {
7
7
  ...obj,
8
8
  [prop]: value,
@@ -1,8 +1,8 @@
1
1
  import { purry } from '../function/purry';
2
2
  export function swapProps(...args) {
3
- return purry(_swapProps, args);
3
+ return purry(swapProps_, args);
4
4
  }
5
- function _swapProps(obj, key1, key2) {
5
+ function swapProps_(obj, key1, key2) {
6
6
  const { [key1]: value1, [key2]: value2 } = obj;
7
7
  return {
8
8
  ...obj,
@@ -1,6 +1,12 @@
1
- import { range } from '../array/range';
2
- export function randomString(length) {
3
- const characterSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
4
- const randomChar = () => characterSet[Math.floor(Math.random() * characterSet.length)];
5
- return range(0, length).reduce((text) => text + randomChar(), '');
1
+ import { purry } from '../function/purry';
2
+ import { times } from '../function/times';
3
+ const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
4
+ export function randomString(...args) {
5
+ return purry(randomStringImplementation, args);
6
+ }
7
+ function randomStringImplementation(length) {
8
+ return times(length, randomChar).join('');
9
+ }
10
+ function randomChar() {
11
+ return ALPHABET[Math.floor(Math.random() * ALPHABET.length)];
6
12
  }
@@ -1,14 +1,14 @@
1
1
  export function stringToPath(path) {
2
- return _stringToPath(path);
2
+ return stringToPath_(path);
3
3
  }
4
- function _stringToPath(path) {
4
+ function stringToPath_(path) {
5
5
  if (path.length === 0) {
6
6
  return [];
7
7
  }
8
- const match = path.match(/^\[(.+?)\](.*)$/) ?? path.match(/^\.?([^.[\]]+)(.*)$/);
9
- if (match) {
8
+ const match = /^\[(.+?)\](.*)$/u.exec(path) ?? /^\.?([^.[\]]+)(.*)$/u.exec(path);
9
+ if (match !== null) {
10
10
  const [, key, rest] = match;
11
- return [key, ..._stringToPath(rest)];
11
+ return [key, ...stringToPath_(rest)];
12
12
  }
13
13
  return [path];
14
14
  }
@@ -0,0 +1,15 @@
1
+ export function binarySearchCutoffIndex(array, predicate) {
2
+ let lowIndex = 0;
3
+ let highIndex = array.length;
4
+ while (lowIndex < highIndex) {
5
+ const pivotIndex = (lowIndex + highIndex) >>> 1;
6
+ const pivot = array[pivotIndex];
7
+ if (predicate(pivot, pivotIndex)) {
8
+ lowIndex = pivotIndex + 1;
9
+ }
10
+ else {
11
+ highIndex = pivotIndex;
12
+ }
13
+ }
14
+ return highIndex;
15
+ }
@@ -9,7 +9,7 @@ export function heapMaybeInsert(heap, compareFn, item) {
9
9
  if (!hasAtLeast(heap, 1)) {
10
10
  return;
11
11
  }
12
- const head = heap[0];
12
+ const [head] = heap;
13
13
  if (compareFn(item, head) >= 0) {
14
14
  return;
15
15
  }
@@ -28,7 +28,7 @@ export function purryOrderRulesWithArgument(func, inputArgs) {
28
28
  function orderRuleComparer(primaryRule, secondaryRule, ...otherRules) {
29
29
  const projector = typeof primaryRule === 'function' ? primaryRule : primaryRule[0];
30
30
  const direction = typeof primaryRule === 'function' ? 'asc' : primaryRule[1];
31
- const comparator = COMPARATORS[direction];
31
+ const { [direction]: comparator } = COMPARATORS;
32
32
  const nextComparer = secondaryRule === undefined
33
33
  ? undefined
34
34
  : orderRuleComparer(secondaryRule, ...otherRules);
@@ -2,7 +2,7 @@ import { swapInPlace } from './swap-in-place';
2
2
  export function quickSelect(data, index, compareFn) {
3
3
  return index < 0 || index >= data.length
4
4
  ? undefined
5
- : quickSelectImplementation([...data], 0, data.length - 1, index, compareFn);
5
+ : quickSelectImplementation(data.slice(), 0, data.length - 1, index, compareFn);
6
6
  }
7
7
  function quickSelectImplementation(data, left, right, index, compareFn) {
8
8
  if (left === right) {
@@ -19,7 +19,7 @@ function partition(data, left, right, compareFn) {
19
19
  for (let j = left; j < right; j++) {
20
20
  if (compareFn(data[j], pivot) < 0) {
21
21
  swapInPlace(data, i, j);
22
- i++;
22
+ i += 1;
23
23
  }
24
24
  }
25
25
  swapInPlace(data, i, right);
@@ -1,14 +1,17 @@
1
- export function reduceLazy(array, lazy, indexed) {
2
- const newArray = [];
1
+ export function reduceLazy(array, lazy, isIndexed = false) {
2
+ const out = [];
3
3
  for (let index = 0; index < array.length; index++) {
4
4
  const item = array[index];
5
- const result = indexed ? lazy(item, index, array) : lazy(item);
5
+ const result = isIndexed ? lazy(item, index, array) : lazy(item);
6
6
  if (result.hasMany === true) {
7
- newArray.push(...result.next);
7
+ out.push(...result.next);
8
8
  }
9
9
  else if (result.hasNext) {
10
- newArray.push(result.next);
10
+ out.push(result.next);
11
+ }
12
+ if (result.done) {
13
+ break;
11
14
  }
12
15
  }
13
- return newArray;
16
+ return out;
14
17
  }
@@ -1,4 +1,3 @@
1
1
  export function toSingle(fn) {
2
- fn.single = true;
3
- return fn;
2
+ return Object.assign(fn, { single: true });
4
3
  }