@vinicunca/perkakas 1.6.0 → 1.7.1

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 (515) 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-CJjczH6j.d.ts → bounded-partial-B15MLSAS.d.ts} +2 -2
  14. package/dist/{bounded-partial-wqR8ceNQ.d.cts → bounded-partial-BhnecV3P.d.cts} +2 -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-4Y6VRHEP.js +1 -0
  21. package/dist/{chunk-BDBX4ZMW.cjs → chunk-76VE5EC6.cjs} +1 -1
  22. package/dist/{chunk-TNA73S2T.cjs → chunk-7C7R7JNX.cjs} +1 -1
  23. package/dist/{chunk-WONMP5WS.js → chunk-7V7IBWP5.js} +1 -1
  24. package/dist/chunk-ALP5JUXX.cjs +1 -0
  25. package/dist/chunk-BKBHW2XJ.js +1 -0
  26. package/dist/chunk-BSNCALDT.cjs +1 -0
  27. package/dist/{chunk-UGWBDJPI.cjs → chunk-D4TUHKBA.cjs} +1 -1
  28. package/dist/chunk-DXA7AZUA.js +1 -0
  29. package/dist/chunk-EK7ODJWE.js +1 -0
  30. package/dist/chunk-FIO5FNV2.js +1 -0
  31. package/dist/chunk-GRKRFDIL.js +1 -0
  32. package/dist/chunk-HHNHTPVO.cjs +1 -0
  33. package/dist/chunk-I5B54QDJ.cjs +438 -0
  34. package/dist/chunk-JYWIRZ2Z.js +1 -0
  35. package/dist/chunk-MBGSSEZN.cjs +1 -0
  36. package/dist/{chunk-GFXNX2W7.js → chunk-MPWQN3WY.js} +1 -1
  37. package/dist/chunk-NHTBBY2L.js +1 -0
  38. package/dist/chunk-NQUTCPKD.js +1 -0
  39. package/dist/chunk-OKBFQ7B6.js +1 -0
  40. package/dist/chunk-QGF2XNZS.cjs +1 -0
  41. package/dist/chunk-QPMGUF2V.cjs +1 -0
  42. package/dist/chunk-RMOD5JNB.cjs +1 -0
  43. package/dist/{chunk-5NW4GR2Q.cjs → chunk-RTFVY5D4.cjs} +1 -1
  44. package/dist/chunk-RZBBV6PK.js +1 -0
  45. package/dist/chunk-SG2YWG6U.cjs +1 -0
  46. package/dist/chunk-SXNRBENP.cjs +1 -0
  47. package/dist/chunk-TSP3FU72.cjs +1 -0
  48. package/dist/chunk-TWCEO47X.cjs +1 -0
  49. package/dist/{chunk-L4FN2W5Q.cjs → chunk-TXPRX236.cjs} +1 -1
  50. package/dist/{chunk-3K7SNX4D.cjs → chunk-UURK6I3D.cjs} +1 -1
  51. package/dist/chunk-VVGDSDKI.js +438 -0
  52. package/dist/chunk-XCG2UC6T.js +1 -0
  53. package/dist/{chunk-673TXH2U.js → chunk-YRVN4PYH.js} +1 -1
  54. package/dist/chunk-YWIXN5BR.js +1 -0
  55. package/dist/{chunk-EDZFEURO.js → chunk-Z5YZYBC2.js} +1 -1
  56. package/dist/chunk-ZMG3NQDL.js +1 -0
  57. package/dist/chunk.cjs +1 -1
  58. package/dist/chunk.d.cts +9 -32
  59. package/dist/chunk.d.ts +9 -32
  60. package/dist/chunk.js +1 -1
  61. package/dist/clamp.cjs +1 -1
  62. package/dist/clamp.js +1 -1
  63. package/dist/clone.cjs +1 -1
  64. package/dist/clone.js +1 -1
  65. package/dist/concat.cjs +1 -1
  66. package/dist/concat.js +1 -1
  67. package/dist/conditional.cjs +1 -1
  68. package/dist/conditional.d.cts +133 -43
  69. package/dist/conditional.d.ts +133 -43
  70. package/dist/conditional.js +1 -1
  71. package/dist/constant.cjs +1 -1
  72. package/dist/constant.d.cts +1 -1
  73. package/dist/constant.d.ts +1 -1
  74. package/dist/constant.js +1 -1
  75. package/dist/count-by.cjs +1 -1
  76. package/dist/count-by.d.cts +2 -2
  77. package/dist/count-by.d.ts +2 -2
  78. package/dist/count-by.js +1 -1
  79. package/dist/curry.cjs +1 -1
  80. package/dist/curry.js +1 -1
  81. package/dist/debounce.cjs +1 -1
  82. package/dist/debounce.js +1 -1
  83. package/dist/difference-with.cjs +1 -1
  84. package/dist/difference-with.js +1 -1
  85. package/dist/difference.cjs +1 -1
  86. package/dist/difference.js +1 -1
  87. package/dist/divide.cjs +1 -1
  88. package/dist/divide.js +1 -1
  89. package/dist/do-nothing.cjs +1 -1
  90. package/dist/do-nothing.js +1 -1
  91. package/dist/drop-first-by.cjs +1 -1
  92. package/dist/drop-first-by.d.cts +1 -1
  93. package/dist/drop-first-by.d.ts +1 -1
  94. package/dist/drop-first-by.js +1 -1
  95. package/dist/drop-last-while.cjs +1 -1
  96. package/dist/drop-last-while.js +1 -1
  97. package/dist/drop-last.cjs +1 -1
  98. package/dist/drop-last.js +1 -1
  99. package/dist/drop-while.cjs +1 -1
  100. package/dist/drop-while.js +1 -1
  101. package/dist/drop.cjs +1 -1
  102. package/dist/drop.d.cts +2 -1
  103. package/dist/drop.d.ts +2 -1
  104. package/dist/drop.js +1 -1
  105. package/dist/entries.cjs +1 -1
  106. package/dist/entries.d.cts +8 -5
  107. package/dist/entries.d.ts +8 -5
  108. package/dist/entries.js +1 -1
  109. package/dist/{enumerable-string-key-of-BQ4aR5ep.d.ts → enumerable-string-key-of-C4gsorXe.d.ts} +3 -1
  110. package/dist/{enumerable-string-key-of-BQ4aR5ep.d.cts → enumerable-string-key-of-D8w_3Yg8.d.cts} +3 -1
  111. package/dist/enumerable-string-keyed-value-of-BU9R_cEk.d.cts +9 -0
  112. package/dist/enumerable-string-keyed-value-of-BU9R_cEk.d.ts +9 -0
  113. package/dist/evolve.cjs +1 -1
  114. package/dist/evolve.js +1 -1
  115. package/dist/filter.cjs +1 -1
  116. package/dist/filter.d.cts +4 -4
  117. package/dist/filter.d.ts +4 -4
  118. package/dist/filter.js +1 -1
  119. package/dist/{filtered-array-DX6NNaBq.d.cts → filtered-array-BCjySbC6.d.cts} +1 -1
  120. package/dist/{filtered-array-BNHX1Nwj.d.ts → filtered-array-JKATL39M.d.ts} +1 -1
  121. package/dist/find-index.cjs +1 -1
  122. package/dist/find-index.js +1 -1
  123. package/dist/find-last-index.cjs +1 -1
  124. package/dist/find-last-index.js +1 -1
  125. package/dist/find-last.cjs +1 -1
  126. package/dist/find-last.js +1 -1
  127. package/dist/find.cjs +1 -1
  128. package/dist/find.js +1 -1
  129. package/dist/first-by.cjs +1 -1
  130. package/dist/first-by.d.cts +1 -1
  131. package/dist/first-by.d.ts +1 -1
  132. package/dist/first-by.js +1 -1
  133. package/dist/first.cjs +1 -1
  134. package/dist/first.js +1 -1
  135. package/dist/flat-map.cjs +1 -1
  136. package/dist/flat-map.js +1 -1
  137. package/dist/flat.cjs +1 -1
  138. package/dist/flat.d.cts +2 -5
  139. package/dist/flat.d.ts +2 -5
  140. package/dist/flat.js +1 -1
  141. package/dist/floor.cjs +1 -1
  142. package/dist/floor.js +1 -1
  143. package/dist/for-each-obj.cjs +1 -1
  144. package/dist/for-each-obj.d.cts +3 -2
  145. package/dist/for-each-obj.d.ts +3 -2
  146. package/dist/for-each-obj.js +1 -1
  147. package/dist/for-each.cjs +1 -1
  148. package/dist/for-each.js +1 -1
  149. package/dist/from-entries.cjs +1 -1
  150. package/dist/from-entries.d.cts +4 -2
  151. package/dist/from-entries.d.ts +4 -2
  152. package/dist/from-entries.js +1 -1
  153. package/dist/from-keys.cjs +1 -1
  154. package/dist/from-keys.d.cts +2 -2
  155. package/dist/from-keys.d.ts +2 -2
  156. package/dist/from-keys.js +1 -1
  157. package/dist/funnel.cjs +1 -1
  158. package/dist/funnel.d.cts +7 -7
  159. package/dist/funnel.d.ts +7 -7
  160. package/dist/funnel.js +1 -1
  161. package/dist/funnel.lodash-debounce-with-cached-value.test.cjs +1 -1
  162. package/dist/funnel.lodash-debounce-with-cached-value.test.js +1 -1
  163. package/dist/funnel.lodash-debounce.test.cjs +1 -1
  164. package/dist/funnel.lodash-debounce.test.js +1 -1
  165. package/dist/funnel.lodash-throttle-with-cached-value.test.cjs +1 -1
  166. package/dist/funnel.lodash-throttle-with-cached-value.test.js +1 -1
  167. package/dist/funnel.lodash-throttle.test.cjs +1 -1
  168. package/dist/funnel.lodash-throttle.test.js +1 -1
  169. package/dist/funnel.perkakas-debounce.test.cjs +1 -0
  170. package/dist/funnel.perkakas-debounce.test.js +1 -0
  171. package/dist/funnel.reference-batch.test.cjs +1 -1
  172. package/dist/funnel.reference-batch.test.js +1 -1
  173. package/dist/funnel.test-d.cjs +1 -1
  174. package/dist/funnel.test-d.js +1 -1
  175. package/dist/funnel.test.cjs +1 -1
  176. package/dist/funnel.test.js +1 -1
  177. package/dist/group-by-prop.cjs +1 -1
  178. package/dist/group-by-prop.d.cts +6 -5
  179. package/dist/group-by-prop.d.ts +6 -5
  180. package/dist/group-by-prop.js +1 -1
  181. package/dist/group-by.cjs +1 -1
  182. package/dist/group-by.d.cts +2 -2
  183. package/dist/group-by.d.ts +2 -2
  184. package/dist/group-by.js +1 -1
  185. package/dist/has-at-least.cjs +1 -1
  186. package/dist/has-at-least.d.cts +3 -2
  187. package/dist/has-at-least.d.ts +3 -2
  188. package/dist/has-at-least.js +1 -1
  189. package/dist/has-sub-object.cjs +1 -1
  190. package/dist/has-sub-object.js +1 -1
  191. package/dist/human-readable-file-size.cjs +1 -1
  192. package/dist/human-readable-file-size.js +1 -1
  193. package/dist/identity.cjs +1 -1
  194. package/dist/identity.js +1 -1
  195. package/dist/index-by.cjs +1 -1
  196. package/dist/index-by.d.cts +2 -2
  197. package/dist/index-by.d.ts +2 -2
  198. package/dist/index-by.js +1 -1
  199. package/dist/index.cjs +1 -1
  200. package/dist/index.d.cts +12 -10
  201. package/dist/index.d.ts +12 -10
  202. package/dist/index.js +1 -1
  203. package/dist/intersection-with.cjs +1 -1
  204. package/dist/intersection-with.js +1 -1
  205. package/dist/intersection.cjs +1 -1
  206. package/dist/intersection.js +1 -1
  207. package/dist/invert.cjs +1 -1
  208. package/dist/invert.d.cts +2 -1
  209. package/dist/invert.d.ts +2 -1
  210. package/dist/invert.js +1 -1
  211. package/dist/is-array.cjs +1 -1
  212. package/dist/is-array.js +1 -1
  213. package/dist/is-big-int.cjs +1 -1
  214. package/dist/is-big-int.js +1 -1
  215. package/dist/is-boolean.cjs +1 -1
  216. package/dist/is-boolean.js +1 -1
  217. package/dist/is-bounded-record-C9WAwfA8.d.cts +30 -0
  218. package/dist/is-bounded-record-C9WAwfA8.d.ts +30 -0
  219. package/dist/is-date.cjs +1 -1
  220. package/dist/is-date.js +1 -1
  221. package/dist/is-deep-equal.cjs +1 -1
  222. package/dist/is-deep-equal.js +1 -1
  223. package/dist/is-defined.cjs +1 -1
  224. package/dist/is-defined.js +1 -1
  225. package/dist/is-empty.cjs +1 -1
  226. package/dist/is-empty.js +1 -1
  227. package/dist/is-error.cjs +1 -1
  228. package/dist/is-error.js +1 -1
  229. package/dist/is-function.cjs +1 -1
  230. package/dist/is-function.js +1 -1
  231. package/dist/is-included-in.cjs +1 -1
  232. package/dist/is-included-in.js +1 -1
  233. package/dist/is-non-null.cjs +1 -1
  234. package/dist/is-non-null.js +1 -1
  235. package/dist/is-non-nullish.cjs +1 -1
  236. package/dist/is-non-nullish.js +1 -1
  237. package/dist/is-not.cjs +1 -1
  238. package/dist/is-not.js +1 -1
  239. package/dist/is-nullish.cjs +1 -1
  240. package/dist/is-nullish.js +1 -1
  241. package/dist/is-number.cjs +1 -1
  242. package/dist/is-number.js +1 -1
  243. package/dist/is-object-type.cjs +1 -1
  244. package/dist/is-object-type.js +1 -1
  245. package/dist/is-plain-object.cjs +1 -1
  246. package/dist/is-plain-object.js +1 -1
  247. package/dist/is-promise.cjs +1 -1
  248. package/dist/is-promise.js +1 -1
  249. package/dist/is-shallow-equal.cjs +1 -1
  250. package/dist/is-shallow-equal.js +1 -1
  251. package/dist/is-strict-equal.cjs +1 -1
  252. package/dist/is-strict-equal.js +1 -1
  253. package/dist/is-string.cjs +1 -1
  254. package/dist/is-string.js +1 -1
  255. package/dist/is-symbol.cjs +1 -1
  256. package/dist/is-symbol.js +1 -1
  257. package/dist/is-truthy.cjs +1 -1
  258. package/dist/is-truthy.js +1 -1
  259. package/dist/join.cjs +1 -1
  260. package/dist/join.js +1 -1
  261. package/dist/key-codes.cjs +1 -1
  262. package/dist/key-codes.js +1 -1
  263. package/dist/keys.cjs +1 -1
  264. package/dist/keys.d.cts +4 -3
  265. package/dist/keys.d.ts +4 -3
  266. package/dist/keys.js +1 -1
  267. package/dist/last.cjs +1 -1
  268. package/dist/last.js +1 -1
  269. package/dist/length.cjs +1 -1
  270. package/dist/length.js +1 -1
  271. package/dist/magic-string.es-2ADFIHOO.cjs +13 -0
  272. package/dist/magic-string.es-PNCTE22R.js +13 -0
  273. package/dist/map-keys.cjs +1 -1
  274. package/dist/map-keys.d.cts +5 -4
  275. package/dist/map-keys.d.ts +5 -4
  276. package/dist/map-keys.js +1 -1
  277. package/dist/map-to-obj.cjs +1 -1
  278. package/dist/map-to-obj.d.cts +30 -12
  279. package/dist/map-to-obj.d.ts +30 -12
  280. package/dist/map-to-obj.js +1 -1
  281. package/dist/map-values.cjs +1 -1
  282. package/dist/map-values.d.cts +4 -3
  283. package/dist/map-values.d.ts +4 -3
  284. package/dist/map-values.js +1 -1
  285. package/dist/map-with-feedback.cjs +1 -1
  286. package/dist/map-with-feedback.js +1 -1
  287. package/dist/map.cjs +1 -1
  288. package/dist/map.js +1 -1
  289. package/dist/mean-by.cjs +1 -1
  290. package/dist/mean-by.js +1 -1
  291. package/dist/merge-all.cjs +1 -1
  292. package/dist/merge-all.d.cts +2 -1
  293. package/dist/merge-all.d.ts +2 -1
  294. package/dist/merge-all.js +1 -1
  295. package/dist/merge-deep.cjs +1 -1
  296. package/dist/merge-deep.js +1 -1
  297. package/dist/merge.cjs +1 -1
  298. package/dist/merge.js +1 -1
  299. package/dist/multiply.cjs +1 -1
  300. package/dist/multiply.js +1 -1
  301. package/dist/n-tuple-5jljrt4c.d.cts +10 -0
  302. package/dist/n-tuple-5jljrt4c.d.ts +10 -0
  303. package/dist/nth-by.cjs +1 -1
  304. package/dist/nth-by.d.cts +1 -1
  305. package/dist/nth-by.d.ts +1 -1
  306. package/dist/nth-by.js +1 -1
  307. package/dist/obj-of.cjs +1 -1
  308. package/dist/obj-of.js +1 -1
  309. package/dist/omit-by.cjs +1 -1
  310. package/dist/omit-by.d.cts +6 -6
  311. package/dist/omit-by.d.ts +6 -6
  312. package/dist/omit-by.js +1 -1
  313. package/dist/omit.cjs +1 -1
  314. package/dist/omit.js +1 -1
  315. package/dist/once.cjs +1 -1
  316. package/dist/once.js +1 -1
  317. package/dist/only.cjs +1 -1
  318. package/dist/only.js +1 -1
  319. package/dist/partition.cjs +1 -1
  320. package/dist/partition.js +1 -1
  321. package/dist/path-or.cjs +1 -1
  322. package/dist/path-or.d.cts +10 -0
  323. package/dist/path-or.d.ts +10 -0
  324. package/dist/path-or.js +1 -1
  325. package/dist/perkakas-type-error-8wPb8T2y.d.cts +17 -0
  326. package/dist/perkakas-type-error-8wPb8T2y.d.ts +17 -0
  327. package/dist/pick-by.cjs +1 -1
  328. package/dist/pick-by.d.cts +10 -11
  329. package/dist/pick-by.d.ts +10 -11
  330. package/dist/pick-by.js +1 -1
  331. package/dist/pick.cjs +1 -1
  332. package/dist/pick.d.cts +51 -7
  333. package/dist/pick.d.ts +51 -7
  334. package/dist/pick.js +1 -1
  335. package/dist/pipe.cjs +1 -1
  336. package/dist/pipe.js +1 -1
  337. package/dist/piped.cjs +1 -1
  338. package/dist/piped.js +1 -1
  339. package/dist/product.cjs +1 -1
  340. package/dist/product.js +1 -1
  341. package/dist/prop.cjs +1 -1
  342. package/dist/prop.d.cts +118 -13
  343. package/dist/prop.d.ts +118 -13
  344. package/dist/prop.js +1 -1
  345. package/dist/pull-object.cjs +1 -1
  346. package/dist/pull-object.d.cts +2 -2
  347. package/dist/pull-object.d.ts +2 -2
  348. package/dist/pull-object.js +1 -1
  349. package/dist/random-integer.cjs +1 -1
  350. package/dist/random-integer.js +1 -1
  351. package/dist/random-string.cjs +1 -1
  352. package/dist/random-string.js +1 -1
  353. package/dist/range.cjs +1 -1
  354. package/dist/range.js +1 -1
  355. package/dist/rank-by.cjs +1 -1
  356. package/dist/rank-by.d.cts +1 -1
  357. package/dist/rank-by.d.ts +1 -1
  358. package/dist/rank-by.js +1 -1
  359. package/dist/reduce.cjs +1 -1
  360. package/dist/reduce.js +1 -1
  361. package/dist/reverse.cjs +1 -1
  362. package/dist/reverse.js +1 -1
  363. package/dist/round.cjs +1 -1
  364. package/dist/round.js +1 -1
  365. package/dist/sample.cjs +1 -1
  366. package/dist/sample.d.cts +32 -8
  367. package/dist/sample.d.ts +32 -8
  368. package/dist/sample.js +1 -1
  369. package/dist/set-path.cjs +1 -1
  370. package/dist/set-path.d.cts +18 -7
  371. package/dist/set-path.d.ts +18 -7
  372. package/dist/set-path.js +1 -1
  373. package/dist/set.cjs +1 -1
  374. package/dist/set.d.cts +1 -1
  375. package/dist/set.d.ts +1 -1
  376. package/dist/set.js +1 -1
  377. package/dist/shuffle.cjs +1 -1
  378. package/dist/shuffle.js +1 -1
  379. package/dist/sleep.cjs +1 -1
  380. package/dist/sleep.js +1 -1
  381. package/dist/slice-string.cjs +1 -1
  382. package/dist/slice-string.js +1 -1
  383. package/dist/slugify.cjs +1 -1
  384. package/dist/slugify.js +1 -1
  385. package/dist/sort-by.cjs +1 -1
  386. package/dist/sort-by.js +1 -1
  387. package/dist/sort.cjs +1 -1
  388. package/dist/sort.js +1 -1
  389. package/dist/sorted-index-by.cjs +1 -1
  390. package/dist/sorted-index-by.js +1 -1
  391. package/dist/sorted-index-with.cjs +1 -1
  392. package/dist/sorted-index-with.js +1 -1
  393. package/dist/sorted-index.cjs +1 -1
  394. package/dist/sorted-index.js +1 -1
  395. package/dist/sorted-last-index-by.cjs +1 -1
  396. package/dist/sorted-last-index-by.js +1 -1
  397. package/dist/sorted-last-index.cjs +1 -1
  398. package/dist/sorted-last-index.js +1 -1
  399. package/dist/splice.cjs +1 -1
  400. package/dist/splice.js +1 -1
  401. package/dist/split-at.cjs +1 -1
  402. package/dist/split-at.js +1 -1
  403. package/dist/split-when.cjs +1 -1
  404. package/dist/split-when.js +1 -1
  405. package/dist/split.cjs +1 -1
  406. package/dist/split.js +1 -1
  407. package/dist/string-to-path.cjs +1 -1
  408. package/dist/string-to-path.d.cts +32 -11
  409. package/dist/string-to-path.d.ts +32 -11
  410. package/dist/string-to-path.js +1 -1
  411. package/dist/subtract.cjs +1 -1
  412. package/dist/subtract.js +1 -1
  413. package/dist/sum-by.cjs +1 -1
  414. package/dist/sum-by.js +1 -1
  415. package/dist/sum.cjs +1 -1
  416. package/dist/sum.js +1 -1
  417. package/dist/swap-indices.cjs +1 -1
  418. package/dist/swap-indices.js +1 -1
  419. package/dist/swap-props.cjs +1 -1
  420. package/dist/swap-props.js +1 -1
  421. package/dist/take-first-by.cjs +1 -1
  422. package/dist/take-first-by.d.cts +1 -1
  423. package/dist/take-first-by.d.ts +1 -1
  424. package/dist/take-first-by.js +1 -1
  425. package/dist/take-last-while.cjs +1 -1
  426. package/dist/take-last-while.js +1 -1
  427. package/dist/take-last.cjs +1 -1
  428. package/dist/take-last.js +1 -1
  429. package/dist/take-while.cjs +1 -1
  430. package/dist/take-while.js +1 -1
  431. package/dist/take.cjs +1 -1
  432. package/dist/take.js +1 -1
  433. package/dist/tap.cjs +1 -1
  434. package/dist/tap.js +1 -1
  435. package/dist/times.cjs +1 -1
  436. package/dist/times.d.cts +1 -9
  437. package/dist/times.d.ts +1 -9
  438. package/dist/times.js +1 -1
  439. package/dist/to-camel-case.cjs +1 -1
  440. package/dist/to-camel-case.js +1 -1
  441. package/dist/to-capital-case.cjs +1 -1
  442. package/dist/to-capital-case.js +1 -1
  443. package/dist/to-constant-case.cjs +1 -1
  444. package/dist/to-constant-case.js +1 -1
  445. package/dist/to-kebab-case.cjs +1 -1
  446. package/dist/to-kebab-case.js +1 -1
  447. package/dist/to-no-case.cjs +1 -1
  448. package/dist/to-no-case.js +1 -1
  449. package/dist/to-pascal-case.cjs +1 -1
  450. package/dist/to-pascal-case.js +1 -1
  451. package/dist/to-pascal-snake-case.cjs +1 -1
  452. package/dist/to-pascal-snake-case.js +1 -1
  453. package/dist/to-sentence-case.cjs +1 -1
  454. package/dist/to-sentence-case.js +1 -1
  455. package/dist/to-snake-case.cjs +1 -1
  456. package/dist/to-snake-case.js +1 -1
  457. package/dist/to-string-DO8zw6jS.d.cts +11 -0
  458. package/dist/to-string-DO8zw6jS.d.ts +11 -0
  459. package/dist/to-train-case.cjs +1 -1
  460. package/dist/to-train-case.js +1 -1
  461. package/dist/{tuple-parts-CrwnkDKX.d.ts → tuple-parts-BTivqbtT.d.ts} +4 -18
  462. package/dist/{tuple-parts-DAqFAJP8.d.cts → tuple-parts-v6av7LMU.d.cts} +4 -18
  463. package/dist/unique-by.cjs +1 -1
  464. package/dist/unique-by.js +1 -1
  465. package/dist/unique-with.cjs +1 -1
  466. package/dist/unique-with.js +1 -1
  467. package/dist/unique.cjs +1 -1
  468. package/dist/unique.js +1 -1
  469. package/dist/{upsert-prop-tIHFi_F_.d.cts → upsert-prop-Cc3jEW9l.d.cts} +1 -2
  470. package/dist/{upsert-prop-D0N8486l.d.ts → upsert-prop-CdUtD50i.d.ts} +1 -2
  471. package/dist/values.cjs +1 -1
  472. package/dist/values.d.cts +1 -1
  473. package/dist/values.d.ts +1 -1
  474. package/dist/values.js +1 -1
  475. package/dist/zip-with.cjs +1 -1
  476. package/dist/zip-with.js +1 -1
  477. package/dist/zip.cjs +1 -1
  478. package/dist/zip.js +1 -1
  479. package/package.json +12 -12
  480. package/dist/chunk-2MHE6M7V.cjs +0 -1
  481. package/dist/chunk-5SAUYUEK.js +0 -1
  482. package/dist/chunk-6HSB3NFW.js +0 -1
  483. package/dist/chunk-6L5XEBJG.js +0 -1
  484. package/dist/chunk-A2PAJNYA.js +0 -1
  485. package/dist/chunk-AWXJSK4F.js +0 -1
  486. package/dist/chunk-CZLV6ZLZ.js +0 -1
  487. package/dist/chunk-F3JXHUP4.cjs +0 -1
  488. package/dist/chunk-FMUPPQZE.js +0 -1
  489. package/dist/chunk-FP3LV577.js +0 -1
  490. package/dist/chunk-GFQXVPLP.cjs +0 -1
  491. package/dist/chunk-GOUUMCT7.cjs +0 -1
  492. package/dist/chunk-HRK4GMT2.cjs +0 -1
  493. package/dist/chunk-ICYGL2YZ.js +0 -1
  494. package/dist/chunk-J3ZXNDMT.cjs +0 -1
  495. package/dist/chunk-MBC7VZHY.js +0 -1
  496. package/dist/chunk-NEIICTWC.js +0 -1
  497. package/dist/chunk-NQGMUM3E.cjs +0 -1
  498. package/dist/chunk-OBWPUDD3.cjs +0 -1
  499. package/dist/chunk-SOPOELNU.cjs +0 -1
  500. package/dist/chunk-SQZULO7V.js +0 -1
  501. package/dist/chunk-UDSRBKNR.js +0 -1
  502. package/dist/chunk-VRZNQSZN.cjs +0 -1
  503. package/dist/chunk-WYM2JV5T.cjs +0 -1
  504. package/dist/chunk-XEAAXO7F.js +0 -1
  505. package/dist/chunk-XU4TDKMD.cjs +0 -1
  506. package/dist/enumerable-string-keyed-value-of-CLzltniW.d.cts +0 -15
  507. package/dist/enumerable-string-keyed-value-of-CLzltniW.d.ts +0 -15
  508. package/dist/funnel.remeda-debounce.test.cjs +0 -1
  509. package/dist/funnel.remeda-debounce.test.js +0 -1
  510. package/dist/if-bounded-record-Drd4UbBU.d.cts +0 -29
  511. package/dist/if-bounded-record-Drd4UbBU.d.ts +0 -29
  512. package/dist/reconstructed-record-DchLaSO8.d.cts +0 -10
  513. package/dist/reconstructed-record-DuxOLlMs.d.ts +0 -10
  514. /package/dist/{funnel.remeda-debounce.test.d.cts → funnel.perkakas-debounce.test.d.cts} +0 -0
  515. /package/dist/{funnel.remeda-debounce.test.d.ts → funnel.perkakas-debounce.test.d.ts} +0 -0
