@vinicunca/perkakas 1.6.0 → 1.7.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 (499) hide show
  1. package/dist/add-prop.cjs +1 -1
  2. package/dist/add-prop.d.cts +1 -1
  3. package/dist/add-prop.d.ts +1 -1
  4. package/dist/add-prop.js +1 -1
  5. package/dist/add.cjs +1 -1
  6. package/dist/add.js +1 -1
  7. package/dist/all-pass.cjs +1 -1
  8. package/dist/all-pass.js +1 -1
  9. package/dist/any-pass.cjs +1 -1
  10. package/dist/any-pass.js +1 -1
  11. package/dist/{array-required-prefix-BW08fIbb.d.cts → array-required-prefix-Ck4lHkbA.d.cts} +3 -5
  12. package/dist/{array-required-prefix-a3sgCkd2.d.ts → array-required-prefix-DXv_WnmG.d.ts} +3 -5
  13. package/dist/{bounded-partial-wqR8ceNQ.d.cts → bounded-partial-BqwRN49U.d.cts} +3 -2
  14. package/dist/{bounded-partial-CJjczH6j.d.ts → bounded-partial-BzynYDVs.d.ts} +3 -2
  15. package/dist/ceil.cjs +1 -1
  16. package/dist/ceil.js +1 -1
  17. package/dist/chunk-3DOG24FJ.cjs +1 -0
  18. package/dist/chunk-4BTTPOEU.cjs +1 -0
  19. package/dist/chunk-4Y6KJJOW.js +1 -0
  20. package/dist/{chunk-BDBX4ZMW.cjs → chunk-76VE5EC6.cjs} +1 -1
  21. package/dist/{chunk-TNA73S2T.cjs → chunk-7C7R7JNX.cjs} +1 -1
  22. package/dist/{chunk-WONMP5WS.js → chunk-7V7IBWP5.js} +1 -1
  23. package/dist/chunk-BKBHW2XJ.js +1 -0
  24. package/dist/chunk-BSNCALDT.cjs +1 -0
  25. package/dist/{chunk-UGWBDJPI.cjs → chunk-D4TUHKBA.cjs} +1 -1
  26. package/dist/chunk-EK7ODJWE.js +1 -0
  27. package/dist/chunk-FIO5FNV2.js +1 -0
  28. package/dist/chunk-FOUZI2Q3.cjs +1 -0
  29. package/dist/chunk-GRKRFDIL.js +1 -0
  30. package/dist/chunk-JYWIRZ2Z.js +1 -0
  31. package/dist/chunk-MBGSSEZN.cjs +1 -0
  32. package/dist/{chunk-GFXNX2W7.js → chunk-MPWQN3WY.js} +1 -1
  33. package/dist/chunk-NHTBBY2L.js +1 -0
  34. package/dist/chunk-NQUTCPKD.js +1 -0
  35. package/dist/chunk-OKBFQ7B6.js +1 -0
  36. package/dist/chunk-P7RCAO7P.cjs +438 -0
  37. package/dist/chunk-QGF2XNZS.cjs +1 -0
  38. package/dist/chunk-RMOD5JNB.cjs +1 -0
  39. package/dist/{chunk-5NW4GR2Q.cjs → chunk-RTFVY5D4.cjs} +1 -1
  40. package/dist/chunk-SG2YWG6U.cjs +1 -0
  41. package/dist/chunk-SXNRBENP.cjs +1 -0
  42. package/dist/chunk-TSP3FU72.cjs +1 -0
  43. package/dist/chunk-TWCEO47X.cjs +1 -0
  44. package/dist/{chunk-L4FN2W5Q.cjs → chunk-TXPRX236.cjs} +1 -1
  45. package/dist/{chunk-3K7SNX4D.cjs → chunk-UURK6I3D.cjs} +1 -1
  46. package/dist/chunk-XCG2UC6T.js +1 -0
  47. package/dist/{chunk-673TXH2U.js → chunk-YRVN4PYH.js} +1 -1
  48. package/dist/chunk-YWIXN5BR.js +1 -0
  49. package/dist/chunk-Z23BZCCD.js +438 -0
  50. package/dist/{chunk-EDZFEURO.js → chunk-Z5YZYBC2.js} +1 -1
  51. package/dist/chunk-Z7D7Q6U3.js +1 -0
  52. package/dist/chunk-ZMG3NQDL.js +1 -0
  53. package/dist/chunk.cjs +1 -1
  54. package/dist/chunk.d.cts +8 -23
  55. package/dist/chunk.d.ts +8 -23
  56. package/dist/chunk.js +1 -1
  57. package/dist/clamp.cjs +1 -1
  58. package/dist/clamp.js +1 -1
  59. package/dist/clone.cjs +1 -1
  60. package/dist/clone.js +1 -1
  61. package/dist/concat.cjs +1 -1
  62. package/dist/concat.js +1 -1
  63. package/dist/conditional.cjs +1 -1
  64. package/dist/conditional.d.cts +133 -43
  65. package/dist/conditional.d.ts +133 -43
  66. package/dist/conditional.js +1 -1
  67. package/dist/constant.cjs +1 -1
  68. package/dist/constant.js +1 -1
  69. package/dist/count-by.cjs +1 -1
  70. package/dist/count-by.d.cts +3 -2
  71. package/dist/count-by.d.ts +3 -2
  72. package/dist/count-by.js +1 -1
  73. package/dist/curry.cjs +1 -1
  74. package/dist/curry.js +1 -1
  75. package/dist/debounce.cjs +1 -1
  76. package/dist/debounce.js +1 -1
  77. package/dist/difference-with.cjs +1 -1
  78. package/dist/difference-with.js +1 -1
  79. package/dist/difference.cjs +1 -1
  80. package/dist/difference.js +1 -1
  81. package/dist/divide.cjs +1 -1
  82. package/dist/divide.js +1 -1
  83. package/dist/do-nothing.cjs +1 -1
  84. package/dist/do-nothing.js +1 -1
  85. package/dist/drop-first-by.cjs +1 -1
  86. package/dist/drop-first-by.d.cts +1 -1
  87. package/dist/drop-first-by.d.ts +1 -1
  88. package/dist/drop-first-by.js +1 -1
  89. package/dist/drop-last-while.cjs +1 -1
  90. package/dist/drop-last-while.js +1 -1
  91. package/dist/drop-last.cjs +1 -1
  92. package/dist/drop-last.js +1 -1
  93. package/dist/drop-while.cjs +1 -1
  94. package/dist/drop-while.js +1 -1
  95. package/dist/drop.cjs +1 -1
  96. package/dist/drop.d.cts +2 -1
  97. package/dist/drop.d.ts +2 -1
  98. package/dist/drop.js +1 -1
  99. package/dist/entries.cjs +1 -1
  100. package/dist/entries.d.cts +8 -5
  101. package/dist/entries.d.ts +8 -5
  102. package/dist/entries.js +1 -1
  103. package/dist/{enumerable-string-key-of-BQ4aR5ep.d.cts → enumerable-string-key-of-C4gsorXe.d.ts} +3 -1
  104. package/dist/{enumerable-string-key-of-BQ4aR5ep.d.ts → enumerable-string-key-of-D8w_3Yg8.d.cts} +3 -1
  105. package/dist/enumerable-string-keyed-value-of-BU9R_cEk.d.cts +9 -0
  106. package/dist/enumerable-string-keyed-value-of-BU9R_cEk.d.ts +9 -0
  107. package/dist/evolve.cjs +1 -1
  108. package/dist/evolve.js +1 -1
  109. package/dist/filter.cjs +1 -1
  110. package/dist/filter.d.cts +4 -4
  111. package/dist/filter.d.ts +4 -4
  112. package/dist/filter.js +1 -1
  113. package/dist/{filtered-array-DX6NNaBq.d.cts → filtered-array-BCjySbC6.d.cts} +1 -1
  114. package/dist/{filtered-array-BNHX1Nwj.d.ts → filtered-array-JKATL39M.d.ts} +1 -1
  115. package/dist/find-index.cjs +1 -1
  116. package/dist/find-index.js +1 -1
  117. package/dist/find-last-index.cjs +1 -1
  118. package/dist/find-last-index.js +1 -1
  119. package/dist/find-last.cjs +1 -1
  120. package/dist/find-last.js +1 -1
  121. package/dist/find.cjs +1 -1
  122. package/dist/find.js +1 -1
  123. package/dist/first-by.cjs +1 -1
  124. package/dist/first-by.d.cts +1 -1
  125. package/dist/first-by.d.ts +1 -1
  126. package/dist/first-by.js +1 -1
  127. package/dist/first.cjs +1 -1
  128. package/dist/first.js +1 -1
  129. package/dist/flat-map.cjs +1 -1
  130. package/dist/flat-map.js +1 -1
  131. package/dist/flat.cjs +1 -1
  132. package/dist/flat.d.cts +2 -5
  133. package/dist/flat.d.ts +2 -5
  134. package/dist/flat.js +1 -1
  135. package/dist/floor.cjs +1 -1
  136. package/dist/floor.js +1 -1
  137. package/dist/for-each-obj.cjs +1 -1
  138. package/dist/for-each-obj.d.cts +3 -2
  139. package/dist/for-each-obj.d.ts +3 -2
  140. package/dist/for-each-obj.js +1 -1
  141. package/dist/for-each.cjs +1 -1
  142. package/dist/for-each.js +1 -1
  143. package/dist/from-entries.cjs +1 -1
  144. package/dist/from-entries.d.cts +4 -2
  145. package/dist/from-entries.d.ts +4 -2
  146. package/dist/from-entries.js +1 -1
  147. package/dist/from-keys.cjs +1 -1
  148. package/dist/from-keys.d.cts +3 -2
  149. package/dist/from-keys.d.ts +3 -2
  150. package/dist/from-keys.js +1 -1
  151. package/dist/funnel.cjs +1 -1
  152. package/dist/funnel.d.cts +7 -7
  153. package/dist/funnel.d.ts +7 -7
  154. package/dist/funnel.js +1 -1
  155. package/dist/funnel.lodash-debounce-with-cached-value.test.cjs +1 -1
  156. package/dist/funnel.lodash-debounce-with-cached-value.test.js +1 -1
  157. package/dist/funnel.lodash-debounce.test.cjs +1 -1
  158. package/dist/funnel.lodash-debounce.test.js +1 -1
  159. package/dist/funnel.lodash-throttle-with-cached-value.test.cjs +1 -1
  160. package/dist/funnel.lodash-throttle-with-cached-value.test.js +1 -1
  161. package/dist/funnel.lodash-throttle.test.cjs +1 -1
  162. package/dist/funnel.lodash-throttle.test.js +1 -1
  163. package/dist/funnel.perkakas-debounce.test.cjs +1 -0
  164. package/dist/funnel.perkakas-debounce.test.js +1 -0
  165. package/dist/funnel.reference-batch.test.cjs +1 -1
  166. package/dist/funnel.reference-batch.test.js +1 -1
  167. package/dist/funnel.test-d.cjs +1 -1
  168. package/dist/funnel.test-d.js +1 -1
  169. package/dist/funnel.test.cjs +1 -1
  170. package/dist/funnel.test.js +1 -1
  171. package/dist/group-by-prop.cjs +1 -1
  172. package/dist/group-by-prop.d.cts +7 -5
  173. package/dist/group-by-prop.d.ts +7 -5
  174. package/dist/group-by-prop.js +1 -1
  175. package/dist/group-by.cjs +1 -1
  176. package/dist/group-by.d.cts +3 -2
  177. package/dist/group-by.d.ts +3 -2
  178. package/dist/group-by.js +1 -1
  179. package/dist/has-at-least.cjs +1 -1
  180. package/dist/has-at-least.d.cts +3 -2
  181. package/dist/has-at-least.d.ts +3 -2
  182. package/dist/has-at-least.js +1 -1
  183. package/dist/has-sub-object.cjs +1 -1
  184. package/dist/has-sub-object.js +1 -1
  185. package/dist/human-readable-file-size.cjs +1 -1
  186. package/dist/human-readable-file-size.js +1 -1
  187. package/dist/identity.cjs +1 -1
  188. package/dist/identity.js +1 -1
  189. package/dist/if-D4QIikQ1.d.cts +5 -0
  190. package/dist/if-D4QIikQ1.d.ts +5 -0
  191. package/dist/index-by.cjs +1 -1
  192. package/dist/index-by.d.cts +3 -2
  193. package/dist/index-by.d.ts +3 -2
  194. package/dist/index-by.js +1 -1
  195. package/dist/index.cjs +1 -1
  196. package/dist/index.d.cts +11 -9
  197. package/dist/index.d.ts +11 -9
  198. package/dist/index.js +1 -1
  199. package/dist/intersection-with.cjs +1 -1
  200. package/dist/intersection-with.js +1 -1
  201. package/dist/intersection.cjs +1 -1
  202. package/dist/intersection.js +1 -1
  203. package/dist/invert.cjs +1 -1
  204. package/dist/invert.d.cts +2 -1
  205. package/dist/invert.d.ts +2 -1
  206. package/dist/invert.js +1 -1
  207. package/dist/is-array.cjs +1 -1
  208. package/dist/is-array.js +1 -1
  209. package/dist/is-big-int.cjs +1 -1
  210. package/dist/is-big-int.js +1 -1
  211. package/dist/is-boolean.cjs +1 -1
  212. package/dist/is-boolean.js +1 -1
  213. package/dist/is-bounded-record-C9WAwfA8.d.cts +30 -0
  214. package/dist/is-bounded-record-C9WAwfA8.d.ts +30 -0
  215. package/dist/is-date.cjs +1 -1
  216. package/dist/is-date.js +1 -1
  217. package/dist/is-deep-equal.cjs +1 -1
  218. package/dist/is-deep-equal.js +1 -1
  219. package/dist/is-defined.cjs +1 -1
  220. package/dist/is-defined.js +1 -1
  221. package/dist/is-empty.cjs +1 -1
  222. package/dist/is-empty.js +1 -1
  223. package/dist/is-error.cjs +1 -1
  224. package/dist/is-error.js +1 -1
  225. package/dist/is-function.cjs +1 -1
  226. package/dist/is-function.js +1 -1
  227. package/dist/is-included-in.cjs +1 -1
  228. package/dist/is-included-in.js +1 -1
  229. package/dist/is-non-null.cjs +1 -1
  230. package/dist/is-non-null.js +1 -1
  231. package/dist/is-non-nullish.cjs +1 -1
  232. package/dist/is-non-nullish.js +1 -1
  233. package/dist/is-not.cjs +1 -1
  234. package/dist/is-not.js +1 -1
  235. package/dist/is-nullish.cjs +1 -1
  236. package/dist/is-nullish.js +1 -1
  237. package/dist/is-number.cjs +1 -1
  238. package/dist/is-number.js +1 -1
  239. package/dist/is-object-type.cjs +1 -1
  240. package/dist/is-object-type.js +1 -1
  241. package/dist/is-plain-object.cjs +1 -1
  242. package/dist/is-plain-object.js +1 -1
  243. package/dist/is-promise.cjs +1 -1
  244. package/dist/is-promise.js +1 -1
  245. package/dist/is-shallow-equal.cjs +1 -1
  246. package/dist/is-shallow-equal.js +1 -1
  247. package/dist/is-strict-equal.cjs +1 -1
  248. package/dist/is-strict-equal.js +1 -1
  249. package/dist/is-string.cjs +1 -1
  250. package/dist/is-string.js +1 -1
  251. package/dist/is-symbol.cjs +1 -1
  252. package/dist/is-symbol.js +1 -1
  253. package/dist/is-truthy.cjs +1 -1
  254. package/dist/is-truthy.js +1 -1
  255. package/dist/join.cjs +1 -1
  256. package/dist/join.js +1 -1
  257. package/dist/key-codes.cjs +1 -1
  258. package/dist/key-codes.js +1 -1
  259. package/dist/keys.cjs +1 -1
  260. package/dist/keys.d.cts +4 -3
  261. package/dist/keys.d.ts +4 -3
  262. package/dist/keys.js +1 -1
  263. package/dist/last.cjs +1 -1
  264. package/dist/last.js +1 -1
  265. package/dist/length.cjs +1 -1
  266. package/dist/length.js +1 -1
  267. package/dist/magic-string.es-2ADFIHOO.cjs +13 -0
  268. package/dist/magic-string.es-PNCTE22R.js +13 -0
  269. package/dist/map-keys.cjs +1 -1
  270. package/dist/map-keys.d.cts +6 -4
  271. package/dist/map-keys.d.ts +6 -4
  272. package/dist/map-keys.js +1 -1
  273. package/dist/map-to-obj.cjs +1 -1
  274. package/dist/map-to-obj.d.cts +30 -12
  275. package/dist/map-to-obj.d.ts +30 -12
  276. package/dist/map-to-obj.js +1 -1
  277. package/dist/map-values.cjs +1 -1
  278. package/dist/map-values.d.cts +3 -2
  279. package/dist/map-values.d.ts +3 -2
  280. package/dist/map-values.js +1 -1
  281. package/dist/map-with-feedback.cjs +1 -1
  282. package/dist/map-with-feedback.js +1 -1
  283. package/dist/map.cjs +1 -1
  284. package/dist/map.js +1 -1
  285. package/dist/mean-by.cjs +1 -1
  286. package/dist/mean-by.js +1 -1
  287. package/dist/merge-all.cjs +1 -1
  288. package/dist/merge-all.d.cts +2 -1
  289. package/dist/merge-all.d.ts +2 -1
  290. package/dist/merge-all.js +1 -1
  291. package/dist/merge-deep.cjs +1 -1
  292. package/dist/merge-deep.js +1 -1
  293. package/dist/merge.cjs +1 -1
  294. package/dist/merge.js +1 -1
  295. package/dist/multiply.cjs +1 -1
  296. package/dist/multiply.js +1 -1
  297. package/dist/nth-by.cjs +1 -1
  298. package/dist/nth-by.d.cts +1 -1
  299. package/dist/nth-by.d.ts +1 -1
  300. package/dist/nth-by.js +1 -1
  301. package/dist/obj-of.cjs +1 -1
  302. package/dist/obj-of.js +1 -1
  303. package/dist/omit-by.cjs +1 -1
  304. package/dist/omit-by.d.cts +7 -6
  305. package/dist/omit-by.d.ts +7 -6
  306. package/dist/omit-by.js +1 -1
  307. package/dist/omit.cjs +1 -1
  308. package/dist/omit.js +1 -1
  309. package/dist/once.cjs +1 -1
  310. package/dist/once.js +1 -1
  311. package/dist/only.cjs +1 -1
  312. package/dist/only.js +1 -1
  313. package/dist/partition.cjs +1 -1
  314. package/dist/partition.js +1 -1
  315. package/dist/path-or.cjs +1 -1
  316. package/dist/path-or.js +1 -1
  317. package/dist/perkakas-type-error-8wPb8T2y.d.cts +17 -0
  318. package/dist/perkakas-type-error-8wPb8T2y.d.ts +17 -0
  319. package/dist/pick-by.cjs +1 -1
  320. package/dist/pick-by.d.cts +11 -11
  321. package/dist/pick-by.d.ts +11 -11
  322. package/dist/pick-by.js +1 -1
  323. package/dist/pick.cjs +1 -1
  324. package/dist/pick.d.cts +52 -7
  325. package/dist/pick.d.ts +52 -7
  326. package/dist/pick.js +1 -1
  327. package/dist/pipe.cjs +1 -1
  328. package/dist/pipe.js +1 -1
  329. package/dist/piped.cjs +1 -1
  330. package/dist/piped.js +1 -1
  331. package/dist/product.cjs +1 -1
  332. package/dist/product.js +1 -1
  333. package/dist/prop.cjs +1 -1
  334. package/dist/prop.js +1 -1
  335. package/dist/pull-object.cjs +1 -1
  336. package/dist/pull-object.d.cts +3 -2
  337. package/dist/pull-object.d.ts +3 -2
  338. package/dist/pull-object.js +1 -1
  339. package/dist/random-integer.cjs +1 -1
  340. package/dist/random-integer.js +1 -1
  341. package/dist/random-string.cjs +1 -1
  342. package/dist/random-string.js +1 -1
  343. package/dist/range.cjs +1 -1
  344. package/dist/range.js +1 -1
  345. package/dist/rank-by.cjs +1 -1
  346. package/dist/rank-by.d.cts +1 -1
  347. package/dist/rank-by.d.ts +1 -1
  348. package/dist/rank-by.js +1 -1
  349. package/dist/reduce.cjs +1 -1
  350. package/dist/reduce.js +1 -1
  351. package/dist/reverse.cjs +1 -1
  352. package/dist/reverse.js +1 -1
  353. package/dist/round.cjs +1 -1
  354. package/dist/round.js +1 -1
  355. package/dist/sample.cjs +1 -1
  356. package/dist/sample.js +1 -1
  357. package/dist/set-path.cjs +1 -1
  358. package/dist/set-path.d.cts +18 -7
  359. package/dist/set-path.d.ts +18 -7
  360. package/dist/set-path.js +1 -1
  361. package/dist/set.cjs +1 -1
  362. package/dist/set.d.cts +1 -1
  363. package/dist/set.d.ts +1 -1
  364. package/dist/set.js +1 -1
  365. package/dist/shuffle.cjs +1 -1
  366. package/dist/shuffle.js +1 -1
  367. package/dist/sleep.cjs +1 -1
  368. package/dist/sleep.js +1 -1
  369. package/dist/slice-string.cjs +1 -1
  370. package/dist/slice-string.js +1 -1
  371. package/dist/slugify.cjs +1 -1
  372. package/dist/slugify.js +1 -1
  373. package/dist/sort-by.cjs +1 -1
  374. package/dist/sort-by.js +1 -1
  375. package/dist/sort.cjs +1 -1
  376. package/dist/sort.js +1 -1
  377. package/dist/sorted-index-by.cjs +1 -1
  378. package/dist/sorted-index-by.js +1 -1
  379. package/dist/sorted-index-with.cjs +1 -1
  380. package/dist/sorted-index-with.js +1 -1
  381. package/dist/sorted-index.cjs +1 -1
  382. package/dist/sorted-index.js +1 -1
  383. package/dist/sorted-last-index-by.cjs +1 -1
  384. package/dist/sorted-last-index-by.js +1 -1
  385. package/dist/sorted-last-index.cjs +1 -1
  386. package/dist/sorted-last-index.js +1 -1
  387. package/dist/splice.cjs +1 -1
  388. package/dist/splice.js +1 -1
  389. package/dist/split-at.cjs +1 -1
  390. package/dist/split-at.js +1 -1
  391. package/dist/split-when.cjs +1 -1
  392. package/dist/split-when.js +1 -1
  393. package/dist/split.cjs +1 -1
  394. package/dist/split.js +1 -1
  395. package/dist/string-to-path.cjs +1 -1
  396. package/dist/string-to-path.d.cts +33 -11
  397. package/dist/string-to-path.d.ts +33 -11
  398. package/dist/string-to-path.js +1 -1
  399. package/dist/subtract.cjs +1 -1
  400. package/dist/subtract.js +1 -1
  401. package/dist/sum-by.cjs +1 -1
  402. package/dist/sum-by.js +1 -1
  403. package/dist/sum.cjs +1 -1
  404. package/dist/sum.js +1 -1
  405. package/dist/swap-indices.cjs +1 -1
  406. package/dist/swap-indices.js +1 -1
  407. package/dist/swap-props.cjs +1 -1
  408. package/dist/swap-props.js +1 -1
  409. package/dist/take-first-by.cjs +1 -1
  410. package/dist/take-first-by.d.cts +1 -1
  411. package/dist/take-first-by.d.ts +1 -1
  412. package/dist/take-first-by.js +1 -1
  413. package/dist/take-last-while.cjs +1 -1
  414. package/dist/take-last-while.js +1 -1
  415. package/dist/take-last.cjs +1 -1
  416. package/dist/take-last.js +1 -1
  417. package/dist/take-while.cjs +1 -1
  418. package/dist/take-while.js +1 -1
  419. package/dist/take.cjs +1 -1
  420. package/dist/take.js +1 -1
  421. package/dist/tap.cjs +1 -1
  422. package/dist/tap.js +1 -1
  423. package/dist/times.cjs +1 -1
  424. package/dist/times.d.cts +1 -9
  425. package/dist/times.d.ts +1 -9
  426. package/dist/times.js +1 -1
  427. package/dist/to-camel-case.cjs +1 -1
  428. package/dist/to-camel-case.js +1 -1
  429. package/dist/to-capital-case.cjs +1 -1
  430. package/dist/to-capital-case.js +1 -1
  431. package/dist/to-constant-case.cjs +1 -1
  432. package/dist/to-constant-case.js +1 -1
  433. package/dist/to-kebab-case.cjs +1 -1
  434. package/dist/to-kebab-case.js +1 -1
  435. package/dist/to-no-case.cjs +1 -1
  436. package/dist/to-no-case.js +1 -1
  437. package/dist/to-pascal-case.cjs +1 -1
  438. package/dist/to-pascal-case.js +1 -1
  439. package/dist/to-pascal-snake-case.cjs +1 -1
  440. package/dist/to-pascal-snake-case.js +1 -1
  441. package/dist/to-sentence-case.cjs +1 -1
  442. package/dist/to-sentence-case.js +1 -1
  443. package/dist/to-snake-case.cjs +1 -1
  444. package/dist/to-snake-case.js +1 -1
  445. package/dist/to-string-DO8zw6jS.d.cts +11 -0
  446. package/dist/to-string-DO8zw6jS.d.ts +11 -0
  447. package/dist/to-train-case.cjs +1 -1
  448. package/dist/to-train-case.js +1 -1
  449. package/dist/{tuple-parts-CrwnkDKX.d.ts → tuple-parts-BTivqbtT.d.ts} +4 -18
  450. package/dist/{tuple-parts-DAqFAJP8.d.cts → tuple-parts-v6av7LMU.d.cts} +4 -18
  451. package/dist/unique-by.cjs +1 -1
  452. package/dist/unique-by.js +1 -1
  453. package/dist/unique-with.cjs +1 -1
  454. package/dist/unique-with.js +1 -1
  455. package/dist/unique.cjs +1 -1
  456. package/dist/unique.js +1 -1
  457. package/dist/{upsert-prop-tIHFi_F_.d.cts → upsert-prop-Cc3jEW9l.d.cts} +1 -2
  458. package/dist/{upsert-prop-D0N8486l.d.ts → upsert-prop-CdUtD50i.d.ts} +1 -2
  459. package/dist/values.cjs +1 -1
  460. package/dist/values.d.cts +1 -1
  461. package/dist/values.d.ts +1 -1
  462. package/dist/values.js +1 -1
  463. package/dist/zip-with.cjs +1 -1
  464. package/dist/zip-with.js +1 -1
  465. package/dist/zip.cjs +1 -1
  466. package/dist/zip.js +1 -1
  467. package/package.json +12 -12
  468. package/dist/chunk-5SAUYUEK.js +0 -1
  469. package/dist/chunk-6HSB3NFW.js +0 -1
  470. package/dist/chunk-6L5XEBJG.js +0 -1
  471. package/dist/chunk-A2PAJNYA.js +0 -1
  472. package/dist/chunk-AWXJSK4F.js +0 -1
  473. package/dist/chunk-CZLV6ZLZ.js +0 -1
  474. package/dist/chunk-F3JXHUP4.cjs +0 -1
  475. package/dist/chunk-FMUPPQZE.js +0 -1
  476. package/dist/chunk-FP3LV577.js +0 -1
  477. package/dist/chunk-GFQXVPLP.cjs +0 -1
  478. package/dist/chunk-GOUUMCT7.cjs +0 -1
  479. package/dist/chunk-HRK4GMT2.cjs +0 -1
  480. package/dist/chunk-ICYGL2YZ.js +0 -1
  481. package/dist/chunk-J3ZXNDMT.cjs +0 -1
  482. package/dist/chunk-MBC7VZHY.js +0 -1
  483. package/dist/chunk-NQGMUM3E.cjs +0 -1
  484. package/dist/chunk-OBWPUDD3.cjs +0 -1
  485. package/dist/chunk-SQZULO7V.js +0 -1
  486. package/dist/chunk-UDSRBKNR.js +0 -1
  487. package/dist/chunk-VRZNQSZN.cjs +0 -1
  488. package/dist/chunk-WYM2JV5T.cjs +0 -1
  489. package/dist/chunk-XU4TDKMD.cjs +0 -1
  490. package/dist/enumerable-string-keyed-value-of-CLzltniW.d.cts +0 -15
  491. package/dist/enumerable-string-keyed-value-of-CLzltniW.d.ts +0 -15
  492. package/dist/funnel.remeda-debounce.test.cjs +0 -1
  493. package/dist/funnel.remeda-debounce.test.js +0 -1
  494. package/dist/if-bounded-record-Drd4UbBU.d.cts +0 -29
  495. package/dist/if-bounded-record-Drd4UbBU.d.ts +0 -29
  496. package/dist/reconstructed-record-DchLaSO8.d.cts +0 -10
  497. package/dist/reconstructed-record-DuxOLlMs.d.ts +0 -10
  498. /package/dist/{funnel.remeda-debounce.test.d.cts → funnel.perkakas-debounce.test.d.cts} +0 -0
  499. /package/dist/{funnel.remeda-debounce.test.d.ts → funnel.perkakas-debounce.test.d.ts} +0 -0
