@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,51 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sortBy = void 0;
4
- const purry_1 = require("../function/purry");
5
- const ALL_DIRECTIONS = ['asc', 'desc'];
6
- const COMPARATOR = {
7
- asc: (x, y) => x > y,
8
- desc: (x, y) => x < y,
9
- };
10
- function sortBy(arrayOrSortRule, ...sortRules) {
11
- const args = isSortRule(arrayOrSortRule)
12
- ? [[arrayOrSortRule, ...sortRules]]
13
- : [arrayOrSortRule, sortRules];
14
- return (0, purry_1.purry)(_sortBy, args);
4
+ const purry_order_rules_1 = require("../utils/purry-order-rules");
5
+ function sortBy(...args) {
6
+ return (0, purry_order_rules_1.purryOrderRules)(_sortBy, args);
15
7
  }
16
8
  exports.sortBy = sortBy;
17
- function isSortRule(x) {
18
- if (typeof x === 'function') {
19
- return true;
20
- }
21
- const [maybeProjection, maybeDirection, ...rest] = x;
22
- if (rest.length > 0) {
23
- return false;
24
- }
25
- return (typeof maybeProjection === 'function'
26
- && ALL_DIRECTIONS.includes(maybeDirection));
27
- }
28
- function _sortBy(array, sorts) {
29
- return [...array].sort(comparer(...sorts));
30
- }
31
- function comparer(primaryRule, secondaryRule, ...otherRules) {
32
- const projector = typeof primaryRule === 'function' ? primaryRule : primaryRule[0];
33
- const direction = typeof primaryRule === 'function' ? 'asc' : primaryRule[1];
34
- const comparator = COMPARATOR[direction];
35
- const nextComparer = secondaryRule === undefined
36
- ? undefined
37
- : comparer(secondaryRule, ...otherRules);
38
- return (a, b) => {
39
- const projectedA = projector(a);
40
- const projectedB = projector(b);
41
- if (comparator(projectedA, projectedB)) {
42
- return 1;
43
- }
44
- if (comparator(projectedB, projectedA)) {
45
- return -1;
46
- }
47
- return nextComparer?.(a, b) ?? 0;
48
- };
9
+ function _sortBy(data, compareFn) {
10
+ return data.slice().sort(compareFn);
49
11
  }
50
12
  (function (sortBy) {
51
13
  sortBy.strict = sortBy;
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sort = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function sort(...args) {
6
- return (0, purry_1.purry)(_sort, args);
6
+ return (0, purry_1.purry)(sort_, args);
7
7
  }
8
8
  exports.sort = sort;
9
- function _sort(items, cmp) {
10
- const ret = [...items];
9
+ function sort_(items, cmp) {
10
+ const ret = items.slice();
11
11
  ret.sort(cmp);
12
12
  return ret;
13
13
  }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortedIndexBy = void 0;
4
+ const purry_1 = require("../function/purry");
5
+ const binary_search_cutoff_index_1 = require("../utils/binary-search-cutoff-index");
6
+ function sortedIndexBy(...args) {
7
+ return (0, purry_1.purry)(sortedIndexByImplementation, args);
8
+ }
9
+ exports.sortedIndexBy = sortedIndexBy;
10
+ (function (sortedIndexBy) {
11
+ function indexed(...args) {
12
+ return (0, purry_1.purry)(sortedIndexByImplementation, args);
13
+ }
14
+ sortedIndexBy.indexed = indexed;
15
+ })(sortedIndexBy || (exports.sortedIndexBy = sortedIndexBy = {}));
16
+ function sortedIndexByImplementation(array, item, valueFunction) {
17
+ const value = valueFunction(item);
18
+ return (0, binary_search_cutoff_index_1.binarySearchCutoffIndex)(array, (pivot, index) => valueFunction(pivot, index) < value);
19
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortedIndexWith = void 0;
4
+ const purry_1 = require("../function/purry");
5
+ const binary_search_cutoff_index_1 = require("../utils/binary-search-cutoff-index");
6
+ function sortedIndexWith(...args) {
7
+ return (0, purry_1.purry)(binary_search_cutoff_index_1.binarySearchCutoffIndex, args);
8
+ }
9
+ exports.sortedIndexWith = sortedIndexWith;
10
+ (function (sortedIndexWith) {
11
+ function indexed(...args) {
12
+ return (0, purry_1.purry)(binary_search_cutoff_index_1.binarySearchCutoffIndex, args);
13
+ }
14
+ sortedIndexWith.indexed = indexed;
15
+ })(sortedIndexWith || (exports.sortedIndexWith = sortedIndexWith = {}));
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortedIndex = void 0;
4
+ const purry_1 = require("../function/purry");
5
+ const binary_search_cutoff_index_1 = require("../utils/binary-search-cutoff-index");
6
+ function sortedIndex(...args) {
7
+ return (0, purry_1.purry)(sortedIndexImplementation, args);
8
+ }
9
+ exports.sortedIndex = sortedIndex;
10
+ function sortedIndexImplementation(array, item) {
11
+ return (0, binary_search_cutoff_index_1.binarySearchCutoffIndex)(array, (pivot) => pivot < item);
12
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortedLastIndexBy = void 0;
4
+ const purry_1 = require("../function/purry");
5
+ const binary_search_cutoff_index_1 = require("../utils/binary-search-cutoff-index");
6
+ function sortedLastIndexBy(...args) {
7
+ return (0, purry_1.purry)(sortedLastIndexByImplementation, args);
8
+ }
9
+ exports.sortedLastIndexBy = sortedLastIndexBy;
10
+ (function (sortedLastIndexBy) {
11
+ function indexed(...args) {
12
+ return (0, purry_1.purry)(sortedLastIndexByImplementation, args);
13
+ }
14
+ sortedLastIndexBy.indexed = indexed;
15
+ })(sortedLastIndexBy || (exports.sortedLastIndexBy = sortedLastIndexBy = {}));
16
+ function sortedLastIndexByImplementation(array, item, valueFunction) {
17
+ const value = valueFunction(item);
18
+ return (0, binary_search_cutoff_index_1.binarySearchCutoffIndex)(array, (pivot, index) => valueFunction(pivot, index) <= value);
19
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortedLastIndex = void 0;
4
+ const purry_1 = require("../function/purry");
5
+ const binary_search_cutoff_index_1 = require("../utils/binary-search-cutoff-index");
6
+ function sortedLastIndex(...args) {
7
+ return (0, purry_1.purry)(sortedLastIndexImplementation, args);
8
+ }
9
+ exports.sortedLastIndex = sortedLastIndex;
10
+ function sortedLastIndexImplementation(array, item) {
11
+ return (0, binary_search_cutoff_index_1.binarySearchCutoffIndex)(array, (pivot) => pivot <= item);
12
+ }
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splice = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function splice(...args) {
6
- return (0, purry_1.purry)(_splice, args);
6
+ return (0, purry_1.purry)(splice_, args);
7
7
  }
8
8
  exports.splice = splice;
9
- function _splice(items, start, deleteCount, replacement) {
10
- const result = [...items];
9
+ function splice_(items, start, deleteCount, replacement) {
10
+ const result = items.slice();
11
11
  result.splice(start, deleteCount, ...replacement);
12
12
  return result;
13
13
  }
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.splitAt = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function splitAt(...args) {
6
- return (0, purry_1.purry)(_splitAt, args);
6
+ return (0, purry_1.purry)(splitAt_, args);
7
7
  }
8
8
  exports.splitAt = splitAt;
9
- function _splitAt(array, index) {
10
- const copy = [...array];
9
+ function splitAt_(array, index) {
10
+ const copy = array.slice();
11
11
  const tail = copy.splice(index);
12
12
  return [copy, tail];
13
13
  }
@@ -4,14 +4,14 @@ exports.splitWhen = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  const split_at_1 = require("./split-at");
6
6
  function splitWhen(...args) {
7
- return (0, purry_1.purry)(_splitWhen, args);
7
+ return (0, purry_1.purry)(splitWhen_, args);
8
8
  }
9
9
  exports.splitWhen = splitWhen;
10
- function _splitWhen(array, fn) {
11
- for (let i = 0; i < array.length; i++) {
12
- if (fn(array[i])) {
13
- return (0, split_at_1.splitAt)(array, i);
10
+ function splitWhen_(array, fn) {
11
+ for (const [index, item] of array.entries()) {
12
+ if (fn(item)) {
13
+ return (0, split_at_1.splitAt)(array, index);
14
14
  }
15
15
  }
16
- return [array, []];
16
+ return [array.slice(), []];
17
17
  }
@@ -2,23 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sumBy = void 0;
4
4
  const purry_1 = require("../function/purry");
5
- function _sumBy(indexed) {
5
+ function sumBy_(indexed) {
6
6
  return (array, fn) => {
7
7
  let sum = 0;
8
- array.forEach((item, i) => {
9
- const summand = indexed ? fn(item, i, array) : fn(item);
8
+ for (const [index, item] of array.entries()) {
9
+ const summand = indexed ? fn(item, index, array) : fn(item);
10
10
  sum += summand;
11
- });
11
+ }
12
12
  return sum;
13
13
  };
14
14
  }
15
15
  function sumBy(...args) {
16
- return (0, purry_1.purry)(_sumBy(false), args);
16
+ return (0, purry_1.purry)(sumBy_(false), args);
17
17
  }
18
18
  exports.sumBy = sumBy;
19
19
  (function (sumBy) {
20
20
  function indexed(...args) {
21
- return (0, purry_1.purry)(_sumBy(true), args);
21
+ return (0, purry_1.purry)(sumBy_(true), args);
22
22
  }
23
23
  sumBy.indexed = indexed;
24
24
  })(sumBy || (exports.sumBy = sumBy = {}));
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.swapIndices = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function swapIndices(...args) {
6
- return (0, purry_1.purry)(_swapIndices, args);
6
+ return (0, purry_1.purry)(swapIndices_, args);
7
7
  }
8
8
  exports.swapIndices = swapIndices;
9
- function _swapIndices(item, index1, index2) {
9
+ function swapIndices_(item, index1, index2) {
10
10
  return typeof item === 'string'
11
- ? _swapString(item, index1, index2)
12
- : _swapArray(item, index1, index2);
11
+ ? swapString_(item, index1, index2)
12
+ : swapArray_(item, index1, index2);
13
13
  }
14
- function _swapArray(item, index1, index2) {
14
+ function swapArray_(item, index1, index2) {
15
15
  const result = item.slice();
16
16
  if (Number.isNaN(index1) || Number.isNaN(index2)) {
17
17
  return result;
@@ -28,7 +28,7 @@ function _swapArray(item, index1, index2) {
28
28
  result[positiveIndexB] = item[positiveIndexA];
29
29
  return result;
30
30
  }
31
- function _swapString(item, index1, index2) {
32
- const result = _swapArray(item.split(''), index1, index2);
31
+ function swapString_(item, index1, index2) {
32
+ const result = swapArray_(item.split(''), index1, index2);
33
33
  return result.join('');
34
34
  }
@@ -12,7 +12,7 @@ function takeFirstByImplementation(data, compareFn, n) {
12
12
  return [];
13
13
  }
14
14
  if (n >= data.length) {
15
- return [...data];
15
+ return data.slice();
16
16
  }
17
17
  const heap = data.slice(0, n);
18
18
  (0, heap_1.heapify)(heap, compareFn);
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.takeWhile = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function takeWhile(...args) {
6
- return (0, purry_1.purry)(_takeWhile, args);
6
+ return (0, purry_1.purry)(takeWhile_, args);
7
7
  }
8
8
  exports.takeWhile = takeWhile;
9
- function _takeWhile(array, fn) {
9
+ function takeWhile_(array, fn) {
10
10
  const ret = [];
11
11
  for (const item of array) {
12
12
  if (!fn(item)) {
@@ -4,34 +4,21 @@ exports.take = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  const reduce_lazy_1 = require("../utils/reduce-lazy");
6
6
  function take(...args) {
7
- return (0, purry_1.purry)(_take, args, take.lazy);
7
+ return (0, purry_1.purry)(take_, args, take.lazy);
8
8
  }
9
9
  exports.take = take;
10
- function _take(array, n) {
10
+ function take_(array, n) {
11
11
  return (0, reduce_lazy_1.reduceLazy)(array, take.lazy(n));
12
12
  }
13
13
  (function (take) {
14
14
  function lazy(n) {
15
+ if (n <= 0) {
16
+ return () => ({ done: true, hasNext: false });
17
+ }
18
+ let remaining = n;
15
19
  return (value) => {
16
- if (n === 0) {
17
- return {
18
- done: true,
19
- hasNext: false,
20
- };
21
- }
22
- n--;
23
- if (n === 0) {
24
- return {
25
- done: true,
26
- hasNext: true,
27
- next: value,
28
- };
29
- }
30
- return {
31
- done: false,
32
- hasNext: true,
33
- next: value,
34
- };
20
+ remaining -= 1;
21
+ return { done: remaining <= 0, hasNext: true, next: value };
35
22
  };
36
23
  }
37
24
  take.lazy = lazy;
@@ -4,10 +4,10 @@ exports.uniqBy = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  const reduce_lazy_1 = require("../utils/reduce-lazy");
6
6
  function uniqBy(...args) {
7
- return (0, purry_1.purry)(_uniqBy, args, lazyUniqBy);
7
+ return (0, purry_1.purry)(uniqBy_, args, lazyUniqBy);
8
8
  }
9
9
  exports.uniqBy = uniqBy;
10
- function _uniqBy(array, transformer) {
10
+ function uniqBy_(array, transformer) {
11
11
  return (0, reduce_lazy_1.reduceLazy)(array, lazyUniqBy(transformer));
12
12
  }
13
13
  function lazyUniqBy(transformer) {
@@ -15,16 +15,9 @@ function lazyUniqBy(transformer) {
15
15
  return (value) => {
16
16
  const appliedItem = transformer(value);
17
17
  if (set.has(appliedItem)) {
18
- return {
19
- done: false,
20
- hasNext: false,
21
- };
18
+ return { done: false, hasNext: false };
22
19
  }
23
20
  set.add(appliedItem);
24
- return {
25
- done: false,
26
- hasNext: true,
27
- next: value,
28
- };
21
+ return { done: false, hasNext: true, next: value };
29
22
  };
30
23
  }
@@ -5,29 +5,19 @@ const purry_1 = require("../function/purry");
5
5
  const reduce_lazy_1 = require("../utils/reduce-lazy");
6
6
  const to_lazy_indexed_1 = require("../utils/to-lazy-indexed");
7
7
  function uniqWith(...args) {
8
- return (0, purry_1.purry)(_uniqWith, args, uniqWith.lazy);
8
+ return (0, purry_1.purry)(uniqWith_, args, uniqWith.lazy);
9
9
  }
10
10
  exports.uniqWith = uniqWith;
11
- function _uniqWith(array, isEquals) {
11
+ function uniqWith_(array, isEquals) {
12
12
  const lazy = uniqWith.lazy(isEquals);
13
13
  return (0, reduce_lazy_1.reduceLazy)(array, lazy, true);
14
14
  }
15
- function _lazy(isEquals) {
16
- return (value, index, array) => {
17
- if (array
18
- && array.findIndex((otherValue) => isEquals(value, otherValue)) === index) {
19
- return {
20
- done: false,
21
- hasNext: true,
22
- next: value,
23
- };
24
- }
25
- return {
26
- done: false,
27
- hasNext: false,
28
- };
29
- };
15
+ function lazy_(isEquals) {
16
+ return (value, index, array) => array !== undefined
17
+ && array.findIndex((otherValue) => isEquals(value, otherValue)) === index
18
+ ? { done: false, hasNext: true, next: value }
19
+ : { done: false, hasNext: false };
30
20
  }
31
21
  (function (uniqWith) {
32
- uniqWith.lazy = (0, to_lazy_indexed_1.toLazyIndexed)(_lazy);
22
+ uniqWith.lazy = (0, to_lazy_indexed_1.toLazyIndexed)(lazy_);
33
23
  })(uniqWith || (exports.uniqWith = uniqWith = {}));
@@ -4,10 +4,10 @@ exports.uniq = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  const reduce_lazy_1 = require("../utils/reduce-lazy");
6
6
  function uniq(...args) {
7
- return (0, purry_1.purry)(_uniq, args, uniq.lazy);
7
+ return (0, purry_1.purry)(uniq_, args, uniq.lazy);
8
8
  }
9
9
  exports.uniq = uniq;
10
- function _uniq(array) {
10
+ function uniq_(array) {
11
11
  return (0, reduce_lazy_1.reduceLazy)(array, uniq.lazy());
12
12
  }
13
13
  (function (uniq) {
@@ -15,17 +15,10 @@ function _uniq(array) {
15
15
  const set = new Set();
16
16
  return (value) => {
17
17
  if (set.has(value)) {
18
- return {
19
- done: false,
20
- hasNext: false,
21
- };
18
+ return { done: false, hasNext: false };
22
19
  }
23
20
  set.add(value);
24
- return {
25
- done: false,
26
- hasNext: true,
27
- next: value,
28
- };
21
+ return { done: false, hasNext: true, next: value };
29
22
  };
30
23
  }
31
24
  uniq.lazy = lazy;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.zipObj = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function zipObj(...args) {
6
- return (0, purry_1.purry)(_zipObj, args);
6
+ return (0, purry_1.purry)(zipObj_, args);
7
7
  }
8
8
  exports.zipObj = zipObj;
9
- function _zipObj(first, second) {
9
+ function zipObj_(first, second) {
10
10
  const resultLength = first.length > second.length ? second.length : first.length;
11
11
  const result = {};
12
12
  for (let i = 0; i < resultLength; i++) {
@@ -4,16 +4,16 @@ exports.zipWith = void 0;
4
4
  function zipWith(arg0, arg1, arg2) {
5
5
  if (typeof arg0 === 'function') {
6
6
  return arg1 === undefined
7
- ? (f, s) => _zipWith(f, s, arg0)
8
- : (f) => _zipWith(f, arg1, arg0);
7
+ ? (f, s) => zipWith_(f, s, arg0)
8
+ : (f) => zipWith_(f, arg1, arg0);
9
9
  }
10
10
  if (arg1 === undefined || arg2 === undefined) {
11
11
  throw new Error('zipWith: Missing arguments in dataFirst function call');
12
12
  }
13
- return _zipWith(arg0, arg1, arg2);
13
+ return zipWith_(arg0, arg1, arg2);
14
14
  }
15
15
  exports.zipWith = zipWith;
16
- function _zipWith(first, second, fn) {
16
+ function zipWith_(first, second, fn) {
17
17
  const resultLength = first.length > second.length ? second.length : first.length;
18
18
  const result = [];
19
19
  for (let i = 0; i < resultLength; i++) {
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.zip = void 0;
4
4
  const purry_1 = require("../function/purry");
5
5
  function zip(...args) {
6
- return (0, purry_1.purry)(_zip, args);
6
+ return (0, purry_1.purry)(zip_, args);
7
7
  }
8
8
  exports.zip = zip;
9
- function _zip(first, second) {
9
+ function zip_(first, second) {
10
10
  const resultLength = first.length > second.length ? second.length : first.length;
11
11
  const result = [];
12
12
  for (let i = 0; i < resultLength; i++) {
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPipe = void 0;
4
4
  const pipe_1 = require("./pipe");
5
5
  function createPipe(...operations) {
6
- return (value) => pipe_1.pipe(value, ...operations);
6
+ return (value) => (0, pipe_1.pipe)(value, ...operations);
7
7
  }
8
8
  exports.createPipe = createPipe;
@@ -23,3 +23,4 @@ __exportStar(require("./debounce"), exports);
23
23
  __exportStar(require("./pipe"), exports);
24
24
  __exportStar(require("./purry"), exports);
25
25
  __exportStar(require("./sleep"), exports);
26
+ __exportStar(require("./times"), exports);
@@ -3,19 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pipe = void 0;
4
4
  function pipe(input, ...operations) {
5
5
  let output = input;
6
- const lazyOperations = operations.map((op) => 'lazy' in op ? toPipedLazy(op) : undefined);
6
+ const lazyOperations = operations.map((op) => 'lazy' in op ? prepareLazyOperation(op) : undefined);
7
7
  let operationIndex = 0;
8
8
  while (operationIndex < operations.length) {
9
9
  const lazyOperation = lazyOperations[operationIndex];
10
10
  if (lazyOperation === undefined || !isIterable(output)) {
11
11
  const operation = operations[operationIndex];
12
12
  output = operation(output);
13
- operationIndex++;
13
+ operationIndex += 1;
14
14
  continue;
15
15
  }
16
16
  const lazySequence = [];
17
- for (let j = operationIndex; j < operations.length; j++) {
18
- const lazyOp = lazyOperations[j];
17
+ for (let index = operationIndex; index < operations.length; index++) {
18
+ const lazyOp = lazyOperations[index];
19
19
  if (lazyOp === undefined) {
20
20
  break;
21
21
  }
@@ -37,12 +37,7 @@ function pipe(input, ...operations) {
37
37
  }
38
38
  }
39
39
  const { isSingle } = lazySequence[lazySequence.length - 1];
40
- if (isSingle) {
41
- output = accumulator[0];
42
- }
43
- else {
44
- output = accumulator;
45
- }
40
+ output = isSingle ? accumulator[0] : accumulator;
46
41
  operationIndex += lazySequence.length;
47
42
  }
48
43
  return output;
@@ -53,28 +48,27 @@ function processItem_(item, accumulator, lazySequence) {
53
48
  accumulator.push(item);
54
49
  return false;
55
50
  }
51
+ let currentItem = item;
56
52
  let lazyResult = { done: false, hasNext: false };
57
53
  let isDone = false;
58
- for (let i = 0; i < lazySequence.length; i++) {
59
- const lazyFn = lazySequence[i];
54
+ for (const [operationsIndex, lazyFn] of lazySequence.entries()) {
60
55
  const { index, isIndexed, items } = lazyFn;
61
- items.push(item);
62
- lazyResult = isIndexed ? lazyFn(item, index, items) : lazyFn(item);
63
- lazyFn.index++;
56
+ items.push(currentItem);
57
+ lazyResult = isIndexed
58
+ ? lazyFn(currentItem, index, items)
59
+ : lazyFn(currentItem);
60
+ lazyFn.index += 1;
64
61
  if (lazyResult.hasNext) {
65
- if (lazyResult.hasMany) {
66
- const nextValues = lazyResult.next;
67
- for (const subItem of nextValues) {
68
- const subResult = processItem_(subItem, accumulator, lazySequence.slice(i + 1));
62
+ if (lazyResult.hasMany ?? false) {
63
+ for (const subItem of lazyResult.next) {
64
+ const subResult = processItem_(subItem, accumulator, lazySequence.slice(operationsIndex + 1));
69
65
  if (subResult) {
70
66
  return true;
71
67
  }
72
68
  }
73
69
  return false;
74
70
  }
75
- else {
76
- item = lazyResult.next;
77
- }
71
+ currentItem = lazyResult.next;
78
72
  }
79
73
  if (!lazyResult.hasNext) {
80
74
  break;
@@ -84,11 +78,11 @@ function processItem_(item, accumulator, lazySequence) {
84
78
  }
85
79
  }
86
80
  if (lazyResult.hasNext) {
87
- accumulator.push(item);
81
+ accumulator.push(currentItem);
88
82
  }
89
83
  return isDone;
90
84
  }
91
- function toPipedLazy(op) {
85
+ function prepareLazyOperation(op) {
92
86
  const { lazy, lazyArgs } = op;
93
87
  const fn = lazy(...(lazyArgs ?? []));
94
88
  return Object.assign(fn, {
@@ -1,19 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.purry = void 0;
4
- function purry(fn, args, lazy) {
4
+ function purry(fn, args, lazyFactory) {
5
+ const callArgs = Array.from(args);
5
6
  const diff = fn.length - args.length;
6
- const arrayArgs = Array.from(args);
7
7
  if (diff === 0) {
8
- return fn(...arrayArgs);
8
+ return fn(...callArgs);
9
9
  }
10
10
  if (diff === 1) {
11
- const ret = (data) => fn(data, ...arrayArgs);
12
- if (lazy || fn.lazy) {
13
- ret.lazy = lazy || fn.lazy;
14
- ret.lazyArgs = args;
15
- }
16
- return ret;
11
+ const ret = (data) => fn(data, ...callArgs);
12
+ const lazy = lazyFactory ?? fn.lazy;
13
+ return lazy === undefined
14
+ ? ret
15
+ : Object.assign(ret, { lazy, lazyArgs: args });
17
16
  }
18
17
  throw new Error('Wrong number of arguments');
19
18
  }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.times = void 0;
4
+ const purry_1 = require("./purry");
5
+ function times(...args) {
6
+ return (0, purry_1.purry)(times_, args);
7
+ }
8
+ exports.times = times;
9
+ function times_(count, fn) {
10
+ if (count < 0) {
11
+ throw new RangeError('n must be a non-negative number');
12
+ }
13
+ const res = [];
14
+ for (let i = 0; i < count; i++) {
15
+ res.push(fn(i));
16
+ }
17
+ return res;
18
+ }