package/dist/prop.d.cts CHANGED
@@ -1,29 +1,134 @@
1
+ import { IsNumericLiteral, ArrayIndices, KeysOfUnion } from 'type-fest';
2
+ import { C as ClampedIntegerSubtract } from './clamped-integer-subtract-DZ7rsJE4.cjs';
3
+ import { I as IntRangeInclusive } from './int-range-inclusive-Cn-qsrAN.cjs';
4
+ import { I as IterableContainer } from './iterable-container-BTpDVdNc.cjs';
5
+ import { T as TupleParts } from './tuple-parts-v6av7LMU.cjs';
6
+ import './perkakas-type-error-8wPb8T2y.cjs';
7
+
8
+ /**
9
+ * The type for the I'th element in the tuple T. This type corrects some of the
10
+ * issues with TypeScript's built-in tuple accessor inference `T[I]` for arrays
11
+ * and tuples with fixed suffixes, and for primitive indices where we don't know
12
+ * if the index is out of bounds.
13
+ */
14
+ type ArrayAt<T extends IterableContainer, I extends keyof T> = IsNumericLiteral<I> extends true ? I extends unknown ? [
15
+ ...TupleParts<T>['required'],
16
+ ...TupleParts<T>['optional']
17
+ ] extends infer Prefix extends ReadonlyArray<unknown> ? HasIndex<Prefix, I> extends true ? T[I] : TupleParts<T>['item'] | (ClampedIntegerSubtract<I, Prefix['length']> extends infer SuffixIndex extends number ? HasIndex<TupleParts<T>['suffix'], SuffixIndex> extends true ? TupleParts<T>['suffix'][IntRangeInclusive<0, SuffixIndex>] : TupleParts<T>['suffix'][number] | undefined : never) : never : never : T[number] | undefined;
18
+ type HasIndex<T extends ReadonlyArray<unknown>, I> = I extends ArrayIndices<T> ? true : false;
19
+
20
+ type NoInfer<T> = T extends infer U ? U : never;
21
+
22
+ type KeysDeep<T, Path extends ReadonlyArray<unknown>> = KeysOfUnion<PropDeep<T, Path>>;
23
+ type PropDeep<T, Path extends ReadonlyArray<unknown>> = Path extends readonly [
24
+ infer Key,
25
+ ...infer Rest
26
+ ] ? PropDeep<Prop<T, Key>, Rest> : T;
27
+ type Prop<T, Key> = T extends unknown ? Key extends keyof T ? T extends ReadonlyArray<unknown> ? ArrayAt<T, Key> : T[Key] : undefined : never;
28
+ type NonPropertyKey = object | null | undefined;
1
29
  /**
2
- * Gets the value of the given property.
30
+ * Gets the value of the given property from an object. Nested properties can
31
+ * be accessed by providing a variadic array of keys that define the path from
32
+ * the root to the desired property. Arrays can be accessed by using numeric
33
+ * keys. Unions and optional properties are handled gracefully by returning
34
+ * `undefined` early for any non-existing property on the path. Paths are
35
+ * validated against the object type to provide stronger type safety, better
36
+ * compile-time errors, and to enable autocompletion in IDEs.
3
37
  *
4
- * @param data - The object to extract the prop from.
5
- * @param key - The key of the property to extract.
38
+ * @param data - The object or array to access.
39
+ * @param key - The key(s) for the property to extract.
6
40
  * @signature
7
- * P.prop(data, key);
41
+ * P.prop(data, ...keys);
8
42
  * @example
9
- * P.prop({ foo: 'bar' }, 'foo'); // => 'bar'
43
+ * P.prop({ foo: { bar: 'baz' } }, 'foo'); //=> { bar: 'baz' }
44
+ * P.prop({ foo: { bar: 'baz' } }, 'foo', 'bar'); //=> 'baz'
45
+ * P.prop(["cat", "dog"], 1); //=> 'dog'
10
46
  * @dataFirst
11
47
  * @category Object
12
48
  */