@@ -1 +1 @@
1
- import{a as t}from"./chunk-5SAUYUEK.js";import{a as e}from"./chunk-J6WPJH72.js";function s(...n){return e(r,n,t(a))}function r([n]){return n}function a(){return o}function o(n){return{hasNext:!0,next:n,done:!0}}export{s as a};
1
+ import{a as t}from"./chunk-NHTBBY2L.js";import{a as e}from"./chunk-J6WPJH72.js";function s(...n){return e(r,n,t(a))}function r([n]){return n}function a(){return o}function o(n){return{hasNext:!0,next:n,done:!0}}export{s as a};
@@ -0,0 +1 @@
1
+ import{a as t}from"./chunk-J6WPJH72.js";function i(...e){return t(s,e)}function s(e,o){let r={};for(let n of o)n in e&&(r[n]=e[n]);return r}export{i as a};
@@ -0,0 +1 @@
1
+ var d=/^(?:0|[1-9]\d*)$/u;function s(i){let t=[],a=/\.{0,4096}(?<propName>[^.[\]]+)|\['(?<quoted>.{0,4096}?)'\]|\["(?<doubleQuoted>.{0,4096}?)"\]|\[(?<unquoted>.{0,4096}?)\]/uy,n;for(;(n=a.exec(i))!==null;){let{propName:e,quoted:o,doubleQuoted:u,unquoted:r}=n.groups;if(r!==void 0){t.push(...s(r));continue}t.push(e===void 0?o??u:d.test(e)?Number(e):e)}return t}export{s as a};
package/dist/chunk.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2HQM73ITcjs = require('./chunk-2HQM73IT.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.chunk = _chunk2HQM73ITcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2HQM73ITcjs = require('./chunk-2HQM73IT.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.chunk = _chunk2HQM73ITcjs.a;
package/dist/chunk.d.cts CHANGED
@@ -3,7 +3,8 @@ import { I as IntRangeInclusive } from './int-range-inclusive-Cn-qsrAN.cjs';
3
3
  import { I as IterableContainer } from './iterable-container-BTpDVdNc.cjs';
4
4
  import { N as NonEmptyArray } from './non-empty-array-C9Od1wmF.cjs';
5
5
  import { P as PartialArray } from './partial-array-Vnf1fBtl.cjs';
6
- import { T as TupleParts } from './tuple-parts-DAqFAJP8.cjs';
6
+ import { T as TupleParts } from './tuple-parts-v6av7LMU.cjs';
7
+ import './perkakas-type-error-8wPb8T2y.cjs';
7
8
 
8
9
  /**
9
10
  * An array with *exactly* N elements in it.
@@ -23,9 +24,7 @@ type NTuple<T, N extends number, Result extends Array<unknown> = []> = Result['l
23
24
  * See the type tests for an example.
24
25
  */
25
26
  type MAX_LITERAL_SIZE = 350;
26
- type Chunk<T extends IterableContainer, N extends number> = T extends readonly [] ? [] : IsNumericLiteral<N> extends true ? LessThan<N, 1> extends true ? never : LessThan<N, MAX_LITERAL_SIZE> extends true ? [
27
- ...LiteralChunk<T, N>
28
- ] : GenericChunk<T> : GenericChunk<T>;
27
+ type Chunk<T extends IterableContainer, N extends number> = T extends readonly [] ? [] : IsNumericLiteral<N> extends true ? LessThan<N, 1> extends true ? never : LessThan<N, MAX_LITERAL_SIZE> extends true ? [...LiteralChunk<T, N>] : GenericChunk<T> : GenericChunk<T>;
29
28
  type LiteralChunk<T extends IterableContainer, N extends number> = ChunkRestElement<ChunkFixedTuple<TuplePrefix<T>, N>, TupleParts<T>['item'], TupleParts<T>['suffix'], N> | ([...TuplePrefix<T>, ...TupleParts<T>['suffix']] extends readonly [] ? [] : never);
30
29
  /**
31
30
  * This type **only** works if the input array `T` is a fixed tuple. For these
@@ -34,16 +33,7 @@ type LiteralChunk<T extends IterableContainer, N extends number> = ChunkRestElem
34
33
  type ChunkFixedTuple<T, N extends number, Result = []> = T extends readonly [infer Head, ...infer Rest] ? ChunkFixedTuple<Rest, N, Result extends [
35
34
  ...infer Previous extends Array<Array<unknown>>,
36
35
  infer Current extends Array<unknown>
37
- ] ? Current['length'] extends N ? [
38
- ...Previous,
39
- Current,
40
- [Head]
41
- ] : [
42
- ...Previous,
43
- [...Current, Head]
44
- ] : [
45
- [Head]
46
- ]> : Result;
36
+ ] ? Current['length'] extends N ? [...Previous, Current, [Head]] : [...Previous, [...Current, Head]] : [[Head]]> : Result;
47
37
  /**
48
38
  * Here lies the main complexity of building the chunk type. It takes the prefix
49
39
  * chunks, the rest param item type, and the suffix (not chunked!) and it
@@ -70,21 +60,16 @@ type ChunkRestElement<PrefixChunks, Item, Suffix extends Array<unknown>, N exten
70
60
  ],
71
61
  ...Array<NTuple<Item, N>>,
72
62
  ...SuffixChunk<Suffix, Item, N>
73
- ] : [
74
- ...Array<NTuple<Item, N>>,
75
- ...SuffixChunk<Suffix, Item, N>
76
- ]>;
63
+ ] : [...Array<NTuple<Item, N>>, ...SuffixChunk<Suffix, Item, N>]>;
77
64
  /**
78
65
  * This type assumes it takes a finite tuple that represents the suffix of our
79
66
  * input array. It builds all possible combinations of adding items to the
80
67
  * **head** of the suffix in order to pad the suffix until the last chunk is
81
68
  * full.
82
69
  */
83
- type SuffixChunk<T extends Array<unknown>, Item, N extends number> = T extends readonly [] ? [
84
- ValueOf<{
85
- [K in IntRangeInclusive<1, N>]: NTuple<Item, K>;
86
- }>
87
- ] : ValueOf<{
70
+ type SuffixChunk<T extends Array<unknown>, Item, N extends number> = T extends readonly [] ? [ValueOf<{
71
+ [K in IntRangeInclusive<1, N>]: NTuple<Item, K>;
72
+ }>] : ValueOf<{
88
73
  [Padding in IntRange<0, N>]: ChunkFixedTuple<[
89
74
  ...NTuple<Item, Padding>,
90
75
  ...T
package/dist/chunk.d.ts CHANGED
@@ -3,7 +3,8 @@ import { I as IntRangeInclusive } from './int-range-inclusive-Cn-qsrAN.js';
3
3
  import { I as IterableContainer } from './iterable-container-BTpDVdNc.js';
4
4
  import { N as NonEmptyArray } from './non-empty-array-C9Od1wmF.js';
5
5
  import { P as PartialArray } from './partial-array-Vnf1fBtl.js';
6
- import { T as TupleParts } from './tuple-parts-CrwnkDKX.js';
6
+ import { T as TupleParts } from './tuple-parts-BTivqbtT.js';
7
+ import './perkakas-type-error-8wPb8T2y.js';
7
8
 
8
9
  /**
9
10
  * An array with *exactly* N elements in it.
@@ -23,9 +24,7 @@ type NTuple<T, N extends number, Result extends Array<unknown> = []> = Result['l
23
24
  * See the type tests for an example.
24
25
  */
25
26
  type MAX_LITERAL_SIZE = 350;
26
- type Chunk<T extends IterableContainer, N extends number> = T extends readonly [] ? [] : IsNumericLiteral<N> extends true ? LessThan<N, 1> extends true ? never : LessThan<N, MAX_LITERAL_SIZE> extends true ? [
27
- ...LiteralChunk<T, N>
28
- ] : GenericChunk<T> : GenericChunk<T>;
27
+ type Chunk<T extends IterableContainer, N extends number> = T extends readonly [] ? [] : IsNumericLiteral<N> extends true ? LessThan<N, 1> extends true ? never : LessThan<N, MAX_LITERAL_SIZE> extends true ? [...LiteralChunk<T, N>] : GenericChunk<T> : GenericChunk<T>;
29
28
  type LiteralChunk<T extends IterableContainer, N extends number> = ChunkRestElement<ChunkFixedTuple<TuplePrefix<T>, N>, TupleParts<T>['item'], TupleParts<T>['suffix'], N> | ([...TuplePrefix<T>, ...TupleParts<T>['suffix']] extends readonly [] ? [] : never);
30
29
  /**
31
30
  * This type **only** works if the input array `T` is a fixed tuple. For these
@@ -34,16 +33,7 @@ type LiteralChunk<T extends IterableContainer, N extends number> = ChunkRestElem
34
33
  type ChunkFixedTuple<T, N extends number, Result = []> = T extends readonly [infer Head, ...infer Rest] ? ChunkFixedTuple<Rest, N, Result extends [
35
34
  ...infer Previous extends Array<Array<unknown>>,
36
35
  infer Current extends Array<unknown>
37
- ] ? Current['length'] extends N ? [
38
- ...Previous,
39
- Current,
40
- [Head]
41
- ] : [
42
- ...Previous,
43
- [...Current, Head]
44
- ] : [
45
- [Head]
46
- ]> : Result;
36
+ ] ? Current['length'] extends N ? [...Previous, Current, [Head]] : [...Previous, [...Current, Head]] : [[Head]]> : Result;
47
37
  /**
48
38
  * Here lies the main complexity of building the chunk type. It takes the prefix
49
39
  * chunks, the rest param item type, and the suffix (not chunked!) and it
@@ -70,21 +60,16 @@ type ChunkRestElement<PrefixChunks, Item, Suffix extends Array<unknown>, N exten
70
60
  ],
71
61
  ...Array<NTuple<Item, N>>,
72
62
  ...SuffixChunk<Suffix, Item, N>
73
- ] : [
74
- ...Array<NTuple<Item, N>>,
75
- ...SuffixChunk<Suffix, Item, N>
76
- ]>;
63
+ ] : [...Array<NTuple<Item, N>>, ...SuffixChunk<Suffix, Item, N>]>;
77
64
  /**
78
65
  * This type assumes it takes a finite tuple that represents the suffix of our
79
66
  * input array. It builds all possible combinations of adding items to the
80
67
  * **head** of the suffix in order to pad the suffix until the last chunk is
81
68
  * full.
82
69
  */
83
- type SuffixChunk<T extends Array<unknown>, Item, N extends number> = T extends readonly [] ? [
84
- ValueOf<{
85
- [K in IntRangeInclusive<1, N>]: NTuple<Item, K>;
86
- }>
87
- ] : ValueOf<{
70
+ type SuffixChunk<T extends Array<unknown>, Item, N extends number> = T extends readonly [] ? [ValueOf<{
71
+ [K in IntRangeInclusive<1, N>]: NTuple<Item, K>;
72
+ }>] : ValueOf<{
88
73
  [Padding in IntRange<0, N>]: ChunkFixedTuple<[
89
74
  ...NTuple<Item, Padding>,
90
75
  ...T
package/dist/chunk.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-UWMBE6BM.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as chunk};
1
+ import{a}from"./chunk-UWMBE6BM.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as chunk};
package/dist/clamp.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkRXUYF4A4cjs = require('./chunk-RXUYF4A4.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.clamp = _chunkRXUYF4A4cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkRXUYF4A4cjs = require('./chunk-RXUYF4A4.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.clamp = _chunkRXUYF4A4cjs.a;
package/dist/clamp.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-CR5H624Z.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as clamp};
1
+ import{a}from"./chunk-CR5H624Z.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as clamp};
package/dist/clone.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkGFQXVPLPcjs = require('./chunk-GFQXVPLP.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.clone = _chunkGFQXVPLPcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkQGF2XNZScjs = require('./chunk-QGF2XNZS.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.clone = _chunkQGF2XNZScjs.a;
package/dist/clone.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-ICYGL2YZ.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as clone};
1
+ import{a}from"./chunk-JYWIRZ2Z.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as clone};
package/dist/concat.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYJDSLML5cjs = require('./chunk-YJDSLML5.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.concat = _chunkYJDSLML5cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkYJDSLML5cjs = require('./chunk-YJDSLML5.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.concat = _chunkYJDSLML5cjs.a;
package/dist/concat.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-32JKKR4M.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as concat};
1
+ import{a}from"./chunk-32JKKR4M.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as concat};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkWYM2JV5Tcjs = require('./chunk-WYM2JV5T.cjs');exports.conditional = _chunkWYM2JV5Tcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk4BTTPOEUcjs = require('./chunk-4BTTPOEU.cjs');require('./chunk-MBGSSEZN.cjs');exports.conditional = _chunk4BTTPOEUcjs.a;
@@ -8,9 +8,12 @@
8
8
  type GuardType<T, Fallback = never> = T extends (x: any, ...rest: any) => x is infer U ? U : Fallback;
9
9
 
10
10
  type Case<In, Out, When extends (x: In) => boolean = (x: In) => boolean> = readonly [when: When, then: (x: GuardType<When, In> & In) => Out];
11
- declare const conditionalPlus: typeof conditional & {
12
- defaultCase: typeof defaultCase;
13
- };
11
+ type DefaultCase<In, Out> = (x: In) => Out;
12
+ interface Utilities {
13
+ readonly defaultCase: typeof defaultCase;
14
+ }
15
+ type WithUtils<T> = T & Utilities;
16
+ declare const conditionalPlus: WithUtils<typeof conditional>;
14
17
 
15
18
  /**
16
19
  * Executes a transformer function based on the first matching predicate,
@@ -19,13 +22,18 @@ declare const conditionalPlus: typeof conditional & {
19
22
  * corresponding transformer, and returns, ignoring any further cases, even if
20
23
  * they would match.
21
24
  *
22
- * !IMPORTANT! - Unlike similar implementations in frameworks like Lodash and
23
- * Ramda, this implementation does **NOT** return a default/fallback
24
- * `undefined` value when none of the cases match; and instead will **throw** an
25
- * exception in those cases.
26
- * To add a default case use the `conditional.defaultCase` helper as the final
27
- * case of your implementation. By default it returns `undefined`, but could be
28
- * provided a transformer in order to return something else.
25
+ * NOTE*: Some type-predicates may fail to narrow the param type of their
26
+ * transformer; in such cases wrap your type-predicate in an anonymous arrow
27
+ * function: e.g., instead of
28
+ * `conditional(..., [myTypePredicate, myTransformer], ...)`, use
29
+ * `conditional(..., [($) => myTypePredicate($), myTransformer], ...)`.
30
+ *
31
+ * To add a a default, catch-all, case you can provide a single callback
32
+ * function (instead of a 2-tuple) as the last case. This is equivalent to
33
+ * adding a case with a trivial always-true predicate as it's condition (see
34
+ * example).
35
+ *
36
+ * For simpler cases you should also consider using `when` instead.
29
37
  *
30
38
  * Due to TypeScript's inability to infer the result of negating a type-
31
39
  * predicate we can't refine the types used in subsequent cases based on
@@ -33,30 +41,62 @@ declare const conditionalPlus: typeof conditional & {
33
41
  * is recommended for more precise type control when such type narrowing is
34
42
  * needed.
35
43
  *
36
- * @param cases - A list of (up to 10) tuples, each defining a case. Each tuple
37
- * consists of a predicate (or a type-predicate) and a transformer function that
38
- * processes the data if its case matches.
44
+ * !IMPORTANT! - Unlike similar implementations in Lodash and Ramda, this
45
+ * implementation **doesn't** implicitly return `undefined` as a fallback when
46
+ * when none of the cases match; and instead **throws** an exception in those
47
+ * cases! You have to explicitly provide a default case, and can use
48
+ * `constant(undefined)` as your last case to replicate that behavior.
49
+ *
50
+ * @param cases - A list of (up to 10) cases. Each case can be either:
51
+ * - A 2-tuple consisting of a predicate (or type-predicate) and a transformer
52
+ * function that processes the data if the predicate matches.
53
+ * - A single callback function that acts as a default fallback case.
39
54
  * @returns The output of the matched transformer. If no cases match, an
40
55
  * exception is thrown. The return type is a union of the return types of all
41
56
  * provided transformers.
42
57
  * @signature
43
58
  * P.conditional(...cases)(data);
44
59
  * @example
45
- * const nameOrId = 3 as string | number;
60
+ * const nameOrId = 3 as string | number | boolean;
61
+ *
46
62
  * P.pipe(
47
63
  * nameOrId,
48
64
  * P.conditional(
49
65
  * [P.isString, (name) => `Hello ${name}`],
50
66
  * [P.isNumber, (id) => `Hello ID: ${id}`],
51
- * P.conditional.defaultCase(
52
- * (something) => `Hello something (${JSON.stringify(something)})`,
53
- * ),
54
67
  * ),
55
- * ); //=> 'Hello ID: 3'
68
+ * ); //=> 'Hello ID: 3' (typed as `string`), can throw!.
69
+ *
70
+ * P.pipe(
71
+ * nameOrId,
72
+ * P.conditional(
73
+ * [P.isString, (name) => `Hello ${name}`],
74
+ * [P.isNumber, (id) => `Hello ID: ${id}`],
75
+ * P.constant(undefined),
76
+ * ),
77
+ * ); //=> 'Hello ID: 3' (typed as `string | undefined`), won't throw.
78
+ *
79
+ * P.pipe(
80
+ * nameOrId,
81
+ * P.conditional(
82
+ * [P.isString, (name) => `Hello ${name}`],
83
+ * [P.isNumber, (id) => `Hello ID: ${id}`],
84
+ * (something) => `Hello something (${JSON.stringify(something)})`,
85
+ * ),
86
+ * ); //=> 'Hello ID: 3' (typed as `string`), won't throw.
56
87
  * @dataLast
57
88
  * @category Function
58
89
  */
59
- declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Fn8 extends (x: T) => boolean, Fn9 extends (x: T) => boolean, Return0, Return1 = never, Return2 = never, Return3 = never, Return4 = never, Return5 = never, Return6 = never, Return7 = never, Return8 = never, Return9 = never>(case0: Case<T, Return0, Fn0>, case1?: Case<T, Return1, Fn1>, case2?: Case<T, Return2, Fn2>, case3?: Case<T, Return3, Fn3>, case4?: Case<T, Return4, Fn4>, case5?: Case<T, Return5, Fn5>, case6?: Case<T, Return6, Fn6>, case7?: Case<T, Return7, Fn7>, case8?: Case<T, Return8, Fn8>, case9?: Case<T, Return9, Fn9>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Return8 | Return9;
90
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Return0, Fallback = never>(case0: Case<T, Return0, Fn0>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Fallback;
91
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Return0, Return1, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Fallback;
92
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Return0, Return1, Return2, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Fallback;
93
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Fallback;
94
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Fallback;
95
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Fallback;
96
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Fallback;
97
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Return7, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, case7: Case<T, Return7, Fn7>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Fallback;
98
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Fn8 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Return7, Return8, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, case7: Case<T, Return7, Fn7>, case8: Case<T, Return8, Fn8>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Return8 | Fallback;
99
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Fn8 extends (x: T) => boolean, Fn9 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Return7, Return8, Return9, Fallback = never>(case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, case7: Case<T, Return7, Fn7>, case8: Case<T, Return8, Fn8>, case9: Case<T, Return9, Fn9>, fallback?: DefaultCase<T, Fallback>): (data: T) => Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Return8 | Return9 | Fallback;
60
100
  /**
61
101
  * Executes a transformer function based on the first matching predicate,
62
102
  * functioning like a series of `if...else if...` statements. It sequentially
@@ -64,13 +104,18 @@ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T
64
104
  * corresponding transformer, and returns, ignoring any further cases, even if
65
105
  * they would match.
66
106
  *
67
- * !IMPORTANT! - Unlike similar implementations in frameworks like Lodash and
68
- * Ramda, this implementation does **NOT** return a default/fallback
69
- * `undefined` value when none of the cases match; and instead will **throw** an
70
- * exception in those cases.
71
- * To add a default case use the `conditional.defaultCase` helper as the final
72
- * case of your implementation. By default it returns `undefined`, but could be
73
- * provided a transformer in order to return something else.
107
+ * NOTE*: Some type-predicates may fail to narrow the param type of their
108
+ * transformer; in such cases wrap your type-predicate in an anonymous arrow
109
+ * function: e.g., instead of
110
+ * `conditional(..., [myTypePredicate, myTransformer], ...)`, use
111
+ * `conditional(..., [($) => myTypePredicate($), myTransformer], ...)`.
112
+ *
113
+ * To add a a default, catch-all, case you can provide a single callback
114
+ * function (instead of a 2-tuple) as the last case. This is equivalent to
115
+ * adding a case with a trivial always-true predicate as it's condition (see
116
+ * example).
117
+ *
118
+ * For simpler cases you should also consider using `when` instead.
74
119
  *
75
120
  * Due to TypeScript's inability to infer the result of negating a type-
76
121
  * predicate we can't refine the types used in subsequent cases based on
@@ -78,34 +123,76 @@ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T
78
123
  * is recommended for more precise type control when such type narrowing is
79
124
  * needed.
80
125
  *
126
+ * !IMPORTANT! - Unlike similar implementations in Lodash and Ramda, this
127
+ * implementation **doesn't** implicitly return `undefined` as a fallback when
128
+ * when none of the cases match; and instead **throws** an exception in those
129
+ * cases! You have to explicitly provide a default case, and can use
130
+ * `constant(undefined)` as your last case to replicate that behavior.
131
+ *
81
132
  * @param data - The input data to be evaluated against the provided cases.
82
- * @param cases - A list of (up to 10) tuples, each defining a case. Each tuple
83
- * consists of a predicate (or a type-predicate) and a transformer function that
84
- * processes the data if its case matches.
133
+ * @param cases - A list of (up to 10) cases. Each case can be either:
134
+ * - A 2-tuple consisting of a predicate (or type-predicate) and a transformer
135
+ * function that processes the data if the predicate matches.
136
+ * - A single callback function that acts as a default fallback case.
85
137
  * @returns The output of the matched transformer. If no cases match, an
86
138
  * exception is thrown. The return type is a union of the return types of all
87
139
  * provided transformers.
88
140
  * @signature
89
141
  * P.conditional(data, ...cases);
90
142
  * @example
91
- * const nameOrId = 3 as string | number;
143
+ * const nameOrId = 3 as string | number | boolean;
144
+ *
92
145
  * P.conditional(
93
146
  * nameOrId,
94
147
  * [P.isString, (name) => `Hello ${name}`],
95
148
  * [P.isNumber, (id) => `Hello ID: ${id}`],
96
- * P.conditional.defaultCase(
97
- * (something) => `Hello something (${JSON.stringify(something)})`,
98
- * ),
99
- * ); //=> 'Hello ID: 3'
149
+ * ); //=> 'Hello ID: 3' (typed as `string`), can throw!.
150
+ *
151
+ * P.conditional(
152
+ * nameOrId,
153
+ * [P.isString, (name) => `Hello ${name}`],
154
+ * [P.isNumber, (id) => `Hello ID: ${id}`],
155
+ * P.constant(undefined),
156
+ * ); //=> 'Hello ID: 3' (typed as `string | undefined`), won't throw.
157
+ *
158
+ * P.conditional(
159
+ * nameOrId,
160
+ * [P.isString, (name) => `Hello ${name}`],
161
+ * [P.isNumber, (id) => `Hello ID: ${id}`],
162
+ * (something) => `Hello something (${JSON.stringify(something)})`,
163
+ * ); //=> 'Hello ID: 3' (typed as `string`), won't throw.
100
164
  * @dataFirst
101
165
  * @category Function
102
166
  */
103
- declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Fn8 extends (x: T) => boolean, Fn9 extends (x: T) => boolean, Return0, Return1 = never, Return2 = never, Return3 = never, Return4 = never, Return5 = never, Return6 = never, Return7 = never, Return8 = never, Return9 = never>(data: T, case0: Case<T, Return0, Fn0>, case1?: Case<T, Return1, Fn1>, case2?: Case<T, Return2, Fn2>, case3?: Case<T, Return3, Fn3>, case4?: Case<T, Return4, Fn4>, case5?: Case<T, Return5, Fn5>, case6?: Case<T, Return6, Fn6>, case7?: Case<T, Return7, Fn7>, case8?: Case<T, Return8, Fn8>, case9?: Case<T, Return9, Fn9>): Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Return8 | Return9;
167
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Return0, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, fallback?: DefaultCase<T, Fallback>): Return0 | Fallback;
168
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Return0, Return1, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Fallback;
169
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Return0, Return1, Return2, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Fallback;
170
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Fallback;
171
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Return4 | Fallback;
172
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Fallback;
173
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Fallback;
174
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Return7, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, case7: Case<T, Return7, Fn7>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Fallback;
175
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Fn8 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Return7, Return8, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, case7: Case<T, Return7, Fn7>, case8: Case<T, Return8, Fn8>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Return8 | Fallback;
176
+ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T) => boolean, Fn2 extends (x: T) => boolean, Fn3 extends (x: T) => boolean, Fn4 extends (x: T) => boolean, Fn5 extends (x: T) => boolean, Fn6 extends (x: T) => boolean, Fn7 extends (x: T) => boolean, Fn8 extends (x: T) => boolean, Fn9 extends (x: T) => boolean, Return0, Return1, Return2, Return3, Return4, Return5, Return6, Return7, Return8, Return9, Fallback = never>(data: T, case0: Case<T, Return0, Fn0>, case1: Case<T, Return1, Fn1>, case2: Case<T, Return2, Fn2>, case3: Case<T, Return3, Fn3>, case4: Case<T, Return4, Fn4>, case5: Case<T, Return5, Fn5>, case6: Case<T, Return6, Fn6>, case7: Case<T, Return7, Fn7>, case8: Case<T, Return8, Fn8>, case9: Case<T, Return9, Fn9>, fallback?: DefaultCase<T, Fallback>): Return0 | Return1 | Return2 | Return3 | Return4 | Return5 | Return6 | Return7 | Return8 | Return9 | Fallback;
177
+ /**
178
+ *! **DEPRECATED**: `conditional` now accepts a default, catch-all, callback directly and no longer needs this utility wrapper. Use `constant(undefined)` as your last case instead (see example).
179
+ *
180
+ * @example
181
+ * const nameOrId = 3 as string | number;
182
+ * P.conditional(
183
+ * nameOrId,
184
+ * [P.isString, (name) => `Hello ${name}`],
185
+ * [P.isNumber, (id) => `Hello ID: ${id}`],
186
+ * // Was: `P.conditional.defaultCase(),`, Now:
187
+ * constant(undefined),
188
+ * ); //=> 'Hello ID: 3'
189
+ * @deprecated `conditional` now accepts a default, catch-all, callback
190
+ * directly and no longer needs this utility wrapper. Use `constant(undefined)`
191
+ * as your last case instead (see example).
192
+ */
193
+ declare function defaultCase(): Case<unknown, undefined>;
104
194
  /**
105
- * A simplified case that accepts all data. Put this as the last case to
106
- * prevent an exception from being thrown when none of the previous cases
107
- * match.
108
- * If this is not the last case it will short-circuit anything after it.
195
+ *! **DEPRECATED**: `conditional` now accepts a default, catch-all, callback directly and no longer needs this utility wrapper. Simply put your `then` callback as the last case (see example).
109
196
  *
110
197
  * @param then - You only need to provide the transformer, the predicate is
111
198
  * implicit. @default () => undefined, which is how Lodash and Ramda handle
@@ -116,12 +203,15 @@ declare function conditional<T, Fn0 extends (x: T) => boolean, Fn1 extends (x: T
116
203
  * nameOrId,
117
204
  * [P.isString, (name) => `Hello ${name}`],
118
205
  * [P.isNumber, (id) => `Hello ID: ${id}`],
119
- * P.conditional.defaultCase(
120
- * (something) => `Hello something (${JSON.stringify(something)})`,
121
- * ),
206
+ * // Was: `P.conditional.defaultCase(
207
+ * // (something) => `Hello something (${JSON.stringify(something)})`,
208
+ * //),`, Now:
209
+ * (something) => `Hello something (${JSON.stringify(something)})`
122
210
  * ); //=> 'Hello ID: 3'
211
+ * @deprecated `conditional` now accepts a default, catch-all, callback
212
+ * directly and no longer needs this utility wrapper. Simply put your `then`
213
+ * callback as the last case.
123
214
  */
124
- declare function defaultCase(): Case<unknown, undefined>;
125
215
  declare function defaultCase<In, Then extends (param: In) => unknown>(then: Then): Case<In, ReturnType<Then>>;
126
216
 
127
217
  export { conditionalPlus as conditional };