common-fp 0.1.0

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 (645) hide show
  1. package/dist/add.cjs +13 -0
  2. package/dist/add.d.cts +2 -0
  3. package/dist/add.d.ts +1 -0
  4. package/dist/add.mjs +13 -0
  5. package/dist/all.cjs +23 -0
  6. package/dist/all.d.cts +2 -0
  7. package/dist/all.d.ts +1 -0
  8. package/dist/all.mjs +23 -0
  9. package/dist/alter.cjs +24 -0
  10. package/dist/alter.d.cts +2 -0
  11. package/dist/alter.d.ts +1 -0
  12. package/dist/alter.mjs +24 -0
  13. package/dist/any.cjs +22 -0
  14. package/dist/any.d.cts +2 -0
  15. package/dist/any.d.ts +1 -0
  16. package/dist/any.mjs +22 -0
  17. package/dist/append-all.cjs +13 -0
  18. package/dist/append-all.d.cts +2 -0
  19. package/dist/append-all.d.ts +1 -0
  20. package/dist/append-all.mjs +13 -0
  21. package/dist/append-one.cjs +9 -0
  22. package/dist/append-one.d.cts +2 -0
  23. package/dist/append-one.d.ts +1 -0
  24. package/dist/append-one.mjs +9 -0
  25. package/dist/append.cjs +13 -0
  26. package/dist/append.d.cts +2 -0
  27. package/dist/append.d.ts +1 -0
  28. package/dist/append.mjs +13 -0
  29. package/dist/assign-defaults.cjs +43 -0
  30. package/dist/assign-defaults.d.cts +2 -0
  31. package/dist/assign-defaults.d.ts +1 -0
  32. package/dist/assign-defaults.mjs +43 -0
  33. package/dist/assign-overrides.cjs +43 -0
  34. package/dist/assign-overrides.d.cts +2 -0
  35. package/dist/assign-overrides.d.ts +1 -0
  36. package/dist/assign-overrides.mjs +43 -0
  37. package/dist/compare-by-path.cjs +24 -0
  38. package/dist/compare-by-path.d.cts +2 -0
  39. package/dist/compare-by-path.d.ts +1 -0
  40. package/dist/compare-by-path.mjs +24 -0
  41. package/dist/compare-by-prop.cjs +23 -0
  42. package/dist/compare-by-prop.d.cts +2 -0
  43. package/dist/compare-by-prop.d.ts +1 -0
  44. package/dist/compare-by-prop.mjs +23 -0
  45. package/dist/compose.cjs +15 -0
  46. package/dist/compose.d.cts +2 -0
  47. package/dist/compose.d.ts +1 -0
  48. package/dist/compose.mjs +15 -0
  49. package/dist/contained-in.cjs +26 -0
  50. package/dist/contained-in.d.cts +2 -0
  51. package/dist/contained-in.d.ts +1 -0
  52. package/dist/contained-in.mjs +26 -0
  53. package/dist/contains.cjs +28 -0
  54. package/dist/contains.d.cts +2 -0
  55. package/dist/contains.d.ts +1 -0
  56. package/dist/contains.mjs +28 -0
  57. package/dist/date-is-between.cjs +31 -0
  58. package/dist/date-is-between.d.cts +2 -0
  59. package/dist/date-is-between.d.ts +1 -0
  60. package/dist/date-is-between.mjs +31 -0
  61. package/dist/default-falsey-val-to.cjs +3 -0
  62. package/dist/default-falsey-val-to.d.cts +2 -0
  63. package/dist/default-falsey-val-to.d.ts +1 -0
  64. package/dist/default-falsey-val-to.mjs +3 -0
  65. package/dist/default-nullish-val-to.cjs +3 -0
  66. package/dist/default-nullish-val-to.d.cts +2 -0
  67. package/dist/default-nullish-val-to.d.ts +1 -0
  68. package/dist/default-nullish-val-to.mjs +3 -0
  69. package/dist/discard-first-while.cjs +18 -0
  70. package/dist/discard-first-while.d.cts +2 -0
  71. package/dist/discard-first-while.d.ts +1 -0
  72. package/dist/discard-first-while.mjs +18 -0
  73. package/dist/discard-first.cjs +16 -0
  74. package/dist/discard-first.d.cts +2 -0
  75. package/dist/discard-first.d.ts +1 -0
  76. package/dist/discard-first.mjs +16 -0
  77. package/dist/discard-last-while.cjs +17 -0
  78. package/dist/discard-last-while.d.cts +2 -0
  79. package/dist/discard-last-while.d.ts +1 -0
  80. package/dist/discard-last-while.mjs +17 -0
  81. package/dist/discard-last.cjs +16 -0
  82. package/dist/discard-last.d.cts +2 -0
  83. package/dist/discard-last.d.ts +1 -0
  84. package/dist/discard-last.mjs +16 -0
  85. package/dist/discard-range.cjs +31 -0
  86. package/dist/discard-range.d.cts +2 -0
  87. package/dist/discard-range.d.ts +1 -0
  88. package/dist/discard-range.mjs +31 -0
  89. package/dist/discard-when.cjs +55 -0
  90. package/dist/discard-when.d.cts +2 -0
  91. package/dist/discard-when.d.ts +1 -0
  92. package/dist/discard-when.mjs +55 -0
  93. package/dist/discard.cjs +57 -0
  94. package/dist/discard.d.cts +2 -0
  95. package/dist/discard.d.ts +1 -0
  96. package/dist/discard.mjs +57 -0
  97. package/dist/divide-by.cjs +13 -0
  98. package/dist/divide-by.d.cts +2 -0
  99. package/dist/divide-by.d.ts +1 -0
  100. package/dist/divide-by.mjs +13 -0
  101. package/dist/ends-with.cjs +13 -0
  102. package/dist/ends-with.d.cts +2 -0
  103. package/dist/ends-with.d.ts +1 -0
  104. package/dist/ends-with.mjs +13 -0
  105. package/dist/expand-end.cjs +16 -0
  106. package/dist/expand-end.d.cts +2 -0
  107. package/dist/expand-end.d.ts +1 -0
  108. package/dist/expand-end.mjs +16 -0
  109. package/dist/expand-start.cjs +16 -0
  110. package/dist/expand-start.d.cts +2 -0
  111. package/dist/expand-start.d.ts +1 -0
  112. package/dist/expand-start.mjs +16 -0
  113. package/dist/expand.cjs +22 -0
  114. package/dist/expand.d.cts +2 -0
  115. package/dist/expand.d.ts +1 -0
  116. package/dist/expand.mjs +22 -0
  117. package/dist/fill-range-with.cjs +18 -0
  118. package/dist/fill-range-with.d.cts +2 -0
  119. package/dist/fill-range-with.d.ts +1 -0
  120. package/dist/fill-range-with.mjs +18 -0
  121. package/dist/fill-with.cjs +34 -0
  122. package/dist/fill-with.d.cts +2 -0
  123. package/dist/fill-with.d.ts +1 -0
  124. package/dist/fill-with.mjs +34 -0
  125. package/dist/find-key-with-val.cjs +46 -0
  126. package/dist/find-key-with-val.d.cts +2 -0
  127. package/dist/find-key-with-val.d.ts +1 -0
  128. package/dist/find-key-with-val.mjs +46 -0
  129. package/dist/find-key.cjs +21 -0
  130. package/dist/find-key.d.cts +2 -0
  131. package/dist/find-key.d.ts +1 -0
  132. package/dist/find-key.mjs +21 -0
  133. package/dist/find-last-key-with-val.cjs +23 -0
  134. package/dist/find-last-key-with-val.d.cts +2 -0
  135. package/dist/find-last-key-with-val.d.ts +1 -0
  136. package/dist/find-last-key-with-val.mjs +23 -0
  137. package/dist/find-last-key.cjs +16 -0
  138. package/dist/find-last-key.d.cts +2 -0
  139. package/dist/find-last-key.d.ts +1 -0
  140. package/dist/find-last-key.mjs +16 -0
  141. package/dist/find-last.cjs +16 -0
  142. package/dist/find-last.d.cts +2 -0
  143. package/dist/find-last.d.ts +1 -0
  144. package/dist/find-last.mjs +16 -0
  145. package/dist/find.cjs +21 -0
  146. package/dist/find.d.cts +2 -0
  147. package/dist/find.d.ts +1 -0
  148. package/dist/find.mjs +21 -0
  149. package/dist/first.cjs +10 -0
  150. package/dist/first.d.cts +2 -0
  151. package/dist/first.d.ts +1 -0
  152. package/dist/first.mjs +10 -0
  153. package/dist/flatten-fully.cjs +9 -0
  154. package/dist/flatten-fully.d.cts +2 -0
  155. package/dist/flatten-fully.d.ts +1 -0
  156. package/dist/flatten-fully.mjs +9 -0
  157. package/dist/flatten-once.cjs +9 -0
  158. package/dist/flatten-once.d.cts +2 -0
  159. package/dist/flatten-once.d.ts +1 -0
  160. package/dist/flatten-once.mjs +9 -0
  161. package/dist/flatten-to-depth.cjs +15 -0
  162. package/dist/flatten-to-depth.d.cts +2 -0
  163. package/dist/flatten-to-depth.d.ts +1 -0
  164. package/dist/flatten-to-depth.mjs +15 -0
  165. package/dist/for-each.cjs +22 -0
  166. package/dist/for-each.d.cts +2 -0
  167. package/dist/for-each.d.ts +1 -0
  168. package/dist/for-each.mjs +22 -0
  169. package/dist/get-at-path.cjs +11 -0
  170. package/dist/get-at-path.d.cts +2 -0
  171. package/dist/get-at-path.d.ts +1 -0
  172. package/dist/get-at-path.mjs +11 -0
  173. package/dist/get-average-value.cjs +19 -0
  174. package/dist/get-average-value.d.cts +2 -0
  175. package/dist/get-average-value.d.ts +1 -0
  176. package/dist/get-average-value.mjs +19 -0
  177. package/dist/get-common-values.cjs +31 -0
  178. package/dist/get-common-values.d.cts +2 -0
  179. package/dist/get-common-values.d.ts +1 -0
  180. package/dist/get-common-values.mjs +31 -0
  181. package/dist/get-exclusive-values.cjs +41 -0
  182. package/dist/get-exclusive-values.d.cts +2 -0
  183. package/dist/get-exclusive-values.d.ts +1 -0
  184. package/dist/get-exclusive-values.mjs +41 -0
  185. package/dist/get-keys.cjs +23 -0
  186. package/dist/get-keys.d.cts +2 -0
  187. package/dist/get-keys.d.ts +1 -0
  188. package/dist/get-keys.mjs +23 -0
  189. package/dist/get-max-value.cjs +16 -0
  190. package/dist/get-max-value.d.cts +2 -0
  191. package/dist/get-max-value.d.ts +1 -0
  192. package/dist/get-max-value.mjs +16 -0
  193. package/dist/get-min-value.cjs +16 -0
  194. package/dist/get-min-value.d.cts +2 -0
  195. package/dist/get-min-value.d.ts +1 -0
  196. package/dist/get-min-value.mjs +16 -0
  197. package/dist/get-random-value.cjs +18 -0
  198. package/dist/get-random-value.d.cts +2 -0
  199. package/dist/get-random-value.d.ts +1 -0
  200. package/dist/get-random-value.mjs +18 -0
  201. package/dist/get-size.cjs +28 -0
  202. package/dist/get-size.d.cts +2 -0
  203. package/dist/get-size.d.ts +1 -0
  204. package/dist/get-size.mjs +28 -0
  205. package/dist/get-value-at-map-key.cjs +8 -0
  206. package/dist/get-value-at-map-key.d.cts +2 -0
  207. package/dist/get-value-at-map-key.d.ts +1 -0
  208. package/dist/get-value-at-map-key.mjs +8 -0
  209. package/dist/get-values.cjs +22 -0
  210. package/dist/get-values.d.cts +2 -0
  211. package/dist/get-values.d.ts +1 -0
  212. package/dist/get-values.mjs +22 -0
  213. package/dist/get.cjs +10 -0
  214. package/dist/get.d.cts +2 -0
  215. package/dist/get.d.ts +1 -0
  216. package/dist/get.mjs +10 -0
  217. package/dist/greater-than-or-equal-to.cjs +13 -0
  218. package/dist/greater-than-or-equal-to.d.cts +2 -0
  219. package/dist/greater-than-or-equal-to.d.ts +1 -0
  220. package/dist/greater-than-or-equal-to.mjs +13 -0
  221. package/dist/greater-than.cjs +13 -0
  222. package/dist/greater-than.d.cts +2 -0
  223. package/dist/greater-than.d.ts +1 -0
  224. package/dist/greater-than.mjs +13 -0
  225. package/dist/group-by.cjs +28 -0
  226. package/dist/group-by.d.cts +2 -0
  227. package/dist/group-by.d.ts +1 -0
  228. package/dist/group-by.mjs +28 -0
  229. package/dist/index.cjs +160 -0
  230. package/dist/index.d.cts +2 -0
  231. package/dist/index.d.ts +1 -0
  232. package/dist/index.mjs +158 -0
  233. package/dist/internal/contains-type-to-fn.cjs +33 -0
  234. package/dist/internal/contains-type-to-fn.mjs +33 -0
  235. package/dist/internal/get-at-path.cjs +12 -0
  236. package/dist/internal/get-at-path.mjs +12 -0
  237. package/dist/internal/validate-prune-arg.cjs +43 -0
  238. package/dist/internal/validate-prune-arg.mjs +43 -0
  239. package/dist/invert.cjs +29 -0
  240. package/dist/invert.d.cts +2 -0
  241. package/dist/invert.d.ts +1 -0
  242. package/dist/invert.mjs +29 -0
  243. package/dist/invoke-with.cjs +11 -0
  244. package/dist/invoke-with.d.cts +2 -0
  245. package/dist/invoke-with.d.ts +1 -0
  246. package/dist/invoke-with.mjs +11 -0
  247. package/dist/is-after.cjs +13 -0
  248. package/dist/is-after.d.cts +2 -0
  249. package/dist/is-after.d.ts +1 -0
  250. package/dist/is-after.mjs +13 -0
  251. package/dist/is-at-or-after.cjs +13 -0
  252. package/dist/is-at-or-after.d.cts +2 -0
  253. package/dist/is-at-or-after.d.ts +1 -0
  254. package/dist/is-at-or-after.mjs +13 -0
  255. package/dist/is-at-or-before.cjs +13 -0
  256. package/dist/is-at-or-before.d.cts +2 -0
  257. package/dist/is-at-or-before.d.ts +1 -0
  258. package/dist/is-at-or-before.mjs +13 -0
  259. package/dist/is-before.cjs +13 -0
  260. package/dist/is-before.d.cts +2 -0
  261. package/dist/is-before.d.ts +1 -0
  262. package/dist/is-before.mjs +13 -0
  263. package/dist/is-empty.cjs +28 -0
  264. package/dist/is-empty.d.cts +2 -0
  265. package/dist/is-empty.d.ts +1 -0
  266. package/dist/is-empty.mjs +28 -0
  267. package/dist/is-falsey.cjs +3 -0
  268. package/dist/is-falsey.d.cts +2 -0
  269. package/dist/is-falsey.d.ts +1 -0
  270. package/dist/is-falsey.mjs +3 -0
  271. package/dist/is-laden.cjs +28 -0
  272. package/dist/is-laden.d.cts +2 -0
  273. package/dist/is-laden.d.ts +1 -0
  274. package/dist/is-laden.mjs +28 -0
  275. package/dist/is-truthy.cjs +3 -0
  276. package/dist/is-truthy.d.cts +2 -0
  277. package/dist/is-truthy.d.ts +1 -0
  278. package/dist/is-truthy.mjs +3 -0
  279. package/dist/join-values.cjs +18 -0
  280. package/dist/join-values.d.cts +2 -0
  281. package/dist/join-values.d.ts +1 -0
  282. package/dist/join-values.mjs +18 -0
  283. package/dist/keep-first-while.cjs +18 -0
  284. package/dist/keep-first-while.d.cts +2 -0
  285. package/dist/keep-first-while.d.ts +1 -0
  286. package/dist/keep-first-while.mjs +18 -0
  287. package/dist/keep-first.cjs +14 -0
  288. package/dist/keep-first.d.cts +2 -0
  289. package/dist/keep-first.d.ts +1 -0
  290. package/dist/keep-first.mjs +14 -0
  291. package/dist/keep-last-while.cjs +18 -0
  292. package/dist/keep-last-while.d.cts +2 -0
  293. package/dist/keep-last-while.d.ts +1 -0
  294. package/dist/keep-last-while.mjs +18 -0
  295. package/dist/keep-last.cjs +14 -0
  296. package/dist/keep-last.d.cts +2 -0
  297. package/dist/keep-last.d.ts +1 -0
  298. package/dist/keep-last.mjs +14 -0
  299. package/dist/keep-range.cjs +14 -0
  300. package/dist/keep-range.d.cts +2 -0
  301. package/dist/keep-range.d.ts +1 -0
  302. package/dist/keep-range.mjs +14 -0
  303. package/dist/keep-when.cjs +54 -0
  304. package/dist/keep-when.d.cts +2 -0
  305. package/dist/keep-when.d.ts +1 -0
  306. package/dist/keep-when.mjs +54 -0
  307. package/dist/keep.cjs +63 -0
  308. package/dist/keep.d.cts +2 -0
  309. package/dist/keep.d.ts +1 -0
  310. package/dist/keep.mjs +63 -0
  311. package/dist/last.cjs +10 -0
  312. package/dist/last.d.cts +2 -0
  313. package/dist/last.d.ts +1 -0
  314. package/dist/last.mjs +10 -0
  315. package/dist/less-than-or-equal-to.cjs +13 -0
  316. package/dist/less-than-or-equal-to.d.cts +2 -0
  317. package/dist/less-than-or-equal-to.d.ts +1 -0
  318. package/dist/less-than-or-equal-to.mjs +13 -0
  319. package/dist/less-than.cjs +13 -0
  320. package/dist/less-than.d.cts +2 -0
  321. package/dist/less-than.d.ts +1 -0
  322. package/dist/less-than.mjs +13 -0
  323. package/dist/m-append-all.cjs +14 -0
  324. package/dist/m-append-all.d.cts +2 -0
  325. package/dist/m-append-all.d.ts +1 -0
  326. package/dist/m-append-all.mjs +14 -0
  327. package/dist/m-append-one.cjs +10 -0
  328. package/dist/m-append-one.d.cts +2 -0
  329. package/dist/m-append-one.d.ts +1 -0
  330. package/dist/m-append-one.mjs +10 -0
  331. package/dist/m-assign-defaults.cjs +51 -0
  332. package/dist/m-assign-defaults.d.cts +2 -0
  333. package/dist/m-assign-defaults.d.ts +1 -0
  334. package/dist/m-assign-defaults.mjs +51 -0
  335. package/dist/m-assign-overrides.cjs +47 -0
  336. package/dist/m-assign-overrides.d.cts +2 -0
  337. package/dist/m-assign-overrides.d.ts +1 -0
  338. package/dist/m-assign-overrides.mjs +47 -0
  339. package/dist/m-discard-first-while.cjs +19 -0
  340. package/dist/m-discard-first-while.d.cts +2 -0
  341. package/dist/m-discard-first-while.d.ts +1 -0
  342. package/dist/m-discard-first-while.mjs +19 -0
  343. package/dist/m-discard-first.cjs +16 -0
  344. package/dist/m-discard-first.d.cts +2 -0
  345. package/dist/m-discard-first.d.ts +1 -0
  346. package/dist/m-discard-first.mjs +16 -0
  347. package/dist/m-discard-last-while.cjs +20 -0
  348. package/dist/m-discard-last-while.d.cts +2 -0
  349. package/dist/m-discard-last-while.d.ts +1 -0
  350. package/dist/m-discard-last-while.mjs +20 -0
  351. package/dist/m-discard-last.cjs +16 -0
  352. package/dist/m-discard-last.d.cts +2 -0
  353. package/dist/m-discard-last.d.ts +1 -0
  354. package/dist/m-discard-last.mjs +16 -0
  355. package/dist/m-discard-range.cjs +17 -0
  356. package/dist/m-discard-range.d.cts +2 -0
  357. package/dist/m-discard-range.d.ts +1 -0
  358. package/dist/m-discard-range.mjs +17 -0
  359. package/dist/m-fill-range-with.cjs +17 -0
  360. package/dist/m-fill-range-with.d.cts +2 -0
  361. package/dist/m-fill-range-with.d.ts +1 -0
  362. package/dist/m-fill-range-with.mjs +17 -0
  363. package/dist/m-fill-with.cjs +32 -0
  364. package/dist/m-fill-with.d.cts +2 -0
  365. package/dist/m-fill-with.d.ts +1 -0
  366. package/dist/m-fill-with.mjs +32 -0
  367. package/dist/m-keep-first-while.cjs +19 -0
  368. package/dist/m-keep-first-while.d.cts +2 -0
  369. package/dist/m-keep-first-while.d.ts +1 -0
  370. package/dist/m-keep-first-while.mjs +19 -0
  371. package/dist/m-keep-first.cjs +14 -0
  372. package/dist/m-keep-first.d.cts +2 -0
  373. package/dist/m-keep-first.d.ts +1 -0
  374. package/dist/m-keep-first.mjs +14 -0
  375. package/dist/m-keep-last-while.cjs +19 -0
  376. package/dist/m-keep-last-while.d.cts +2 -0
  377. package/dist/m-keep-last-while.d.ts +1 -0
  378. package/dist/m-keep-last-while.mjs +19 -0
  379. package/dist/m-keep-last.cjs +14 -0
  380. package/dist/m-keep-last.d.cts +2 -0
  381. package/dist/m-keep-last.d.ts +1 -0
  382. package/dist/m-keep-last.mjs +14 -0
  383. package/dist/m-keep-range.cjs +18 -0
  384. package/dist/m-keep-range.d.cts +2 -0
  385. package/dist/m-keep-range.d.ts +1 -0
  386. package/dist/m-keep-range.mjs +18 -0
  387. package/dist/m-map-values.cjs +47 -0
  388. package/dist/m-map-values.d.cts +2 -0
  389. package/dist/m-map-values.d.ts +1 -0
  390. package/dist/m-map-values.mjs +47 -0
  391. package/dist/m-omit.cjs +62 -0
  392. package/dist/m-omit.d.cts +2 -0
  393. package/dist/m-omit.d.ts +1 -0
  394. package/dist/m-omit.mjs +62 -0
  395. package/dist/m-order.cjs +13 -0
  396. package/dist/m-order.d.cts +2 -0
  397. package/dist/m-order.d.ts +1 -0
  398. package/dist/m-order.mjs +13 -0
  399. package/dist/m-pick.cjs +67 -0
  400. package/dist/m-pick.d.cts +2 -0
  401. package/dist/m-pick.d.ts +1 -0
  402. package/dist/m-pick.mjs +67 -0
  403. package/dist/m-prepend-all.cjs +14 -0
  404. package/dist/m-prepend-all.d.cts +2 -0
  405. package/dist/m-prepend-all.d.ts +1 -0
  406. package/dist/m-prepend-all.mjs +14 -0
  407. package/dist/m-prepend-one.cjs +10 -0
  408. package/dist/m-prepend-one.d.cts +2 -0
  409. package/dist/m-prepend-one.d.ts +1 -0
  410. package/dist/m-prepend-one.mjs +10 -0
  411. package/dist/m-reverse.cjs +8 -0
  412. package/dist/m-reverse.d.cts +2 -0
  413. package/dist/m-reverse.d.ts +1 -0
  414. package/dist/m-reverse.mjs +8 -0
  415. package/dist/m-set-at-path.cjs +40 -0
  416. package/dist/m-set-at-path.d.cts +2 -0
  417. package/dist/m-set-at-path.d.ts +1 -0
  418. package/dist/m-set-at-path.mjs +40 -0
  419. package/dist/m-set.cjs +21 -0
  420. package/dist/m-set.d.cts +2 -0
  421. package/dist/m-set.d.ts +1 -0
  422. package/dist/m-set.mjs +21 -0
  423. package/dist/m-shuffle.cjs +20 -0
  424. package/dist/m-shuffle.d.cts +2 -0
  425. package/dist/m-shuffle.d.ts +1 -0
  426. package/dist/m-shuffle.mjs +20 -0
  427. package/dist/m-update.cjs +68 -0
  428. package/dist/m-update.d.cts +2 -0
  429. package/dist/m-update.d.ts +1 -0
  430. package/dist/m-update.mjs +68 -0
  431. package/dist/map-keys.cjs +36 -0
  432. package/dist/map-keys.d.cts +2 -0
  433. package/dist/map-keys.d.ts +1 -0
  434. package/dist/map-keys.mjs +36 -0
  435. package/dist/map-values.cjs +50 -0
  436. package/dist/map-values.d.cts +2 -0
  437. package/dist/map-values.d.ts +1 -0
  438. package/dist/map-values.mjs +50 -0
  439. package/dist/multiply-by.cjs +13 -0
  440. package/dist/multiply-by.d.cts +2 -0
  441. package/dist/multiply-by.d.ts +1 -0
  442. package/dist/multiply-by.mjs +13 -0
  443. package/dist/negate.cjs +9 -0
  444. package/dist/negate.d.cts +2 -0
  445. package/dist/negate.d.ts +1 -0
  446. package/dist/negate.mjs +9 -0
  447. package/dist/number-is-between.cjs +33 -0
  448. package/dist/number-is-between.d.cts +2 -0
  449. package/dist/number-is-between.d.ts +1 -0
  450. package/dist/number-is-between.mjs +33 -0
  451. package/dist/omit.cjs +52 -0
  452. package/dist/omit.d.cts +2 -0
  453. package/dist/omit.d.ts +1 -0
  454. package/dist/omit.mjs +52 -0
  455. package/dist/order.cjs +13 -0
  456. package/dist/order.d.cts +2 -0
  457. package/dist/order.d.ts +1 -0
  458. package/dist/order.mjs +13 -0
  459. package/dist/p-all.cjs +23 -0
  460. package/dist/p-all.d.cts +2 -0
  461. package/dist/p-all.d.ts +1 -0
  462. package/dist/p-all.mjs +23 -0
  463. package/dist/p-any.cjs +23 -0
  464. package/dist/p-any.d.cts +2 -0
  465. package/dist/p-any.d.ts +1 -0
  466. package/dist/p-any.mjs +23 -0
  467. package/dist/p-compose.cjs +18 -0
  468. package/dist/p-compose.d.cts +2 -0
  469. package/dist/p-compose.d.ts +1 -0
  470. package/dist/p-compose.mjs +18 -0
  471. package/dist/p-discard-when.cjs +64 -0
  472. package/dist/p-discard-when.d.cts +2 -0
  473. package/dist/p-discard-when.d.ts +1 -0
  474. package/dist/p-discard-when.mjs +64 -0
  475. package/dist/p-find.cjs +21 -0
  476. package/dist/p-find.d.cts +2 -0
  477. package/dist/p-find.d.ts +1 -0
  478. package/dist/p-find.mjs +21 -0
  479. package/dist/p-for-each.cjs +21 -0
  480. package/dist/p-for-each.d.cts +2 -0
  481. package/dist/p-for-each.d.ts +1 -0
  482. package/dist/p-for-each.mjs +21 -0
  483. package/dist/p-keep-when.cjs +64 -0
  484. package/dist/p-keep-when.d.cts +2 -0
  485. package/dist/p-keep-when.d.ts +1 -0
  486. package/dist/p-keep-when.mjs +64 -0
  487. package/dist/p-map-values.cjs +57 -0
  488. package/dist/p-map-values.d.cts +2 -0
  489. package/dist/p-map-values.d.ts +1 -0
  490. package/dist/p-map-values.mjs +57 -0
  491. package/dist/p-pass-through.cjs +12 -0
  492. package/dist/p-pass-through.d.cts +2 -0
  493. package/dist/p-pass-through.d.ts +1 -0
  494. package/dist/p-pass-through.mjs +12 -0
  495. package/dist/p-resolve-values.cjs +43 -0
  496. package/dist/p-resolve-values.d.cts +2 -0
  497. package/dist/p-resolve-values.d.ts +1 -0
  498. package/dist/p-resolve-values.mjs +43 -0
  499. package/dist/p-wait-ms.cjs +8 -0
  500. package/dist/p-wait-ms.d.cts +2 -0
  501. package/dist/p-wait-ms.d.ts +1 -0
  502. package/dist/p-wait-ms.mjs +8 -0
  503. package/dist/pass-through.cjs +9 -0
  504. package/dist/pass-through.d.cts +2 -0
  505. package/dist/pass-through.d.ts +1 -0
  506. package/dist/pass-through.mjs +9 -0
  507. package/dist/peek.cjs +13 -0
  508. package/dist/peek.d.cts +2 -0
  509. package/dist/peek.d.ts +1 -0
  510. package/dist/peek.mjs +13 -0
  511. package/dist/pick.cjs +50 -0
  512. package/dist/pick.d.cts +2 -0
  513. package/dist/pick.d.ts +1 -0
  514. package/dist/pick.mjs +50 -0
  515. package/dist/prepend-all.cjs +13 -0
  516. package/dist/prepend-all.d.cts +2 -0
  517. package/dist/prepend-all.d.ts +1 -0
  518. package/dist/prepend-all.mjs +13 -0
  519. package/dist/prepend-one.cjs +9 -0
  520. package/dist/prepend-one.d.cts +2 -0
  521. package/dist/prepend-one.d.ts +1 -0
  522. package/dist/prepend-one.mjs +9 -0
  523. package/dist/prepend.cjs +13 -0
  524. package/dist/prepend.d.cts +2 -0
  525. package/dist/prepend.d.ts +1 -0
  526. package/dist/prepend.mjs +13 -0
  527. package/dist/prune-end.cjs +18 -0
  528. package/dist/prune-end.d.cts +2 -0
  529. package/dist/prune-end.d.ts +1 -0
  530. package/dist/prune-end.mjs +18 -0
  531. package/dist/prune-start.cjs +18 -0
  532. package/dist/prune-start.d.cts +2 -0
  533. package/dist/prune-start.d.ts +1 -0
  534. package/dist/prune-start.mjs +18 -0
  535. package/dist/prune.cjs +21 -0
  536. package/dist/prune.d.cts +2 -0
  537. package/dist/prune.d.ts +1 -0
  538. package/dist/prune.mjs +21 -0
  539. package/dist/randomly-keep.cjs +83 -0
  540. package/dist/randomly-keep.d.cts +2 -0
  541. package/dist/randomly-keep.d.ts +1 -0
  542. package/dist/randomly-keep.mjs +83 -0
  543. package/dist/replace-all-matches.cjs +33 -0
  544. package/dist/replace-all-matches.d.cts +2 -0
  545. package/dist/replace-all-matches.d.ts +1 -0
  546. package/dist/replace-all-matches.mjs +33 -0
  547. package/dist/replace-first-match.cjs +38 -0
  548. package/dist/replace-first-match.d.cts +2 -0
  549. package/dist/replace-first-match.d.ts +1 -0
  550. package/dist/replace-first-match.mjs +38 -0
  551. package/dist/return-first-arg.cjs +4 -0
  552. package/dist/return-first-arg.d.cts +2 -0
  553. package/dist/return-first-arg.d.ts +1 -0
  554. package/dist/return-first-arg.mjs +4 -0
  555. package/dist/return-undefined.cjs +4 -0
  556. package/dist/return-undefined.d.cts +2 -0
  557. package/dist/return-undefined.d.ts +1 -0
  558. package/dist/return-undefined.mjs +4 -0
  559. package/dist/reverse.cjs +8 -0
  560. package/dist/reverse.d.cts +2 -0
  561. package/dist/reverse.d.ts +1 -0
  562. package/dist/reverse.mjs +8 -0
  563. package/dist/round-to-nearest.cjs +51 -0
  564. package/dist/round-to-nearest.d.cts +2 -0
  565. package/dist/round-to-nearest.d.ts +1 -0
  566. package/dist/round-to-nearest.mjs +51 -0
  567. package/dist/set.cjs +51 -0
  568. package/dist/set.d.cts +2 -0
  569. package/dist/set.d.ts +1 -0
  570. package/dist/set.mjs +51 -0
  571. package/dist/shuffle.cjs +21 -0
  572. package/dist/shuffle.d.cts +2 -0
  573. package/dist/shuffle.d.ts +1 -0
  574. package/dist/shuffle.mjs +21 -0
  575. package/dist/split-every.cjs +31 -0
  576. package/dist/split-every.d.cts +2 -0
  577. package/dist/split-every.d.ts +1 -0
  578. package/dist/split-every.mjs +31 -0
  579. package/dist/split.cjs +14 -0
  580. package/dist/split.d.cts +2 -0
  581. package/dist/split.d.ts +1 -0
  582. package/dist/split.mjs +14 -0
  583. package/dist/starts-with.cjs +13 -0
  584. package/dist/starts-with.d.cts +2 -0
  585. package/dist/starts-with.d.ts +1 -0
  586. package/dist/starts-with.mjs +13 -0
  587. package/dist/strict-equals.cjs +3 -0
  588. package/dist/strict-equals.d.cts +2 -0
  589. package/dist/strict-equals.d.ts +1 -0
  590. package/dist/strict-equals.mjs +3 -0
  591. package/dist/subtract.cjs +13 -0
  592. package/dist/subtract.d.cts +2 -0
  593. package/dist/subtract.d.ts +1 -0
  594. package/dist/subtract.mjs +13 -0
  595. package/dist/sum-values.cjs +20 -0
  596. package/dist/sum-values.d.cts +2 -0
  597. package/dist/sum-values.d.ts +1 -0
  598. package/dist/sum-values.mjs +20 -0
  599. package/dist/swap-first-two-args.cjs +15 -0
  600. package/dist/swap-first-two-args.d.cts +2 -0
  601. package/dist/swap-first-two-args.d.ts +1 -0
  602. package/dist/swap-first-two-args.mjs +15 -0
  603. package/dist/transpose.cjs +46 -0
  604. package/dist/transpose.d.cts +2 -0
  605. package/dist/transpose.d.ts +1 -0
  606. package/dist/transpose.mjs +46 -0
  607. package/dist/truncate-to-n-chars.cjs +17 -0
  608. package/dist/truncate-to-n-chars.d.cts +2 -0
  609. package/dist/truncate-to-n-chars.d.ts +1 -0
  610. package/dist/truncate-to-n-chars.mjs +17 -0
  611. package/dist/truncate-to-n-lines.cjs +58 -0
  612. package/dist/truncate-to-n-lines.d.cts +2 -0
  613. package/dist/truncate-to-n-lines.d.ts +1 -0
  614. package/dist/truncate-to-n-lines.mjs +58 -0
  615. package/dist/update.cjs +74 -0
  616. package/dist/update.d.cts +2 -0
  617. package/dist/update.d.ts +1 -0
  618. package/dist/update.mjs +74 -0
  619. package/dist/with-dates-ascending.cjs +3 -0
  620. package/dist/with-dates-ascending.d.cts +2 -0
  621. package/dist/with-dates-ascending.d.ts +1 -0
  622. package/dist/with-dates-ascending.mjs +3 -0
  623. package/dist/with-dates-descending.cjs +3 -0
  624. package/dist/with-dates-descending.d.cts +2 -0
  625. package/dist/with-dates-descending.d.ts +1 -0
  626. package/dist/with-dates-descending.mjs +3 -0
  627. package/dist/with-numbers-ascending.cjs +3 -0
  628. package/dist/with-numbers-ascending.d.cts +2 -0
  629. package/dist/with-numbers-ascending.d.ts +1 -0
  630. package/dist/with-numbers-ascending.mjs +3 -0
  631. package/dist/with-numbers-descending.cjs +3 -0
  632. package/dist/with-numbers-descending.d.cts +2 -0
  633. package/dist/with-numbers-descending.d.ts +1 -0
  634. package/dist/with-numbers-descending.mjs +3 -0
  635. package/dist/with-strings-ascending.cjs +4 -0
  636. package/dist/with-strings-ascending.d.cts +2 -0
  637. package/dist/with-strings-ascending.d.ts +1 -0
  638. package/dist/with-strings-ascending.mjs +4 -0
  639. package/dist/with-strings-descending.cjs +4 -0
  640. package/dist/with-strings-descending.d.cts +2 -0
  641. package/dist/with-strings-descending.d.ts +1 -0
  642. package/dist/with-strings-descending.mjs +4 -0
  643. package/license.txt +41 -0
  644. package/package.json +46 -0
  645. package/readme.md +108 -0