13
- declare function prop<T, K extends keyof T>(data: T, key: K): T[K];
49
+ declare function prop<T extends NonPropertyKey, Key extends KeysDeep<T, []>>(data: T, key: Key): NoInfer<Prop<T, Key>>;
50
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>>(data: T, key0: Key0, key1: Key1): NoInfer<PropDeep<T, [Key0, Key1]>>;
51
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>>(data: T, key0: Key0, key1: Key1, key2: Key2): NoInfer<PropDeep<T, [Key0, Key1, Key2]>>;
52
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3]>>;
53
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4]>>;
54
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>;
55
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>;
56
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>;
57
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8]>>;
58
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>, Key9 extends KeysDeep<T, [
59
+ Key0,
60
+ Key1,
61
+ Key2,
62
+ Key3,
63
+ Key4,
64
+ Key5,
65
+ Key6,
66
+ Key7,
67
+ Key8
68
+ ]>, AdditionalKeys extends ReadonlyArray<PropertyKey> = []>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8, key9: Key9, ...additionalKeys: AdditionalKeys): NoInfer<PropDeep<T, [
69
+ Key0,
70
+ Key1,
71
+ Key2,
72
+ Key3,
73
+ Key4,
74
+ Key5,
75
+ Key6,
76
+ Key7,
77
+ Key8,
78
+ Key9,
79
+ ...AdditionalKeys
80
+ ]>>;
14
81
  /**
15
- * Gets the value of the given property.
82
+ * Gets the value of the given property from an object. Nested properties can
83
+ * be accessed by providing a variadic array of keys that define the path from
84
+ * the root to the desired property. Arrays can be accessed by using numeric
85
+ * keys. Unions and optional properties are handled gracefully by returning
86
+ * `undefined` early for any non-existing property on the path. Paths are
87
+ * validated against the object type to provide stronger type safety, better
88
+ * compile-time errors, and to enable autocompletion in IDEs.
16
89
  *
17
- * @param key - The key of the property to extract.
90
+ * @param key - The key(s) for the property to extract.
18
91
  * @signature
19
- * P.prop(key)(data);
92
+ * P.prop(...keys)(data);
20
93
  * @example
21
- * P.pipe({foo: 'bar'}, P.prop('foo')) // => 'bar'
94
+ * P.pipe({ foo: { bar: 'baz' } }, P.prop('foo')); //=> { bar: 'baz' }
95
+ * P.pipe({ foo: { bar: 'baz' } }, P.prop('foo', 'bar')); //=> 'baz'
96
+ * P.pipe(["cat", "dog"], P.prop(1)); //=> 'dog'
22
97
  * @dataLast
23
98
  * @category Object
24
99
  */
25
- declare function prop<T, K extends keyof T>(key: K): (data: T) => T[K];
100
+ declare function prop<T extends NonPropertyKey, Key extends KeysOfUnion<T>>(key: Key): (data: T) => NoInfer<Prop<T, Key>>;
101
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>>(key0: Key0, key1: Key1): (data: T) => NoInfer<PropDeep<T, [Key0, Key1]>>;
102
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>>(key0: Key0, key1: Key1, key2: Key2): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2]>>;
103
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3]>>;
104
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4]>>;
105
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>;
106
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>;
107
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>;
108
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8]>>;
109
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>, Key9 extends KeysDeep<T, [
110
+ Key0,
111
+ Key1,
112
+ Key2,
113
+ Key3,
114
+ Key4,
115
+ Key5,
116
+ Key6,
117
+ Key7,
118
+ Key8
119
+ ]>, AdditionalKeys extends ReadonlyArray<PropertyKey> = []>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8, key9: Key9, ...additionalKeys: AdditionalKeys): (data: T) => NoInfer<PropDeep<T, [
120
+ Key0,
121
+ Key1,
122
+ Key2,
123
+ Key3,
124
+ Key4,
125
+ Key5,
126
+ Key6,
127
+ Key7,
128
+ Key8,
129
+ Key9,
130
+ ...AdditionalKeys
131
+ ]>>;
26
132
  declare function prop<K extends PropertyKey>(key: K): <T extends Partial<Record<K, unknown>>>(data: T) => T[K];