@@ -0,0 +1,51 @@
1
+ import assertArgIsType from '@common-fp/shared-internals/assert-arg-is-type'
2
+ import truncateToNChars from '@common-fp/shared-internals/truncate-to-n-chars'
3
+
4
+ const roundToNearest = precision => {
5
+ validatePrecision(precision)
6
+ const numPrecision =
7
+ precision.includes('.') ?
8
+ precision.length - 2 // 2 accounts for the leading "0."
9
+ : -precision.length + 1
10
+
11
+ return aNumber => {
12
+ assertArgIsType(aNumber, 'aNumber', 'number', 'roundToNearest')
13
+
14
+ /**
15
+ * implementation based off lodash. Essentially we're
16
+ * 1. shifting the exponent based off the precision passed
17
+ * 2. rounding the shifted result
18
+ * 3. shifting it back and returning the value
19
+ *
20
+ * per lodash this gets around pesky floating point issues
21
+ */
22
+ const [base, exp] = aNumber.toExponential().split('e')
23
+ const shiftedNum = Math.round(base + 'e' + (Number(exp) + numPrecision))
24
+
25
+ const [shiftedBase, shiftedExp] = shiftedNum.toExponential().split('e')
26
+ return Number(shiftedBase + 'e' + (Number(shiftedExp) - numPrecision))
27
+ }
28
+ }
29
+
30
+ function validatePrecision(precision) {
31
+ assertArgIsType(precision, 'precision', 'string', 'roundToNearest')
32
+ if (precision.includes('.')) {
33
+ if (!/^0\.0{0,9}1$/.test(precision)) {
34
+ const truncatedPrecision = truncateToNChars(15, precision)
35
+ throw new Error(
36
+ 'With a decimal, roundToNearest requires a precision passing the regex /^0\\.0{0,9}1$/' +
37
+ `\n precision: ${truncatedPrecision}`
38
+ )
39
+ }
40
+ } else {
41
+ if (!/^10{0,9}$/.test(precision)) {
42
+ const truncatedPrecision = truncateToNChars(15, precision)
43
+ throw new Error(
44
+ 'Without a decimal, roundToNearest requires a precision passing the regex /^10{0,9}$/' +
45
+ `\n precision: ${truncatedPrecision}`
46
+ )
47
+ }
48
+ }
49
+ }
50
+
51
+ export default roundToNearest
package/dist/set.cjs ADDED
@@ -0,0 +1,51 @@
1
+ const ct = require('@common-fp/shared-internals/common-types')
2
+ const getFn = require('@common-fp/shared-internals/get-fn')
3
+ const getType = require('@common-fp/shared-internals/get-type')
4
+
5
+ const set = (key, val) => {
6
+ const keyType = getType(key)
7
+
8
+ return collection => {
9
+ const typeFn = getFn(typeToFn, collection, 'collection', 'set')
10
+ return typeFn(collection, key, val, keyType)
11
+ }
12
+ }
13
+
14
+ const typeToFn = {
15
+ array: set_array,
16
+ map: set_map,
17
+ object: set_object,
18
+ }
19
+
20
+ function set_array(arr, key, val, keyType) {
21
+ if (!ct.objectKey.has(keyType)) {
22
+ throw new Error(
23
+ "when calling set with an array, 'key' must be a number or string" +
24
+ `\n key type: ${keyType}`
25
+ )
26
+ }
27
+
28
+ const result = [...arr]
29
+
30
+ result[key] = val
31
+
32
+ return result
33
+ }
34
+
35
+ function set_map(aMap, key, val) {
36
+ const result = new Map(aMap)
37
+ return result.set(key, val)
38
+ }
39
+
40
+ function set_object(obj, key, val, keyType) {
41
+ if (!ct.objectKey.has(keyType)) {
42
+ throw new Error(
43
+ "when calling set with an object, 'key' must be a number or string" +
44
+ `\n key type: ${keyType}`
45
+ )
46
+ }
47
+
48
+ return { ...obj, [key]: val }
49
+ }
50
+
51
+ module.exports = set
package/dist/set.d.cts ADDED
@@ -0,0 +1,2 @@
1
+ import { default as set } from '@common-fp/common-fp-types/set'
2
+ export = set
package/dist/set.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/set'
package/dist/set.mjs ADDED
@@ -0,0 +1,51 @@
1
+ import * as ct from '@common-fp/shared-internals/common-types'
2
+ import getFn from '@common-fp/shared-internals/get-fn'
3
+ import getType from '@common-fp/shared-internals/get-type'
4
+
5
+ const set = (key, val) => {
6
+ const keyType = getType(key)
7
+
8
+ return collection => {
9
+ const typeFn = getFn(typeToFn, collection, 'collection', 'set')
10
+ return typeFn(collection, key, val, keyType)
11
+ }
12
+ }
13
+
14
+ const typeToFn = {
15
+ array: set_array,
16
+ map: set_map,
17
+ object: set_object,
18
+ }
19
+
20
+ function set_array(arr, key, val, keyType) {
21
+ if (!ct.objectKey.has(keyType)) {
22
+ throw new Error(
23
+ "when calling set with an array, 'key' must be a number or string" +
24
+ `\n key type: ${keyType}`
25
+ )
26
+ }
27
+
28
+ const result = [...arr]
29
+
30
+ result[key] = val
31
+
32
+ return result
33
+ }
34
+
35
+ function set_map(aMap, key, val) {
36
+ const result = new Map(aMap)
37
+ return result.set(key, val)
38
+ }
39
+
40
+ function set_object(obj, key, val, keyType) {
41
+ if (!ct.objectKey.has(keyType)) {
42
+ throw new Error(
43
+ "when calling set with an object, 'key' must be a number or string" +
44
+ `\n key type: ${keyType}`
45
+ )
46
+ }
47
+
48
+ return { ...obj, [key]: val }
49
+ }
50
+
51
+ export default set
@@ -0,0 +1,21 @@
1
+ const assertArgIsType = require('@common-fp/shared-internals/assert-arg-is-type')
2
+ const getRandomInt = require('@common-fp/shared-internals/get-random-int')
3
+
4
+ const shuffle = anArray => {
5
+ assertArgIsType(anArray, 'anArray', 'array', 'shuffle')
6
+
7
+ const result = [...anArray]
8
+ const len = result.length
9
+ for (let i = 0; i < len - 1; i += 1) {
10
+ const randomI = getRandomInt(i, len - 1)
11
+ if (randomI === i) continue
12
+
13
+ const tmp = result[i]
14
+ result[i] = result[randomI]
15
+ result[randomI] = tmp
16
+ }
17
+
18
+ return result
19
+ }
20
+
21
+ module.exports = shuffle
@@ -0,0 +1,2 @@
1
+ import { default as shuffle } from '@common-fp/common-fp-types/shuffle'
2
+ export = shuffle
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/shuffle'
@@ -0,0 +1,21 @@
1
+ import assertArgIsType from '@common-fp/shared-internals/assert-arg-is-type'
2
+ import getRandomInt from '@common-fp/shared-internals/get-random-int'
3
+
4
+ const shuffle = anArray => {
5
+ assertArgIsType(anArray, 'anArray', 'array', 'shuffle')
6
+
7
+ const result = [...anArray]
8
+ const len = result.length
9
+ for (let i = 0; i < len - 1; i += 1) {
10
+ const randomI = getRandomInt(i, len - 1)
11
+ if (randomI === i) continue
12
+
13
+ const tmp = result[i]
14
+ result[i] = result[randomI]
15
+ result[randomI] = tmp
16
+ }
17
+
18
+ return result
19
+ }
20
+
21
+ export default shuffle
@@ -0,0 +1,31 @@
1
+ const assertArgIsInt = require('@common-fp/shared-internals/assert-arg-is-int')
2
+ const assertArgTypeIsOneOf = require('@common-fp/shared-internals/assert-arg-type-is-one-of')
3
+ const ct = require('@common-fp/shared-internals/common-types')
4
+ const getType = require('@common-fp/shared-internals/get-type')
5
+
6
+ const splitEvery = groupSize => {
7
+ assertArgIsInt(groupSize, 'groupSize', 'splitEvery', { positive: true })
8
+
9
+ return sequence => {
10
+ const seqType = getType(sequence)
11
+ assertArgTypeIsOneOf(seqType, 'sequence', ct.sequence, 'splitEvery')
12
+
13
+ if (!sequence.length) {
14
+ const emptySeq = seqType === 'string' ? '' : []
15
+ return [emptySeq]
16
+ }
17
+
18
+ const numArrays = Math.ceil(sequence.length / groupSize)
19
+ const res = new Array(numArrays)
20
+
21
+ for (let i = 0; i < numArrays - 1; i += 1) {
22
+ res[i] = sequence.slice(i * groupSize, (i + 1) * groupSize)
23
+ }
24
+
25
+ res[numArrays - 1] = sequence.slice((numArrays - 1) * groupSize)
26
+
27
+ return res
28
+ }
29
+ }
30
+
31
+ module.exports = splitEvery
@@ -0,0 +1,2 @@
1
+ import { default as splitEvery } from '@common-fp/common-fp-types/split-every'
2
+ export = splitEvery
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/split-every'
@@ -0,0 +1,31 @@
1
+ import assertArgIsInt from '@common-fp/shared-internals/assert-arg-is-int'
2
+ import assertArgTypeIsOneOf from '@common-fp/shared-internals/assert-arg-type-is-one-of'
3
+ import * as ct from '@common-fp/shared-internals/common-types'
4
+ import getType from '@common-fp/shared-internals/get-type'
5
+
6
+ const splitEvery = groupSize => {
7
+ assertArgIsInt(groupSize, 'groupSize', 'splitEvery', { positive: true })
8
+
9
+ return sequence => {
10
+ const seqType = getType(sequence)
11
+ assertArgTypeIsOneOf(seqType, 'sequence', ct.sequence, 'splitEvery')
12
+
13
+ if (!sequence.length) {
14
+ const emptySeq = seqType === 'string' ? '' : []
15
+ return [emptySeq]
16
+ }
17
+
18
+ const numArrays = Math.ceil(sequence.length / groupSize)
19
+ const res = new Array(numArrays)
20
+
21
+ for (let i = 0; i < numArrays - 1; i += 1) {
22
+ res[i] = sequence.slice(i * groupSize, (i + 1) * groupSize)
23
+ }
24
+
25
+ res[numArrays - 1] = sequence.slice((numArrays - 1) * groupSize)
26
+
27
+ return res
28
+ }
29
+ }
30
+
31
+ export default splitEvery
package/dist/split.cjs ADDED
@@ -0,0 +1,14 @@
1
+ const assertArgIsOneOfType = require('@common-fp/shared-internals/assert-arg-is-one-of-type')
2
+ const assertArgIsType = require('@common-fp/shared-internals/assert-arg-is-type')
3
+
4
+ const split = separator => {
5
+ assertArgIsOneOfType(separator, 'separator', ['regexp', 'string'], 'split')
6
+
7
+ return aString => {
8
+ assertArgIsType(aString, 'aString', 'string', 'split')
9
+
10
+ return aString.split(separator)
11
+ }
12
+ }
13
+
14
+ module.exports = split
@@ -0,0 +1,2 @@
1
+ import { default as split } from '@common-fp/common-fp-types/split'
2
+ export = split
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/split'
package/dist/split.mjs ADDED
@@ -0,0 +1,14 @@
1
+ import assertArgIsOneOfType from '@common-fp/shared-internals/assert-arg-is-one-of-type'
2
+ import assertArgIsType from '@common-fp/shared-internals/assert-arg-is-type'
3
+
4
+ const split = separator => {
5
+ assertArgIsOneOfType(separator, 'separator', ['regexp', 'string'], 'split')
6
+
7
+ return aString => {
8
+ assertArgIsType(aString, 'aString', 'string', 'split')
9
+
10
+ return aString.split(separator)
11
+ }
12
+ }
13
+
14
+ export default split
@@ -0,0 +1,13 @@
1
+ const assertArgIsType = require('@common-fp/shared-internals/assert-arg-is-type')
2
+
3
+ const startsWith = prefix => {
4
+ assertArgIsType(prefix, 'prefix', 'string', 'startsWith')
5
+
6
+ return aString => {
7
+ assertArgIsType(aString, 'aString', 'string', 'startsWith')
8
+
9
+ return aString.startsWith(prefix)
10
+ }
11
+ }
12
+
13
+ module.exports = startsWith
@@ -0,0 +1,2 @@
1
+ import { default as startsWith } from '@common-fp/common-fp-types/starts-with'
2
+ export = startsWith
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/starts-with'
@@ -0,0 +1,13 @@
1
+ import assertArgIsType from '@common-fp/shared-internals/assert-arg-is-type'
2
+
3
+ const startsWith = prefix => {
4
+ assertArgIsType(prefix, 'prefix', 'string', 'startsWith')
5
+
6
+ return aString => {
7
+ assertArgIsType(aString, 'aString', 'string', 'startsWith')
8
+
9
+ return aString.startsWith(prefix)
10
+ }
11
+ }
12
+
13
+ export default startsWith
@@ -0,0 +1,3 @@
1
+ const strictEquals = item1 => item2 => item1 === item2
2
+
3
+ module.exports = strictEquals
@@ -0,0 +1,2 @@
1
+ import { default as strictEquals } from '@common-fp/common-fp-types/strict-equals'
2
+ export = strictEquals
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/strict-equals'
@@ -0,0 +1,3 @@
1
+ const strictEquals = item1 => item2 => item1 === item2
2
+
3
+ export default strictEquals
@@ -0,0 +1,13 @@
1
+ const assertArgIsType = require('@common-fp/shared-internals/assert-arg-is-type')
2
+
3
+ const subtract = right => {
4
+ assertArgIsType(right, 'right', 'number', 'subtract')
5
+
6
+ return left => {
7
+ assertArgIsType(left, 'left', 'number', 'subtract')
8
+
9
+ return left - right
10
+ }
11
+ }
12
+
13
+ module.exports = subtract
@@ -0,0 +1,2 @@
1
+ import { default as subtract } from '@common-fp/common-fp-types/subtract'
2
+ export = subtract
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/subtract'
@@ -0,0 +1,13 @@
1
+ import assertArgIsType from '@common-fp/shared-internals/assert-arg-is-type'
2
+
3
+ const subtract = right => {
4
+ assertArgIsType(right, 'right', 'number', 'subtract')
5
+
6
+ return left => {
7
+ assertArgIsType(left, 'left', 'number', 'subtract')
8
+
9
+ return left - right
10
+ }
11
+ }
12
+
13
+ export default subtract
@@ -0,0 +1,20 @@
1
+ const assertArgHasValuesOfType = require('@common-fp/shared-internals/assert-arg-has-values-of-type')
2
+ const assertArgTypeIsOneOf = require('@common-fp/shared-internals/assert-arg-type-is-one-of')
3
+ const ct = require('@common-fp/shared-internals/common-types')
4
+ const getIterator = require('@common-fp/shared-internals/get-iterator')
5
+ const getType = require('@common-fp/shared-internals/get-type')
6
+
7
+ const sumValues = collection => {
8
+ const collType = getType(collection)
9
+ assertArgTypeIsOneOf(collType, 'collection', ct.collection, 'sumValues')
10
+ assertArgHasValuesOfType(collection, 'collection', 'number', 'sumValues')
11
+
12
+ const values = getIterator('values', collection, collType)
13
+ let sum = 0
14
+ for (const num of values) {
15
+ sum += num
16
+ }
17
+ return sum
18
+ }
19
+
20
+ module.exports = sumValues
@@ -0,0 +1,2 @@
1
+ import { default as sumValues } from '@common-fp/common-fp-types/sum-values'
2
+ export = sumValues
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/sum-values'
@@ -0,0 +1,20 @@
1
+ import assertArgHasValuesOfType from '@common-fp/shared-internals/assert-arg-has-values-of-type'
2
+ import assertArgTypeIsOneOf from '@common-fp/shared-internals/assert-arg-type-is-one-of'
3
+ import * as ct from '@common-fp/shared-internals/common-types'
4
+ import getIterator from '@common-fp/shared-internals/get-iterator'
5
+ import getType from '@common-fp/shared-internals/get-type'
6
+
7
+ const sumValues = collection => {
8
+ const collType = getType(collection)
9
+ assertArgTypeIsOneOf(collType, 'collection', ct.collection, 'sumValues')
10
+ assertArgHasValuesOfType(collection, 'collection', 'number', 'sumValues')
11
+
12
+ const values = getIterator('values', collection, collType)
13
+ let sum = 0
14
+ for (const num of values) {
15
+ sum += num
16
+ }
17
+ return sum
18
+ }
19
+
20
+ export default sumValues
@@ -0,0 +1,15 @@
1
+ const swapFirstTwoArgs =
2
+ fn =>
3
+ (...args) => {
4
+ if (!args.length) return fn()
5
+
6
+ // don't change the number of arguments passed to the function, just
7
+ // pass undefined
8
+ if (args.length === 1) return fn(undefined)
9
+
10
+ return args.length === 2 ?
11
+ fn(args[1], args[0])
12
+ : fn(args[1], args[0], ...args.slice(2))
13
+ }
14
+
15
+ module.exports = swapFirstTwoArgs
@@ -0,0 +1,2 @@
1
+ import { default as swapFirstTwoArgs } from '@common-fp/common-fp-types/swap-first-two-args'
2
+ export = swapFirstTwoArgs
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/swap-first-two-args'
@@ -0,0 +1,15 @@
1
+ const swapFirstTwoArgs =
2
+ fn =>
3
+ (...args) => {
4
+ if (!args.length) return fn()
5
+
6
+ // don't change the number of arguments passed to the function, just
7
+ // pass undefined
8
+ if (args.length === 1) return fn(undefined)
9
+
10
+ return args.length === 2 ?
11
+ fn(args[1], args[0])
12
+ : fn(args[1], args[0], ...args.slice(2))
13
+ }
14
+
15
+ export default swapFirstTwoArgs
@@ -0,0 +1,46 @@
1
+ const assertArgIsArrayOfType = require('@common-fp/shared-internals/assert-arg-is-array-of-type')
2
+
3
+ /**
4
+ * commonly known as _.zip
5
+ * https://lodash.com/docs/4.17.15#zip
6
+ *
7
+ * wiki article
8
+ * https://en.wikipedia.org/wiki/Transpose
9
+ */
10
+ const transpose = anArray => {
11
+ assertArgIsArrayOfType(anArray, 'anArray', 'array', 'transpose')
12
+ if (!anArray.length) return []
13
+
14
+ validateArraysHaveSameLength(anArray)
15
+
16
+ const numCols = anArray[0].length
17
+ const numRows = anArray.length
18
+ const result = new Array(numCols)
19
+
20
+ for (let col = 0; col < numCols; col += 1) {
21
+ const group = new Array(numRows)
22
+
23
+ for (let row = 0; row < numRows; row += 1) {
24
+ group[row] = anArray[row][col]
25
+ }
26
+
27
+ result[col] = group
28
+ }
29
+
30
+ return result
31
+ }
32
+
33
+ function validateArraysHaveSameLength(anArray) {
34
+ const expectedLength = anArray[0].length
35
+
36
+ const allArraysHaveSameLength = anArray
37
+ .slice(1)
38
+ .every(arr => arr.length === expectedLength)
39
+ if (!allArraysHaveSameLength) {
40
+ const errMsg =
41
+ "transpose requires 'anArray' to contain arrays of equal length"
42
+ throw new Error(errMsg)
43
+ }
44
+ }
45
+
46
+ module.exports = transpose
@@ -0,0 +1,2 @@
1
+ import { default as transpose } from '@common-fp/common-fp-types/transpose'
2
+ export = transpose
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/transpose'
@@ -0,0 +1,46 @@
1
+ import assertArgIsArrayOfType from '@common-fp/shared-internals/assert-arg-is-array-of-type'
2
+
3
+ /**
4
+ * commonly known as _.zip
5
+ * https://lodash.com/docs/4.17.15#zip
6
+ *
7
+ * wiki article
8
+ * https://en.wikipedia.org/wiki/Transpose
9
+ */
10
+ const transpose = anArray => {
11
+ assertArgIsArrayOfType(anArray, 'anArray', 'array', 'transpose')
12
+ if (!anArray.length) return []
13
+
14
+ validateArraysHaveSameLength(anArray)
15
+
16
+ const numCols = anArray[0].length
17
+ const numRows = anArray.length
18
+ const result = new Array(numCols)
19
+
20
+ for (let col = 0; col < numCols; col += 1) {
21
+ const group = new Array(numRows)
22
+
23
+ for (let row = 0; row < numRows; row += 1) {
24
+ group[row] = anArray[row][col]
25
+ }
26
+
27
+ result[col] = group
28
+ }
29
+
30
+ return result
31
+ }
32
+
33
+ function validateArraysHaveSameLength(anArray) {
34
+ const expectedLength = anArray[0].length
35
+
36
+ const allArraysHaveSameLength = anArray
37
+ .slice(1)
38
+ .every(arr => arr.length === expectedLength)
39
+ if (!allArraysHaveSameLength) {
40
+ const errMsg =
41
+ "transpose requires 'anArray' to contain arrays of equal length"
42
+ throw new Error(errMsg)
43
+ }
44
+ }
45
+
46
+ export default transpose
@@ -0,0 +1,17 @@
1
+ const assertArgIsType = require('@common-fp/shared-internals/assert-arg-is-type')
2
+ const assertArgIsInt = require('@common-fp/shared-internals/assert-arg-is-int')
3
+ const truncateToNCharsInternal = require('@common-fp/shared-internals/truncate-to-n-chars')
4
+
5
+ const truncateToNChars = n => {
6
+ assertArgIsInt(n, 'n', 'truncateToNChars', {
7
+ nonNegative: true,
8
+ })
9
+
10
+ return aString => {
11
+ assertArgIsType(aString, 'aString', 'string', 'truncateToNChars')
12
+
13
+ return truncateToNCharsInternal(n, aString)
14
+ }
15
+ }
16
+
17
+ module.exports = truncateToNChars
@@ -0,0 +1,2 @@
1
+ import { default as truncateToNChars } from '@common-fp/common-fp-types/truncate-to-n-chars'
2
+ export = truncateToNChars
@@ -0,0 +1 @@
1
+ export { default } from '@common-fp/common-fp-types/truncate-to-n-chars'
@@ -0,0 +1,17 @@
1
+ import assertArgIsType from '@common-fp/shared-internals/assert-arg-is-type'
2
+ import assertArgIsInt from '@common-fp/shared-internals/assert-arg-is-int'
3
+ import truncateToNCharsInternal from '@common-fp/shared-internals/truncate-to-n-chars'
4
+
5
+ const truncateToNChars = n => {
6
+ assertArgIsInt(n, 'n', 'truncateToNChars', {
7
+ nonNegative: true,
8
+ })
9
+
10
+ return aString => {
11
+ assertArgIsType(aString, 'aString', 'string', 'truncateToNChars')
12
+
13
+ return truncateToNCharsInternal(n, aString)
14
+ }
15
+ }
16
+
17
+ export default truncateToNChars