27
- declare function propImplementation<T, K extends keyof T>(data: T, key: K): T[K];
28
133
 
29
- export { prop, propImplementation };
134
+ export { prop };
package/dist/prop.d.ts CHANGED
@@ -1,29 +1,134 @@
1
+ import { IsNumericLiteral, ArrayIndices, KeysOfUnion } from 'type-fest';
2
+ import { C as ClampedIntegerSubtract } from './clamped-integer-subtract-DZ7rsJE4.js';
3
+ import { I as IntRangeInclusive } from './int-range-inclusive-Cn-qsrAN.js';
4
+ import { I as IterableContainer } from './iterable-container-BTpDVdNc.js';
5
+ import { T as TupleParts } from './tuple-parts-BTivqbtT.js';
6
+ import './perkakas-type-error-8wPb8T2y.js';
7
+
8
+ /**
9
+ * The type for the I'th element in the tuple T. This type corrects some of the
10
+ * issues with TypeScript's built-in tuple accessor inference `T[I]` for arrays
11
+ * and tuples with fixed suffixes, and for primitive indices where we don't know
12
+ * if the index is out of bounds.
13
+ */
14
+ type ArrayAt<T extends IterableContainer, I extends keyof T> = IsNumericLiteral<I> extends true ? I extends unknown ? [
15
+ ...TupleParts<T>['required'],
16
+ ...TupleParts<T>['optional']
17
+ ] extends infer Prefix extends ReadonlyArray<unknown> ? HasIndex<Prefix, I> extends true ? T[I] : TupleParts<T>['item'] | (ClampedIntegerSubtract<I, Prefix['length']> extends infer SuffixIndex extends number ? HasIndex<TupleParts<T>['suffix'], SuffixIndex> extends true ? TupleParts<T>['suffix'][IntRangeInclusive<0, SuffixIndex>] : TupleParts<T>['suffix'][number] | undefined : never) : never : never : T[number] | undefined;
18
+ type HasIndex<T extends ReadonlyArray<unknown>, I> = I extends ArrayIndices<T> ? true : false;
19
+
20
+ type NoInfer<T> = T extends infer U ? U : never;
21
+
22
+ type KeysDeep<T, Path extends ReadonlyArray<unknown>> = KeysOfUnion<PropDeep<T, Path>>;
23
+ type PropDeep<T, Path extends ReadonlyArray<unknown>> = Path extends readonly [
24
+ infer Key,
25
+ ...infer Rest
26
+ ] ? PropDeep<Prop<T, Key>, Rest> : T;
27
+ type Prop<T, Key> = T extends unknown ? Key extends keyof T ? T extends ReadonlyArray<unknown> ? ArrayAt<T, Key> : T[Key] : undefined : never;
28
+ type NonPropertyKey = object | null | undefined;
1
29
  /**
2
- * Gets the value of the given property.
30
+ * Gets the value of the given property from an object. Nested properties can
31
+ * be accessed by providing a variadic array of keys that define the path from
32
+ * the root to the desired property. Arrays can be accessed by using numeric
33
+ * keys. Unions and optional properties are handled gracefully by returning
34
+ * `undefined` early for any non-existing property on the path. Paths are
35
+ * validated against the object type to provide stronger type safety, better
36
+ * compile-time errors, and to enable autocompletion in IDEs.
3
37
  *
4
- * @param data - The object to extract the prop from.
5
- * @param key - The key of the property to extract.
38
+ * @param data - The object or array to access.
39
+ * @param key - The key(s) for the property to extract.
6
40
  * @signature
7
- * P.prop(data, key);
41
+ * P.prop(data, ...keys);
8
42
  * @example
9
- * P.prop({ foo: 'bar' }, 'foo'); // => 'bar'
43
+ * P.prop({ foo: { bar: 'baz' } }, 'foo'); //=> { bar: 'baz' }
44
+ * P.prop({ foo: { bar: 'baz' } }, 'foo', 'bar'); //=> 'baz'
45
+ * P.prop(["cat", "dog"], 1); //=> 'dog'
10
46
  * @dataFirst
11
47
  * @category Object
12
48
  */
13
- declare function prop<T, K extends keyof T>(data: T, key: K): T[K];
49
+ declare function prop<T extends NonPropertyKey, Key extends KeysDeep<T, []>>(data: T, key: Key): NoInfer<Prop<T, Key>>;
50
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>>(data: T, key0: Key0, key1: Key1): NoInfer<PropDeep<T, [Key0, Key1]>>;
51
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>>(data: T, key0: Key0, key1: Key1, key2: Key2): NoInfer<PropDeep<T, [Key0, Key1, Key2]>>;
52
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3]>>;
53
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4]>>;
54
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>;
55
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>;
56
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>;
57
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8): NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8]>>;
58
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>, Key9 extends KeysDeep<T, [
59
+ Key0,
60
+ Key1,
61
+ Key2,
62
+ Key3,
63
+ Key4,
64
+ Key5,
65
+ Key6,
66
+ Key7,
67
+ Key8
68
+ ]>, AdditionalKeys extends ReadonlyArray<PropertyKey> = []>(data: T, key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8, key9: Key9, ...additionalKeys: AdditionalKeys): NoInfer<PropDeep<T, [
69
+ Key0,
70
+ Key1,
71
+ Key2,
72
+ Key3,
73
+ Key4,
74
+ Key5,
75
+ Key6,
76
+ Key7,
77
+ Key8,
78
+ Key9,
79
+ ...AdditionalKeys
80
+ ]>>;
14
81
  /**
15
- * Gets the value of the given property.
82
+ * Gets the value of the given property from an object. Nested properties can
83
+ * be accessed by providing a variadic array of keys that define the path from
84
+ * the root to the desired property. Arrays can be accessed by using numeric
85
+ * keys. Unions and optional properties are handled gracefully by returning
86
+ * `undefined` early for any non-existing property on the path. Paths are
87
+ * validated against the object type to provide stronger type safety, better
88
+ * compile-time errors, and to enable autocompletion in IDEs.
16
89
  *
17
- * @param key - The key of the property to extract.
90
+ * @param key - The key(s) for the property to extract.
18
91
  * @signature
19
- * P.prop(key)(data);
92
+ * P.prop(...keys)(data);
20
93
  * @example
21
- * P.pipe({foo: 'bar'}, P.prop('foo')) // => 'bar'
94
+ * P.pipe({ foo: { bar: 'baz' } }, P.prop('foo')); //=> { bar: 'baz' }
95
+ * P.pipe({ foo: { bar: 'baz' } }, P.prop('foo', 'bar')); //=> 'baz'
96
+ * P.pipe(["cat", "dog"], P.prop(1)); //=> 'dog'
22
97
  * @dataLast
23
98
  * @category Object
24
99
  */
25
- declare function prop<T, K extends keyof T>(key: K): (data: T) => T[K];
100
+ declare function prop<T extends NonPropertyKey, Key extends KeysOfUnion<T>>(key: Key): (data: T) => NoInfer<Prop<T, Key>>;
101
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>>(key0: Key0, key1: Key1): (data: T) => NoInfer<PropDeep<T, [Key0, Key1]>>;
102
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>>(key0: Key0, key1: Key1, key2: Key2): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2]>>;
103
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3]>>;
104
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4]>>;
105
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>;
106
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>;
107
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>;
108
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8): (data: T) => NoInfer<PropDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8]>>;
109
+ declare function prop<T extends NonPropertyKey, Key0 extends KeysDeep<T, []>, Key1 extends KeysDeep<T, [Key0]>, Key2 extends KeysDeep<T, [Key0, Key1]>, Key3 extends KeysDeep<T, [Key0, Key1, Key2]>, Key4 extends KeysDeep<T, [Key0, Key1, Key2, Key3]>, Key5 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4]>, Key6 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5]>, Key7 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6]>, Key8 extends KeysDeep<T, [Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7]>, Key9 extends KeysDeep<T, [
110
+ Key0,
111
+ Key1,
112
+ Key2,
113
+ Key3,
114
+ Key4,
115
+ Key5,
116
+ Key6,
117
+ Key7,
118
+ Key8
119
+ ]>, AdditionalKeys extends ReadonlyArray<PropertyKey> = []>(key0: Key0, key1: Key1, key2: Key2, key3: Key3, key4: Key4, key5: Key5, key6: Key6, key7: Key7, key8: Key8, key9: Key9, ...additionalKeys: AdditionalKeys): (data: T) => NoInfer<PropDeep<T, [
120
+ Key0,
121
+ Key1,
122
+ Key2,
123
+ Key3,
124
+ Key4,
125
+ Key5,
126
+ Key6,
127
+ Key7,
128
+ Key8,
129
+ Key9,
130
+ ...AdditionalKeys
131
+ ]>>;
26
132
  declare function prop<K extends PropertyKey>(key: K): <T extends Partial<Record<K, unknown>>>(data: T) => T[K];
27
- declare function propImplementation<T, K extends keyof T>(data: T, key: K): T[K];
28
133
 
29
- export { prop, propImplementation };
134
+ export { prop };
package/dist/prop.js CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-NEIICTWC.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as prop,b as propImplementation};
1
+ import{a}from"./chunk-RZBBV6PK.js";import"./chunk-EK7ODJWE.js";export{a as prop};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkFGMSPUSFcjs = require('./chunk-FGMSPUSF.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.pullObject = _chunkFGMSPUSFcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkFGMSPUSFcjs = require('./chunk-FGMSPUSF.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.pullObject = _chunkFGMSPUSFcjs.a;
@@ -1,6 +1,6 @@
1
- import { B as BoundedPartial } from './bounded-partial-wqR8ceNQ.cjs';
1
+ import { B as BoundedPartial } from './bounded-partial-BhnecV3P.cjs';
2
2
  import { I as IterableContainer } from './iterable-container-BTpDVdNc.cjs';
3
- import './if-bounded-record-Drd4UbBU.cjs';
3
+ import './is-bounded-record-C9WAwfA8.cjs';
4
4
  import 'type-fest';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { B as BoundedPartial } from './bounded-partial-CJjczH6j.js';
1
+ import { B as BoundedPartial } from './bounded-partial-B15MLSAS.js';
2
2
  import { I as IterableContainer } from './iterable-container-BTpDVdNc.js';
3
- import './if-bounded-record-Drd4UbBU.js';
3
+ import './is-bounded-record-C9WAwfA8.js';
4
4
  import 'type-fest';
5
5
 
6
6
  /**
@@ -1 +1 @@
1
- import{a}from"./chunk-B6SBIS6W.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as pullObject};
1
+ import{a}from"./chunk-B6SBIS6W.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as pullObject};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkSJMGQLYScjs = require('./chunk-SJMGQLYS.cjs');exports.randomInteger = _chunkSJMGQLYScjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkSJMGQLYScjs = require('./chunk-SJMGQLYS.cjs');require('./chunk-MBGSSEZN.cjs');exports.randomInteger = _chunkSJMGQLYScjs.a;
@@ -1 +1 @@
1
- import{a}from"./chunk-I2Z6A55T.js";export{a as randomInteger};
1
+ import{a}from"./chunk-I2Z6A55T.js";import"./chunk-EK7ODJWE.js";export{a as randomInteger};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk63GGX2BScjs = require('./chunk-63GGX2BS.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.randomString = _chunk63GGX2BScjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk63GGX2BScjs = require('./chunk-63GGX2BS.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.randomString = _chunk63GGX2BScjs.a;
@@ -1 +1 @@
1
- import{a}from"./chunk-U6ZJSHFS.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as randomString};
1
+ import{a}from"./chunk-U6ZJSHFS.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as randomString};
package/dist/range.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkAPO7U7HGcjs = require('./chunk-APO7U7HG.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.range = _chunkAPO7U7HGcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkAPO7U7HGcjs = require('./chunk-APO7U7HG.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.range = _chunkAPO7U7HGcjs.a;
package/dist/range.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-XWQ3IM2J.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as range};
1
+ import{a}from"./chunk-XWQ3IM2J.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as range};
package/dist/rank-by.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkZLNSRDW7cjs = require('./chunk-ZLNSRDW7.cjs');require('./chunk-EROXO3T4.cjs');exports.rankBy = _chunkZLNSRDW7cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkZLNSRDW7cjs = require('./chunk-ZLNSRDW7.cjs');require('./chunk-EROXO3T4.cjs');require('./chunk-MBGSSEZN.cjs');exports.rankBy = _chunkZLNSRDW7cjs.a;
@@ -1,5 +1,5 @@
1
- import { N as NonEmptyArray } from './non-empty-array-C9Od1wmF.cjs';
2
1
  import { O as OrderRule } from './curry-order-rules-BKXCPBNx.cjs';
2
+ import { N as NonEmptyArray } from './non-empty-array-C9Od1wmF.cjs';
3
3
 
4
4
  /**
5
5
  * Calculates the rank of an item in an array based on `rules`. The rank is the position where the item would appear in the sorted array. This function provides an efficient way to determine the rank in *O(n)* time, compared to *O(nlogn)* for the equivalent `sortedIndex(sortBy(data, ...rules), item)`.
package/dist/rank-by.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { N as NonEmptyArray } from './non-empty-array-C9Od1wmF.js';
2
1
  import { O as OrderRule } from './curry-order-rules-BKXCPBNx.js';
2
+ import { N as NonEmptyArray } from './non-empty-array-C9Od1wmF.js';
3
3
 
4
4
  /**
5
5
  * Calculates the rank of an item in an array based on `rules`. The rank is the position where the item would appear in the sorted array. This function provides an efficient way to determine the rank in *O(n)* time, compared to *O(nlogn)* for the equivalent `sortedIndex(sortBy(data, ...rules), item)`.
package/dist/rank-by.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-G57ZPKMR.js";import"./chunk-7KBK2RWQ.js";export{a as rankBy};
1
+ import{a}from"./chunk-G57ZPKMR.js";import"./chunk-7KBK2RWQ.js";import"./chunk-EK7ODJWE.js";export{a as rankBy};
package/dist/reduce.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkH6WDSTL3cjs = require('./chunk-H6WDSTL3.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.reduce = _chunkH6WDSTL3cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkH6WDSTL3cjs = require('./chunk-H6WDSTL3.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.reduce = _chunkH6WDSTL3cjs.a;
package/dist/reduce.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-IZWZPKOA.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as reduce};
1
+ import{a}from"./chunk-IZWZPKOA.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as reduce};
package/dist/reverse.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVAU7HZPOcjs = require('./chunk-VAU7HZPO.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.reverse = _chunkVAU7HZPOcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVAU7HZPOcjs = require('./chunk-VAU7HZPO.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.reverse = _chunkVAU7HZPOcjs.a;
package/dist/reverse.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-JNQXGRDN.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as reverse};
1
+ import{a}from"./chunk-JNQXGRDN.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as reverse};
package/dist/round.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIRWDTBZTcjs = require('./chunk-IRWDTBZT.cjs');require('./chunk-M22GUUVY.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.round = _chunkIRWDTBZTcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkIRWDTBZTcjs = require('./chunk-IRWDTBZT.cjs');require('./chunk-M22GUUVY.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.round = _chunkIRWDTBZTcjs.a;
package/dist/round.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-P4HDHWKF.js";import"./chunk-PEJ74NWA.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as round};
1
+ import{a}from"./chunk-P4HDHWKF.js";import"./chunk-PEJ74NWA.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as round};
package/dist/sample.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2MHE6M7Vcjs = require('./chunk-2MHE6M7V.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.sample = _chunk2MHE6M7Vcjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkALP5JUXXcjs = require('./chunk-ALP5JUXX.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.sample = _chunkALP5JUXXcjs.a;
package/dist/sample.d.cts CHANGED
@@ -1,11 +1,35 @@
1
+ import { Or, IsEqual, IsNever, NonNegativeInteger, FixedLengthArray, Writable } from 'type-fest';
2
+ import { C as CoercedArray } from './coerced-array-DRz3tqda.cjs';
1
3
  import { I as IterableContainer } from './iterable-container-BTpDVdNc.cjs';
4
+ import { N as NTuple } from './n-tuple-5jljrt4c.cjs';
5
+ import { P as PartialArray } from './partial-array-Vnf1fBtl.cjs';
6
+ import { T as TupleParts } from './tuple-parts-v6av7LMU.cjs';
7
+ import './perkakas-type-error-8wPb8T2y.cjs';
2
8
 
3
- type Sampled<T extends IterableContainer, N extends number> = number extends N ? SampledGeneric<T> : undefined extends T[N] ? T : SampledLiteral<T, N>;
4
- type SampledGeneric<T extends IterableContainer> = T[number] extends never ? T : T extends readonly [infer First, ...infer Rest] ? [First, ...SampledGeneric<Rest>] | SampledGeneric<Rest> : Array<T[number]>;
5
- type SampledLiteral<T extends IterableContainer, N extends number, Iteration extends Array<unknown> = []> = Iteration['length'] extends N ? [] : T extends readonly [infer First, ...infer Tail] ? [
6
- First | Tail[number],
7
- ...SampledLiteral<Tail, N, [unknown, ...Iteration]>
8
- ] : T extends readonly [...infer Head, infer Last] ? [...SampledLiteral<Head, N, [unknown, ...Iteration]>, Last] : [T[number], ...SampledLiteral<T, N, [unknown, ...Iteration]>] | SampledLiteral<T, N, [unknown, ...Iteration]>;
9
+ type Sampled<T extends IterableContainer, N extends number> = Or<IsEqual<N, 0>, IsEqual<T['length'], 0>> extends true ? [] : IsNever<NonNegativeInteger<N>> extends true ? SampledPrimitive<T> : IsLongerThan<T, N> extends true ? SampledLiteral<T, N> : Writable<T>;
10
+ /**
11
+ * When N is not a non-negative integer **literal** we can't use it in our
12
+ * reconstructing logic so we fallback to a simpler definition of the output of
13
+ * sample, which is any sub-tuple shape of T, of **any length**.
14
+ */
15
+ type SampledPrimitive<T extends IterableContainer> = [
16
+ ...FixedSubTuples<TupleParts<T>['required']>,
17
+ ...PartialArray<FixedSubTuples<TupleParts<T>['optional']>>,
18
+ ...CoercedArray<TupleParts<T>['item']>,
19
+ ...FixedSubTuples<TupleParts<T>['suffix']>
20
+ ];
21
+ /**
22
+ * Knowing N is a non-negative literal integer we can construct all sub-tuples
23
+ * of T that are exactly N elements long.
24
+ */
25
+ type SampledLiteral<T extends IterableContainer, N extends number> = Extract<FixedSubTuples<[
26
+ ...TupleParts<T>['required'],
27
+ ...(IsNever<TupleParts<T>['item']> extends true ? [] : NTuple<TupleParts<T>['item'], N>),
28
+ ...TupleParts<T>['suffix']
29
+ ]>, FixedLengthArray<unknown, N>> | SubSampled<TupleParts<T>['required'], TupleParts<T>['item'], TupleParts<T>['suffix'], N>;
30
+ type SubSampled<Prefix extends ReadonlyArray<unknown>, Item, Suffix extends ReadonlyArray<unknown>, N extends number> = IsLongerThan<[...Prefix, ...Suffix], N> extends true ? never : [...Prefix, ...Suffix]['length'] extends N ? never : [...Prefix, ...Suffix] | SubSampled<[...Prefix, Item], Item, Suffix, N>;
31
+ type IsLongerThan<T extends ReadonlyArray<unknown>, N extends number> = IsEqual<T[N], undefined> extends true ? false : true;
32
+ type FixedSubTuples<T> = T extends readonly [infer Head, ...infer Rest] ? FixedSubTuples<Rest> | [Head, ...FixedSubTuples<Rest>] : [];
9
33
  /**
10
34
  * Returns a random subset of size `sampleSize` from `array`.
11
35
  *
@@ -27,7 +51,7 @@ type SampledLiteral<T extends IterableContainer, N extends number, Iteration ext
27
51
  * @dataFirst
28
52
  * @category Array
29
53
  */
30
- declare function sample<T extends IterableContainer, N extends number = number>(data: T, sampleSize: N): Sampled<T, N>;
54
+ declare function sample<const T extends IterableContainer, N extends number = number>(data: T, sampleSize: N): Sampled<T, N>;
31
55
  /**
32
56
  * Returns a random subset of size `sampleSize` from `array`.
33
57
  *
@@ -48,6 +72,6 @@ declare function sample<T extends IterableContainer, N extends number = number>(
48
72
  * @dataLast
49
73
  * @category Array
50
74
  */
51
- declare function sample<T extends IterableContainer, N extends number = number>(sampleSize: N): (data: T) => Sampled<T, N>;
75
+ declare function sample<const T extends IterableContainer, N extends number = number>(sampleSize: N): (data: T) => Sampled<T, N>;
52
76
 
53
77
  export { sample };
package/dist/sample.d.ts CHANGED
@@ -1,11 +1,35 @@
1
+ import { Or, IsEqual, IsNever, NonNegativeInteger, FixedLengthArray, Writable } from 'type-fest';
2
+ import { C as CoercedArray } from './coerced-array-DRz3tqda.js';
1
3
  import { I as IterableContainer } from './iterable-container-BTpDVdNc.js';
4
+ import { N as NTuple } from './n-tuple-5jljrt4c.js';
5
+ import { P as PartialArray } from './partial-array-Vnf1fBtl.js';
6
+ import { T as TupleParts } from './tuple-parts-BTivqbtT.js';
7
+ import './perkakas-type-error-8wPb8T2y.js';
2
8
 
3
- type Sampled<T extends IterableContainer, N extends number> = number extends N ? SampledGeneric<T> : undefined extends T[N] ? T : SampledLiteral<T, N>;
4
- type SampledGeneric<T extends IterableContainer> = T[number] extends never ? T : T extends readonly [infer First, ...infer Rest] ? [First, ...SampledGeneric<Rest>] | SampledGeneric<Rest> : Array<T[number]>;
5
- type SampledLiteral<T extends IterableContainer, N extends number, Iteration extends Array<unknown> = []> = Iteration['length'] extends N ? [] : T extends readonly [infer First, ...infer Tail] ? [
6
- First | Tail[number],
7
- ...SampledLiteral<Tail, N, [unknown, ...Iteration]>
8
- ] : T extends readonly [...infer Head, infer Last] ? [...SampledLiteral<Head, N, [unknown, ...Iteration]>, Last] : [T[number], ...SampledLiteral<T, N, [unknown, ...Iteration]>] | SampledLiteral<T, N, [unknown, ...Iteration]>;
9
+ type Sampled<T extends IterableContainer, N extends number> = Or<IsEqual<N, 0>, IsEqual<T['length'], 0>> extends true ? [] : IsNever<NonNegativeInteger<N>> extends true ? SampledPrimitive<T> : IsLongerThan<T, N> extends true ? SampledLiteral<T, N> : Writable<T>;
10
+ /**
11
+ * When N is not a non-negative integer **literal** we can't use it in our
12
+ * reconstructing logic so we fallback to a simpler definition of the output of
13
+ * sample, which is any sub-tuple shape of T, of **any length**.
14
+ */
15
+ type SampledPrimitive<T extends IterableContainer> = [
16
+ ...FixedSubTuples<TupleParts<T>['required']>,
17
+ ...PartialArray<FixedSubTuples<TupleParts<T>['optional']>>,
18
+ ...CoercedArray<TupleParts<T>['item']>,
19
+ ...FixedSubTuples<TupleParts<T>['suffix']>
20
+ ];
21
+ /**
22
+ * Knowing N is a non-negative literal integer we can construct all sub-tuples
23
+ * of T that are exactly N elements long.
24
+ */
25
+ type SampledLiteral<T extends IterableContainer, N extends number> = Extract<FixedSubTuples<[
26
+ ...TupleParts<T>['required'],
27
+ ...(IsNever<TupleParts<T>['item']> extends true ? [] : NTuple<TupleParts<T>['item'], N>),
28
+ ...TupleParts<T>['suffix']
29
+ ]>, FixedLengthArray<unknown, N>> | SubSampled<TupleParts<T>['required'], TupleParts<T>['item'], TupleParts<T>['suffix'], N>;
30
+ type SubSampled<Prefix extends ReadonlyArray<unknown>, Item, Suffix extends ReadonlyArray<unknown>, N extends number> = IsLongerThan<[...Prefix, ...Suffix], N> extends true ? never : [...Prefix, ...Suffix]['length'] extends N ? never : [...Prefix, ...Suffix] | SubSampled<[...Prefix, Item], Item, Suffix, N>;
31
+ type IsLongerThan<T extends ReadonlyArray<unknown>, N extends number> = IsEqual<T[N], undefined> extends true ? false : true;
32
+ type FixedSubTuples<T> = T extends readonly [infer Head, ...infer Rest] ? FixedSubTuples<Rest> | [Head, ...FixedSubTuples<Rest>] : [];
9
33
  /**
10
34
  * Returns a random subset of size `sampleSize` from `array`.
11
35
  *
@@ -27,7 +51,7 @@ type SampledLiteral<T extends IterableContainer, N extends number, Iteration ext
27
51
  * @dataFirst
28
52
  * @category Array
29
53
  */
30
- declare function sample<T extends IterableContainer, N extends number = number>(data: T, sampleSize: N): Sampled<T, N>;
54
+ declare function sample<const T extends IterableContainer, N extends number = number>(data: T, sampleSize: N): Sampled<T, N>;
31
55
  /**
32
56
  * Returns a random subset of size `sampleSize` from `array`.
33
57
  *
@@ -48,6 +72,6 @@ declare function sample<T extends IterableContainer, N extends number = number>(
48
72
  * @dataLast
49
73
  * @category Array
50
74
  */
51
- declare function sample<T extends IterableContainer, N extends number = number>(sampleSize: N): (data: T) => Sampled<T, N>;
75
+ declare function sample<const T extends IterableContainer, N extends number = number>(sampleSize: N): (data: T) => Sampled<T, N>;
52
76
 
53
77
  export { sample };
package/dist/sample.js CHANGED
@@ -1 +1 @@
1
- import{a}from"./chunk-XEAAXO7F.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";export{a as sample};
1
+ import{a}from"./chunk-4Y6VRHEP.js";import"./chunk-J6WPJH72.js";import"./chunk-KGPDVVVV.js";import"./chunk-EK7ODJWE.js";export{a as sample};
package/dist/set-path.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkNQGMUM3Ecjs = require('./chunk-NQGMUM3E.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');exports.setPath = _chunkNQGMUM3Ecjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkSG2YWG6Ucjs = require('./chunk-SG2YWG6U.cjs');require('./chunk-XR72I63W.cjs');require('./chunk-GZJMERDJ.cjs');require('./chunk-MBGSSEZN.cjs');exports.setPath = _chunkSG2YWG6Ucjs.a;