@vinicunca/perkakas 1.13.2 → 1.15.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 (1524) hide show
  1. package/dist/add-prop.cjs +2 -1
  2. package/dist/add-prop.cjs.map +1 -0
  3. package/dist/add-prop.js +1 -1
  4. package/dist/add-prop.js.map +1 -1
  5. package/dist/add.cjs +2 -1
  6. package/dist/add.cjs.map +1 -0
  7. package/dist/add.js +1 -1
  8. package/dist/add.js.map +1 -1
  9. package/dist/all-pass.cjs +2 -1
  10. package/dist/all-pass.cjs.map +1 -0
  11. package/dist/all-pass.js +1 -1
  12. package/dist/all-pass.js.map +1 -1
  13. package/dist/any-pass.cjs +2 -1
  14. package/dist/any-pass.cjs.map +1 -0
  15. package/dist/any-pass.js +1 -1
  16. package/dist/any-pass.js.map +1 -1
  17. package/dist/binary-search-cutoff-index-CLFtXYPc.cjs +2 -0
  18. package/dist/binary-search-cutoff-index-CLFtXYPc.cjs.map +1 -0
  19. package/dist/binary-search-cutoff-index-TJlnoie4.js +2 -0
  20. package/dist/binary-search-cutoff-index-TJlnoie4.js.map +1 -0
  21. package/dist/capitalize.cjs +2 -1
  22. package/dist/capitalize.cjs.map +1 -0
  23. package/dist/capitalize.js +1 -1
  24. package/dist/capitalize.js.map +1 -1
  25. package/dist/ceil.cjs +2 -1
  26. package/dist/ceil.cjs.map +1 -0
  27. package/dist/ceil.js +1 -1
  28. package/dist/ceil.js.map +1 -1
  29. package/dist/chunk.cjs +2 -1
  30. package/dist/chunk.cjs.map +1 -0
  31. package/dist/chunk.js +1 -1
  32. package/dist/chunk.js.map +1 -1
  33. package/dist/clamp.cjs +2 -1
  34. package/dist/clamp.cjs.map +1 -0
  35. package/dist/clamp.js +1 -1
  36. package/dist/clamp.js.map +1 -1
  37. package/dist/clone.cjs +2 -1
  38. package/dist/clone.cjs.map +1 -0
  39. package/dist/clone.js +1 -1
  40. package/dist/clone.js.map +1 -1
  41. package/dist/concat.cjs +2 -1
  42. package/dist/concat.cjs.map +1 -0
  43. package/dist/concat.js +1 -1
  44. package/dist/concat.js.map +1 -1
  45. package/dist/conditional-3wcaMG9k.cjs +2 -0
  46. package/dist/conditional-3wcaMG9k.cjs.map +1 -0
  47. package/dist/conditional-CTEJD5TX.js +2 -0
  48. package/dist/conditional-CTEJD5TX.js.map +1 -0
  49. package/dist/conditional.cjs +1 -1
  50. package/dist/conditional.js +1 -1
  51. package/dist/constant.cjs +2 -1
  52. package/dist/constant.cjs.map +1 -0
  53. package/dist/constant.js.map +1 -1
  54. package/dist/count-by.cjs +2 -1
  55. package/dist/count-by.cjs.map +1 -0
  56. package/dist/count-by.js +1 -1
  57. package/dist/count-by.js.map +1 -1
  58. package/dist/curry-from-lazy-BvN_VKlH.cjs +2 -0
  59. package/dist/curry-from-lazy-BvN_VKlH.cjs.map +1 -0
  60. package/dist/curry-from-lazy-CtH1dp14.js +2 -0
  61. package/dist/curry-from-lazy-CtH1dp14.js.map +1 -0
  62. package/dist/curry-order-rules-BLyCSMdZ.js +2 -0
  63. package/dist/curry-order-rules-BLyCSMdZ.js.map +1 -0
  64. package/dist/curry-order-rules-DsJSy3gX.cjs +2 -0
  65. package/dist/curry-order-rules-DsJSy3gX.cjs.map +1 -0
  66. package/dist/curry.cjs +2 -1
  67. package/dist/curry.cjs.map +1 -0
  68. package/dist/curry.js +2 -1
  69. package/dist/curry.js.map +1 -0
  70. package/dist/debounce.cjs +2 -1
  71. package/dist/debounce.cjs.map +1 -0
  72. package/dist/debounce.js +1 -1
  73. package/dist/debounce.js.map +1 -1
  74. package/dist/default-to.cjs +2 -0
  75. package/dist/default-to.cjs.map +1 -0
  76. package/dist/default-to.js +2 -0
  77. package/dist/default-to.js.map +1 -0
  78. package/dist/difference-with.cjs +2 -1
  79. package/dist/difference-with.cjs.map +1 -0
  80. package/dist/difference-with.js +1 -1
  81. package/dist/difference-with.js.map +1 -1
  82. package/dist/difference.cjs +2 -1
  83. package/dist/difference.cjs.map +1 -0
  84. package/dist/difference.js +1 -1
  85. package/dist/difference.js.map +1 -1
  86. package/dist/divide.cjs +2 -1
  87. package/dist/divide.cjs.map +1 -0
  88. package/dist/divide.js +1 -1
  89. package/dist/divide.js.map +1 -1
  90. package/dist/do-nothing.cjs +2 -1
  91. package/dist/do-nothing.cjs.map +1 -0
  92. package/dist/do-nothing.js.map +1 -1
  93. package/dist/drop-first-by.cjs +2 -1
  94. package/dist/drop-first-by.cjs.map +1 -0
  95. package/dist/drop-first-by.js +1 -1
  96. package/dist/drop-first-by.js.map +1 -1
  97. package/dist/drop-last-while.cjs +2 -1
  98. package/dist/drop-last-while.cjs.map +1 -0
  99. package/dist/drop-last-while.js +1 -1
  100. package/dist/drop-last-while.js.map +1 -1
  101. package/dist/drop-last.cjs +2 -1
  102. package/dist/drop-last.cjs.map +1 -0
  103. package/dist/drop-last.js +1 -1
  104. package/dist/drop-last.js.map +1 -1
  105. package/dist/drop-while.cjs +2 -1
  106. package/dist/drop-while.cjs.map +1 -0
  107. package/dist/drop-while.js +1 -1
  108. package/dist/drop-while.js.map +1 -1
  109. package/dist/drop.cjs +2 -1
  110. package/dist/drop.cjs.map +1 -0
  111. package/dist/drop.js +1 -1
  112. package/dist/drop.js.map +1 -1
  113. package/dist/ends-with.cjs +2 -0
  114. package/dist/ends-with.cjs.map +1 -0
  115. package/dist/ends-with.js +2 -0
  116. package/dist/ends-with.js.map +1 -0
  117. package/dist/entries.cjs +2 -1
  118. package/dist/entries.cjs.map +1 -0
  119. package/dist/entries.js +1 -1
  120. package/dist/entries.js.map +1 -1
  121. package/dist/evolve.cjs +2 -1
  122. package/dist/evolve.cjs.map +1 -0
  123. package/dist/evolve.js +1 -1
  124. package/dist/evolve.js.map +1 -1
  125. package/dist/filter.cjs +2 -1
  126. package/dist/filter.cjs.map +1 -0
  127. package/dist/filter.js +1 -1
  128. package/dist/filter.js.map +1 -1
  129. package/dist/find-index.cjs +2 -1
  130. package/dist/find-index.cjs.map +1 -0
  131. package/dist/find-index.js +1 -1
  132. package/dist/find-index.js.map +1 -1
  133. package/dist/find-last-index.cjs +2 -1
  134. package/dist/find-last-index.cjs.map +1 -0
  135. package/dist/find-last-index.js +1 -1
  136. package/dist/find-last-index.js.map +1 -1
  137. package/dist/find-last.cjs +2 -1
  138. package/dist/find-last.cjs.map +1 -0
  139. package/dist/find-last.js +1 -1
  140. package/dist/find-last.js.map +1 -1
  141. package/dist/find.cjs +2 -1
  142. package/dist/find.cjs.map +1 -0
  143. package/dist/find.js +1 -1
  144. package/dist/find.js.map +1 -1
  145. package/dist/first-by.cjs +2 -1
  146. package/dist/first-by.cjs.map +1 -0
  147. package/dist/first-by.js +1 -1
  148. package/dist/first-by.js.map +1 -1
  149. package/dist/first.cjs +2 -1
  150. package/dist/first.cjs.map +1 -0
  151. package/dist/first.js +1 -1
  152. package/dist/first.js.map +1 -1
  153. package/dist/flat-map.cjs +2 -1
  154. package/dist/flat-map.cjs.map +1 -0
  155. package/dist/flat-map.js +1 -1
  156. package/dist/flat-map.js.map +1 -1
  157. package/dist/flat.cjs +2 -1
  158. package/dist/flat.cjs.map +1 -0
  159. package/dist/flat.js +1 -1
  160. package/dist/flat.js.map +1 -1
  161. package/dist/floor.cjs +2 -1
  162. package/dist/floor.cjs.map +1 -0
  163. package/dist/floor.js +1 -1
  164. package/dist/floor.js.map +1 -1
  165. package/dist/for-each-obj.cjs +2 -1
  166. package/dist/for-each-obj.cjs.map +1 -0
  167. package/dist/for-each-obj.js +1 -1
  168. package/dist/for-each-obj.js.map +1 -1
  169. package/dist/for-each.cjs +2 -1
  170. package/dist/for-each.cjs.map +1 -0
  171. package/dist/for-each.js +1 -1
  172. package/dist/for-each.js.map +1 -1
  173. package/dist/from-entries.cjs +2 -1
  174. package/dist/from-entries.cjs.map +1 -0
  175. package/dist/from-entries.js +1 -1
  176. package/dist/from-entries.js.map +1 -1
  177. package/dist/from-keys.cjs +2 -1
  178. package/dist/from-keys.cjs.map +1 -0
  179. package/dist/from-keys.js +1 -1
  180. package/dist/from-keys.js.map +1 -1
  181. package/dist/funnel.cjs +2 -1
  182. package/dist/funnel.cjs.map +1 -0
  183. package/dist/funnel.js +1 -1
  184. package/dist/funnel.js.map +1 -1
  185. package/dist/group-by-prop.cjs +2 -1
  186. package/dist/group-by-prop.cjs.map +1 -0
  187. package/dist/group-by-prop.js +1 -1
  188. package/dist/group-by-prop.js.map +1 -1
  189. package/dist/group-by.cjs +2 -1
  190. package/dist/group-by.cjs.map +1 -0
  191. package/dist/group-by.js +1 -1
  192. package/dist/group-by.js.map +1 -1
  193. package/dist/has-at-least.cjs +2 -1
  194. package/dist/has-at-least.cjs.map +1 -0
  195. package/dist/has-at-least.js +2 -1
  196. package/dist/has-at-least.js.map +1 -0
  197. package/dist/has-sub-object.cjs +2 -1
  198. package/dist/has-sub-object.cjs.map +1 -0
  199. package/dist/has-sub-object.js +1 -1
  200. package/dist/has-sub-object.js.map +1 -1
  201. package/dist/heap-C0zPQGC0.cjs +2 -0
  202. package/dist/heap-C0zPQGC0.cjs.map +1 -0
  203. package/dist/heap-M6D40vkc.js +2 -0
  204. package/dist/heap-M6D40vkc.js.map +1 -0
  205. package/dist/human-readable-file-size.cjs +2 -1
  206. package/dist/human-readable-file-size.cjs.map +1 -0
  207. package/dist/identity.cjs +2 -1
  208. package/dist/identity.cjs.map +1 -0
  209. package/dist/identity.js +1 -1
  210. package/dist/identity.js.map +1 -1
  211. package/dist/index-by.cjs +2 -1
  212. package/dist/index-by.cjs.map +1 -0
  213. package/dist/index-by.js +1 -1
  214. package/dist/index-by.js.map +1 -1
  215. package/dist/index.cjs +2 -1
  216. package/dist/index.cjs.map +1 -0
  217. package/dist/index.d.cts +12489 -158
  218. package/dist/index.d.cts.map +1 -1
  219. package/dist/index.d.ts +12489 -158
  220. package/dist/index.d.ts.map +1 -1
  221. package/dist/index.js +1 -1
  222. package/dist/index.js.map +1 -1
  223. package/dist/intersection-with.cjs +2 -1
  224. package/dist/intersection-with.cjs.map +1 -0
  225. package/dist/intersection-with.js +1 -1
  226. package/dist/intersection-with.js.map +1 -1
  227. package/dist/intersection.cjs +2 -1
  228. package/dist/intersection.cjs.map +1 -0
  229. package/dist/intersection.js +1 -1
  230. package/dist/intersection.js.map +1 -1
  231. package/dist/invert.cjs +2 -1
  232. package/dist/invert.cjs.map +1 -0
  233. package/dist/invert.js +1 -1
  234. package/dist/invert.js.map +1 -1
  235. package/dist/is-array.cjs +2 -1
  236. package/dist/is-array.cjs.map +1 -0
  237. package/dist/is-array.js.map +1 -1
  238. package/dist/is-big-int.cjs +2 -1
  239. package/dist/is-big-int.cjs.map +1 -0
  240. package/dist/is-big-int.js.map +1 -1
  241. package/dist/is-boolean.cjs +2 -1
  242. package/dist/is-boolean.cjs.map +1 -0
  243. package/dist/is-boolean.js.map +1 -1
  244. package/dist/is-date.cjs +2 -1
  245. package/dist/is-date.cjs.map +1 -0
  246. package/dist/is-date.js.map +1 -1
  247. package/dist/is-deep-equal.cjs +2 -1
  248. package/dist/is-deep-equal.cjs.map +1 -0
  249. package/dist/is-deep-equal.js +1 -1
  250. package/dist/is-deep-equal.js.map +1 -1
  251. package/dist/is-defined.cjs +2 -1
  252. package/dist/is-defined.cjs.map +1 -0
  253. package/dist/is-defined.js.map +1 -1
  254. package/dist/is-empty.cjs +2 -1
  255. package/dist/is-empty.cjs.map +1 -0
  256. package/dist/is-empty.js +1 -1
  257. package/dist/is-empty.js.map +1 -1
  258. package/dist/is-emptyish.cjs +2 -1
  259. package/dist/is-emptyish.cjs.map +1 -0
  260. package/dist/is-emptyish.js.map +1 -1
  261. package/dist/is-error.cjs +2 -1
  262. package/dist/is-error.cjs.map +1 -0
  263. package/dist/is-error.js.map +1 -1
  264. package/dist/is-function.cjs +2 -1
  265. package/dist/is-function.cjs.map +1 -0
  266. package/dist/is-function.js.map +1 -1
  267. package/dist/is-included-in.cjs +2 -1
  268. package/dist/is-included-in.cjs.map +1 -0
  269. package/dist/is-included-in.js.map +1 -1
  270. package/dist/is-non-null.cjs +2 -1
  271. package/dist/is-non-null.cjs.map +1 -0
  272. package/dist/is-non-null.js.map +1 -1
  273. package/dist/is-non-nullish.cjs +2 -1
  274. package/dist/is-non-nullish.cjs.map +1 -0
  275. package/dist/is-non-nullish.js.map +1 -1
  276. package/dist/is-not.cjs +2 -1
  277. package/dist/is-not.cjs.map +1 -0
  278. package/dist/is-not.js.map +1 -1
  279. package/dist/is-nullish.cjs +2 -1
  280. package/dist/is-nullish.cjs.map +1 -0
  281. package/dist/is-nullish.js.map +1 -1
  282. package/dist/is-number.cjs +2 -1
  283. package/dist/is-number.cjs.map +1 -0
  284. package/dist/is-number.js.map +1 -1
  285. package/dist/is-object-type.cjs +2 -1
  286. package/dist/is-object-type.cjs.map +1 -0
  287. package/dist/is-object-type.js.map +1 -1
  288. package/dist/is-plain-object.cjs +2 -1
  289. package/dist/is-plain-object.cjs.map +1 -0
  290. package/dist/is-plain-object.js.map +1 -1
  291. package/dist/is-promise.cjs +2 -1
  292. package/dist/is-promise.cjs.map +1 -0
  293. package/dist/is-promise.js.map +1 -1
  294. package/dist/is-shallow-equal.cjs +2 -1
  295. package/dist/is-shallow-equal.cjs.map +1 -0
  296. package/dist/is-shallow-equal.js +1 -1
  297. package/dist/is-shallow-equal.js.map +1 -1
  298. package/dist/is-strict-equal.cjs +2 -1
  299. package/dist/is-strict-equal.cjs.map +1 -0
  300. package/dist/is-strict-equal.js +1 -1
  301. package/dist/is-strict-equal.js.map +1 -1
  302. package/dist/is-string.cjs +2 -1
  303. package/dist/is-string.cjs.map +1 -0
  304. package/dist/is-string.js.map +1 -1
  305. package/dist/is-symbol.cjs +2 -1
  306. package/dist/is-symbol.cjs.map +1 -0
  307. package/dist/is-symbol.js.map +1 -1
  308. package/dist/is-truthy.cjs +2 -1
  309. package/dist/is-truthy.cjs.map +1 -0
  310. package/dist/is-truthy.js.map +1 -1
  311. package/dist/join.cjs +2 -1
  312. package/dist/join.cjs.map +1 -0
  313. package/dist/join.js +1 -1
  314. package/dist/join.js.map +1 -1
  315. package/dist/key-codes.cjs +2 -1
  316. package/dist/key-codes.cjs.map +1 -0
  317. package/dist/keys.cjs +2 -1
  318. package/dist/keys.cjs.map +1 -0
  319. package/dist/keys.js +1 -1
  320. package/dist/keys.js.map +1 -1
  321. package/dist/last.cjs +2 -1
  322. package/dist/last.cjs.map +1 -0
  323. package/dist/last.js +1 -1
  324. package/dist/last.js.map +1 -1
  325. package/dist/lazy-data-last-impl-B05ZpguF.cjs +2 -0
  326. package/dist/lazy-data-last-impl-B05ZpguF.cjs.map +1 -0
  327. package/dist/lazy-data-last-impl-Vt_M0l7X.js +2 -0
  328. package/dist/lazy-data-last-impl-Vt_M0l7X.js.map +1 -0
  329. package/dist/length.cjs +2 -1
  330. package/dist/length.cjs.map +1 -0
  331. package/dist/length.js +1 -1
  332. package/dist/length.js.map +1 -1
  333. package/dist/map-keys.cjs +2 -1
  334. package/dist/map-keys.cjs.map +1 -0
  335. package/dist/map-keys.js +1 -1
  336. package/dist/map-keys.js.map +1 -1
  337. package/dist/map-to-obj.cjs +2 -1
  338. package/dist/map-to-obj.cjs.map +1 -0
  339. package/dist/map-to-obj.js +1 -1
  340. package/dist/map-to-obj.js.map +1 -1
  341. package/dist/map-values.cjs +2 -1
  342. package/dist/map-values.cjs.map +1 -0
  343. package/dist/map-values.js +1 -1
  344. package/dist/map-values.js.map +1 -1
  345. package/dist/map-with-feedback.cjs +2 -1
  346. package/dist/map-with-feedback.cjs.map +1 -0
  347. package/dist/map-with-feedback.js +1 -1
  348. package/dist/map-with-feedback.js.map +1 -1
  349. package/dist/map.cjs +2 -1
  350. package/dist/map.cjs.map +1 -0
  351. package/dist/map.js +1 -1
  352. package/dist/map.js.map +1 -1
  353. package/dist/mean-by.cjs +2 -1
  354. package/dist/mean-by.cjs.map +1 -0
  355. package/dist/mean-by.js +1 -1
  356. package/dist/mean-by.js.map +1 -1
  357. package/dist/mean.cjs +2 -0
  358. package/dist/mean.cjs.map +1 -0
  359. package/dist/mean.js +2 -0
  360. package/dist/mean.js.map +1 -0
  361. package/dist/median.cjs +2 -0
  362. package/dist/median.cjs.map +1 -0
  363. package/dist/median.js +2 -0
  364. package/dist/median.js.map +1 -0
  365. package/dist/merge-all.cjs +2 -1
  366. package/dist/merge-all.cjs.map +1 -0
  367. package/dist/merge-all.js.map +1 -1
  368. package/dist/merge-deep.cjs +2 -1
  369. package/dist/merge-deep.cjs.map +1 -0
  370. package/dist/merge-deep.js +1 -1
  371. package/dist/merge-deep.js.map +1 -1
  372. package/dist/merge.cjs +2 -1
  373. package/dist/merge.cjs.map +1 -0
  374. package/dist/merge.js +1 -1
  375. package/dist/merge.js.map +1 -1
  376. package/dist/multiply.cjs +2 -1
  377. package/dist/multiply.cjs.map +1 -0
  378. package/dist/multiply.js +1 -1
  379. package/dist/multiply.js.map +1 -1
  380. package/dist/nth-by-DhfNV5xd.js +2 -0
  381. package/dist/nth-by-DhfNV5xd.js.map +1 -0
  382. package/dist/nth-by-zZ3RM-mR.cjs +2 -0
  383. package/dist/nth-by-zZ3RM-mR.cjs.map +1 -0
  384. package/dist/nth-by.cjs +1 -1
  385. package/dist/nth-by.js +1 -1
  386. package/dist/obj-of.cjs +2 -1
  387. package/dist/obj-of.cjs.map +1 -0
  388. package/dist/obj-of.js +1 -1
  389. package/dist/obj-of.js.map +1 -1
  390. package/dist/omit-by.cjs +2 -1
  391. package/dist/omit-by.cjs.map +1 -0
  392. package/dist/omit-by.js +1 -1
  393. package/dist/omit-by.js.map +1 -1
  394. package/dist/omit.cjs +2 -1
  395. package/dist/omit.cjs.map +1 -0
  396. package/dist/omit.js +1 -1
  397. package/dist/omit.js.map +1 -1
  398. package/dist/once.cjs +2 -1
  399. package/dist/once.cjs.map +1 -0
  400. package/dist/once.js.map +1 -1
  401. package/dist/only.cjs +2 -1
  402. package/dist/only.cjs.map +1 -0
  403. package/dist/only.js +1 -1
  404. package/dist/only.js.map +1 -1
  405. package/dist/partial-bind.cjs +2 -0
  406. package/dist/partial-bind.cjs.map +1 -0
  407. package/dist/partial-bind.js +2 -0
  408. package/dist/partial-bind.js.map +1 -0
  409. package/dist/partial-last-bind.cjs +2 -0
  410. package/dist/partial-last-bind.cjs.map +1 -0
  411. package/dist/partial-last-bind.js +2 -0
  412. package/dist/partial-last-bind.js.map +1 -0
  413. package/dist/partition.cjs +2 -1
  414. package/dist/partition.cjs.map +1 -0
  415. package/dist/partition.js +1 -1
  416. package/dist/partition.js.map +1 -1
  417. package/dist/path-or.cjs +2 -1
  418. package/dist/path-or.cjs.map +1 -0
  419. package/dist/path-or.js +1 -1
  420. package/dist/path-or.js.map +1 -1
  421. package/dist/pick-by.cjs +2 -1
  422. package/dist/pick-by.cjs.map +1 -0
  423. package/dist/pick-by.js +1 -1
  424. package/dist/pick-by.js.map +1 -1
  425. package/dist/pick.cjs +2 -1
  426. package/dist/pick.cjs.map +1 -0
  427. package/dist/pick.js +1 -1
  428. package/dist/pick.js.map +1 -1
  429. package/dist/pipe.cjs +2 -1
  430. package/dist/pipe.cjs.map +1 -0
  431. package/dist/pipe.js +2 -1
  432. package/dist/pipe.js.map +1 -0
  433. package/dist/piped.cjs +2 -1
  434. package/dist/piped.cjs.map +1 -0
  435. package/dist/piped.js +1 -1
  436. package/dist/piped.js.map +1 -1
  437. package/dist/product.cjs +2 -1
  438. package/dist/product.cjs.map +1 -0
  439. package/dist/product.js +1 -1
  440. package/dist/product.js.map +1 -1
  441. package/dist/prop.cjs +2 -1
  442. package/dist/prop.cjs.map +1 -0
  443. package/dist/prop.js.map +1 -1
  444. package/dist/pull-object.cjs +2 -1
  445. package/dist/pull-object.cjs.map +1 -0
  446. package/dist/pull-object.js +1 -1
  447. package/dist/pull-object.js.map +1 -1
  448. package/dist/random-big-int.cjs +2 -0
  449. package/dist/random-big-int.cjs.map +1 -0
  450. package/dist/random-big-int.js +2 -0
  451. package/dist/random-big-int.js.map +1 -0
  452. package/dist/random-integer.cjs +2 -1
  453. package/dist/random-integer.cjs.map +1 -0
  454. package/dist/random-integer.js +1 -1
  455. package/dist/random-integer.js.map +1 -1
  456. package/dist/random-string.cjs +2 -1
  457. package/dist/random-string.cjs.map +1 -0
  458. package/dist/random-string.js +1 -1
  459. package/dist/random-string.js.map +1 -1
  460. package/dist/range.cjs +2 -1
  461. package/dist/range.cjs.map +1 -0
  462. package/dist/range.js +1 -1
  463. package/dist/range.js.map +1 -1
  464. package/dist/rank-by.cjs +2 -1
  465. package/dist/rank-by.cjs.map +1 -0
  466. package/dist/rank-by.js +1 -1
  467. package/dist/rank-by.js.map +1 -1
  468. package/dist/reduce.cjs +2 -1
  469. package/dist/reduce.cjs.map +1 -0
  470. package/dist/reduce.js +1 -1
  471. package/dist/reduce.js.map +1 -1
  472. package/dist/reverse.cjs +2 -1
  473. package/dist/reverse.cjs.map +1 -0
  474. package/dist/reverse.js +1 -1
  475. package/dist/reverse.js.map +1 -1
  476. package/dist/round.cjs +2 -1
  477. package/dist/round.cjs.map +1 -0
  478. package/dist/round.js +1 -1
  479. package/dist/round.js.map +1 -1
  480. package/dist/sample.cjs +2 -1
  481. package/dist/sample.cjs.map +1 -0
  482. package/dist/sample.js +1 -1
  483. package/dist/sample.js.map +1 -1
  484. package/dist/set-path.cjs +2 -1
  485. package/dist/set-path.cjs.map +1 -0
  486. package/dist/set-path.js +1 -1
  487. package/dist/set-path.js.map +1 -1
  488. package/dist/set.cjs +2 -1
  489. package/dist/set.cjs.map +1 -0
  490. package/dist/set.js +1 -1
  491. package/dist/set.js.map +1 -1
  492. package/dist/shuffle.cjs +2 -1
  493. package/dist/shuffle.cjs.map +1 -0
  494. package/dist/shuffle.js +1 -1
  495. package/dist/shuffle.js.map +1 -1
  496. package/dist/sleep.cjs +2 -1
  497. package/dist/sleep.cjs.map +1 -0
  498. package/dist/slice-string.cjs +2 -1
  499. package/dist/slice-string.cjs.map +1 -0
  500. package/dist/slice-string.js.map +1 -1
  501. package/dist/slugify.cjs +2 -1
  502. package/dist/slugify.cjs.map +1 -0
  503. package/dist/sort-by.cjs +2 -1
  504. package/dist/sort-by.cjs.map +1 -0
  505. package/dist/sort-by.js +1 -1
  506. package/dist/sort-by.js.map +1 -1
  507. package/dist/sort.cjs +2 -1
  508. package/dist/sort.cjs.map +1 -0
  509. package/dist/sort.js +1 -1
  510. package/dist/sort.js.map +1 -1
  511. package/dist/sorted-index-by.cjs +2 -1
  512. package/dist/sorted-index-by.cjs.map +1 -0
  513. package/dist/sorted-index-by.js +1 -1
  514. package/dist/sorted-index-by.js.map +1 -1
  515. package/dist/sorted-index-with.cjs +2 -1
  516. package/dist/sorted-index-with.cjs.map +1 -0
  517. package/dist/sorted-index-with.js +1 -1
  518. package/dist/sorted-index-with.js.map +1 -1
  519. package/dist/sorted-index.cjs +2 -1
  520. package/dist/sorted-index.cjs.map +1 -0
  521. package/dist/sorted-index.js +1 -1
  522. package/dist/sorted-index.js.map +1 -1
  523. package/dist/sorted-last-index-by.cjs +2 -1
  524. package/dist/sorted-last-index-by.cjs.map +1 -0
  525. package/dist/sorted-last-index-by.js +1 -1
  526. package/dist/sorted-last-index-by.js.map +1 -1
  527. package/dist/sorted-last-index.cjs +2 -1
  528. package/dist/sorted-last-index.cjs.map +1 -0
  529. package/dist/sorted-last-index.js +1 -1
  530. package/dist/sorted-last-index.js.map +1 -1
  531. package/dist/splice.cjs +2 -1
  532. package/dist/splice.cjs.map +1 -0
  533. package/dist/splice.js +1 -1
  534. package/dist/splice.js.map +1 -1
  535. package/dist/split-at.cjs +2 -1
  536. package/dist/split-at.cjs.map +1 -0
  537. package/dist/split-at.js +1 -1
  538. package/dist/split-at.js.map +1 -1
  539. package/dist/split-when.cjs +2 -1
  540. package/dist/split-when.cjs.map +1 -0
  541. package/dist/split-when.js +1 -1
  542. package/dist/split-when.js.map +1 -1
  543. package/dist/split.cjs +2 -1
  544. package/dist/split.cjs.map +1 -0
  545. package/dist/split.js.map +1 -1
  546. package/dist/starts-with.cjs +2 -0
  547. package/dist/starts-with.cjs.map +1 -0
  548. package/dist/starts-with.js +2 -0
  549. package/dist/starts-with.js.map +1 -0
  550. package/dist/string-to-path.cjs +2 -1
  551. package/dist/string-to-path.cjs.map +1 -0
  552. package/dist/string-to-path.js.map +1 -1
  553. package/dist/subtract.cjs +2 -1
  554. package/dist/subtract.cjs.map +1 -0
  555. package/dist/subtract.js +1 -1
  556. package/dist/subtract.js.map +1 -1
  557. package/dist/sum-by.cjs +2 -1
  558. package/dist/sum-by.cjs.map +1 -0
  559. package/dist/sum-by.js +1 -1
  560. package/dist/sum-by.js.map +1 -1
  561. package/dist/sum.cjs +2 -1
  562. package/dist/sum.cjs.map +1 -0
  563. package/dist/sum.js +1 -1
  564. package/dist/sum.js.map +1 -1
  565. package/dist/swap-in-place-BzNaxwB3.js +2 -0
  566. package/dist/swap-in-place-BzNaxwB3.js.map +1 -0
  567. package/dist/swap-in-place-D1vasegg.cjs +2 -0
  568. package/dist/swap-in-place-D1vasegg.cjs.map +1 -0
  569. package/dist/swap-indices.cjs +2 -1
  570. package/dist/swap-indices.cjs.map +1 -0
  571. package/dist/swap-indices.js +1 -1
  572. package/dist/swap-indices.js.map +1 -1
  573. package/dist/swap-props.cjs +2 -1
  574. package/dist/swap-props.cjs.map +1 -0
  575. package/dist/swap-props.js +1 -1
  576. package/dist/swap-props.js.map +1 -1
  577. package/dist/take-first-by.cjs +2 -1
  578. package/dist/take-first-by.cjs.map +1 -0
  579. package/dist/take-first-by.js +1 -1
  580. package/dist/take-first-by.js.map +1 -1
  581. package/dist/take-last-while.cjs +2 -1
  582. package/dist/take-last-while.cjs.map +1 -0
  583. package/dist/take-last-while.js +1 -1
  584. package/dist/take-last-while.js.map +1 -1
  585. package/dist/take-last.cjs +2 -1
  586. package/dist/take-last.cjs.map +1 -0
  587. package/dist/take-last.js +1 -1
  588. package/dist/take-last.js.map +1 -1
  589. package/dist/take-while.cjs +2 -1
  590. package/dist/take-while.cjs.map +1 -0
  591. package/dist/take-while.js +1 -1
  592. package/dist/take-while.js.map +1 -1
  593. package/dist/take.cjs +2 -1
  594. package/dist/take.cjs.map +1 -0
  595. package/dist/take.js +1 -1
  596. package/dist/take.js.map +1 -1
  597. package/dist/tap.cjs +2 -1
  598. package/dist/tap.cjs.map +1 -0
  599. package/dist/tap.js +1 -1
  600. package/dist/tap.js.map +1 -1
  601. package/dist/times.cjs +2 -1
  602. package/dist/times.cjs.map +1 -0
  603. package/dist/times.js +1 -1
  604. package/dist/times.js.map +1 -1
  605. package/dist/to-camel-case.cjs +2 -1
  606. package/dist/to-camel-case.cjs.map +1 -0
  607. package/dist/to-camel-case.js +1 -1
  608. package/dist/to-camel-case.js.map +1 -1
  609. package/dist/to-kebab-case.cjs +2 -1
  610. package/dist/to-kebab-case.cjs.map +1 -0
  611. package/dist/to-kebab-case.js +1 -1
  612. package/dist/to-kebab-case.js.map +1 -1
  613. package/dist/to-lower-case.cjs +2 -1
  614. package/dist/to-lower-case.cjs.map +1 -0
  615. package/dist/to-lower-case.js +1 -1
  616. package/dist/to-lower-case.js.map +1 -1
  617. package/dist/to-single-BunGuk7o.cjs +2 -0
  618. package/dist/to-single-BunGuk7o.cjs.map +1 -0
  619. package/dist/to-single-XEXXW73e.js +2 -0
  620. package/dist/to-single-XEXXW73e.js.map +1 -0
  621. package/dist/to-snake-case.cjs +2 -1
  622. package/dist/to-snake-case.cjs.map +1 -0
  623. package/dist/to-snake-case.js +1 -1
  624. package/dist/to-snake-case.js.map +1 -1
  625. package/dist/to-title-case.cjs +2 -1
  626. package/dist/to-title-case.cjs.map +1 -0
  627. package/dist/to-title-case.js +1 -1
  628. package/dist/to-title-case.js.map +1 -1
  629. package/dist/to-upper-case.cjs +2 -1
  630. package/dist/to-upper-case.cjs.map +1 -0
  631. package/dist/to-upper-case.js +1 -1
  632. package/dist/to-upper-case.js.map +1 -1
  633. package/dist/truncate.cjs +2 -0
  634. package/dist/truncate.cjs.map +1 -0
  635. package/dist/truncate.js +2 -0
  636. package/dist/truncate.js.map +1 -0
  637. package/dist/uncapitalize.cjs +2 -1
  638. package/dist/uncapitalize.cjs.map +1 -0
  639. package/dist/uncapitalize.js +1 -1
  640. package/dist/uncapitalize.js.map +1 -1
  641. package/dist/unique-by.cjs +2 -1
  642. package/dist/unique-by.cjs.map +1 -0
  643. package/dist/unique-by.js +1 -1
  644. package/dist/unique-by.js.map +1 -1
  645. package/dist/unique-with.cjs +2 -1
  646. package/dist/unique-with.cjs.map +1 -0
  647. package/dist/unique-with.js +1 -1
  648. package/dist/unique-with.js.map +1 -1
  649. package/dist/unique.cjs +2 -1
  650. package/dist/unique.cjs.map +1 -0
  651. package/dist/unique.js +1 -1
  652. package/dist/unique.js.map +1 -1
  653. package/dist/utility-evaluators-C8koSp9T.cjs +2 -0
  654. package/dist/utility-evaluators-C8koSp9T.cjs.map +1 -0
  655. package/dist/utility-evaluators-ZAaUtL2Z.js +2 -0
  656. package/dist/utility-evaluators-ZAaUtL2Z.js.map +1 -0
  657. package/dist/values.cjs +2 -1
  658. package/dist/values.cjs.map +1 -0
  659. package/dist/values.js +1 -1
  660. package/dist/values.js.map +1 -1
  661. package/dist/when.cjs +2 -0
  662. package/dist/when.cjs.map +1 -0
  663. package/dist/when.js +2 -0
  664. package/dist/when.js.map +1 -0
  665. package/dist/with-precision-CgRuf7Wl.js +2 -0
  666. package/dist/with-precision-CgRuf7Wl.js.map +1 -0
  667. package/dist/with-precision-DVi9325n.cjs +2 -0
  668. package/dist/with-precision-DVi9325n.cjs.map +1 -0
  669. package/dist/words-B9lX8euz.js +3 -0
  670. package/dist/words-B9lX8euz.js.map +1 -0
  671. package/dist/words-_h74qi45.cjs +3 -0
  672. package/dist/words-_h74qi45.cjs.map +1 -0
  673. package/dist/zip-with.cjs +2 -1
  674. package/dist/zip-with.cjs.map +1 -0
  675. package/dist/zip-with.js +1 -1
  676. package/dist/zip-with.js.map +1 -1
  677. package/dist/zip.cjs +2 -1
  678. package/dist/zip.cjs.map +1 -0
  679. package/dist/zip.js +1 -1
  680. package/dist/zip.js.map +1 -1
  681. package/package.json +16 -18
  682. package/dist/add-prop.d.cts +0 -46
  683. package/dist/add-prop.d.cts.map +0 -1
  684. package/dist/add-prop.d.ts +0 -46
  685. package/dist/add-prop.d.ts.map +0 -1
  686. package/dist/add.d.cts +0 -34
  687. package/dist/add.d.cts.map +0 -1
  688. package/dist/add.d.ts +0 -34
  689. package/dist/add.d.ts.map +0 -1
  690. package/dist/all-pass.d.cts +0 -37
  691. package/dist/all-pass.d.cts.map +0 -1
  692. package/dist/all-pass.d.ts +0 -37
  693. package/dist/all-pass.d.ts.map +0 -1
  694. package/dist/any-pass.d.cts +0 -37
  695. package/dist/any-pass.d.cts.map +0 -1
  696. package/dist/any-pass.d.ts +0 -37
  697. package/dist/any-pass.d.ts.map +0 -1
  698. package/dist/array-required-prefix-BFDM7eSS.d.cts +0 -26
  699. package/dist/array-required-prefix-BFDM7eSS.d.cts.map +0 -1
  700. package/dist/array-required-prefix-DwpaLy0D.d.ts +0 -26
  701. package/dist/array-required-prefix-DwpaLy0D.d.ts.map +0 -1
  702. package/dist/binary-search-cutoff-index-CN25H71A.js +0 -2
  703. package/dist/binary-search-cutoff-index-CN25H71A.js.map +0 -1
  704. package/dist/binary-search-cutoff-index-ClkmTCR5.cjs +0 -1
  705. package/dist/bounded-partial-CPc1XU57.d.ts +0 -17
  706. package/dist/bounded-partial-CPc1XU57.d.ts.map +0 -1
  707. package/dist/bounded-partial-CtOsGqxa.d.cts +0 -17
  708. package/dist/bounded-partial-CtOsGqxa.d.cts.map +0 -1
  709. package/dist/capitalize.d.cts +0 -53
  710. package/dist/capitalize.d.cts.map +0 -1
  711. package/dist/capitalize.d.ts +0 -53
  712. package/dist/capitalize.d.ts.map +0 -1
  713. package/dist/ceil.d.cts +0 -39
  714. package/dist/ceil.d.cts.map +0 -1
  715. package/dist/ceil.d.ts +0 -39
  716. package/dist/ceil.d.ts.map +0 -1
  717. package/dist/chunk.d.cts +0 -76
  718. package/dist/chunk.d.cts.map +0 -1
  719. package/dist/chunk.d.ts +0 -76
  720. package/dist/chunk.d.ts.map +0 -1
  721. package/dist/clamp.d.cts +0 -37
  722. package/dist/clamp.d.cts.map +0 -1
  723. package/dist/clamp.d.ts +0 -37
  724. package/dist/clamp.d.ts.map +0 -1
  725. package/dist/clamped-integer-subtract-C-AIuFhk.d.ts +0 -11
  726. package/dist/clamped-integer-subtract-C-AIuFhk.d.ts.map +0 -1
  727. package/dist/clamped-integer-subtract-DueGS_u_.d.cts +0 -11
  728. package/dist/clamped-integer-subtract-DueGS_u_.d.cts.map +0 -1
  729. package/dist/clone.d.cts +0 -35
  730. package/dist/clone.d.cts.map +0 -1
  731. package/dist/clone.d.ts +0 -35
  732. package/dist/clone.d.ts.map +0 -1
  733. package/dist/coerced-array-BKR9Bvsl.d.cts +0 -17
  734. package/dist/coerced-array-BKR9Bvsl.d.cts.map +0 -1
  735. package/dist/coerced-array-BfTLxqLo.d.ts +0 -17
  736. package/dist/coerced-array-BfTLxqLo.d.ts.map +0 -1
  737. package/dist/concat.d.cts +0 -41
  738. package/dist/concat.d.cts.map +0 -1
  739. package/dist/concat.d.ts +0 -41
  740. package/dist/concat.d.ts.map +0 -1
  741. package/dist/conditional-6ff4g8Sy.cjs +0 -1
  742. package/dist/conditional-Br0uqqc9.d.cts +0 -221
  743. package/dist/conditional-Br0uqqc9.d.cts.map +0 -1
  744. package/dist/conditional-CDez6uXp.d.ts +0 -221
  745. package/dist/conditional-CDez6uXp.d.ts.map +0 -1
  746. package/dist/conditional-WbmvQs8H.js +0 -2
  747. package/dist/conditional-WbmvQs8H.js.map +0 -1
  748. package/dist/conditional.d.cts +0 -2
  749. package/dist/conditional.d.ts +0 -2
  750. package/dist/constant.d.cts +0 -32
  751. package/dist/constant.d.cts.map +0 -1
  752. package/dist/constant.d.ts +0 -32
  753. package/dist/constant.d.ts.map +0 -1
  754. package/dist/count-by.d.cts +0 -42
  755. package/dist/count-by.d.cts.map +0 -1
  756. package/dist/count-by.d.ts +0 -42
  757. package/dist/count-by.d.ts.map +0 -1
  758. package/dist/curry-BsY0Z8jH.cjs +0 -1
  759. package/dist/curry-CKDQ1osk.d.ts +0 -70
  760. package/dist/curry-CKDQ1osk.d.ts.map +0 -1
  761. package/dist/curry-NmniqyJ0.js +0 -2
  762. package/dist/curry-NmniqyJ0.js.map +0 -1
  763. package/dist/curry-from-lazy-BCGvmhyS.cjs +0 -1
  764. package/dist/curry-from-lazy-PQ0BbG-7.js +0 -2
  765. package/dist/curry-from-lazy-PQ0BbG-7.js.map +0 -1
  766. package/dist/curry-mh6BKSIA.d.cts +0 -70
  767. package/dist/curry-mh6BKSIA.d.cts.map +0 -1
  768. package/dist/curry-order-rules-BoF09Dq2.d.cts +0 -48
  769. package/dist/curry-order-rules-BoF09Dq2.d.cts.map +0 -1
  770. package/dist/curry-order-rules-ClqHrs8_.cjs +0 -1
  771. package/dist/curry-order-rules-CoO4bk5I.d.ts +0 -48
  772. package/dist/curry-order-rules-CoO4bk5I.d.ts.map +0 -1
  773. package/dist/curry-order-rules-DwrF-_P1.js +0 -2
  774. package/dist/curry-order-rules-DwrF-_P1.js.map +0 -1
  775. package/dist/curry.d.cts +0 -2
  776. package/dist/curry.d.ts +0 -2
  777. package/dist/debounce.d.cts +0 -98
  778. package/dist/debounce.d.cts.map +0 -1
  779. package/dist/debounce.d.ts +0 -98
  780. package/dist/debounce.d.ts.map +0 -1
  781. package/dist/deduped-DdwAYzXs.d.cts +0 -23
  782. package/dist/deduped-DdwAYzXs.d.cts.map +0 -1
  783. package/dist/deduped-RY-1u-ns.d.ts +0 -23
  784. package/dist/deduped-RY-1u-ns.d.ts.map +0 -1
  785. package/dist/difference-with.d.cts +0 -48
  786. package/dist/difference-with.d.cts.map +0 -1
  787. package/dist/difference-with.d.ts +0 -48
  788. package/dist/difference-with.d.ts.map +0 -1
  789. package/dist/difference.d.cts +0 -37
  790. package/dist/difference.d.cts.map +0 -1
  791. package/dist/difference.d.ts +0 -37
  792. package/dist/difference.d.ts.map +0 -1
  793. package/dist/dist-8XtUY3ad.cjs +0 -114
  794. package/dist/dist-Bd1vawFi.js +0 -103
  795. package/dist/dist-Bd1vawFi.js.map +0 -1
  796. package/dist/divide.d.cts +0 -33
  797. package/dist/divide.d.cts.map +0 -1
  798. package/dist/divide.d.ts +0 -33
  799. package/dist/divide.d.ts.map +0 -1
  800. package/dist/do-nothing.d.cts +0 -28
  801. package/dist/do-nothing.d.cts.map +0 -1
  802. package/dist/do-nothing.d.ts +0 -28
  803. package/dist/do-nothing.d.ts.map +0 -1
  804. package/dist/drop-first-by.d.cts +0 -41
  805. package/dist/drop-first-by.d.cts.map +0 -1
  806. package/dist/drop-first-by.d.ts +0 -41
  807. package/dist/drop-first-by.d.ts.map +0 -1
  808. package/dist/drop-last-while.d.cts +0 -36
  809. package/dist/drop-last-while.d.cts.map +0 -1
  810. package/dist/drop-last-while.d.ts +0 -36
  811. package/dist/drop-last-while.d.ts.map +0 -1
  812. package/dist/drop-last.d.cts +0 -32
  813. package/dist/drop-last.d.cts.map +0 -1
  814. package/dist/drop-last.d.ts +0 -32
  815. package/dist/drop-last.d.ts.map +0 -1
  816. package/dist/drop-while.d.cts +0 -36
  817. package/dist/drop-while.d.cts.map +0 -1
  818. package/dist/drop-while.d.ts +0 -36
  819. package/dist/drop-while.d.ts.map +0 -1
  820. package/dist/drop.d.cts +0 -40
  821. package/dist/drop.d.cts.map +0 -1
  822. package/dist/drop.d.ts +0 -40
  823. package/dist/drop.d.ts.map +0 -1
  824. package/dist/entries.d.cts +0 -31
  825. package/dist/entries.d.cts.map +0 -1
  826. package/dist/entries.d.ts +0 -31
  827. package/dist/entries.d.ts.map +0 -1
  828. package/dist/enumerable-string-key-of-CZQf3ld_.d.ts +0 -17
  829. package/dist/enumerable-string-key-of-CZQf3ld_.d.ts.map +0 -1
  830. package/dist/enumerable-string-key-of-DhcNc5iz.d.cts +0 -17
  831. package/dist/enumerable-string-key-of-DhcNc5iz.d.cts.map +0 -1
  832. package/dist/enumerable-string-keyed-value-of-CRlVAvdp.d.ts +0 -12
  833. package/dist/enumerable-string-keyed-value-of-CRlVAvdp.d.ts.map +0 -1
  834. package/dist/enumerable-string-keyed-value-of-icm2q60J.d.cts +0 -12
  835. package/dist/enumerable-string-keyed-value-of-icm2q60J.d.cts.map +0 -1
  836. package/dist/evolve.d.cts +0 -101
  837. package/dist/evolve.d.cts.map +0 -1
  838. package/dist/evolve.d.ts +0 -101
  839. package/dist/evolve.d.ts.map +0 -1
  840. package/dist/filter.d.cts +0 -50
  841. package/dist/filter.d.cts.map +0 -1
  842. package/dist/filter.d.ts +0 -50
  843. package/dist/filter.d.ts.map +0 -1
  844. package/dist/filtered-array-C--8loav.d.cts +0 -22
  845. package/dist/filtered-array-C--8loav.d.cts.map +0 -1
  846. package/dist/filtered-array-wtIEwdU7.d.ts +0 -22
  847. package/dist/filtered-array-wtIEwdU7.d.ts.map +0 -1
  848. package/dist/find-index.d.cts +0 -50
  849. package/dist/find-index.d.cts.map +0 -1
  850. package/dist/find-index.d.ts +0 -50
  851. package/dist/find-index.d.ts.map +0 -1
  852. package/dist/find-last-index.d.cts +0 -50
  853. package/dist/find-last-index.d.cts.map +0 -1
  854. package/dist/find-last-index.d.ts +0 -50
  855. package/dist/find-last-index.d.ts.map +0 -1
  856. package/dist/find-last.d.cts +0 -62
  857. package/dist/find-last.d.cts.map +0 -1
  858. package/dist/find-last.d.ts +0 -62
  859. package/dist/find-last.d.ts.map +0 -1
  860. package/dist/find.d.cts +0 -64
  861. package/dist/find.d.cts.map +0 -1
  862. package/dist/find.d.ts +0 -64
  863. package/dist/find.d.ts.map +0 -1
  864. package/dist/first-by.d.cts +0 -60
  865. package/dist/first-by.d.cts.map +0 -1
  866. package/dist/first-by.d.ts +0 -60
  867. package/dist/first-by.d.ts.map +0 -1
  868. package/dist/first.d.cts +0 -40
  869. package/dist/first.d.cts.map +0 -1
  870. package/dist/first.d.ts +0 -40
  871. package/dist/first.d.ts.map +0 -1
  872. package/dist/flat-map.d.cts +0 -47
  873. package/dist/flat-map.d.cts.map +0 -1
  874. package/dist/flat-map.d.ts +0 -47
  875. package/dist/flat-map.d.ts.map +0 -1
  876. package/dist/flat.d.cts +0 -53
  877. package/dist/flat.d.cts.map +0 -1
  878. package/dist/flat.d.ts +0 -53
  879. package/dist/flat.d.ts.map +0 -1
  880. package/dist/floor.d.cts +0 -39
  881. package/dist/floor.d.cts.map +0 -1
  882. package/dist/floor.d.ts +0 -39
  883. package/dist/floor.d.ts.map +0 -1
  884. package/dist/for-each-obj.d.cts +0 -47
  885. package/dist/for-each-obj.d.cts.map +0 -1
  886. package/dist/for-each-obj.d.ts +0 -47
  887. package/dist/for-each-obj.d.ts.map +0 -1
  888. package/dist/for-each.d.cts +0 -54
  889. package/dist/for-each.d.cts.map +0 -1
  890. package/dist/for-each.d.ts +0 -54
  891. package/dist/for-each.d.ts.map +0 -1
  892. package/dist/from-entries.d.cts +0 -68
  893. package/dist/from-entries.d.cts.map +0 -1
  894. package/dist/from-entries.d.ts +0 -68
  895. package/dist/from-entries.d.ts.map +0 -1
  896. package/dist/from-keys.d.cts +0 -60
  897. package/dist/from-keys.d.cts.map +0 -1
  898. package/dist/from-keys.d.ts +0 -60
  899. package/dist/from-keys.d.ts.map +0 -1
  900. package/dist/funnel.d.cts +0 -155
  901. package/dist/funnel.d.cts.map +0 -1
  902. package/dist/funnel.d.ts +0 -155
  903. package/dist/funnel.d.ts.map +0 -1
  904. package/dist/funnel.lodash-debounce-with-cached-value.test.cjs +0 -1
  905. package/dist/funnel.lodash-debounce-with-cached-value.test.d.cts +0 -1
  906. package/dist/funnel.lodash-debounce-with-cached-value.test.d.ts +0 -1
  907. package/dist/funnel.lodash-debounce-with-cached-value.test.js +0 -2
  908. package/dist/funnel.lodash-debounce-with-cached-value.test.js.map +0 -1
  909. package/dist/funnel.lodash-debounce.test.cjs +0 -1
  910. package/dist/funnel.lodash-debounce.test.d.cts +0 -1
  911. package/dist/funnel.lodash-debounce.test.d.ts +0 -1
  912. package/dist/funnel.lodash-debounce.test.js +0 -2
  913. package/dist/funnel.lodash-debounce.test.js.map +0 -1
  914. package/dist/funnel.lodash-throttle-with-cached-value.test.cjs +0 -1
  915. package/dist/funnel.lodash-throttle-with-cached-value.test.d.cts +0 -1
  916. package/dist/funnel.lodash-throttle-with-cached-value.test.d.ts +0 -1
  917. package/dist/funnel.lodash-throttle-with-cached-value.test.js +0 -2
  918. package/dist/funnel.lodash-throttle-with-cached-value.test.js.map +0 -1
  919. package/dist/funnel.lodash-throttle.test.cjs +0 -1
  920. package/dist/funnel.lodash-throttle.test.d.cts +0 -1
  921. package/dist/funnel.lodash-throttle.test.d.ts +0 -1
  922. package/dist/funnel.lodash-throttle.test.js +0 -2
  923. package/dist/funnel.lodash-throttle.test.js.map +0 -1
  924. package/dist/funnel.perkakas-debounce.test.cjs +0 -1
  925. package/dist/funnel.perkakas-debounce.test.d.cts +0 -1
  926. package/dist/funnel.perkakas-debounce.test.d.ts +0 -1
  927. package/dist/funnel.perkakas-debounce.test.js +0 -2
  928. package/dist/funnel.perkakas-debounce.test.js.map +0 -1
  929. package/dist/funnel.reference-batch.test.cjs +0 -1
  930. package/dist/funnel.reference-batch.test.d.cts +0 -1
  931. package/dist/funnel.reference-batch.test.d.ts +0 -1
  932. package/dist/funnel.reference-batch.test.js +0 -2
  933. package/dist/funnel.reference-batch.test.js.map +0 -1
  934. package/dist/funnel.test-d.cjs +0 -1
  935. package/dist/funnel.test-d.d.cts +0 -1
  936. package/dist/funnel.test-d.d.ts +0 -1
  937. package/dist/funnel.test-d.js +0 -2
  938. package/dist/funnel.test-d.js.map +0 -1
  939. package/dist/funnel.test.cjs +0 -1
  940. package/dist/funnel.test.d.cts +0 -1
  941. package/dist/funnel.test.d.ts +0 -1
  942. package/dist/funnel.test.js +0 -2
  943. package/dist/funnel.test.js.map +0 -1
  944. package/dist/group-by-prop.d.cts +0 -89
  945. package/dist/group-by-prop.d.cts.map +0 -1
  946. package/dist/group-by-prop.d.ts +0 -89
  947. package/dist/group-by-prop.d.ts.map +0 -1
  948. package/dist/group-by.d.cts +0 -69
  949. package/dist/group-by.d.cts.map +0 -1
  950. package/dist/group-by.d.ts +0 -69
  951. package/dist/group-by.d.ts.map +0 -1
  952. package/dist/has-at-least-BXwOPLQK.cjs +0 -1
  953. package/dist/has-at-least-Coy9sM-B.js +0 -2
  954. package/dist/has-at-least-Coy9sM-B.js.map +0 -1
  955. package/dist/has-at-least.d.cts +0 -59
  956. package/dist/has-at-least.d.cts.map +0 -1
  957. package/dist/has-at-least.d.ts +0 -59
  958. package/dist/has-at-least.d.ts.map +0 -1
  959. package/dist/has-sub-object.d.cts +0 -44
  960. package/dist/has-sub-object.d.cts.map +0 -1
  961. package/dist/has-sub-object.d.ts +0 -44
  962. package/dist/has-sub-object.d.ts.map +0 -1
  963. package/dist/heap-BhpfhYWj.js +0 -2
  964. package/dist/heap-BhpfhYWj.js.map +0 -1
  965. package/dist/heap-DWDhbxfx.cjs +0 -1
  966. package/dist/human-readable-file-size.d.cts +0 -17
  967. package/dist/human-readable-file-size.d.cts.map +0 -1
  968. package/dist/human-readable-file-size.d.ts +0 -17
  969. package/dist/human-readable-file-size.d.ts.map +0 -1
  970. package/dist/identity.d.cts +0 -22
  971. package/dist/identity.d.cts.map +0 -1
  972. package/dist/identity.d.ts +0 -22
  973. package/dist/identity.d.ts.map +0 -1
  974. package/dist/index-by.d.cts +0 -53
  975. package/dist/index-by.d.cts.map +0 -1
  976. package/dist/index-by.d.ts +0 -53
  977. package/dist/index-by.d.ts.map +0 -1
  978. package/dist/int-range-inclusive-BlGXX6Cz.d.ts +0 -15
  979. package/dist/int-range-inclusive-BlGXX6Cz.d.ts.map +0 -1
  980. package/dist/int-range-inclusive-KocNpK0p.d.cts +0 -15
  981. package/dist/int-range-inclusive-KocNpK0p.d.cts.map +0 -1
  982. package/dist/intersection-with.d.cts +0 -54
  983. package/dist/intersection-with.d.cts.map +0 -1
  984. package/dist/intersection-with.d.ts +0 -54
  985. package/dist/intersection-with.d.ts.map +0 -1
  986. package/dist/intersection.d.cts +0 -37
  987. package/dist/intersection.d.cts.map +0 -1
  988. package/dist/intersection.d.ts +0 -37
  989. package/dist/intersection.d.ts.map +0 -1
  990. package/dist/invert.d.cts +0 -33
  991. package/dist/invert.d.cts.map +0 -1
  992. package/dist/invert.d.ts +0 -33
  993. package/dist/invert.d.ts.map +0 -1
  994. package/dist/is-array.d.cts +0 -21
  995. package/dist/is-array.d.cts.map +0 -1
  996. package/dist/is-array.d.ts +0 -21
  997. package/dist/is-array.d.ts.map +0 -1
  998. package/dist/is-big-int.d.cts +0 -22
  999. package/dist/is-big-int.d.cts.map +0 -1
  1000. package/dist/is-big-int.d.ts +0 -22
  1001. package/dist/is-big-int.d.ts.map +0 -1
  1002. package/dist/is-boolean.d.cts +0 -21
  1003. package/dist/is-boolean.d.cts.map +0 -1
  1004. package/dist/is-boolean.d.ts +0 -21
  1005. package/dist/is-boolean.d.ts.map +0 -1
  1006. package/dist/is-bounded-record-Bx4n8QB0.d.ts +0 -34
  1007. package/dist/is-bounded-record-Bx4n8QB0.d.ts.map +0 -1
  1008. package/dist/is-bounded-record-DV6ZQk9H.d.cts +0 -34
  1009. package/dist/is-bounded-record-DV6ZQk9H.d.cts.map +0 -1
  1010. package/dist/is-date.d.cts +0 -17
  1011. package/dist/is-date.d.cts.map +0 -1
  1012. package/dist/is-date.d.ts +0 -17
  1013. package/dist/is-date.d.ts.map +0 -1
  1014. package/dist/is-deep-equal.d.cts +0 -71
  1015. package/dist/is-deep-equal.d.cts.map +0 -1
  1016. package/dist/is-deep-equal.d.ts +0 -71
  1017. package/dist/is-deep-equal.d.ts.map +0 -1
  1018. package/dist/is-defined.d.cts +0 -19
  1019. package/dist/is-defined.d.cts.map +0 -1
  1020. package/dist/is-defined.d.ts +0 -19
  1021. package/dist/is-defined.d.ts.map +0 -1
  1022. package/dist/is-empty.d.cts +0 -35
  1023. package/dist/is-empty.d.cts.map +0 -1
  1024. package/dist/is-empty.d.ts +0 -35
  1025. package/dist/is-empty.d.ts.map +0 -1
  1026. package/dist/is-emptyish-9tX94IVx.d.cts +0 -73
  1027. package/dist/is-emptyish-9tX94IVx.d.cts.map +0 -1
  1028. package/dist/is-emptyish-DVFGJe-T.d.ts +0 -73
  1029. package/dist/is-emptyish-DVFGJe-T.d.ts.map +0 -1
  1030. package/dist/is-emptyish.d.cts +0 -2
  1031. package/dist/is-emptyish.d.ts +0 -2
  1032. package/dist/is-emptyish.test-d.cjs +0 -1
  1033. package/dist/is-emptyish.test-d.d.cts +0 -8
  1034. package/dist/is-emptyish.test-d.d.cts.map +0 -1
  1035. package/dist/is-emptyish.test-d.d.ts +0 -8
  1036. package/dist/is-emptyish.test-d.d.ts.map +0 -1
  1037. package/dist/is-emptyish.test-d.js +0 -2
  1038. package/dist/is-emptyish.test-d.js.map +0 -1
  1039. package/dist/is-emptyish.test.cjs +0 -1
  1040. package/dist/is-emptyish.test.d.cts +0 -1
  1041. package/dist/is-emptyish.test.d.ts +0 -1
  1042. package/dist/is-emptyish.test.js +0 -2
  1043. package/dist/is-emptyish.test.js.map +0 -1
  1044. package/dist/is-error.d.cts +0 -18
  1045. package/dist/is-error.d.cts.map +0 -1
  1046. package/dist/is-error.d.ts +0 -18
  1047. package/dist/is-error.d.ts.map +0 -1
  1048. package/dist/is-function.d.cts +0 -21
  1049. package/dist/is-function.d.cts.map +0 -1
  1050. package/dist/is-function.d.ts +0 -21
  1051. package/dist/is-function.d.ts.map +0 -1
  1052. package/dist/is-included-in.d.cts +0 -109
  1053. package/dist/is-included-in.d.cts.map +0 -1
  1054. package/dist/is-included-in.d.ts +0 -109
  1055. package/dist/is-included-in.d.ts.map +0 -1
  1056. package/dist/is-non-null.d.cts +0 -19
  1057. package/dist/is-non-null.d.cts.map +0 -1
  1058. package/dist/is-non-null.d.ts +0 -19
  1059. package/dist/is-non-null.d.ts.map +0 -1
  1060. package/dist/is-non-nullish.d.cts +0 -20
  1061. package/dist/is-non-nullish.d.cts.map +0 -1
  1062. package/dist/is-non-nullish.d.ts +0 -20
  1063. package/dist/is-non-nullish.d.ts.map +0 -1
  1064. package/dist/is-not.d.cts +0 -19
  1065. package/dist/is-not.d.cts.map +0 -1
  1066. package/dist/is-not.d.ts +0 -19
  1067. package/dist/is-not.d.ts.map +0 -1
  1068. package/dist/is-nullish.d.cts +0 -23
  1069. package/dist/is-nullish.d.cts.map +0 -1
  1070. package/dist/is-nullish.d.ts +0 -23
  1071. package/dist/is-nullish.d.ts.map +0 -1
  1072. package/dist/is-number.d.cts +0 -22
  1073. package/dist/is-number.d.cts.map +0 -1
  1074. package/dist/is-number.d.ts +0 -22
  1075. package/dist/is-number.d.ts.map +0 -1
  1076. package/dist/is-object-type.d.cts +0 -35
  1077. package/dist/is-object-type.d.cts.map +0 -1
  1078. package/dist/is-object-type.d.ts +0 -35
  1079. package/dist/is-object-type.d.ts.map +0 -1
  1080. package/dist/is-plain-object.d.cts +0 -33
  1081. package/dist/is-plain-object.d.cts.map +0 -1
  1082. package/dist/is-plain-object.d.ts +0 -33
  1083. package/dist/is-plain-object.d.ts.map +0 -1
  1084. package/dist/is-promise.d.cts +0 -18
  1085. package/dist/is-promise.d.cts.map +0 -1
  1086. package/dist/is-promise.d.ts +0 -18
  1087. package/dist/is-promise.d.ts.map +0 -1
  1088. package/dist/is-shallow-equal.d.cts +0 -71
  1089. package/dist/is-shallow-equal.d.cts.map +0 -1
  1090. package/dist/is-shallow-equal.d.ts +0 -71
  1091. package/dist/is-shallow-equal.d.ts.map +0 -1
  1092. package/dist/is-strict-equal.d.cts +0 -67
  1093. package/dist/is-strict-equal.d.cts.map +0 -1
  1094. package/dist/is-strict-equal.d.ts +0 -67
  1095. package/dist/is-strict-equal.d.ts.map +0 -1
  1096. package/dist/is-string.d.cts +0 -20
  1097. package/dist/is-string.d.cts.map +0 -1
  1098. package/dist/is-string.d.ts +0 -20
  1099. package/dist/is-string.d.ts.map +0 -1
  1100. package/dist/is-symbol.d.cts +0 -20
  1101. package/dist/is-symbol.d.cts.map +0 -1
  1102. package/dist/is-symbol.d.ts +0 -20
  1103. package/dist/is-symbol.d.ts.map +0 -1
  1104. package/dist/is-truthy.d.cts +0 -21
  1105. package/dist/is-truthy.d.cts.map +0 -1
  1106. package/dist/is-truthy.d.ts +0 -21
  1107. package/dist/is-truthy.d.ts.map +0 -1
  1108. package/dist/iterable-container-1TN3AJ3s.d.cts +0 -17
  1109. package/dist/iterable-container-1TN3AJ3s.d.cts.map +0 -1
  1110. package/dist/iterable-container-Dv5vSKht.d.ts +0 -17
  1111. package/dist/iterable-container-Dv5vSKht.d.ts.map +0 -1
  1112. package/dist/join.d.cts +0 -46
  1113. package/dist/join.d.cts.map +0 -1
  1114. package/dist/join.d.ts +0 -46
  1115. package/dist/join.d.ts.map +0 -1
  1116. package/dist/key-codes.d.cts +0 -29
  1117. package/dist/key-codes.d.cts.map +0 -1
  1118. package/dist/key-codes.d.ts +0 -29
  1119. package/dist/key-codes.d.ts.map +0 -1
  1120. package/dist/keys.d.cts +0 -38
  1121. package/dist/keys.d.cts.map +0 -1
  1122. package/dist/keys.d.ts +0 -38
  1123. package/dist/keys.d.ts.map +0 -1
  1124. package/dist/last.d.cts +0 -37
  1125. package/dist/last.d.cts.map +0 -1
  1126. package/dist/last.d.ts +0 -37
  1127. package/dist/last.d.ts.map +0 -1
  1128. package/dist/lazy-data-last-impl-D4kLybyP.cjs +0 -1
  1129. package/dist/lazy-data-last-impl-R05wr4K6.js +0 -2
  1130. package/dist/lazy-data-last-impl-R05wr4K6.js.map +0 -1
  1131. package/dist/length.d.cts +0 -28
  1132. package/dist/length.d.cts.map +0 -1
  1133. package/dist/length.d.ts +0 -28
  1134. package/dist/length.d.ts.map +0 -1
  1135. package/dist/magic-string.es-94aXgwpn.js +0 -15
  1136. package/dist/magic-string.es-94aXgwpn.js.map +0 -1
  1137. package/dist/magic-string.es-CGYIWauW.cjs +0 -15
  1138. package/dist/map-keys.d.cts +0 -34
  1139. package/dist/map-keys.d.cts.map +0 -1
  1140. package/dist/map-keys.d.ts +0 -34
  1141. package/dist/map-keys.d.ts.map +0 -1
  1142. package/dist/map-to-obj.d.cts +0 -68
  1143. package/dist/map-to-obj.d.cts.map +0 -1
  1144. package/dist/map-to-obj.d.ts +0 -68
  1145. package/dist/map-to-obj.d.ts.map +0 -1
  1146. package/dist/map-values.d.cts +0 -42
  1147. package/dist/map-values.d.cts.map +0 -1
  1148. package/dist/map-values.d.ts +0 -42
  1149. package/dist/map-values.d.ts.map +0 -1
  1150. package/dist/map-with-feedback.d.cts +0 -54
  1151. package/dist/map-with-feedback.d.cts.map +0 -1
  1152. package/dist/map-with-feedback.d.ts +0 -54
  1153. package/dist/map-with-feedback.d.ts.map +0 -1
  1154. package/dist/map.d.cts +0 -47
  1155. package/dist/map.d.cts.map +0 -1
  1156. package/dist/map.d.ts +0 -47
  1157. package/dist/map.d.ts.map +0 -1
  1158. package/dist/mapped-BbrC9t3s.d.ts +0 -7
  1159. package/dist/mapped-BbrC9t3s.d.ts.map +0 -1
  1160. package/dist/mapped-CkRNfTnY.d.cts +0 -7
  1161. package/dist/mapped-CkRNfTnY.d.cts.map +0 -1
  1162. package/dist/mean-by.d.cts +0 -35
  1163. package/dist/mean-by.d.cts.map +0 -1
  1164. package/dist/mean-by.d.ts +0 -35
  1165. package/dist/mean-by.d.ts.map +0 -1
  1166. package/dist/merge-all-CISawx-J.d.cts +0 -42
  1167. package/dist/merge-all-CISawx-J.d.cts.map +0 -1
  1168. package/dist/merge-all-DJ6n7R1b.d.ts +0 -42
  1169. package/dist/merge-all-DJ6n7R1b.d.ts.map +0 -1
  1170. package/dist/merge-all.d.cts +0 -2
  1171. package/dist/merge-all.d.ts +0 -2
  1172. package/dist/merge-deep.d.cts +0 -37
  1173. package/dist/merge-deep.d.cts.map +0 -1
  1174. package/dist/merge-deep.d.ts +0 -37
  1175. package/dist/merge-deep.d.ts.map +0 -1
  1176. package/dist/merge.d.cts +0 -57
  1177. package/dist/merge.d.cts.map +0 -1
  1178. package/dist/merge.d.ts +0 -57
  1179. package/dist/merge.d.ts.map +0 -1
  1180. package/dist/multiply.d.cts +0 -33
  1181. package/dist/multiply.d.cts.map +0 -1
  1182. package/dist/multiply.d.ts +0 -33
  1183. package/dist/multiply.d.ts.map +0 -1
  1184. package/dist/n-tuple-BkMobYQ9.d.cts +0 -12
  1185. package/dist/n-tuple-BkMobYQ9.d.cts.map +0 -1
  1186. package/dist/n-tuple-zo5g_mSL.d.ts +0 -12
  1187. package/dist/n-tuple-zo5g_mSL.d.ts.map +0 -1
  1188. package/dist/narrowed-to-B7tkuY2k.d.ts +0 -15
  1189. package/dist/narrowed-to-B7tkuY2k.d.ts.map +0 -1
  1190. package/dist/narrowed-to-D_6H-aZW.d.cts +0 -15
  1191. package/dist/narrowed-to-D_6H-aZW.d.cts.map +0 -1
  1192. package/dist/non-empty-array-DHAKSw6t.d.ts +0 -5
  1193. package/dist/non-empty-array-DHAKSw6t.d.ts.map +0 -1
  1194. package/dist/non-empty-array-NDjbHRjk.d.cts +0 -5
  1195. package/dist/non-empty-array-NDjbHRjk.d.cts.map +0 -1
  1196. package/dist/nth-by-Bby4vIbZ.cjs +0 -1
  1197. package/dist/nth-by-JP3-Htbo.js +0 -2
  1198. package/dist/nth-by-JP3-Htbo.js.map +0 -1
  1199. package/dist/nth-by.d.cts +0 -42
  1200. package/dist/nth-by.d.cts.map +0 -1
  1201. package/dist/nth-by.d.ts +0 -42
  1202. package/dist/nth-by.d.ts.map +0 -1
  1203. package/dist/obj-of.d.cts +0 -27
  1204. package/dist/obj-of.d.cts.map +0 -1
  1205. package/dist/obj-of.d.ts +0 -27
  1206. package/dist/obj-of.d.ts.map +0 -1
  1207. package/dist/omit-DI8DRDHj.d.ts +0 -71
  1208. package/dist/omit-DI8DRDHj.d.ts.map +0 -1
  1209. package/dist/omit-DQiCiWAg.d.cts +0 -71
  1210. package/dist/omit-DQiCiWAg.d.cts.map +0 -1
  1211. package/dist/omit-by.d.cts +0 -52
  1212. package/dist/omit-by.d.cts.map +0 -1
  1213. package/dist/omit-by.d.ts +0 -52
  1214. package/dist/omit-by.d.ts.map +0 -1
  1215. package/dist/omit.d.cts +0 -2
  1216. package/dist/omit.d.ts +0 -2
  1217. package/dist/once.d.cts +0 -17
  1218. package/dist/once.d.cts.map +0 -1
  1219. package/dist/once.d.ts +0 -17
  1220. package/dist/once.d.ts.map +0 -1
  1221. package/dist/only.d.cts +0 -34
  1222. package/dist/only.d.cts.map +0 -1
  1223. package/dist/only.d.ts +0 -34
  1224. package/dist/only.d.ts.map +0 -1
  1225. package/dist/optional-options-with-defaults-BFaBSKkF.d.ts +0 -12
  1226. package/dist/optional-options-with-defaults-BFaBSKkF.d.ts.map +0 -1
  1227. package/dist/optional-options-with-defaults-BZVW8GfC.d.cts +0 -12
  1228. package/dist/optional-options-with-defaults-BZVW8GfC.d.cts.map +0 -1
  1229. package/dist/partial-array-CQF5oggb.d.cts +0 -12
  1230. package/dist/partial-array-CQF5oggb.d.cts.map +0 -1
  1231. package/dist/partial-array-DU-2Vkyx.d.ts +0 -12
  1232. package/dist/partial-array-DU-2Vkyx.d.ts.map +0 -1
  1233. package/dist/partition-by-union-BztEpKVh.d.cts +0 -20
  1234. package/dist/partition-by-union-BztEpKVh.d.cts.map +0 -1
  1235. package/dist/partition-by-union-DnfiiEMU.d.ts +0 -20
  1236. package/dist/partition-by-union-DnfiiEMU.d.ts.map +0 -1
  1237. package/dist/partition.d.cts +0 -51
  1238. package/dist/partition.d.cts.map +0 -1
  1239. package/dist/partition.d.ts +0 -51
  1240. package/dist/partition.d.ts.map +0 -1
  1241. package/dist/path-or.d.cts +0 -87
  1242. package/dist/path-or.d.cts.map +0 -1
  1243. package/dist/path-or.d.ts +0 -87
  1244. package/dist/path-or.d.ts.map +0 -1
  1245. package/dist/perkakas-type-error-B9ULNhW0.d.ts +0 -19
  1246. package/dist/perkakas-type-error-B9ULNhW0.d.ts.map +0 -1
  1247. package/dist/perkakas-type-error-ClCCHBW1.d.cts +0 -19
  1248. package/dist/perkakas-type-error-ClCCHBW1.d.cts.map +0 -1
  1249. package/dist/pick-by.d.cts +0 -68
  1250. package/dist/pick-by.d.cts.map +0 -1
  1251. package/dist/pick-by.d.ts +0 -68
  1252. package/dist/pick-by.d.ts.map +0 -1
  1253. package/dist/pick.d.cts +0 -55
  1254. package/dist/pick.d.cts.map +0 -1
  1255. package/dist/pick.d.ts +0 -55
  1256. package/dist/pick.d.ts.map +0 -1
  1257. package/dist/pipe-CB7Lufqv.cjs +0 -1
  1258. package/dist/pipe-CZKusDA-.js +0 -2
  1259. package/dist/pipe-CZKusDA-.js.map +0 -1
  1260. package/dist/pipe.d.cts +0 -106
  1261. package/dist/pipe.d.cts.map +0 -1
  1262. package/dist/pipe.d.ts +0 -106
  1263. package/dist/pipe.d.ts.map +0 -1
  1264. package/dist/piped.d.cts +0 -31
  1265. package/dist/piped.d.cts.map +0 -1
  1266. package/dist/piped.d.ts +0 -31
  1267. package/dist/piped.d.ts.map +0 -1
  1268. package/dist/product.d.cts +0 -52
  1269. package/dist/product.d.cts.map +0 -1
  1270. package/dist/product.d.ts +0 -52
  1271. package/dist/product.d.ts.map +0 -1
  1272. package/dist/prop-D-4cFXSd.d.cts +0 -85
  1273. package/dist/prop-D-4cFXSd.d.cts.map +0 -1
  1274. package/dist/prop-DL-oRBeN.d.ts +0 -85
  1275. package/dist/prop-DL-oRBeN.d.ts.map +0 -1
  1276. package/dist/prop.d.cts +0 -2
  1277. package/dist/prop.d.ts +0 -2
  1278. package/dist/pull-object.d.cts +0 -70
  1279. package/dist/pull-object.d.cts.map +0 -1
  1280. package/dist/pull-object.d.ts +0 -70
  1281. package/dist/pull-object.d.ts.map +0 -1
  1282. package/dist/random-integer.d.cts +0 -23
  1283. package/dist/random-integer.d.cts.map +0 -1
  1284. package/dist/random-integer.d.ts +0 -23
  1285. package/dist/random-integer.d.ts.map +0 -1
  1286. package/dist/random-string.d.cts +0 -29
  1287. package/dist/random-string.d.cts.map +0 -1
  1288. package/dist/random-string.d.ts +0 -29
  1289. package/dist/random-string.d.ts.map +0 -1
  1290. package/dist/range.d.cts +0 -27
  1291. package/dist/range.d.cts.map +0 -1
  1292. package/dist/range.d.ts +0 -27
  1293. package/dist/range.d.ts.map +0 -1
  1294. package/dist/rank-by.d.cts +0 -45
  1295. package/dist/rank-by.d.cts.map +0 -1
  1296. package/dist/rank-by.d.ts +0 -45
  1297. package/dist/rank-by.d.ts.map +0 -1
  1298. package/dist/reduce.d.cts +0 -53
  1299. package/dist/reduce.d.cts.map +0 -1
  1300. package/dist/reduce.d.ts +0 -53
  1301. package/dist/reduce.d.ts.map +0 -1
  1302. package/dist/reordered-array-BWG6tVSK.d.ts +0 -7
  1303. package/dist/reordered-array-BWG6tVSK.d.ts.map +0 -1
  1304. package/dist/reordered-array-CmReuxDi.d.cts +0 -7
  1305. package/dist/reordered-array-CmReuxDi.d.cts.map +0 -1
  1306. package/dist/reverse.d.cts +0 -29
  1307. package/dist/reverse.d.cts.map +0 -1
  1308. package/dist/reverse.d.ts +0 -29
  1309. package/dist/reverse.d.ts.map +0 -1
  1310. package/dist/round.d.cts +0 -39
  1311. package/dist/round.d.cts.map +0 -1
  1312. package/dist/round.d.ts +0 -39
  1313. package/dist/round.d.ts.map +0 -1
  1314. package/dist/sample.d.cts +0 -69
  1315. package/dist/sample.d.cts.map +0 -1
  1316. package/dist/sample.d.ts +0 -69
  1317. package/dist/sample.d.ts.map +0 -1
  1318. package/dist/set-path.d.cts +0 -47
  1319. package/dist/set-path.d.cts.map +0 -1
  1320. package/dist/set-path.d.ts +0 -47
  1321. package/dist/set-path.d.ts.map +0 -1
  1322. package/dist/set.d.cts +0 -40
  1323. package/dist/set.d.cts.map +0 -1
  1324. package/dist/set.d.ts +0 -40
  1325. package/dist/set.d.ts.map +0 -1
  1326. package/dist/shuffle.d.cts +0 -31
  1327. package/dist/shuffle.d.cts.map +0 -1
  1328. package/dist/shuffle.d.ts +0 -31
  1329. package/dist/shuffle.d.ts.map +0 -1
  1330. package/dist/sleep.d.cts +0 -16
  1331. package/dist/sleep.d.cts.map +0 -1
  1332. package/dist/sleep.d.ts +0 -16
  1333. package/dist/sleep.d.ts.map +0 -1
  1334. package/dist/slice-string.d.cts +0 -41
  1335. package/dist/slice-string.d.cts.map +0 -1
  1336. package/dist/slice-string.d.ts +0 -41
  1337. package/dist/slice-string.d.ts.map +0 -1
  1338. package/dist/slugify.d.cts +0 -15
  1339. package/dist/slugify.d.cts.map +0 -1
  1340. package/dist/slugify.d.ts +0 -15
  1341. package/dist/slugify.d.ts.map +0 -1
  1342. package/dist/sort-by.d.cts +0 -88
  1343. package/dist/sort-by.d.cts.map +0 -1
  1344. package/dist/sort-by.d.ts +0 -88
  1345. package/dist/sort-by.d.ts.map +0 -1
  1346. package/dist/sort.d.cts +0 -39
  1347. package/dist/sort.d.cts.map +0 -1
  1348. package/dist/sort.d.ts +0 -39
  1349. package/dist/sort.d.ts.map +0 -1
  1350. package/dist/sorted-index-by.d.cts +0 -70
  1351. package/dist/sorted-index-by.d.cts.map +0 -1
  1352. package/dist/sorted-index-by.d.ts +0 -70
  1353. package/dist/sorted-index-by.d.ts.map +0 -1
  1354. package/dist/sorted-index-with.d.cts +0 -72
  1355. package/dist/sorted-index-with.d.cts.map +0 -1
  1356. package/dist/sorted-index-with.d.ts +0 -72
  1357. package/dist/sorted-index-with.d.ts.map +0 -1
  1358. package/dist/sorted-index.d.cts +0 -45
  1359. package/dist/sorted-index.d.cts.map +0 -1
  1360. package/dist/sorted-index.d.ts +0 -45
  1361. package/dist/sorted-index.d.ts.map +0 -1
  1362. package/dist/sorted-last-index-by.d.cts +0 -72
  1363. package/dist/sorted-last-index-by.d.cts.map +0 -1
  1364. package/dist/sorted-last-index-by.d.ts +0 -72
  1365. package/dist/sorted-last-index-by.d.ts.map +0 -1
  1366. package/dist/sorted-last-index.d.cts +0 -45
  1367. package/dist/sorted-last-index.d.cts.map +0 -1
  1368. package/dist/sorted-last-index.d.ts +0 -45
  1369. package/dist/sorted-last-index.d.ts.map +0 -1
  1370. package/dist/splice.d.cts +0 -35
  1371. package/dist/splice.d.cts.map +0 -1
  1372. package/dist/splice.d.ts +0 -35
  1373. package/dist/splice.d.ts.map +0 -1
  1374. package/dist/split-at.d.cts +0 -31
  1375. package/dist/split-at.d.cts.map +0 -1
  1376. package/dist/split-at.d.ts +0 -31
  1377. package/dist/split-at.d.ts.map +0 -1
  1378. package/dist/split-when.d.cts +0 -29
  1379. package/dist/split-when.d.cts.map +0 -1
  1380. package/dist/split-when.d.ts +0 -29
  1381. package/dist/split-when.d.ts.map +0 -1
  1382. package/dist/split.d.cts +0 -62
  1383. package/dist/split.d.cts.map +0 -1
  1384. package/dist/split.d.ts +0 -62
  1385. package/dist/split.d.ts.map +0 -1
  1386. package/dist/strict-function-BBgKFNUw.d.ts +0 -26
  1387. package/dist/strict-function-BBgKFNUw.d.ts.map +0 -1
  1388. package/dist/strict-function-CPTwDgnZ.d.cts +0 -26
  1389. package/dist/strict-function-CPTwDgnZ.d.cts.map +0 -1
  1390. package/dist/string-to-path.d.cts +0 -39
  1391. package/dist/string-to-path.d.cts.map +0 -1
  1392. package/dist/string-to-path.d.ts +0 -39
  1393. package/dist/string-to-path.d.ts.map +0 -1
  1394. package/dist/subtract.d.cts +0 -35
  1395. package/dist/subtract.d.cts.map +0 -1
  1396. package/dist/subtract.d.ts +0 -35
  1397. package/dist/subtract.d.ts.map +0 -1
  1398. package/dist/sum-by.d.cts +0 -57
  1399. package/dist/sum-by.d.cts.map +0 -1
  1400. package/dist/sum-by.d.ts +0 -57
  1401. package/dist/sum-by.d.ts.map +0 -1
  1402. package/dist/sum.d.cts +0 -50
  1403. package/dist/sum.d.cts.map +0 -1
  1404. package/dist/sum.d.ts +0 -50
  1405. package/dist/sum.d.ts.map +0 -1
  1406. package/dist/swap-in-place-BHkB_mvV.cjs +0 -1
  1407. package/dist/swap-in-place-C_jXKHuD.js +0 -2
  1408. package/dist/swap-in-place-C_jXKHuD.js.map +0 -1
  1409. package/dist/swap-indices.d.cts +0 -61
  1410. package/dist/swap-indices.d.cts.map +0 -1
  1411. package/dist/swap-indices.d.ts +0 -61
  1412. package/dist/swap-indices.d.ts.map +0 -1
  1413. package/dist/swap-props.d.cts +0 -34
  1414. package/dist/swap-props.d.cts.map +0 -1
  1415. package/dist/swap-props.d.ts +0 -34
  1416. package/dist/swap-props.d.ts.map +0 -1
  1417. package/dist/take-first-by.d.cts +0 -41
  1418. package/dist/take-first-by.d.cts.map +0 -1
  1419. package/dist/take-first-by.d.ts +0 -41
  1420. package/dist/take-first-by.d.ts.map +0 -1
  1421. package/dist/take-last-while.d.cts +0 -36
  1422. package/dist/take-last-while.d.cts.map +0 -1
  1423. package/dist/take-last-while.d.ts +0 -36
  1424. package/dist/take-last-while.d.ts.map +0 -1
  1425. package/dist/take-last.d.cts +0 -32
  1426. package/dist/take-last.d.cts.map +0 -1
  1427. package/dist/take-last.d.ts +0 -32
  1428. package/dist/take-last.d.ts.map +0 -1
  1429. package/dist/take-while.d.cts +0 -34
  1430. package/dist/take-while.d.cts.map +0 -1
  1431. package/dist/take-while.d.ts +0 -34
  1432. package/dist/take-while.d.ts.map +0 -1
  1433. package/dist/take.d.cts +0 -34
  1434. package/dist/take.d.cts.map +0 -1
  1435. package/dist/take.d.ts +0 -34
  1436. package/dist/take.d.ts.map +0 -1
  1437. package/dist/tap.d.cts +0 -42
  1438. package/dist/tap.d.cts.map +0 -1
  1439. package/dist/tap.d.ts +0 -42
  1440. package/dist/tap.d.ts.map +0 -1
  1441. package/dist/times.d.cts +0 -48
  1442. package/dist/times.d.cts.map +0 -1
  1443. package/dist/times.d.ts +0 -48
  1444. package/dist/times.d.ts.map +0 -1
  1445. package/dist/to-camel-case.d.cts +0 -84
  1446. package/dist/to-camel-case.d.cts.map +0 -1
  1447. package/dist/to-camel-case.d.ts +0 -84
  1448. package/dist/to-camel-case.d.ts.map +0 -1
  1449. package/dist/to-kebab-case.d.cts +0 -60
  1450. package/dist/to-kebab-case.d.cts.map +0 -1
  1451. package/dist/to-kebab-case.d.ts +0 -60
  1452. package/dist/to-kebab-case.d.ts.map +0 -1
  1453. package/dist/to-lower-case.d.cts +0 -51
  1454. package/dist/to-lower-case.d.cts.map +0 -1
  1455. package/dist/to-lower-case.d.ts +0 -51
  1456. package/dist/to-lower-case.d.ts.map +0 -1
  1457. package/dist/to-single-BKYbBic-.js +0 -2
  1458. package/dist/to-single-BKYbBic-.js.map +0 -1
  1459. package/dist/to-single-Chq_hKEk.cjs +0 -1
  1460. package/dist/to-snake-case.d.cts +0 -60
  1461. package/dist/to-snake-case.d.cts.map +0 -1
  1462. package/dist/to-snake-case.d.ts +0 -60
  1463. package/dist/to-snake-case.d.ts.map +0 -1
  1464. package/dist/to-string-DkC3zRUJ.d.cts +0 -13
  1465. package/dist/to-string-DkC3zRUJ.d.cts.map +0 -1
  1466. package/dist/to-string-YIFx2KS6.d.ts +0 -13
  1467. package/dist/to-string-YIFx2KS6.d.ts.map +0 -1
  1468. package/dist/to-title-case.d.cts +0 -86
  1469. package/dist/to-title-case.d.cts.map +0 -1
  1470. package/dist/to-title-case.d.ts +0 -86
  1471. package/dist/to-title-case.d.ts.map +0 -1
  1472. package/dist/to-upper-case.d.cts +0 -51
  1473. package/dist/to-upper-case.d.cts.map +0 -1
  1474. package/dist/to-upper-case.d.ts +0 -51
  1475. package/dist/to-upper-case.d.ts.map +0 -1
  1476. package/dist/tuple-parts-BYI4o8Vk.d.ts +0 -89
  1477. package/dist/tuple-parts-BYI4o8Vk.d.ts.map +0 -1
  1478. package/dist/tuple-parts-CzQQupgi.d.cts +0 -89
  1479. package/dist/tuple-parts-CzQQupgi.d.cts.map +0 -1
  1480. package/dist/type.helpers.d.cts +0 -5
  1481. package/dist/type.helpers.d.cts.map +0 -1
  1482. package/dist/type.helpers.d.ts +0 -5
  1483. package/dist/type.helpers.d.ts.map +0 -1
  1484. package/dist/uncapitalize.d.cts +0 -51
  1485. package/dist/uncapitalize.d.cts.map +0 -1
  1486. package/dist/uncapitalize.d.ts +0 -51
  1487. package/dist/uncapitalize.d.ts.map +0 -1
  1488. package/dist/unique-by.d.cts +0 -44
  1489. package/dist/unique-by.d.cts.map +0 -1
  1490. package/dist/unique-by.d.ts +0 -44
  1491. package/dist/unique-by.d.ts.map +0 -1
  1492. package/dist/unique-with.d.cts +0 -46
  1493. package/dist/unique-with.d.cts.map +0 -1
  1494. package/dist/unique-with.d.ts +0 -46
  1495. package/dist/unique-with.d.ts.map +0 -1
  1496. package/dist/unique.d.cts +0 -39
  1497. package/dist/unique.d.cts.map +0 -1
  1498. package/dist/unique.d.ts +0 -39
  1499. package/dist/unique.d.ts.map +0 -1
  1500. package/dist/upsert-prop-0hwik6JJ.d.cts +0 -8
  1501. package/dist/upsert-prop-0hwik6JJ.d.cts.map +0 -1
  1502. package/dist/upsert-prop-_NpaZwm4.d.ts +0 -8
  1503. package/dist/upsert-prop-_NpaZwm4.d.ts.map +0 -1
  1504. package/dist/utility-evaluators-Boc-TMbq.js +0 -2
  1505. package/dist/utility-evaluators-Boc-TMbq.js.map +0 -1
  1506. package/dist/utility-evaluators-CAbODbuk.cjs +0 -1
  1507. package/dist/values.d.cts +0 -38
  1508. package/dist/values.d.cts.map +0 -1
  1509. package/dist/values.d.ts +0 -38
  1510. package/dist/values.d.ts.map +0 -1
  1511. package/dist/with-precision-CQ90Walk.js +0 -2
  1512. package/dist/with-precision-CQ90Walk.js.map +0 -1
  1513. package/dist/with-precision-dQAYLrgr.cjs +0 -1
  1514. package/dist/words-DQCM5umD.js +0 -3
  1515. package/dist/words-DQCM5umD.js.map +0 -1
  1516. package/dist/words-DRQKxzLU.cjs +0 -2
  1517. package/dist/zip-with.d.cts +0 -50
  1518. package/dist/zip-with.d.cts.map +0 -1
  1519. package/dist/zip-with.d.ts +0 -50
  1520. package/dist/zip-with.d.ts.map +0 -1
  1521. package/dist/zip.d.cts +0 -38
  1522. package/dist/zip.d.cts.map +0 -1
  1523. package/dist/zip.d.ts +0 -38
  1524. package/dist/zip.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intersection.cjs","names":["curryFromLazy","lazyEmptyEvaluator","SKIP_ITEM"],"sources":["../src/intersection.ts"],"sourcesContent":["import type { LazyEvaluator } from './internal/types/lazy-evaluator';\nimport { curryFromLazy } from './internal/curry-from-lazy';\nimport { lazyEmptyEvaluator, SKIP_ITEM } from './internal/utility-evaluators';\n\n/**\n * Returns a list of elements that exist in both array. The output maintains the\n * same order as the input. The inputs are treated as multi-sets/bags (multiple\n * copies of items are treated as unique items).\n *\n * @param data - The input items.\n * @param other - The items to compare against.\n * @signature\n * intersection(data, other)\n * @example\n * intersection([1, 2, 3], [2, 3, 5]); // => [2, 3]\n * intersection([1, 1, 2, 2], [1]); // => [1]\n * @dataFirst\n * @lazy\n * @category Array\n */\nexport function intersection<T, S>(\n data: ReadonlyArray<T>,\n other: ReadonlyArray<S>,\n): Array<S & T>;\n\n/**\n * Returns a list of elements that exist in both array. The output maintains the\n * same order as the input. The inputs are treated as multi-sets/bags (multiple\n * copies of items are treated as unique items).\n *\n * @param other - The items to compare against.\n * @signature\n * intersection(other)(data)\n * @example\n * pipe([1, 2, 3], intersection([2, 3, 5])); // => [2, 3]\n * pipe([1, 1, 2, 2], intersection([1])); // => [1]\n * @dataLast\n * @lazy\n * @category Array\n */\nexport function intersection<S>(\n other: ReadonlyArray<S>,\n): <T>(data: ReadonlyArray<T>) => Array<S & T>;\n\nexport function intersection(...args: ReadonlyArray<unknown>): unknown {\n return curryFromLazy(lazyImplementation, args);\n}\n\nfunction lazyImplementation<T, S>(\n other: ReadonlyArray<S>,\n): LazyEvaluator<T, S & T> {\n if (other.length === 0) {\n return lazyEmptyEvaluator;\n }\n\n // We need to build a more efficient data structure that would allow us to\n // keep track of the number of times we've seen a value in the other array.\n const remaining = new Map<S | T, number>();\n for (const value of other) {\n remaining.set(value, (remaining.get(value) ?? 0) + 1);\n }\n\n return (value) => {\n const copies = remaining.get(value);\n\n if (copies === undefined || copies === 0) {\n // The item is either not part of the other array or we've \"used\" enough\n // copies of it so we skip the remaining values.\n return SKIP_ITEM;\n }\n\n // The item is equal to an item in the other array and there are still\n // copies of it to \"account\" for so we return this one and remove it from\n // our ongoing tally.\n if (copies === 1) {\n remaining.delete(value);\n } else {\n remaining.set(value, copies - 1);\n }\n\n return {\n hasNext: true,\n // We can safely cast here because if value was in the `remaining` map, it\n // has to be of type S (that's just how we built it).\n next: value as S & T,\n // We can stop the iteration if the remaining map is empty.\n done: remaining.size === 0,\n };\n };\n}\n"],"mappings":"oKA4CA,SAAgB,EAAa,GAAG,EAAuC,CACrE,OAAOA,EAAAA,EAAc,EAAoB,EAAK,CAGhD,SAAS,EACP,EACyB,CACzB,GAAI,EAAM,SAAW,EACnB,OAAOC,EAAAA,EAKT,IAAM,EAAY,IAAI,IACtB,IAAK,IAAM,KAAS,EAClB,EAAU,IAAI,GAAQ,EAAU,IAAI,EAAM,EAAI,GAAK,EAAE,CAGvD,MAAQ,IAAU,CAChB,IAAM,EAAS,EAAU,IAAI,EAAM,CAiBnC,OAfI,IAAW,IAAA,IAAa,IAAW,EAG9BC,EAAAA,GAML,IAAW,EACb,EAAU,OAAO,EAAM,CAEvB,EAAU,IAAI,EAAO,EAAS,EAAE,CAG3B,CACL,QAAS,GAGT,KAAM,EAEN,KAAM,EAAU,OAAS,EAC1B"}
@@ -1,2 +1,2 @@
1
- import{n as e,t}from"./utility-evaluators-Boc-TMbq.js";import{t as n}from"./curry-from-lazy-PQ0BbG-7.js";function r(...e){return n(i,e)}function i(n){if(n.length===0)return e;let r=new Map;for(let e of n)r.set(e,(r.get(e)??0)+1);return e=>{let n=r.get(e);return n===void 0||n===0?t:(n===1?r.delete(e):r.set(e,n-1),{hasNext:!0,next:e,done:r.size===0})}}export{r as intersection};
1
+ import{n as e,t}from"./utility-evaluators-ZAaUtL2Z.js";import{t as n}from"./curry-from-lazy-CtH1dp14.js";function r(...e){return n(i,e)}function i(n){if(n.length===0)return e;let r=new Map;for(let e of n)r.set(e,(r.get(e)??0)+1);return e=>{let n=r.get(e);return n===void 0||n===0?t:(n===1?r.delete(e):r.set(e,n-1),{hasNext:!0,next:e,done:r.size===0})}}export{r as intersection};
2
2
  //# sourceMappingURL=intersection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.js","names":[],"sources":["../src/intersection.ts"],"sourcesContent":["import type { LazyEvaluator } from './internal/types/lazy-evaluator';\n\nimport { curryFromLazy } from './internal/curry-from-lazy';\nimport { lazyEmptyEvaluator, SKIP_ITEM } from './internal/utility-evaluators';\n\n/**\n * Returns a list of elements that exist in both array. The output maintains the\n * same order as the input. The inputs are treated as multi-sets/bags (multiple\n * copies of items are treated as unique items).\n *\n * @param data - The input items.\n * @param other - The items to compare against.\n * @signature\n * P.intersection(data, other)\n * @example\n * P.intersection([1, 2, 3], [2, 3, 5]); // => [2, 3]\n * P.intersection([1, 1, 2, 2], [1]); // => [1]\n * @dataFirst\n * @lazy\n * @category Array\n */\nexport function intersection<T, S>(\n data: ReadonlyArray<T>,\n other: ReadonlyArray<S>,\n): Array<S & T>;\n\n/**\n * Returns a list of elements that exist in both array. The output maintains the\n * same order as the input. The inputs are treated as multi-sets/bags (multiple\n * copies of items are treated as unique items).\n *\n * @param other - The items to compare against.\n * @signature\n * P.intersection(other)(data)\n * @example\n * P.pipe([1, 2, 3], P.intersection([2, 3, 5])); // => [2, 3]\n * P.pipe([1, 1, 2, 2], P.intersection([1])); // => [1]\n * @dataFirst\n * @lazy\n * @category Array\n */\nexport function intersection<S>(\n other: ReadonlyArray<S>,\n): <T>(data: ReadonlyArray<T>) => Array<S & T>;\n\nexport function intersection(...args: ReadonlyArray<unknown>): unknown {\n return curryFromLazy(lazyImplementation, args);\n}\n\nfunction lazyImplementation<T, S>(\n other: ReadonlyArray<S>,\n): LazyEvaluator<T, S & T> {\n if (other.length === 0) {\n return lazyEmptyEvaluator;\n }\n\n // We need to build a more efficient data structure that would allow us to\n // keep track of the number of times we've seen a value in the other array.\n const remaining = new Map<S | T, number>();\n for (const value of other) {\n remaining.set(value, (remaining.get(value) ?? 0) + 1);\n }\n\n return (value) => {\n const copies = remaining.get(value);\n\n if (copies === undefined || copies === 0) {\n // The item is either not part of the other array or we've \"used\" enough\n // copies of it so we skip the remaining values.\n return SKIP_ITEM;\n }\n\n // The item is equal to an item in the other array and there are still\n // copies of it to \"account\" for so we return this one and remove it from\n // our ongoing tally.\n if (copies === 1) {\n remaining.delete(value);\n } else {\n remaining.set(value, copies - 1);\n }\n\n return {\n hasNext: true,\n // We can safely cast here because if value was in the `remaining` map, it\n // has to be of type S (that's just how we built it).\n next: value as S & T,\n // We can stop the iteration if the remaining map is empty.\n done: remaining.size === 0,\n };\n };\n}\n"],"mappings":"yGA6CA,SAAgB,EAAa,GAAG,EAAuC,CACrE,OAAO,EAAc,EAAoB,EAAK,CAGhD,SAAS,EACP,EACyB,CACzB,GAAI,EAAM,SAAW,EACnB,OAAO,EAKT,IAAM,EAAY,IAAI,IACtB,IAAK,IAAM,KAAS,EAClB,EAAU,IAAI,GAAQ,EAAU,IAAI,EAAM,EAAI,GAAK,EAAE,CAGvD,MAAQ,IAAU,CAChB,IAAM,EAAS,EAAU,IAAI,EAAM,CAiBnC,OAfI,IAAW,IAAA,IAAa,IAAW,EAG9B,GAML,IAAW,EACb,EAAU,OAAO,EAAM,CAEvB,EAAU,IAAI,EAAO,EAAS,EAAE,CAG3B,CACL,QAAS,GAGT,KAAM,EAEN,KAAM,EAAU,OAAS,EAC1B"}
1
+ {"version":3,"file":"intersection.js","names":[],"sources":["../src/intersection.ts"],"sourcesContent":["import type { LazyEvaluator } from './internal/types/lazy-evaluator';\nimport { curryFromLazy } from './internal/curry-from-lazy';\nimport { lazyEmptyEvaluator, SKIP_ITEM } from './internal/utility-evaluators';\n\n/**\n * Returns a list of elements that exist in both array. The output maintains the\n * same order as the input. The inputs are treated as multi-sets/bags (multiple\n * copies of items are treated as unique items).\n *\n * @param data - The input items.\n * @param other - The items to compare against.\n * @signature\n * intersection(data, other)\n * @example\n * intersection([1, 2, 3], [2, 3, 5]); // => [2, 3]\n * intersection([1, 1, 2, 2], [1]); // => [1]\n * @dataFirst\n * @lazy\n * @category Array\n */\nexport function intersection<T, S>(\n data: ReadonlyArray<T>,\n other: ReadonlyArray<S>,\n): Array<S & T>;\n\n/**\n * Returns a list of elements that exist in both array. The output maintains the\n * same order as the input. The inputs are treated as multi-sets/bags (multiple\n * copies of items are treated as unique items).\n *\n * @param other - The items to compare against.\n * @signature\n * intersection(other)(data)\n * @example\n * pipe([1, 2, 3], intersection([2, 3, 5])); // => [2, 3]\n * pipe([1, 1, 2, 2], intersection([1])); // => [1]\n * @dataLast\n * @lazy\n * @category Array\n */\nexport function intersection<S>(\n other: ReadonlyArray<S>,\n): <T>(data: ReadonlyArray<T>) => Array<S & T>;\n\nexport function intersection(...args: ReadonlyArray<unknown>): unknown {\n return curryFromLazy(lazyImplementation, args);\n}\n\nfunction lazyImplementation<T, S>(\n other: ReadonlyArray<S>,\n): LazyEvaluator<T, S & T> {\n if (other.length === 0) {\n return lazyEmptyEvaluator;\n }\n\n // We need to build a more efficient data structure that would allow us to\n // keep track of the number of times we've seen a value in the other array.\n const remaining = new Map<S | T, number>();\n for (const value of other) {\n remaining.set(value, (remaining.get(value) ?? 0) + 1);\n }\n\n return (value) => {\n const copies = remaining.get(value);\n\n if (copies === undefined || copies === 0) {\n // The item is either not part of the other array or we've \"used\" enough\n // copies of it so we skip the remaining values.\n return SKIP_ITEM;\n }\n\n // The item is equal to an item in the other array and there are still\n // copies of it to \"account\" for so we return this one and remove it from\n // our ongoing tally.\n if (copies === 1) {\n remaining.delete(value);\n } else {\n remaining.set(value, copies - 1);\n }\n\n return {\n hasNext: true,\n // We can safely cast here because if value was in the `remaining` map, it\n // has to be of type S (that's just how we built it).\n next: value as S & T,\n // We can stop the iteration if the remaining map is empty.\n done: remaining.size === 0,\n };\n };\n}\n"],"mappings":"yGA4CA,SAAgB,EAAa,GAAG,EAAuC,CACrE,OAAO,EAAc,EAAoB,EAAK,CAGhD,SAAS,EACP,EACyB,CACzB,GAAI,EAAM,SAAW,EACnB,OAAO,EAKT,IAAM,EAAY,IAAI,IACtB,IAAK,IAAM,KAAS,EAClB,EAAU,IAAI,GAAQ,EAAU,IAAI,EAAM,EAAI,GAAK,EAAE,CAGvD,MAAQ,IAAU,CAChB,IAAM,EAAS,EAAU,IAAI,EAAM,CAiBnC,OAfI,IAAW,IAAA,IAAa,IAAW,EAG9B,GAML,IAAW,EACb,EAAU,OAAO,EAAM,CAEvB,EAAU,IAAI,EAAO,EAAS,EAAE,CAG3B,CACL,QAAS,GAGT,KAAM,EAEN,KAAM,EAAU,OAAS,EAC1B"}
package/dist/invert.cjs CHANGED
@@ -1 +1,2 @@
1
- const e=require(`./curry-BsY0Z8jH.cjs`);function t(...t){return e.t(n,t)}function n(e){let t={};for(let[n,r]of Object.entries(e))t[r]=n;return t}exports.invert=t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./curry.cjs`);function t(...t){return e.curry(n,t)}function n(e){let t={};for(let[n,r]of Object.entries(e))t[r]=n;return t}exports.invert=t;
2
+ //# sourceMappingURL=invert.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invert.cjs","names":["curry"],"sources":["../src/invert.ts"],"sourcesContent":["import type { Simplify } from 'type-fest';\nimport type { ToString } from './internal/types/to-string';\nimport { curry } from './curry';\n\ntype Inverted<T extends object> = Simplify<{\n -readonly [K in keyof T as K extends number | string\n ? Required<T>[K] extends PropertyKey\n ? Required<T>[K]\n : never\n : never]: ToString<K>;\n}>;\n\n/**\n * Returns an object whose keys and values are swapped. If the object contains duplicate values,\n * subsequent values will overwrite previous values.\n *\n * @param object - The object.\n * @signature\n * invert(object)\n * @example\n * invert({ a: \"d\", b: \"e\", c: \"f\" }) // => { d: \"a\", e: \"b\", f: \"c\" }\n * @dataFirst\n * @category Object\n */\nexport function invert<T extends object>(object: T): Inverted<T>;\n\n/**\n * Returns an object whose keys and values are swapped. If the object contains duplicate values,\n * subsequent values will overwrite previous values.\n *\n * @signature\n * invert()(object)\n * @example\n * pipe({ a: \"d\", b: \"e\", c: \"f\" }, invert()); // => { d: \"a\", e: \"b\", f: \"c\" }\n * @dataLast\n * @category Object\n */\nexport function invert<T extends object>(): (object: T) => Inverted<T>;\n\nexport function invert(...args: ReadonlyArray<unknown>): unknown {\n return curry(invertImplementation, args);\n}\n\nfunction invertImplementation(\n data: Readonly<Record<PropertyKey, PropertyKey>>,\n): Record<PropertyKey, PropertyKey> {\n const result: Record<PropertyKey, PropertyKey> = {};\n\n for (const [key, value] of Object.entries(data)) {\n result[value] = key;\n }\n\n return result;\n}\n"],"mappings":"kGAuCA,SAAgB,EAAO,GAAG,EAAuC,CAC/D,OAAOA,EAAAA,MAAM,EAAsB,EAAK,CAG1C,SAAS,EACP,EACkC,CAClC,IAAM,EAA2C,EAAE,CAEnD,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAC7C,EAAO,GAAS,EAGlB,OAAO"}
package/dist/invert.js CHANGED
@@ -1,2 +1,2 @@
1
- import{t as e}from"./curry-NmniqyJ0.js";function t(...t){return e(n,t)}function n(e){let t={};for(let[n,r]of Object.entries(e))t[r]=n;return t}export{t as invert};
1
+ import{curry as e}from"./curry.js";function t(...t){return e(n,t)}function n(e){let t={};for(let[n,r]of Object.entries(e))t[r]=n;return t}export{t as invert};
2
2
  //# sourceMappingURL=invert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invert.js","names":["result: Record<PropertyKey, PropertyKey>"],"sources":["../src/invert.ts"],"sourcesContent":["import type { Simplify } from 'type-fest';\n\nimport type { ToString } from './internal/types/to-string';\nimport { curry } from './curry';\n\ntype Inverted<T extends object> = Simplify<{\n -readonly [K in keyof T as K extends number | string\n ? Required<T>[K] extends PropertyKey\n ? Required<T>[K]\n : never\n : never]: ToString<K>;\n}>;\n\n/**\n * Returns an object whose keys and values are swapped. If the object contains duplicate values,\n * subsequent values will overwrite previous values.\n *\n * @param object - The object.\n * @signature\n * P.invert(object)\n * @example\n * P.invert({ a: \"d\", b: \"e\", c: \"f\" }) // => { d: \"a\", e: \"b\", f: \"c\" }\n * @dataFirst\n * @category Object\n */\nexport function invert<T extends object>(object: T): Inverted<T>;\n\n/**\n * Returns an object whose keys and values are swapped. If the object contains duplicate values,\n * subsequent values will overwrite previous values.\n *\n * @signature\n * P.invert()(object)\n * @example\n * P.pipe({ a: \"d\", b: \"e\", c: \"f\" }, P.invert()); // => { d: \"a\", e: \"b\", f: \"c\" }\n * @dataLast\n * @category Object\n */\nexport function invert<T extends object>(): (object: T) => Inverted<T>;\n\nexport function invert(...args: ReadonlyArray<unknown>): unknown {\n return curry(invertImplementation, args);\n}\n\nfunction invertImplementation(\n data: Readonly<Record<PropertyKey, PropertyKey>>,\n): Record<PropertyKey, PropertyKey> {\n const result: Record<PropertyKey, PropertyKey> = {};\n\n for (const [key, value] of Object.entries(data)) {\n result[value] = key;\n }\n\n return result;\n}\n"],"mappings":"wCAwCA,SAAgB,EAAO,GAAG,EAAuC,CAC/D,OAAO,EAAM,EAAsB,EAAK,CAG1C,SAAS,EACP,EACkC,CAClC,IAAMA,EAA2C,EAAE,CAEnD,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAC7C,EAAO,GAAS,EAGlB,OAAO"}
1
+ {"version":3,"file":"invert.js","names":[],"sources":["../src/invert.ts"],"sourcesContent":["import type { Simplify } from 'type-fest';\nimport type { ToString } from './internal/types/to-string';\nimport { curry } from './curry';\n\ntype Inverted<T extends object> = Simplify<{\n -readonly [K in keyof T as K extends number | string\n ? Required<T>[K] extends PropertyKey\n ? Required<T>[K]\n : never\n : never]: ToString<K>;\n}>;\n\n/**\n * Returns an object whose keys and values are swapped. If the object contains duplicate values,\n * subsequent values will overwrite previous values.\n *\n * @param object - The object.\n * @signature\n * invert(object)\n * @example\n * invert({ a: \"d\", b: \"e\", c: \"f\" }) // => { d: \"a\", e: \"b\", f: \"c\" }\n * @dataFirst\n * @category Object\n */\nexport function invert<T extends object>(object: T): Inverted<T>;\n\n/**\n * Returns an object whose keys and values are swapped. If the object contains duplicate values,\n * subsequent values will overwrite previous values.\n *\n * @signature\n * invert()(object)\n * @example\n * pipe({ a: \"d\", b: \"e\", c: \"f\" }, invert()); // => { d: \"a\", e: \"b\", f: \"c\" }\n * @dataLast\n * @category Object\n */\nexport function invert<T extends object>(): (object: T) => Inverted<T>;\n\nexport function invert(...args: ReadonlyArray<unknown>): unknown {\n return curry(invertImplementation, args);\n}\n\nfunction invertImplementation(\n data: Readonly<Record<PropertyKey, PropertyKey>>,\n): Record<PropertyKey, PropertyKey> {\n const result: Record<PropertyKey, PropertyKey> = {};\n\n for (const [key, value] of Object.entries(data)) {\n result[value] = key;\n }\n\n return result;\n}\n"],"mappings":"mCAuCA,SAAgB,EAAO,GAAG,EAAuC,CAC/D,OAAO,EAAM,EAAsB,EAAK,CAG1C,SAAS,EACP,EACkC,CAClC,IAAM,EAA2C,EAAE,CAEnD,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAC7C,EAAO,GAAS,EAGlB,OAAO"}
package/dist/is-array.cjs CHANGED
@@ -1 +1,2 @@
1
- function e(e){return Array.isArray(e)}exports.isArray=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return Array.isArray(e)}exports.isArray=e;
2
+ //# sourceMappingURL=is-array.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-array.cjs","names":[],"sources":["../src/is-array.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is an Array and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Array, false otherwise.\n * @signature\n * isArray(data)\n * @example\n * isArray([5]) //=> true\n * isArray([]) //=> true\n * isArray('somethingElse') //=> false\n * @category Guard\n */\nexport function isArray<T>(\n data: ArrayLike<unknown> | T,\n): data is NarrowedTo<T, ReadonlyArray<unknown>> {\n return Array.isArray(data);\n}\n"],"mappings":"mEAeA,SAAgB,EACd,EAC+C,CAC/C,OAAO,MAAM,QAAQ,EAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-array.js","names":[],"sources":["../src/is-array.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is an Array and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Array, false otherwise.\n * @signature\n * P.isArray(data)\n * @example\n * P.isArray([5]) //=> true\n * P.isArray([]) //=> true\n * P.isArray('somethingElse') //=> false\n * @category Guard\n */\nexport function isArray<T>(\n data: ArrayLike<unknown> | T,\n): data is NarrowedTo<T, ReadonlyArray<unknown>> {\n return Array.isArray(data);\n}\n"],"mappings":"AAeA,SAAgB,EACd,EAC+C,CAC/C,OAAO,MAAM,QAAQ,EAAK"}
1
+ {"version":3,"file":"is-array.js","names":[],"sources":["../src/is-array.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is an Array and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Array, false otherwise.\n * @signature\n * isArray(data)\n * @example\n * isArray([5]) //=> true\n * isArray([]) //=> true\n * isArray('somethingElse') //=> false\n * @category Guard\n */\nexport function isArray<T>(\n data: ArrayLike<unknown> | T,\n): data is NarrowedTo<T, ReadonlyArray<unknown>> {\n return Array.isArray(data);\n}\n"],"mappings":"AAeA,SAAgB,EACd,EAC+C,CAC/C,OAAO,MAAM,QAAQ,EAAK"}
@@ -1 +1,2 @@
1
- function e(e){return typeof e==`bigint`}exports.isBigInt=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return typeof e==`bigint`}exports.isBigInt=e;
2
+ //# sourceMappingURL=is-big-int.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-big-int.cjs","names":[],"sources":["../src/is-big-int.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is a bigint and narrows its\n * type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a number, false otherwise.\n * @signature\n * isBigInt(data)\n * @example\n * isBigInt(1n); // => true\n * isBigInt(1); // => false\n * isBigInt('notANumber'); // => false\n * @category Guard\n */\nexport function isBigInt<T>(data: T | bigint): data is NarrowedTo<T, bigint> {\n return typeof data === 'bigint';\n}\n"],"mappings":"mEAgBA,SAAgB,EAAY,EAAiD,CAC3E,OAAO,OAAO,GAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-big-int.js","names":[],"sources":["../src/is-big-int.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is a bigint and narrows its\n * type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a number, false otherwise.\n * @signature\n * P.isBigInt(data)\n * @example\n * P.isBigInt(1n); // => true\n * P.isBigInt(1); // => false\n * P.isBigInt('notANumber'); // => false\n * @category Guard\n */\nexport function isBigInt<T>(data: bigint | T): data is NarrowedTo<T, bigint> {\n return typeof data === 'bigint';\n}\n"],"mappings":"AAgBA,SAAgB,EAAY,EAAiD,CAC3E,OAAO,OAAO,GAAS"}
1
+ {"version":3,"file":"is-big-int.js","names":[],"sources":["../src/is-big-int.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is a bigint and narrows its\n * type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a number, false otherwise.\n * @signature\n * isBigInt(data)\n * @example\n * isBigInt(1n); // => true\n * isBigInt(1); // => false\n * isBigInt('notANumber'); // => false\n * @category Guard\n */\nexport function isBigInt<T>(data: T | bigint): data is NarrowedTo<T, bigint> {\n return typeof data === 'bigint';\n}\n"],"mappings":"AAgBA,SAAgB,EAAY,EAAiD,CAC3E,OAAO,OAAO,GAAS"}
@@ -1 +1,2 @@
1
- function e(e){return typeof e==`boolean`}exports.isBoolean=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return typeof e==`boolean`}exports.isBoolean=e;
2
+ //# sourceMappingURL=is-boolean.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-boolean.cjs","names":[],"sources":["../src/is-boolean.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is a boolean and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a boolean, false otherwise.\n * @signature\n * isBoolean(data)\n * @example\n * isBoolean(true) //=> true\n * isBoolean(false) //=> true\n * isBoolean('somethingElse') //=> false\n * @category Guard\n */\nexport function isBoolean<T>(\n data: T | boolean,\n): data is NarrowedTo<T, boolean> {\n return typeof data === 'boolean';\n}\n"],"mappings":"mEAeA,SAAgB,EACd,EACgC,CAChC,OAAO,OAAO,GAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-boolean.js","names":[],"sources":["../src/is-boolean.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is a boolean and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a boolean, false otherwise.\n * @signature\n * P.isBoolean(data)\n * @example\n * P.isBoolean(true) //=> true\n * P.isBoolean(false) //=> true\n * P.isBoolean('somethingElse') //=> false\n * @category Guard\n */\nexport function isBoolean<T>(\n data: boolean | T,\n): data is NarrowedTo<T, boolean> {\n return typeof data === 'boolean';\n}\n"],"mappings":"AAeA,SAAgB,EACd,EACgC,CAChC,OAAO,OAAO,GAAS"}
1
+ {"version":3,"file":"is-boolean.js","names":[],"sources":["../src/is-boolean.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is a boolean and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a boolean, false otherwise.\n * @signature\n * isBoolean(data)\n * @example\n * isBoolean(true) //=> true\n * isBoolean(false) //=> true\n * isBoolean('somethingElse') //=> false\n * @category Guard\n */\nexport function isBoolean<T>(\n data: T | boolean,\n): data is NarrowedTo<T, boolean> {\n return typeof data === 'boolean';\n}\n"],"mappings":"AAeA,SAAgB,EACd,EACgC,CAChC,OAAO,OAAO,GAAS"}
package/dist/is-date.cjs CHANGED
@@ -1 +1,2 @@
1
- function e(e){return e instanceof Date}exports.isDate=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e instanceof Date}exports.isDate=e;
2
+ //# sourceMappingURL=is-date.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-date.cjs","names":[],"sources":["../src/is-date.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is a Date and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a Date, false otherwise.\n * @signature\n * isDate(data)\n * @example\n * isDate(new Date()) //=> true\n * isDate('somethingElse') //=> false\n * @category Guard\n */\nexport function isDate(data: unknown): data is Date {\n return data instanceof Date;\n}\n"],"mappings":"mEAYA,SAAgB,EAAO,EAA6B,CAClD,OAAO,aAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-date.js","names":[],"sources":["../src/is-date.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is a Date and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a Date, false otherwise.\n * @signature\n * P.isDate(data)\n * @example\n * P.isDate(new Date()) //=> true\n * P.isDate('somethingElse') //=> false\n * @category Guard\n */\nexport function isDate(data: unknown): data is Date {\n return data instanceof Date;\n}\n"],"mappings":"AAYA,SAAgB,EAAO,EAA6B,CAClD,OAAO,aAAgB"}
1
+ {"version":3,"file":"is-date.js","names":[],"sources":["../src/is-date.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is a Date and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a Date, false otherwise.\n * @signature\n * isDate(data)\n * @example\n * isDate(new Date()) //=> true\n * isDate('somethingElse') //=> false\n * @category Guard\n */\nexport function isDate(data: unknown): data is Date {\n return data instanceof Date;\n}\n"],"mappings":"AAYA,SAAgB,EAAO,EAA6B,CAClD,OAAO,aAAgB"}
@@ -1 +1,2 @@
1
- const e=require(`./curry-BsY0Z8jH.cjs`);function t(...t){return e.t(n,t)}function n(e,t){if(e===t||Object.is(e,t))return!0;if(typeof e!=`object`||typeof t!=`object`||e===null||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Array.isArray(e))return r(e,t);if(e instanceof Map)return i(e,t);if(e instanceof Set)return a(e,t);if(e instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp)return e.toString()===t.toString();if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let[r,i]of Object.entries(e))if(!(r in t)||!n(i,t[r]))return!1;return!0}function r(e,t){if(e.length!==t.length)return!1;for(let[r,i]of e.entries())if(!n(i,t[r]))return!1;return!0}function i(e,t){if(e.size!==t.size)return!1;for(let[r,i]of e.entries())if(!t.has(r)||!n(i,t.get(r)))return!1;return!0}function a(e,t){if(e.size!==t.size)return!1;let r=[...t];for(let t of e){let e=!1;for(let[i,a]of r.entries())if(n(t,a)){e=!0,r.splice(i,1);break}if(!e)return!1}return!0}exports.isDeepEqual=t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./curry.cjs`);function t(...t){return e.curry(n,t)}function n(e,t){if(e===t||Object.is(e,t))return!0;if(typeof e!=`object`||typeof t!=`object`||e===null||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Array.isArray(e))return r(e,t);if(e instanceof Map)return i(e,t);if(e instanceof Set)return a(e,t);if(e instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp)return e.toString()===t.toString();if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let[r,i]of Object.entries(e))if(!(r in t)||!n(i,t[r]))return!1;return!0}function r(e,t){if(e.length!==t.length)return!1;for(let[r,i]of e.entries())if(!n(i,t[r]))return!1;return!0}function i(e,t){if(e.size!==t.size)return!1;for(let[r,i]of e.entries())if(!t.has(r)||!n(i,t.get(r)))return!1;return!0}function a(e,t){if(e.size!==t.size)return!1;let r=[...t];for(let t of e){let e=!1;for(let[i,a]of r.entries())if(n(t,a)){e=!0,r.splice(i,1);break}if(!e)return!1}return!0}exports.isDeepEqual=t;
2
+ //# sourceMappingURL=is-deep-equal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-deep-equal.cjs","names":["curry"],"sources":["../src/is-deep-equal.ts"],"sourcesContent":["import { curry } from './curry';\n\n/**\n * Performs a *deep structural* comparison between two values to determine if\n * they are equivalent. For primitive values this is equivalent to `===`, for\n * arrays the check would be performed on every item recursively, in order, and\n * for objects all props will be compared recursively.\n *\n * The built-in Date and RegExp are special-cased and will be compared by their\n * values.\n *\n * !IMPORTANT: TypedArrays and symbol properties of objects are not supported\n * right now and might result in unexpected behavior. Please open an issue in\n * the Perkakas github project if you need support for these types.\n *\n * The result would be narrowed to the second value so that the function can be\n * used as a type guard.\n *\n * See:\n * - `isStrictEqual` if you don't need a deep comparison and just want to\n * check for simple (`===`, `Object.is`) equality.\n * - `isShallowEqual` if you need to compare arrays and objects \"by-value\" but\n * don't want to recurse into their values.\n *\n * @param data - The first value to compare.\n * @param other - The second value to compare.\n * @signature\n * isDeepEqual(data, other)\n * @example\n * isDeepEqual(1, 1) //=> true\n * isDeepEqual(1, '1') //=> false\n * isDeepEqual([1, 2, 3], [1, 2, 3]) //=> true\n * @dataFirst\n * @category Guard\n */\nexport function isDeepEqual<T, S extends T>(\n data: T,\n other: T extends Exclude<T, S> ? S : never,\n): data is S;\nexport function isDeepEqual<T>(data: T, other: T): boolean;\n\n/**\n * Performs a *deep structural* comparison between two values to determine if\n * they are equivalent. For primitive values this is equivalent to `===`, for\n * arrays the check would be performed on every item recursively, in order, and\n * for objects all props will be compared recursively.\n *\n * The built-in Date and RegExp are special-cased and will be compared by their\n * values.\n *\n * !IMPORTANT: TypedArrays and symbol properties of objects are not supported\n * right now and might result in unexpected behavior. Please open an issue in\n * the Perkakas github project if you need support for these types.\n *\n * The result would be narrowed to the second value so that the function can be\n * used as a type guard.\n *\n * See:\n * - `isStrictEqual` if you don't need a deep comparison and just want to\n * check for simple (`===`, `Object.is`) equality.\n * - `isShallowEqual` if you need to compare arrays and objects \"by-value\" but\n * don't want to recurse into their values.\n *\n * @param other - The second value to compare.\n * @signature\n * isDeepEqual(other)(data)\n * @example\n * pipe(1, isDeepEqual(1)); //=> true\n * pipe(1, isDeepEqual('1')); //=> false\n * pipe([1, 2, 3], isDeepEqual([1, 2, 3])); //=> true\n * @dataLast\n * @category Guard\n */\nexport function isDeepEqual<T, S extends T>(\n other: T extends Exclude<T, S> ? S : never,\n): (data: T) => data is S;\nexport function isDeepEqual<T>(other: T): (data: T) => boolean;\n\nexport function isDeepEqual(...args: ReadonlyArray<unknown>): unknown {\n return curry(isDeepEqualImplementation, args);\n}\n\nfunction isDeepEqualImplementation<T>(data: unknown, other: T): data is T {\n if (data === other) {\n return true;\n }\n\n if (Object.is(data, other)) {\n // We want to ignore the slight differences between `===` and `Object.is` as\n // both of them largely define equality from a semantic point-of-view.\n return true;\n }\n\n if (typeof data !== 'object' || typeof other !== 'object') {\n return false;\n }\n\n if (data === null || other === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(data) !== Object.getPrototypeOf(other)) {\n // If the objects don't share a prototype it's unlikely that they are\n // semantically equal. It is technically possible to build 2 prototypes that\n // act the same but are not equal (at the reference level, checked via\n // `===`) and then create 2 objects that are equal although we would fail on\n // them. Because this is so unlikely, the optimization we gain here for the\n // rest of the function by assuming that `other` is of the same type as\n // `data` is more than worth it.\n return false;\n }\n\n if (Array.isArray(data)) {\n return isDeepEqualArrays(data, other as unknown as ReadonlyArray<unknown>);\n }\n\n if (data instanceof Map) {\n return isDeepEqualMaps(data, other as unknown as Map<unknown, unknown>);\n }\n\n if (data instanceof Set) {\n return isDeepEqualSets(data, other as unknown as Set<unknown>);\n }\n\n if (data instanceof Date) {\n return data.getTime() === (other as unknown as Date).getTime();\n }\n\n if (data instanceof RegExp) {\n return data.toString() === (other as unknown as RegExp).toString();\n }\n\n // At this point we only know that the 2 objects share a prototype and are not\n // any of the previous types. They could be plain objects (Object.prototype),\n // they could be classes, they could be other built-ins, or they could be\n // something weird. We assume that comparing values by keys is enough to judge\n // their equality.\n\n if (Object.keys(data).length !== Object.keys(other).length) {\n return false;\n }\n\n for (const [key, value] of Object.entries(data)) {\n if (!(key in other)) {\n return false;\n }\n\n if (\n !isDeepEqualImplementation(\n value,\n // @ts-expect-error [ts7053] - We already checked that `other` has `key`\n other[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualArrays(\n data: ReadonlyArray<unknown>,\n other: ReadonlyArray<unknown>,\n): boolean {\n if (data.length !== other.length) {\n return false;\n }\n\n for (const [index, item] of data.entries()) {\n if (!isDeepEqualImplementation(item, other[index])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualMaps(\n data: ReadonlyMap<unknown, unknown>,\n other: ReadonlyMap<unknown, unknown>,\n): boolean {\n if (data.size !== other.size) {\n return false;\n }\n\n for (const [key, value] of data.entries()) {\n if (!other.has(key)) {\n return false;\n }\n\n if (!isDeepEqualImplementation(value, other.get(key))) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualSets(\n data: ReadonlySet<unknown>,\n other: ReadonlySet<unknown>,\n): boolean {\n if (data.size !== other.size) {\n return false;\n }\n\n // To ensure we only count each item once we need to \"remember\" which items of\n // the other set we've already matched against. We do this by creating a copy\n // of the other set and removing items from it as we find them in the data\n // set.\n const otherCopy = [...other];\n\n for (const dataItem of data) {\n let isFound = false;\n\n for (const [index, otherItem] of otherCopy.entries()) {\n if (isDeepEqualImplementation(dataItem, otherItem)) {\n isFound = true;\n otherCopy.splice(index, 1);\n break;\n }\n }\n\n if (!isFound) {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":"kGA8EA,SAAgB,EAAY,GAAG,EAAuC,CACpE,OAAOA,EAAAA,MAAM,EAA2B,EAAK,CAG/C,SAAS,EAA6B,EAAe,EAAqB,CAKxE,GAJI,IAAS,GAIT,OAAO,GAAG,EAAM,EAAM,CAGxB,MAAO,GAWT,GARI,OAAO,GAAS,UAAY,OAAO,GAAU,UAI7C,IAAS,MAAQ,IAAU,MAI3B,OAAO,eAAe,EAAK,GAAK,OAAO,eAAe,EAAM,CAQ9D,MAAO,GAGT,GAAI,MAAM,QAAQ,EAAK,CACrB,OAAO,EAAkB,EAAM,EAA2C,CAG5E,GAAI,aAAgB,IAClB,OAAO,EAAgB,EAAM,EAA0C,CAGzE,GAAI,aAAgB,IAClB,OAAO,EAAgB,EAAM,EAAiC,CAGhE,GAAI,aAAgB,KAClB,OAAO,EAAK,SAAS,GAAM,EAA0B,SAAS,CAGhE,GAAI,aAAgB,OAClB,OAAO,EAAK,UAAU,GAAM,EAA4B,UAAU,CASpE,GAAI,OAAO,KAAK,EAAK,CAAC,SAAW,OAAO,KAAK,EAAM,CAAC,OAClD,MAAO,GAGT,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAK7C,GAJI,EAAE,KAAO,IAKX,CAAC,EACC,EAEA,EAAM,GACP,CAED,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,SAAW,EAAM,OACxB,MAAO,GAGT,IAAK,GAAM,CAAC,EAAO,KAAS,EAAK,SAAS,CACxC,GAAI,CAAC,EAA0B,EAAM,EAAM,GAAO,CAChD,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,OAAS,EAAM,KACtB,MAAO,GAGT,IAAK,GAAM,CAAC,EAAK,KAAU,EAAK,SAAS,CAKvC,GAJI,CAAC,EAAM,IAAI,EAAI,EAIf,CAAC,EAA0B,EAAO,EAAM,IAAI,EAAI,CAAC,CACnD,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,OAAS,EAAM,KACtB,MAAO,GAOT,IAAM,EAAY,CAAC,GAAG,EAAM,CAE5B,IAAK,IAAM,KAAY,EAAM,CAC3B,IAAI,EAAU,GAEd,IAAK,GAAM,CAAC,EAAO,KAAc,EAAU,SAAS,CAClD,GAAI,EAA0B,EAAU,EAAU,CAAE,CAClD,EAAU,GACV,EAAU,OAAO,EAAO,EAAE,CAC1B,MAIJ,GAAI,CAAC,EACH,MAAO,GAIX,MAAO"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./curry-NmniqyJ0.js";function t(...t){return e(n,t)}function n(e,t){if(e===t||Object.is(e,t))return!0;if(typeof e!=`object`||typeof t!=`object`||e===null||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Array.isArray(e))return r(e,t);if(e instanceof Map)return i(e,t);if(e instanceof Set)return a(e,t);if(e instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp)return e.toString()===t.toString();if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let[r,i]of Object.entries(e))if(!(r in t)||!n(i,t[r]))return!1;return!0}function r(e,t){if(e.length!==t.length)return!1;for(let[r,i]of e.entries())if(!n(i,t[r]))return!1;return!0}function i(e,t){if(e.size!==t.size)return!1;for(let[r,i]of e.entries())if(!t.has(r)||!n(i,t.get(r)))return!1;return!0}function a(e,t){if(e.size!==t.size)return!1;let r=[...t];for(let t of e){let e=!1;for(let[i,a]of r.entries())if(n(t,a)){e=!0,r.splice(i,1);break}if(!e)return!1}return!0}export{t as isDeepEqual};
1
+ import{curry as e}from"./curry.js";function t(...t){return e(n,t)}function n(e,t){if(e===t||Object.is(e,t))return!0;if(typeof e!=`object`||typeof t!=`object`||e===null||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Array.isArray(e))return r(e,t);if(e instanceof Map)return i(e,t);if(e instanceof Set)return a(e,t);if(e instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp)return e.toString()===t.toString();if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let[r,i]of Object.entries(e))if(!(r in t)||!n(i,t[r]))return!1;return!0}function r(e,t){if(e.length!==t.length)return!1;for(let[r,i]of e.entries())if(!n(i,t[r]))return!1;return!0}function i(e,t){if(e.size!==t.size)return!1;for(let[r,i]of e.entries())if(!t.has(r)||!n(i,t.get(r)))return!1;return!0}function a(e,t){if(e.size!==t.size)return!1;let r=[...t];for(let t of e){let e=!1;for(let[i,a]of r.entries())if(n(t,a)){e=!0,r.splice(i,1);break}if(!e)return!1}return!0}export{t as isDeepEqual};
2
2
  //# sourceMappingURL=is-deep-equal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-deep-equal.js","names":[],"sources":["../src/is-deep-equal.ts"],"sourcesContent":["import { curry } from './curry';\n\n/**\n * Performs a *deep structural* comparison between two values to determine if\n * they are equivalent. For primitive values this is equivalent to `===`, for\n * arrays the check would be performed on every item recursively, in order, and\n * for objects all props will be compared recursively.\n *\n * The built-in Date and RegExp are special-cased and will be compared by their\n * values.\n *\n * !IMPORTANT: TypedArrays and symbol properties of objects are not supported\n * right now and might result in unexpected behavior.\n *\n * The result would be narrowed to the second value so that the function can be\n * used as a type guard.\n *\n * See:\n * - `isStrictEqual` if you don't need a deep comparison and just want to\n * check for simple (`===`, `Object.is`) equality.\n * - `isShallowEqual` if you need to compare arrays and objects \"by-value\" but\n * don't want to recurse into their values.\n *\n * @param data - The first value to compare.\n * @param other - The second value to compare.\n * @signature\n * P.isDeepEqual(data, other)\n * @example\n * P.isDeepEqual(1, 1) //=> true\n * P.isDeepEqual(1, '1') //=> false\n * P.isDeepEqual([1, 2, 3], [1, 2, 3]) //=> true\n * @dataFirst\n * @category Guard\n */\nexport function isDeepEqual<T, S extends T>(\n data: T,\n other: T extends Exclude<T, S> ? S : never,\n): data is S;\nexport function isDeepEqual<T>(data: T, other: T): boolean;\n\n/**\n * Performs a *deep structural* comparison between two values to determine if\n * they are equivalent. For primitive values this is equivalent to `===`, for\n * arrays the check would be performed on every item recursively, in order, and\n * for objects all props will be compared recursively.\n *\n * The built-in Date and RegExp are special-cased and will be compared by their\n * values.\n *\n * !IMPORTANT: TypedArrays and symbol properties of objects are not supported\n * right now and might result in unexpected behavior.\n *\n * The result would be narrowed to the second value so that the function can be\n * used as a type guard.\n *\n * See:\n * - `isStrictEqual` if you don't need a deep comparison and just want to\n * check for simple (`===`, `Object.is`) equality.\n * - `isShallowEqual` if you need to compare arrays and objects \"by-value\" but\n * don't want to recurse into their values.\n *\n * @param other - The second value to compare.\n * @signature\n * P.isDeepEqual(other)(data)\n * @example\n * P.pipe(1, P.isDeepEqual(1)); //=> true\n * P.pipe(1, P.isDeepEqual('1')); //=> false\n * P.pipe([1, 2, 3], P.isDeepEqual([1, 2, 3])); //=> true\n * @dataLast\n * @category Guard\n */\nexport function isDeepEqual<T, S extends T>(\n other: T extends Exclude<T, S> ? S : never,\n): (data: T) => data is S;\nexport function isDeepEqual<T>(other: T): (data: T) => boolean;\n\nexport function isDeepEqual(...args: ReadonlyArray<unknown>): unknown {\n return curry(isDeepEqualImplementation, args);\n}\n\nfunction isDeepEqualImplementation<T>(data: unknown, other: T): data is T {\n if (data === other) {\n return true;\n }\n\n if (Object.is(data, other)) {\n // We want to ignore the slight differences between `===` and `Object.is` as\n // both of them largely define equality from a semantic point-of-view.\n return true;\n }\n\n if (typeof data !== 'object' || typeof other !== 'object') {\n return false;\n }\n\n if (data === null || other === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(data) !== Object.getPrototypeOf(other)) {\n // If the objects don't share a prototype it's unlikely that they are\n // semantically equal. It is technically possible to build 2 prototypes that\n // act the same but are not equal (at the reference level, checked via\n // `===`) and then create 2 objects that are equal although we would fail on\n // them. Because this is so unlikely, the optimization we gain here for the\n // rest of the function by assuming that `other` is of the same type as\n // `data` is more than worth it.\n return false;\n }\n\n if (Array.isArray(data)) {\n return isDeepEqualArrays(data, other as unknown as ReadonlyArray<unknown>);\n }\n\n if (data instanceof Map) {\n return isDeepEqualMaps(data, other as unknown as Map<unknown, unknown>);\n }\n\n if (data instanceof Set) {\n return isDeepEqualSets(data, other as unknown as Set<unknown>);\n }\n\n if (data instanceof Date) {\n return data.getTime() === (other as unknown as Date).getTime();\n }\n\n if (data instanceof RegExp) {\n return data.toString() === (other as unknown as RegExp).toString();\n }\n\n // At this point we only know that the 2 objects share a prototype and are not\n // any of the previous types. They could be plain objects (Object.prototype),\n // they could be classes, they could be other built-ins, or they could be\n // something weird. We assume that comparing values by keys is enough to judge\n // their equality.\n\n if (Object.keys(data).length !== Object.keys(other).length) {\n return false;\n }\n\n for (const [key, value] of Object.entries(data)) {\n if (!(key in other)) {\n return false;\n }\n\n if (\n !isDeepEqualImplementation(\n value,\n // @ts-expect-error [ts7053] - We already checked that `other` has `key`\n other[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualArrays(\n data: ReadonlyArray<unknown>,\n other: ReadonlyArray<unknown>,\n): boolean {\n if (data.length !== other.length) {\n return false;\n }\n\n for (const [index, item] of data.entries()) {\n if (!isDeepEqualImplementation(item, other[index])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualMaps(\n data: ReadonlyMap<unknown, unknown>,\n other: ReadonlyMap<unknown, unknown>,\n): boolean {\n if (data.size !== other.size) {\n return false;\n }\n\n for (const [key, value] of data.entries()) {\n if (!other.has(key)) {\n return false;\n }\n\n if (!isDeepEqualImplementation(value, other.get(key))) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualSets(\n data: ReadonlySet<unknown>,\n other: ReadonlySet<unknown>,\n): boolean {\n if (data.size !== other.size) {\n return false;\n }\n\n // To ensure we only count each item once we need to \"remember\" which items of\n // the other set we've already matched against. We do this by creating a copy\n // of the other set and removing items from it as we find them in the data\n // set.\n const otherCopy = [...other];\n\n for (const dataItem of data) {\n let isFound = false;\n\n for (const [index, otherItem] of otherCopy.entries()) {\n if (isDeepEqualImplementation(dataItem, otherItem)) {\n isFound = true;\n otherCopy.splice(index, 1);\n break;\n }\n }\n\n if (!isFound) {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":"wCA4EA,SAAgB,EAAY,GAAG,EAAuC,CACpE,OAAO,EAAM,EAA2B,EAAK,CAG/C,SAAS,EAA6B,EAAe,EAAqB,CAKxE,GAJI,IAAS,GAIT,OAAO,GAAG,EAAM,EAAM,CAGxB,MAAO,GAWT,GARI,OAAO,GAAS,UAAY,OAAO,GAAU,UAI7C,IAAS,MAAQ,IAAU,MAI3B,OAAO,eAAe,EAAK,GAAK,OAAO,eAAe,EAAM,CAQ9D,MAAO,GAGT,GAAI,MAAM,QAAQ,EAAK,CACrB,OAAO,EAAkB,EAAM,EAA2C,CAG5E,GAAI,aAAgB,IAClB,OAAO,EAAgB,EAAM,EAA0C,CAGzE,GAAI,aAAgB,IAClB,OAAO,EAAgB,EAAM,EAAiC,CAGhE,GAAI,aAAgB,KAClB,OAAO,EAAK,SAAS,GAAM,EAA0B,SAAS,CAGhE,GAAI,aAAgB,OAClB,OAAO,EAAK,UAAU,GAAM,EAA4B,UAAU,CASpE,GAAI,OAAO,KAAK,EAAK,CAAC,SAAW,OAAO,KAAK,EAAM,CAAC,OAClD,MAAO,GAGT,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAK7C,GAJI,EAAE,KAAO,IAKX,CAAC,EACC,EAEA,EAAM,GACP,CAED,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,SAAW,EAAM,OACxB,MAAO,GAGT,IAAK,GAAM,CAAC,EAAO,KAAS,EAAK,SAAS,CACxC,GAAI,CAAC,EAA0B,EAAM,EAAM,GAAO,CAChD,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,OAAS,EAAM,KACtB,MAAO,GAGT,IAAK,GAAM,CAAC,EAAK,KAAU,EAAK,SAAS,CAKvC,GAJI,CAAC,EAAM,IAAI,EAAI,EAIf,CAAC,EAA0B,EAAO,EAAM,IAAI,EAAI,CAAC,CACnD,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,OAAS,EAAM,KACtB,MAAO,GAOT,IAAM,EAAY,CAAC,GAAG,EAAM,CAE5B,IAAK,IAAM,KAAY,EAAM,CAC3B,IAAI,EAAU,GAEd,IAAK,GAAM,CAAC,EAAO,KAAc,EAAU,SAAS,CAClD,GAAI,EAA0B,EAAU,EAAU,CAAE,CAClD,EAAU,GACV,EAAU,OAAO,EAAO,EAAE,CAC1B,MAIJ,GAAI,CAAC,EACH,MAAO,GAIX,MAAO"}
1
+ {"version":3,"file":"is-deep-equal.js","names":[],"sources":["../src/is-deep-equal.ts"],"sourcesContent":["import { curry } from './curry';\n\n/**\n * Performs a *deep structural* comparison between two values to determine if\n * they are equivalent. For primitive values this is equivalent to `===`, for\n * arrays the check would be performed on every item recursively, in order, and\n * for objects all props will be compared recursively.\n *\n * The built-in Date and RegExp are special-cased and will be compared by their\n * values.\n *\n * !IMPORTANT: TypedArrays and symbol properties of objects are not supported\n * right now and might result in unexpected behavior. Please open an issue in\n * the Perkakas github project if you need support for these types.\n *\n * The result would be narrowed to the second value so that the function can be\n * used as a type guard.\n *\n * See:\n * - `isStrictEqual` if you don't need a deep comparison and just want to\n * check for simple (`===`, `Object.is`) equality.\n * - `isShallowEqual` if you need to compare arrays and objects \"by-value\" but\n * don't want to recurse into their values.\n *\n * @param data - The first value to compare.\n * @param other - The second value to compare.\n * @signature\n * isDeepEqual(data, other)\n * @example\n * isDeepEqual(1, 1) //=> true\n * isDeepEqual(1, '1') //=> false\n * isDeepEqual([1, 2, 3], [1, 2, 3]) //=> true\n * @dataFirst\n * @category Guard\n */\nexport function isDeepEqual<T, S extends T>(\n data: T,\n other: T extends Exclude<T, S> ? S : never,\n): data is S;\nexport function isDeepEqual<T>(data: T, other: T): boolean;\n\n/**\n * Performs a *deep structural* comparison between two values to determine if\n * they are equivalent. For primitive values this is equivalent to `===`, for\n * arrays the check would be performed on every item recursively, in order, and\n * for objects all props will be compared recursively.\n *\n * The built-in Date and RegExp are special-cased and will be compared by their\n * values.\n *\n * !IMPORTANT: TypedArrays and symbol properties of objects are not supported\n * right now and might result in unexpected behavior. Please open an issue in\n * the Perkakas github project if you need support for these types.\n *\n * The result would be narrowed to the second value so that the function can be\n * used as a type guard.\n *\n * See:\n * - `isStrictEqual` if you don't need a deep comparison and just want to\n * check for simple (`===`, `Object.is`) equality.\n * - `isShallowEqual` if you need to compare arrays and objects \"by-value\" but\n * don't want to recurse into their values.\n *\n * @param other - The second value to compare.\n * @signature\n * isDeepEqual(other)(data)\n * @example\n * pipe(1, isDeepEqual(1)); //=> true\n * pipe(1, isDeepEqual('1')); //=> false\n * pipe([1, 2, 3], isDeepEqual([1, 2, 3])); //=> true\n * @dataLast\n * @category Guard\n */\nexport function isDeepEqual<T, S extends T>(\n other: T extends Exclude<T, S> ? S : never,\n): (data: T) => data is S;\nexport function isDeepEqual<T>(other: T): (data: T) => boolean;\n\nexport function isDeepEqual(...args: ReadonlyArray<unknown>): unknown {\n return curry(isDeepEqualImplementation, args);\n}\n\nfunction isDeepEqualImplementation<T>(data: unknown, other: T): data is T {\n if (data === other) {\n return true;\n }\n\n if (Object.is(data, other)) {\n // We want to ignore the slight differences between `===` and `Object.is` as\n // both of them largely define equality from a semantic point-of-view.\n return true;\n }\n\n if (typeof data !== 'object' || typeof other !== 'object') {\n return false;\n }\n\n if (data === null || other === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(data) !== Object.getPrototypeOf(other)) {\n // If the objects don't share a prototype it's unlikely that they are\n // semantically equal. It is technically possible to build 2 prototypes that\n // act the same but are not equal (at the reference level, checked via\n // `===`) and then create 2 objects that are equal although we would fail on\n // them. Because this is so unlikely, the optimization we gain here for the\n // rest of the function by assuming that `other` is of the same type as\n // `data` is more than worth it.\n return false;\n }\n\n if (Array.isArray(data)) {\n return isDeepEqualArrays(data, other as unknown as ReadonlyArray<unknown>);\n }\n\n if (data instanceof Map) {\n return isDeepEqualMaps(data, other as unknown as Map<unknown, unknown>);\n }\n\n if (data instanceof Set) {\n return isDeepEqualSets(data, other as unknown as Set<unknown>);\n }\n\n if (data instanceof Date) {\n return data.getTime() === (other as unknown as Date).getTime();\n }\n\n if (data instanceof RegExp) {\n return data.toString() === (other as unknown as RegExp).toString();\n }\n\n // At this point we only know that the 2 objects share a prototype and are not\n // any of the previous types. They could be plain objects (Object.prototype),\n // they could be classes, they could be other built-ins, or they could be\n // something weird. We assume that comparing values by keys is enough to judge\n // their equality.\n\n if (Object.keys(data).length !== Object.keys(other).length) {\n return false;\n }\n\n for (const [key, value] of Object.entries(data)) {\n if (!(key in other)) {\n return false;\n }\n\n if (\n !isDeepEqualImplementation(\n value,\n // @ts-expect-error [ts7053] - We already checked that `other` has `key`\n other[key],\n )\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualArrays(\n data: ReadonlyArray<unknown>,\n other: ReadonlyArray<unknown>,\n): boolean {\n if (data.length !== other.length) {\n return false;\n }\n\n for (const [index, item] of data.entries()) {\n if (!isDeepEqualImplementation(item, other[index])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualMaps(\n data: ReadonlyMap<unknown, unknown>,\n other: ReadonlyMap<unknown, unknown>,\n): boolean {\n if (data.size !== other.size) {\n return false;\n }\n\n for (const [key, value] of data.entries()) {\n if (!other.has(key)) {\n return false;\n }\n\n if (!isDeepEqualImplementation(value, other.get(key))) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqualSets(\n data: ReadonlySet<unknown>,\n other: ReadonlySet<unknown>,\n): boolean {\n if (data.size !== other.size) {\n return false;\n }\n\n // To ensure we only count each item once we need to \"remember\" which items of\n // the other set we've already matched against. We do this by creating a copy\n // of the other set and removing items from it as we find them in the data\n // set.\n const otherCopy = [...other];\n\n for (const dataItem of data) {\n let isFound = false;\n\n for (const [index, otherItem] of otherCopy.entries()) {\n if (isDeepEqualImplementation(dataItem, otherItem)) {\n isFound = true;\n otherCopy.splice(index, 1);\n break;\n }\n }\n\n if (!isFound) {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":"mCA8EA,SAAgB,EAAY,GAAG,EAAuC,CACpE,OAAO,EAAM,EAA2B,EAAK,CAG/C,SAAS,EAA6B,EAAe,EAAqB,CAKxE,GAJI,IAAS,GAIT,OAAO,GAAG,EAAM,EAAM,CAGxB,MAAO,GAWT,GARI,OAAO,GAAS,UAAY,OAAO,GAAU,UAI7C,IAAS,MAAQ,IAAU,MAI3B,OAAO,eAAe,EAAK,GAAK,OAAO,eAAe,EAAM,CAQ9D,MAAO,GAGT,GAAI,MAAM,QAAQ,EAAK,CACrB,OAAO,EAAkB,EAAM,EAA2C,CAG5E,GAAI,aAAgB,IAClB,OAAO,EAAgB,EAAM,EAA0C,CAGzE,GAAI,aAAgB,IAClB,OAAO,EAAgB,EAAM,EAAiC,CAGhE,GAAI,aAAgB,KAClB,OAAO,EAAK,SAAS,GAAM,EAA0B,SAAS,CAGhE,GAAI,aAAgB,OAClB,OAAO,EAAK,UAAU,GAAM,EAA4B,UAAU,CASpE,GAAI,OAAO,KAAK,EAAK,CAAC,SAAW,OAAO,KAAK,EAAM,CAAC,OAClD,MAAO,GAGT,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAK,CAK7C,GAJI,EAAE,KAAO,IAKX,CAAC,EACC,EAEA,EAAM,GACP,CAED,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,SAAW,EAAM,OACxB,MAAO,GAGT,IAAK,GAAM,CAAC,EAAO,KAAS,EAAK,SAAS,CACxC,GAAI,CAAC,EAA0B,EAAM,EAAM,GAAO,CAChD,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,OAAS,EAAM,KACtB,MAAO,GAGT,IAAK,GAAM,CAAC,EAAK,KAAU,EAAK,SAAS,CAKvC,GAJI,CAAC,EAAM,IAAI,EAAI,EAIf,CAAC,EAA0B,EAAO,EAAM,IAAI,EAAI,CAAC,CACnD,MAAO,GAIX,MAAO,GAGT,SAAS,EACP,EACA,EACS,CACT,GAAI,EAAK,OAAS,EAAM,KACtB,MAAO,GAOT,IAAM,EAAY,CAAC,GAAG,EAAM,CAE5B,IAAK,IAAM,KAAY,EAAM,CAC3B,IAAI,EAAU,GAEd,IAAK,GAAM,CAAC,EAAO,KAAc,EAAU,SAAS,CAClD,GAAI,EAA0B,EAAU,EAAU,CAAE,CAClD,EAAU,GACV,EAAU,OAAO,EAAO,EAAE,CAC1B,MAIJ,GAAI,CAAC,EACH,MAAO,GAIX,MAAO"}
@@ -1 +1,2 @@
1
- function e(e){return e!==void 0}exports.isDefined=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e!==void 0}exports.isDefined=e;
2
+ //# sourceMappingURL=is-defined.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-defined.cjs","names":[],"sources":["../src/is-defined.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is defined (`!== undefined`)\n * and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined, false otherwise.\n * @signature\n * isDefined(data)\n * @example\n * isDefined('string') //=> true\n * isDefined(null) //=> true\n * isDefined(undefined) //=> false\n * @category Guard\n */\nexport function isDefined<T>(data: T | undefined): data is T {\n return data !== undefined;\n}\n"],"mappings":"mEAcA,SAAgB,EAAa,EAAgC,CAC3D,OAAO,IAAS,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-defined.js","names":[],"sources":["../src/is-defined.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is defined (`!== undefined`)\n * and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined, false otherwise.\n * @signature\n * P.isDefined(data)\n * @example\n * P.isDefined('string') //=> true\n * P.isDefined(null) //=> true\n * P.isDefined(undefined) //=> false\n * @category Guard\n */\nexport function isDefined<T>(data: T | undefined): data is T {\n return data !== undefined;\n}\n"],"mappings":"AAcA,SAAgB,EAAa,EAAgC,CAC3D,OAAO,IAAS,IAAA"}
1
+ {"version":3,"file":"is-defined.js","names":[],"sources":["../src/is-defined.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is defined (`!== undefined`)\n * and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined, false otherwise.\n * @signature\n * isDefined(data)\n * @example\n * isDefined('string') //=> true\n * isDefined(null) //=> true\n * isDefined(undefined) //=> false\n * @category Guard\n */\nexport function isDefined<T>(data: T | undefined): data is T {\n return data !== undefined;\n}\n"],"mappings":"AAcA,SAAgB,EAAa,EAAgC,CAC3D,OAAO,IAAS,IAAA"}
package/dist/is-empty.cjs CHANGED
@@ -1 +1,2 @@
1
- function e(e){return e===void 0?!0:typeof e==`string`||Array.isArray(e)?e.length===0:Object.keys(e).length===0}exports.isEmpty=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e===``||e===void 0?!0:Array.isArray(e)?e.length===0:Object.keys(e).length===0}exports.isEmpty=e;
2
+ //# sourceMappingURL=is-empty.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-empty.cjs","names":[],"sources":["../src/is-empty.ts"],"sourcesContent":["import type { IterableContainer } from './internal/types/iterable-container';\n\n/**\n * A function that checks if the passed parameter is empty.\n *\n * This function has *limited* utility at the type level because **negating** it\n * does not yield a useful type in most cases because of TypeScript\n * limitations. Additionally, utilities which accept a narrower input type\n * provide better type-safety on their inputs. In most cases, you should use\n * one of the following functions instead:\n * `isEmptyish` - supports a wider range of cases, accepts any input including nullish values, and does a better job at narrowing the result.\n * `hasAtLeast` - when the input is just an array/tuple.\n * `isStrictEqual` - when you just need to check for a specific literal value.\n * `isNullish` - when you just care about `null` and `undefined`.\n * `isTruthy` - when you need to also filter `number` and `boolean`.\n *\n * @param data - The variable to check.\n * @signature\n * isEmpty(data)\n * @example\n * isEmpty(''); //=> true\n * isEmpty([]); //=> true\n * isEmpty({}); //=> true\n *\n * isEmpty('test'); //=> false\n * isEmpty([1, 2, 3]); //=> false\n * isEmpty({ a: \"hello\" }); //=> false\n *\n * isEmpty(undefined); // Deprecated: use `isEmptyish`\n * @category Guard\n */\nexport function isEmpty(data: IterableContainer): data is [];\nexport function isEmpty<T extends object>(\n data: T,\n): data is Record<keyof T, never>;\nexport function isEmpty<T extends string>(\n data: T,\n): data is '' extends T ? '' : never;\n\n// TODO [>2]: remove this overload once we stop supporting `undefined`.\n\n/**\n * @deprecated Use `isEmptyish` instead!\n */\nexport function isEmpty<T extends string | undefined>(\n data: T,\n): data is\n | ('' extends T ? '' : never)\n | (undefined extends T ? undefined : never);\n\nexport function isEmpty(data: object | string | undefined): boolean {\n if (\n data === ''\n // TODO [>2]: remove `undefined` support! (don't forget to update the jsdoc example too!)\n || data === undefined\n ) {\n return true;\n }\n\n if (Array.isArray(data)) {\n return data.length === 0;\n }\n\n return Object.keys(data).length === 0;\n}\n"],"mappings":"mEAkDA,SAAgB,EAAQ,EAA4C,CAalE,OAXE,IAAS,IAEN,IAAS,IAAA,GAEL,GAGL,MAAM,QAAQ,EAAK,CACd,EAAK,SAAW,EAGlB,OAAO,KAAK,EAAK,CAAC,SAAW"}
package/dist/is-empty.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(e){return e===void 0?!0:typeof e==`string`||Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{e as isEmpty};
1
+ function e(e){return e===``||e===void 0?!0:Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{e as isEmpty};
2
2
  //# sourceMappingURL=is-empty.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-empty.js","names":[],"sources":["../src/is-empty.ts"],"sourcesContent":["import type { IterableContainer } from './internal/types/iterable-container';\n\n/**\n * A function that checks if the passed parameter is empty.\n *\n * `undefined` is also considered empty, but only when it's in a union with a\n * `string` or string-like type.\n *\n * This guard doesn't work negated because of typescript limitations! If you\n * need to check that an array is *not* empty, use `P.hasAtLeast(data, 1)`\n * and not `!P.isEmpty(data)`. For strings and objects there's no way in\n * typescript to narrow the result to a non-empty type.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is empty, false otherwise.\n * @signature\n * P.isEmpty(data)\n * @example\n * P.isEmpty(undefined) //=>true\n * P.isEmpty('') //=> true\n * P.isEmpty([]) //=> true\n * P.isEmpty({}) //=> true\n * P.isEmpty('test') //=> false\n * P.isEmpty([1, 2, 3]) //=> false\n * P.isEmpty({ length: 0 }) //=> false\n * @category Guard\n */\nexport function isEmpty<T extends string | undefined>(\n data: T,\n): data is\n | ('' extends T ? '' : never)\n | (undefined extends T ? undefined : never);\nexport function isEmpty(data: IterableContainer): data is [];\nexport function isEmpty<T extends object>(\n data: T,\n): data is Record<keyof T, never>;\n\nexport function isEmpty(data: object | string | undefined): boolean {\n if (data === undefined) {\n return true;\n }\n\n if (typeof data === 'string') {\n return data.length === 0;\n }\n\n if (Array.isArray(data)) {\n return data.length === 0;\n }\n\n return Object.keys(data).length === 0;\n}\n"],"mappings":"AAqCA,SAAgB,EAAQ,EAA4C,CAalE,OAZI,IAAS,IAAA,GACJ,GAGL,OAAO,GAAS,UAIhB,MAAM,QAAQ,EAAK,CACd,EAAK,SAAW,EAGlB,OAAO,KAAK,EAAK,CAAC,SAAW"}
1
+ {"version":3,"file":"is-empty.js","names":[],"sources":["../src/is-empty.ts"],"sourcesContent":["import type { IterableContainer } from './internal/types/iterable-container';\n\n/**\n * A function that checks if the passed parameter is empty.\n *\n * This function has *limited* utility at the type level because **negating** it\n * does not yield a useful type in most cases because of TypeScript\n * limitations. Additionally, utilities which accept a narrower input type\n * provide better type-safety on their inputs. In most cases, you should use\n * one of the following functions instead:\n * `isEmptyish` - supports a wider range of cases, accepts any input including nullish values, and does a better job at narrowing the result.\n * `hasAtLeast` - when the input is just an array/tuple.\n * `isStrictEqual` - when you just need to check for a specific literal value.\n * `isNullish` - when you just care about `null` and `undefined`.\n * `isTruthy` - when you need to also filter `number` and `boolean`.\n *\n * @param data - The variable to check.\n * @signature\n * isEmpty(data)\n * @example\n * isEmpty(''); //=> true\n * isEmpty([]); //=> true\n * isEmpty({}); //=> true\n *\n * isEmpty('test'); //=> false\n * isEmpty([1, 2, 3]); //=> false\n * isEmpty({ a: \"hello\" }); //=> false\n *\n * isEmpty(undefined); // Deprecated: use `isEmptyish`\n * @category Guard\n */\nexport function isEmpty(data: IterableContainer): data is [];\nexport function isEmpty<T extends object>(\n data: T,\n): data is Record<keyof T, never>;\nexport function isEmpty<T extends string>(\n data: T,\n): data is '' extends T ? '' : never;\n\n// TODO [>2]: remove this overload once we stop supporting `undefined`.\n\n/**\n * @deprecated Use `isEmptyish` instead!\n */\nexport function isEmpty<T extends string | undefined>(\n data: T,\n): data is\n | ('' extends T ? '' : never)\n | (undefined extends T ? undefined : never);\n\nexport function isEmpty(data: object | string | undefined): boolean {\n if (\n data === ''\n // TODO [>2]: remove `undefined` support! (don't forget to update the jsdoc example too!)\n || data === undefined\n ) {\n return true;\n }\n\n if (Array.isArray(data)) {\n return data.length === 0;\n }\n\n return Object.keys(data).length === 0;\n}\n"],"mappings":"AAkDA,SAAgB,EAAQ,EAA4C,CAalE,OAXE,IAAS,IAEN,IAAS,IAAA,GAEL,GAGL,MAAM,QAAQ,EAAK,CACd,EAAK,SAAW,EAGlB,OAAO,KAAK,EAAK,CAAC,SAAW"}
@@ -1 +1,2 @@
1
- function e(e){if(e==null||e===``)return!0;if(typeof e!=`object`)return!1;if(`length`in e&&typeof e.length==`number`)return e.length===0;if(`size`in e&&typeof e.size==`number`)return e.size===0;for(let t in e)return!1;return Object.getOwnPropertySymbols(e).length===0}exports.isEmptyish=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){if(e==null||e===``)return!0;if(typeof e!=`object`)return!1;if(`length`in e&&typeof e.length==`number`)return e.length===0;if(`size`in e&&typeof e.size==`number`)return e.size===0;for(let t in e)return!1;return Object.getOwnPropertySymbols(e).length===0}exports.isEmptyish=e;
2
+ //# sourceMappingURL=is-emptyish.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-emptyish.cjs","names":[],"sources":["../src/is-emptyish.ts"],"sourcesContent":["import type {\n And,\n HasRequiredKeys,\n IsAny,\n IsEqual,\n IsNever,\n IsNumericLiteral,\n IsUnknown,\n OmitIndexSignature,\n Or,\n Tagged,\n ValueOf,\n} from 'type-fest';\nimport type { HasWritableKeys } from './internal/types/has-writable-keys';\nimport type { TupleParts } from './internal/types/tuple-parts';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars -- we use a non-exported unique symbol to prevent users from faking our return type.\ndeclare const EMPTYISH_BRAND: unique symbol;\n\n// Because our function is a type-predicate and it narrows the input based on\n// the result of our type, we sometimes need a way to \"turn off\" narrowing while\n// still returning the input type. By tagging/branding our return type we stop\n// TypeScript from narrowing it while still allowing it to be used as if it was\n// the input type (because it still extends the type).\ntype Empty<T> = Tagged<T, typeof EMPTYISH_BRAND>;\n\n// The goal of this type is to return the empty \"view\" of the input type. This\n// makes it possible for TypeScript to narrow it precisely.\ntype Emptyish<T>\n // There are effectively 4 types that can be empty:\n = | (T extends string ? '' : never)\n | (T extends object ? EmptyishObjectLike<T> : never)\n | (T extends null ? null : never)\n | (T extends undefined ? undefined : never);\n\n// Because of TypeScript's duck-typing, a lot of sub-types of `object` can\n// extend each other so we need to cascade between the different \"kinds\" of\n// objects.\ntype EmptyishObjectLike<T extends object> = T extends ReadonlyArray<unknown>\n ? EmptyishArray<T>\n : T extends ReadonlyMap<infer Key, unknown>\n ? T extends Map<unknown, unknown>\n ? // Mutable maps should remain mutable so we can't narrow them down.\n Empty<T>\n : // But immutable maps could be rewritten to prevent any mutations.\n ReadonlyMap<Key, never>\n : T extends ReadonlySet<unknown>\n ? T extends Set<unknown>\n ? // Mutable sets should remain mutable so we can't narrow them down.\n Empty<T>\n : // But immutable sets could be rewritten to prevent any mutations.\n ReadonlySet<never>\n : EmptyishObject<T>;\n\ntype EmptyishArray<T extends ReadonlyArray<unknown>> = T extends readonly []\n ? // By returning T we effectively narrow the \"else\" branch to `never`.\n T\n : And<\n IsEqual<TupleParts<T>['required'], []>,\n IsEqual<TupleParts<T>['suffix'], []>\n > extends true\n ? T extends Array<unknown>\n ? // A mutable array should remain mutable so we can't narrow it down.\n Empty<T>\n : // But immutable arrays could be rewritten to prevent any mutations.\n readonly []\n : // An array with a required prefix or suffix would never be empty, we can\n // use that fact to narrow the \"if\" branch to `never`.\n never;\n\ntype EmptyishObject<T extends object> = T extends {\n length: infer Length extends number;\n}\n ? T extends string\n ? // When a string is tagged/branded it also extends `object` and also has\n // a `length` prop so we need to prevent handling it because it's\n // irrelevant here!\n never\n : // Because of how the implementation works, we need to consider any object\n // with a `length` prop as potentially \"empty\".\n EmptyishArbitrary<T, Length>\n : T extends { size: infer Size extends number }\n ? // Because of how the implementation works, we need to consider any object\n // with a `size` prop as potentially \"empty\".\n EmptyishArbitrary<T, Size>\n : IsNever<ValueOf<T>> extends true\n ? // This handles empty objects; by returning T we effectively narrow the\n // \"else\" branch to `never`.\n T\n : HasRequiredKeys<OmitIndexSignature<T>> extends true\n ? // If the object has required keys it can never be empty, we can use\n // that fact to narrow the \"if\" branch to `never`.\n never\n : HasWritableKeys<T> extends true\n ? // A mutable object should remain mutable so we can't narrow it\n // down.\n Empty<T>\n : // But immutable objects could be rewritten to prevent any\n // mutations.\n { readonly [P in keyof T]: never };\n\n// We use certain props to check for emptiness effectively, but that means we\n// will return those values for any object that has them. Because we don't know\n// anything about those objects we need to be careful about narrowing.\ntype EmptyishArbitrary<T, N>\n = IsNumericLiteral<N> extends true\n ? [0] extends [N]\n ? [N] extends [0]\n ? // If the prop is a literal 0 the object is and always will be empty\n // so we can return it to narrow the \"else\" branch as `never`.\n T\n : // If it accepts 0, but might accept other values too we need to\n // consider the object mutable and not narrow it down.\n Empty<T>\n : // If the prop will never be 0 we can say it will never be empty and can\n // return `never` for the \"if\" branch.\n never\n : // If the prop isn't a literal value we don't know enough about the object\n // and should consider it mutable.\n Empty<T>;\n\n// Overly generic types interfere with our already pretty complex return type.\n// To make our lives easier we can filter them out at the function declaration\n// step and we never need to think about them again.\ntype ShouldNotNarrow<T> = Or<\n Or<IsAny<T>, IsUnknown<T>>,\n IsEqual<\n T,\n // eslint-disable-next-line ts/no-empty-object-type\n {}\n >\n>;\n\n/**\n * A function that checks if the input is empty. Empty is defined as anything\n * exposing a numerical `length`, or `size` property that is equal to `0`. This\n * definition covers strings, arrays, Maps, Sets, plain objects, and custom\n * classes. Additionally, `null` and `undefined` are also considered empty.\n *\n * `number`, `bigint`, `boolean`, `symbol`, and `function` will always return\n * `false`. `RegExp`, `Date`, and weak collections will always return `true`.\n * Classes and Errors are treated as plain objects: if they expose any public\n * property they would be considered non-empty, unless they expose a numerical\n * `length` or `size` property, which defines their emptiness regardless of\n * other properties.\n *\n * This function has *limited* utility at the type level because **negating** it\n * does not yield a useful type in most cases because of TypeScript\n * limitations. Additionally, utilities which accept a narrower input type\n * provide better type-safety on their inputs. In most cases, you should use\n * one of the following functions instead:\n * `isEmpty` - provides better type-safety on inputs by accepting a narrower set of cases.\n * `hasAtLeast` - when the input is just an array/tuple.\n * `isStrictEqual` - when you just need to check for a specific literal value.\n * `isNullish` - when you just care about `null` and `undefined`.\n * `isTruthy` - when you need to also filter `number` and `boolean`.\n *\n * @param data - The variable to check.\n * @signature\n * isEmptyish(data)\n * @example\n * isEmptyish(undefined); //=> true\n * isEmptyish(null); //=> true\n * isEmptyish(''); //=> true\n * isEmptyish([]); //=> true\n * isEmptyish({}); //=> true\n * isEmptyish(new Map()); //=> true\n * isEmptyish(new Set()); //=> true\n * isEmptyish({ a: \"hello\", size: 0 }); //=> true\n * isEmptyish(/abc/); //=> true\n * isEmptyish(new Date()); //=> true\n * isEmptyish(new WeakMap()); //=> true\n *\n * isEmptyish('test'); //=> false\n * isEmptyish([1, 2, 3]); //=> false\n * isEmptyish({ a: \"hello\" }); //=> false\n * isEmptyish({ length: 1 }); //=> false\n * isEmptyish(0); //=> false\n * isEmptyish(true); //=> false\n * isEmptyish(() => {}); //=> false\n * @category Guard\n */\nexport function isEmptyish<T>(\n data: ShouldNotNarrow<T> extends true\n ? never\n : T | Readonly<Emptyish<NoInfer<T>>>,\n): data is ShouldNotNarrow<T> extends true\n ? never\n : T extends unknown\n ? Emptyish<NoInfer<T>>\n : never;\nexport function isEmptyish(data: unknown): boolean;\n\nexport function isEmptyish(data: unknown): boolean {\n // eslint-disable-next-line eqeqeq -- Less code to ship...\n if (data == undefined || data === '') {\n // These are the only literal values that are considered emptyish.\n return true;\n }\n\n if (typeof data !== 'object') {\n // There are no non-object types that could be empty at this point...\n return false;\n }\n\n if ('length' in data && typeof data.length === 'number') {\n // Arrays and array-likes.\n return data.length === 0;\n }\n\n if ('size' in data && typeof data.size === 'number') {\n // Maps and Sets.\n return data.size === 0;\n }\n\n // eslint-disable-next-line no-unreachable-loop -- Instead of taking Object.keys just to check its length, which will be inefficient if the object has a lot of keys, we have a backdoor into an iterator of the object's properties via the `for...in` loop.\n for (const _ in data) {\n return false;\n }\n\n // We can't do a similar optimization for symbol props, so we leave them for\n // the very last check when the object is practically empty. Assuming that\n // even if an object has a symbol prop, it probably doesn't have thousands of\n // them.\n return Object.getOwnPropertySymbols(data).length === 0;\n}\n"],"mappings":"mEAiMA,SAAgB,EAAW,EAAwB,CAEjD,GAAI,GAAQ,MAAa,IAAS,GAEhC,MAAO,GAGT,GAAI,OAAO,GAAS,SAElB,MAAO,GAGT,GAAI,WAAY,GAAQ,OAAO,EAAK,QAAW,SAE7C,OAAO,EAAK,SAAW,EAGzB,GAAI,SAAU,GAAQ,OAAO,EAAK,MAAS,SAEzC,OAAO,EAAK,OAAS,EAIvB,IAAK,IAAM,KAAK,EACd,MAAO,GAOT,OAAO,OAAO,sBAAsB,EAAK,CAAC,SAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-emptyish.js","names":[],"sources":["../src/is-emptyish.ts"],"sourcesContent":["import type {\n And,\n HasRequiredKeys,\n IsAny,\n IsEqual,\n IsNever,\n IsNumericLiteral,\n IsUnknown,\n OmitIndexSignature,\n Or,\n Tagged,\n ValueOf,\n} from 'type-fest';\nimport type { HasWritableKeys } from './internal/types/has-writable-keys';\nimport type { TupleParts } from './internal/types/tuple-parts';\n\n// eslint-disable-next-line ts/no-unused-vars -- we use a non-exported unique symbol to prevent users from faking our return type.\ndeclare const EMPTYISH_BRAND: unique symbol;\n\n// Because our function is a type-predicate and it narrows the input based on\n// the result of our type, we sometimes need a way to \"turn off\" narrowing while\n// still returning the input type. By tagging/branding our return type we stop\n// TypeScript from narrowing it while still allowing it to be used as if it was\n// the input type (because it still extends the type).\ntype Empty<T> = Tagged<T, typeof EMPTYISH_BRAND>;\n\n// The goal of this type is to return the empty \"view\" of the input type. This\n// makes it possible for TypeScript to narrow it precisely.\ntype Emptyish<T>\n // There are effectively 4 types that can be empty:\n = | (T extends string ? '' : never)\n | (T extends object ? EmptyishObjectLike<T> : never)\n | (T extends null ? null : never)\n | (T extends undefined ? undefined : never);\n\n// Because of TypeScript's duck-typing, a lot of sub-types of `object` can\n// extend each other so we need to cascade between the different \"kinds\" of\n// objects.\ntype EmptyishObjectLike<T extends object>\n = T extends ReadonlyArray<unknown>\n ? EmptyishArray<T>\n : T extends ReadonlyMap<infer Key, unknown>\n ? T extends Map<unknown, unknown>\n // Mutable maps should remain mutable so we can't narrow them down.\n ? Empty<T>\n // But immutable maps could be rewritten to prevent any mutations.\n : ReadonlyMap<Key, never>\n : T extends ReadonlySet<unknown>\n ? T extends Set<unknown>\n // Mutable sets should remain mutable so we can't narrow them down.\n ? Empty<T>\n // But immutable sets could be rewritten to prevent any mutations.\n : ReadonlySet<never>\n : EmptyishObject<T>;\n\ntype EmptyishArray<T extends ReadonlyArray<unknown>> = T extends readonly []\n // By returning T we effectively narrow the \"else\" branch to `never`.\n ? T\n : And<\n IsEqual<TupleParts<T>['required'], []>,\n IsEqual<TupleParts<T>['suffix'], []>\n > extends true\n ? T extends Array<unknown>\n // A mutable array should remain mutable so we can't narrow it down.\n ? Empty<T>\n // But immutable arrays could be rewritten to prevent any mutations.\n : readonly []\n // An array with a required prefix or suffix would never be empty, we can\n // use that fact to narrow the \"if\" branch to `never`.\n : never;\n\ntype EmptyishObject<T extends object> = T extends {\n length: infer Length extends number;\n}\n ? T extends string\n // When a string is tagged/branded it also extends `object` and also has\n // a `length` prop so we need to prevent handling it because it's\n // irrelevant here!\n ? never\n // Because of how the implementation works, we need to consider any object\n // with a `length` prop as potentially \"empty\".\n : EmptyishArbitrary<T, Length>\n : T extends { size: infer Size extends number }\n // Because of how the implementation works, we need to consider any object\n // with a `size` prop as potentially \"empty\".\n ? EmptyishArbitrary<T, Size>\n : IsNever<ValueOf<T>> extends true\n // This handles empty objects; by returning T we effectively narrow the\n // \"else\" branch to `never`.\n ? T\n : HasRequiredKeys<OmitIndexSignature<T>> extends true\n // If the object has required keys it can never be empty, we can use\n // that fact to narrow the \"if\" branch to `never`.\n ? never\n : HasWritableKeys<T> extends true\n // A mutable object should remain mutable so we can't narrow it down.\n ? Empty<T>\n // But immutable objects could be rewritten to prevent any mutations.\n : { readonly [P in keyof T]: never };\n\n// We use certain props to check for emptiness effectively, but that means we\n// will return those values for any object that has them. Because we don't know\n// anything about those objects we need to be careful about narrowing.\ntype EmptyishArbitrary<T, N>\n = IsNumericLiteral<N> extends true\n ? [0] extends [N]\n ? [N] extends [0]\n // If the prop is a literal 0 the object is and always will be empty\n // so we can return it to narrow the \"else\" branch as `never`.\n ? T\n // If it accepts 0, but might accept other values too we need to\n // consider the object mutable and not narrow it down.\n : Empty<T>\n // If the prop will never be 0 we can say it will never be empty and can\n // return `never` for the \"if\" branch.\n : never\n // If the prop isn't a literal value we don't know enough about the object\n // and should consider it mutable.\n : Empty<T>;\n\n// Overly generic types interfere with our already pretty complex return type.\n// To make our lives easier we can filter them out at the function declaration\n// step and we never need to think about them again.\ntype ShouldNotNarrow<T> = Or<\n Or<IsAny<T>, IsUnknown<T>>,\n IsEqual<\n T,\n // eslint-disable-next-line ts/no-empty-object-type\n {}\n >\n>;\n\n/**\n * A function that checks if the input is empty. Empty is defined as anything\n * exposing a numerical `length`, or `size` property that is equal to `0`. This\n * definition covers strings, arrays, Maps, Sets, plain objects, and custom\n * classes. Additionally, `null` and `undefined` are also considered empty.\n *\n * `number`, `bigint`, `boolean`, `symbol`, and `function` will always return\n * `false`. `RegExp`, `Date`, and weak collections will always return `true`.\n * Classes and Errors are treated as plain objects: if they expose any public\n * property they would be considered non-empty, unless they expose a numerical\n * `length` or `size` property, which defines their emptiness regardless of\n * other properties.\n *\n * This function has *limited* utility at the type level because **negating** it\n * does not yield a useful type in most cases because of TypeScript\n * limitations. Additionally, utilities which accept a narrower input type\n * provide better type-safety on their inputs. In most cases, you should use\n * one of the following functions instead:\n * `isEmpty` - provides better type-safety on inputs by accepting a narrower set of cases.\n * `hasAtLeast` - when the input is just an array/tuple.\n * `isStrictEqual` - when you just need to check for a specific literal value.\n * `isNullish` - when you just care about `null` and `undefined`.\n * `isTruthy` - when you need to also filter `number` and `boolean`.\n *\n * @param data - The variable to check.\n * @signature\n * P.isEmptyish(data)\n * @example\n * P.isEmptyish(undefined); //=> true\n * P.isEmptyish(null); //=> true\n * P.isEmptyish(''); //=> true\n * P.isEmptyish([]); //=> true\n * P.isEmptyish({}); //=> true\n * P.isEmptyish(new Map()); //=> true\n * P.isEmptyish(new Set()); //=> true\n * P.isEmptyish({ a: \"hello\", size: 0 }); //=> true\n * P.isEmptyish(/abc/); //=> true\n * P.isEmptyish(new Date()); //=> true\n * P.isEmptyish(new WeakMap()); //=> true\n *\n * P.isEmptyish('test'); //=> false\n * P.isEmptyish([1, 2, 3]); //=> false\n * P.isEmptyish({ a: \"hello\" }); //=> false\n * P.isEmptyish({ length: 1 }); //=> false\n * P.isEmptyish(0); //=> false\n * P.isEmptyish(true); //=> false\n * P.isEmptyish(() => {}); //=> false\n * @category Guard\n */\nexport function isEmptyish<T>(\n data: ShouldNotNarrow<T> extends true\n ? never\n : T | Readonly<Emptyish<NoInfer<T>>>,\n): data is ShouldNotNarrow<T> extends true\n ? never\n : T extends unknown\n ? Emptyish<NoInfer<T>>\n : never;\nexport function isEmptyish(data: unknown): boolean;\n\nexport function isEmptyish(data: unknown): boolean {\n // eslint-disable-next-line eqeqeq -- Less code to ship.\n if (data == undefined || data === '') {\n // These are the only literal values that are considered emptyish.\n return true;\n }\n\n if (typeof data !== 'object') {\n // There are no non-object types that could be empty at this point...\n return false;\n }\n\n if ('length' in data && typeof data.length === 'number') {\n // Arrays and array-likes.\n return data.length === 0;\n }\n\n if ('size' in data && typeof data.size === 'number') {\n // Maps and Sets.\n return data.size === 0;\n }\n\n // eslint-disable-next-line no-unreachable-loop, no-restricted-syntax -- Instead of taking Object.keys just to check its length, which will be inefficient if the object has a lot of keys, we have a backdoor into an iterator of the object's properties via the `for...in` loop.\n for (const _ in data) {\n return false;\n }\n\n // We can't do a similar optimization for symbol props, so we leave them for\n // the very last check when the object is practically empty. Assuming that\n // even if an object has a symbol prop, it probably doesn't have thousands of\n // them.\n return Object.getOwnPropertySymbols(data).length === 0;\n}\n"],"mappings":"AAgMA,SAAgB,EAAW,EAAwB,CAEjD,GAAI,GAAQ,MAAa,IAAS,GAEhC,MAAO,GAGT,GAAI,OAAO,GAAS,SAElB,MAAO,GAGT,GAAI,WAAY,GAAQ,OAAO,EAAK,QAAW,SAE7C,OAAO,EAAK,SAAW,EAGzB,GAAI,SAAU,GAAQ,OAAO,EAAK,MAAS,SAEzC,OAAO,EAAK,OAAS,EAIvB,IAAK,IAAM,KAAK,EACd,MAAO,GAOT,OAAO,OAAO,sBAAsB,EAAK,CAAC,SAAW"}
1
+ {"version":3,"file":"is-emptyish.js","names":[],"sources":["../src/is-emptyish.ts"],"sourcesContent":["import type {\n And,\n HasRequiredKeys,\n IsAny,\n IsEqual,\n IsNever,\n IsNumericLiteral,\n IsUnknown,\n OmitIndexSignature,\n Or,\n Tagged,\n ValueOf,\n} from 'type-fest';\nimport type { HasWritableKeys } from './internal/types/has-writable-keys';\nimport type { TupleParts } from './internal/types/tuple-parts';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars -- we use a non-exported unique symbol to prevent users from faking our return type.\ndeclare const EMPTYISH_BRAND: unique symbol;\n\n// Because our function is a type-predicate and it narrows the input based on\n// the result of our type, we sometimes need a way to \"turn off\" narrowing while\n// still returning the input type. By tagging/branding our return type we stop\n// TypeScript from narrowing it while still allowing it to be used as if it was\n// the input type (because it still extends the type).\ntype Empty<T> = Tagged<T, typeof EMPTYISH_BRAND>;\n\n// The goal of this type is to return the empty \"view\" of the input type. This\n// makes it possible for TypeScript to narrow it precisely.\ntype Emptyish<T>\n // There are effectively 4 types that can be empty:\n = | (T extends string ? '' : never)\n | (T extends object ? EmptyishObjectLike<T> : never)\n | (T extends null ? null : never)\n | (T extends undefined ? undefined : never);\n\n// Because of TypeScript's duck-typing, a lot of sub-types of `object` can\n// extend each other so we need to cascade between the different \"kinds\" of\n// objects.\ntype EmptyishObjectLike<T extends object> = T extends ReadonlyArray<unknown>\n ? EmptyishArray<T>\n : T extends ReadonlyMap<infer Key, unknown>\n ? T extends Map<unknown, unknown>\n ? // Mutable maps should remain mutable so we can't narrow them down.\n Empty<T>\n : // But immutable maps could be rewritten to prevent any mutations.\n ReadonlyMap<Key, never>\n : T extends ReadonlySet<unknown>\n ? T extends Set<unknown>\n ? // Mutable sets should remain mutable so we can't narrow them down.\n Empty<T>\n : // But immutable sets could be rewritten to prevent any mutations.\n ReadonlySet<never>\n : EmptyishObject<T>;\n\ntype EmptyishArray<T extends ReadonlyArray<unknown>> = T extends readonly []\n ? // By returning T we effectively narrow the \"else\" branch to `never`.\n T\n : And<\n IsEqual<TupleParts<T>['required'], []>,\n IsEqual<TupleParts<T>['suffix'], []>\n > extends true\n ? T extends Array<unknown>\n ? // A mutable array should remain mutable so we can't narrow it down.\n Empty<T>\n : // But immutable arrays could be rewritten to prevent any mutations.\n readonly []\n : // An array with a required prefix or suffix would never be empty, we can\n // use that fact to narrow the \"if\" branch to `never`.\n never;\n\ntype EmptyishObject<T extends object> = T extends {\n length: infer Length extends number;\n}\n ? T extends string\n ? // When a string is tagged/branded it also extends `object` and also has\n // a `length` prop so we need to prevent handling it because it's\n // irrelevant here!\n never\n : // Because of how the implementation works, we need to consider any object\n // with a `length` prop as potentially \"empty\".\n EmptyishArbitrary<T, Length>\n : T extends { size: infer Size extends number }\n ? // Because of how the implementation works, we need to consider any object\n // with a `size` prop as potentially \"empty\".\n EmptyishArbitrary<T, Size>\n : IsNever<ValueOf<T>> extends true\n ? // This handles empty objects; by returning T we effectively narrow the\n // \"else\" branch to `never`.\n T\n : HasRequiredKeys<OmitIndexSignature<T>> extends true\n ? // If the object has required keys it can never be empty, we can use\n // that fact to narrow the \"if\" branch to `never`.\n never\n : HasWritableKeys<T> extends true\n ? // A mutable object should remain mutable so we can't narrow it\n // down.\n Empty<T>\n : // But immutable objects could be rewritten to prevent any\n // mutations.\n { readonly [P in keyof T]: never };\n\n// We use certain props to check for emptiness effectively, but that means we\n// will return those values for any object that has them. Because we don't know\n// anything about those objects we need to be careful about narrowing.\ntype EmptyishArbitrary<T, N>\n = IsNumericLiteral<N> extends true\n ? [0] extends [N]\n ? [N] extends [0]\n ? // If the prop is a literal 0 the object is and always will be empty\n // so we can return it to narrow the \"else\" branch as `never`.\n T\n : // If it accepts 0, but might accept other values too we need to\n // consider the object mutable and not narrow it down.\n Empty<T>\n : // If the prop will never be 0 we can say it will never be empty and can\n // return `never` for the \"if\" branch.\n never\n : // If the prop isn't a literal value we don't know enough about the object\n // and should consider it mutable.\n Empty<T>;\n\n// Overly generic types interfere with our already pretty complex return type.\n// To make our lives easier we can filter them out at the function declaration\n// step and we never need to think about them again.\ntype ShouldNotNarrow<T> = Or<\n Or<IsAny<T>, IsUnknown<T>>,\n IsEqual<\n T,\n // eslint-disable-next-line ts/no-empty-object-type\n {}\n >\n>;\n\n/**\n * A function that checks if the input is empty. Empty is defined as anything\n * exposing a numerical `length`, or `size` property that is equal to `0`. This\n * definition covers strings, arrays, Maps, Sets, plain objects, and custom\n * classes. Additionally, `null` and `undefined` are also considered empty.\n *\n * `number`, `bigint`, `boolean`, `symbol`, and `function` will always return\n * `false`. `RegExp`, `Date`, and weak collections will always return `true`.\n * Classes and Errors are treated as plain objects: if they expose any public\n * property they would be considered non-empty, unless they expose a numerical\n * `length` or `size` property, which defines their emptiness regardless of\n * other properties.\n *\n * This function has *limited* utility at the type level because **negating** it\n * does not yield a useful type in most cases because of TypeScript\n * limitations. Additionally, utilities which accept a narrower input type\n * provide better type-safety on their inputs. In most cases, you should use\n * one of the following functions instead:\n * `isEmpty` - provides better type-safety on inputs by accepting a narrower set of cases.\n * `hasAtLeast` - when the input is just an array/tuple.\n * `isStrictEqual` - when you just need to check for a specific literal value.\n * `isNullish` - when you just care about `null` and `undefined`.\n * `isTruthy` - when you need to also filter `number` and `boolean`.\n *\n * @param data - The variable to check.\n * @signature\n * isEmptyish(data)\n * @example\n * isEmptyish(undefined); //=> true\n * isEmptyish(null); //=> true\n * isEmptyish(''); //=> true\n * isEmptyish([]); //=> true\n * isEmptyish({}); //=> true\n * isEmptyish(new Map()); //=> true\n * isEmptyish(new Set()); //=> true\n * isEmptyish({ a: \"hello\", size: 0 }); //=> true\n * isEmptyish(/abc/); //=> true\n * isEmptyish(new Date()); //=> true\n * isEmptyish(new WeakMap()); //=> true\n *\n * isEmptyish('test'); //=> false\n * isEmptyish([1, 2, 3]); //=> false\n * isEmptyish({ a: \"hello\" }); //=> false\n * isEmptyish({ length: 1 }); //=> false\n * isEmptyish(0); //=> false\n * isEmptyish(true); //=> false\n * isEmptyish(() => {}); //=> false\n * @category Guard\n */\nexport function isEmptyish<T>(\n data: ShouldNotNarrow<T> extends true\n ? never\n : T | Readonly<Emptyish<NoInfer<T>>>,\n): data is ShouldNotNarrow<T> extends true\n ? never\n : T extends unknown\n ? Emptyish<NoInfer<T>>\n : never;\nexport function isEmptyish(data: unknown): boolean;\n\nexport function isEmptyish(data: unknown): boolean {\n // eslint-disable-next-line eqeqeq -- Less code to ship...\n if (data == undefined || data === '') {\n // These are the only literal values that are considered emptyish.\n return true;\n }\n\n if (typeof data !== 'object') {\n // There are no non-object types that could be empty at this point...\n return false;\n }\n\n if ('length' in data && typeof data.length === 'number') {\n // Arrays and array-likes.\n return data.length === 0;\n }\n\n if ('size' in data && typeof data.size === 'number') {\n // Maps and Sets.\n return data.size === 0;\n }\n\n // eslint-disable-next-line no-unreachable-loop -- Instead of taking Object.keys just to check its length, which will be inefficient if the object has a lot of keys, we have a backdoor into an iterator of the object's properties via the `for...in` loop.\n for (const _ in data) {\n return false;\n }\n\n // We can't do a similar optimization for symbol props, so we leave them for\n // the very last check when the object is practically empty. Assuming that\n // even if an object has a symbol prop, it probably doesn't have thousands of\n // them.\n return Object.getOwnPropertySymbols(data).length === 0;\n}\n"],"mappings":"AAiMA,SAAgB,EAAW,EAAwB,CAEjD,GAAI,GAAQ,MAAa,IAAS,GAEhC,MAAO,GAGT,GAAI,OAAO,GAAS,SAElB,MAAO,GAGT,GAAI,WAAY,GAAQ,OAAO,EAAK,QAAW,SAE7C,OAAO,EAAK,SAAW,EAGzB,GAAI,SAAU,GAAQ,OAAO,EAAK,MAAS,SAEzC,OAAO,EAAK,OAAS,EAIvB,IAAK,IAAM,KAAK,EACd,MAAO,GAOT,OAAO,OAAO,sBAAsB,EAAK,CAAC,SAAW"}
package/dist/is-error.cjs CHANGED
@@ -1 +1,2 @@
1
- function e(e){return e instanceof Error}exports.isError=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e instanceof Error}exports.isError=e;
2
+ //# sourceMappingURL=is-error.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-error.cjs","names":[],"sources":["../src/is-error.ts"],"sourcesContent":["type DefinitelyError<T>\n = Extract<T, Error> extends never ? Error : Extract<T, Error>;\n/**\n * A function that checks if the passed parameter is an Error and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Error, false otherwise.\n * @signature\n * isError(data)\n * @example\n * isError(new Error('message')) //=> true\n * isError('somethingElse') //=> false\n * @category Guard\n */\nexport function isError<T>(data: Error | T): data is DefinitelyError<T> {\n return data instanceof Error;\n}\n"],"mappings":"mEAcA,SAAgB,EAAW,EAA6C,CACtE,OAAO,aAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-error.js","names":[],"sources":["../src/is-error.ts"],"sourcesContent":["type DefinitelyError<T>\n = Extract<T, Error> extends never ? Error : Extract<T, Error>;\n/**\n * A function that checks if the passed parameter is an Error and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Error, false otherwise.\n * @signature\n * P.isError(data)\n * @example\n * P.isError(new Error('message')) //=> true\n * P.isError('somethingElse') //=> false\n * @category Guard\n */\nexport function isError<T>(data: Error | T): data is DefinitelyError<T> {\n return data instanceof Error;\n}\n"],"mappings":"AAcA,SAAgB,EAAW,EAA6C,CACtE,OAAO,aAAgB"}
1
+ {"version":3,"file":"is-error.js","names":[],"sources":["../src/is-error.ts"],"sourcesContent":["type DefinitelyError<T>\n = Extract<T, Error> extends never ? Error : Extract<T, Error>;\n/**\n * A function that checks if the passed parameter is an Error and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Error, false otherwise.\n * @signature\n * isError(data)\n * @example\n * isError(new Error('message')) //=> true\n * isError('somethingElse') //=> false\n * @category Guard\n */\nexport function isError<T>(data: Error | T): data is DefinitelyError<T> {\n return data instanceof Error;\n}\n"],"mappings":"AAcA,SAAgB,EAAW,EAA6C,CACtE,OAAO,aAAgB"}
@@ -1 +1,2 @@
1
- function e(e){return typeof e==`function`}exports.isFunction=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return typeof e==`function`}exports.isFunction=e;
2
+ //# sourceMappingURL=is-function.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-function.cjs","names":[],"sources":["../src/is-function.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\nimport type { StrictFunction } from './internal/types/strict-function';\n\n/**\n * A function that checks if the passed parameter is a Function and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a Function, false otherwise.\n * @signature\n * isFunction(data)\n * @example\n * isFunction(() => {}) //=> true\n * isFunction('somethingElse') //=> false\n * @category Guard\n */\nexport function isFunction<T>(data: StrictFunction | T): data is NarrowedTo<T, StrictFunction> {\n return typeof data === 'function';\n}\n"],"mappings":"mEAeA,SAAgB,EAAc,EAAiE,CAC7F,OAAO,OAAO,GAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-function.js","names":[],"sources":["../src/is-function.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\nimport type { StrictFunction } from './internal/types/strict-function';\n\n/**\n * A function that checks if the passed parameter is a Function and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a Function, false otherwise.\n * @signature\n * P.isFunction(data)\n * @example\n * P.isFunction(() => {}) //=> true\n * P.isFunction('somethingElse') //=> false\n * @category Guard\n */\nexport function isFunction<T>(data: StrictFunction | T): data is NarrowedTo<T, StrictFunction> {\n return typeof data === 'function';\n}\n"],"mappings":"AAeA,SAAgB,EAAc,EAAiE,CAC7F,OAAO,OAAO,GAAS"}
1
+ {"version":3,"file":"is-function.js","names":[],"sources":["../src/is-function.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\nimport type { StrictFunction } from './internal/types/strict-function';\n\n/**\n * A function that checks if the passed parameter is a Function and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a Function, false otherwise.\n * @signature\n * isFunction(data)\n * @example\n * isFunction(() => {}) //=> true\n * isFunction('somethingElse') //=> false\n * @category Guard\n */\nexport function isFunction<T>(data: StrictFunction | T): data is NarrowedTo<T, StrictFunction> {\n return typeof data === 'function';\n}\n"],"mappings":"AAeA,SAAgB,EAAc,EAAiE,CAC7F,OAAO,OAAO,GAAS"}
@@ -1 +1,2 @@
1
- function e(e,t){if(t===void 0){let t=new Set(e);return e=>t.has(e)}return t.includes(e)}exports.isIncludedIn=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e,t){if(t===void 0){let t=new Set(e);return e=>t.has(e)}return t.includes(e)}exports.isIncludedIn=e;
2
+ //# sourceMappingURL=is-included-in.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-included-in.cjs","names":[],"sources":["../src/is-included-in.ts"],"sourcesContent":["import type { IsLiteral, IsUnion } from 'type-fest';\nimport type { IterableContainer } from './internal/types/iterable-container';\n\n/**\n * A \"constant\" tuple is a type that has a single runtime value that can fulfil\n * it. This means that it doesn't have any variadic/rest/spread/array parts, and\n * that all it's values are singular (non-union) literals.\n *\n * We use this type to allow narrowing when checking against a set of values\n * defined as a const.\n *\n * @example\n * type T1 = IsConstantTuple<[\"cat\", \"dog\", 3, true]>; // => true;\n * type T2 = IsConstantTuple<[\"cat\" | \"dog\"]>; // false;\n * type T2 = IsConstantTuple<[\"cat\", ...\"cat\"[]]>; // false;\n */\ntype IsConstantTuple<T extends IterableContainer> = T extends readonly []\n ? true\n : T extends readonly [infer Head, ...infer Rest]\n ? IsUnion<Head> extends true\n ? false\n : IsConstantTuple<Rest>\n : false;\n\n/**\n * There is no way to tell Typescript to only narrow the \"accepted\" side of a\n * type-predicate and so in many cases the negated side is also affected, this\n * results in over-narrowing in many cases, breaking typing. For this reason we\n * only want to use the type-predicate variant of `isIncludedIn` when we can\n * assume the result represents the expected types (closely enough). This is not\n * and ideal solution and we will still generate wrong types in some cases (see\n * tests), but it reduces the surface of this problem significantly, while still\n * keeping the utility of `isIncludedIn` for the common cases.\n *\n * TL;DR - The types are narrowable when: T is literal and S is a pure tuple, or\n * when T isn't a literal, but S is.\n *\n * @example\n * const data = 1 as 1 | 2 | 3;\n * const container = [] as (1 | 2)[];\n * if (isIncludedIn(data, container)) {\n * ... it makes sense to narrow data to `1 | 2` as the value `3` is not part\n * ... of the typing of container, so will never result in being true.\n * } else {\n * ... but it doesn't make sense to narrow the value to 3 here, because 1\n * ... and 2 are still valid values for data, when container doesn't include\n * ... them **at runtime**.\n * ... Typescript narrows the _rejected_ branch based on how it narrowed the\n * ... _accepted_ clause, and we can't control that; because our input type\n * ... is `1 | 2 | 3` and the accepted side is `1 | 2`, the rejected side is\n * ... typed `Exclude<1 | 2 | 3, 1 | 2>`, which is `3`.\n * }\n * }\n */\ntype IsNarrowable<T, S extends IterableContainer<T>>\n = IsLiteral<T> extends true\n ? // When T is literal (i.g. it isn't a primitive type like `string` or\n // `number`) then the criteria for narrowing is that the container is a\n // \"pure\" tuple because we *assume* that S represents a constant set of\n // values, and that it's typing also represents it's runtime content 1-\n // for-1. If S isn't a pure tuple it means we can't tell from the typing\n // which of it's values are actually present in runtime so can't use them\n // to narrow correctly.\n IsConstantTuple<S>\n : // When T isn't a literal type but the items in S are we can narrow the\n // type because it won't affect the negated side (`Exclude<number, 3>`\n // is still `number`).\n IsLiteral<S[number]>;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param data - The item that is checked.\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n * isIncludedIn(data, container);\n * @example\n * isIncludedIn(2, [1, 2, 3]); // => true\n * isIncludedIn(4, [1, 2, 3]); // => false\n *\n * const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n * isIncludedIn(data, [\"cat\", \"dog\"] as const); // true (typed \"cat\" | \"dog\");\n * @dataFirst\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n data: T,\n container: IsNarrowable<T, S> extends true ? S : never,\n): data is S[number];\nexport function isIncludedIn<T, S extends T>(\n data: T,\n container: IterableContainer<S>,\n): boolean;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n * isIncludedIn(container)(data);\n * @example\n * pipe(2, isIncludedIn([1, 2, 3])); // => true\n * pipe(4, isIncludedIn([1, 2, 3])); // => false\n *\n * const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n * pipe(\n * data,\n * isIncludedIn([\"cat\", \"dog\"] as const),\n * ); // => true (typed \"cat\" | \"dog\");\n * @dataLast\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n container: IsNarrowable<T, S> extends true ? S : never,\n): (data: T) => data is S[number];\nexport function isIncludedIn<T, S extends T>(\n container: IterableContainer<S>,\n): (data: T) => boolean;\n\nexport function isIncludedIn(\n dataOrContainer: unknown,\n container?: ReadonlyArray<unknown>,\n): unknown {\n if (container === undefined) {\n // === dataLast ===\n // We don't use curry here because we can optimize the dataLast case by\n // memoizing a set and accessing it in O(1) time instead of scanning the\n // array **each time** (O(n)) each time.\n const asSet = new Set(dataOrContainer as ReadonlyArray<unknown>);\n return (data: unknown) => asSet.has(data);\n }\n\n // === dataFirst ===\n return container.includes(dataOrContainer);\n}\n"],"mappings":"mEAyIA,SAAgB,EACd,EACA,EACS,CACT,GAAI,IAAc,IAAA,GAAW,CAK3B,IAAM,EAAQ,IAAI,IAAI,EAA0C,CAChE,MAAQ,IAAkB,EAAM,IAAI,EAAK,CAI3C,OAAO,EAAU,SAAS,EAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-included-in.js","names":[],"sources":["../src/is-included-in.ts"],"sourcesContent":["import type { IsLiteral, IsUnion } from 'type-fest';\nimport type { IterableContainer } from './internal/types/iterable-container';\n\n/**\n * A \"constant\" tuple is a type that has a single runtime value that can fulfil\n * it. This means that it doesn't have any variadic/rest/spread/array parts, and\n * that all it's values are singular (non-union) literals.\n *\n * We use this type to allow narrowing when checking against a set of values\n * defined as a const.\n *\n * @example\n * type T1 = IsConstantTuple<[\"cat\", \"dog\", 3, true]>; // => true;\n * type T2 = IsConstantTuple<[\"cat\" | \"dog\"]>; // false;\n * type T2 = IsConstantTuple<[\"cat\", ...Array<\"cat\">]>; // false;\n */\ntype IsConstantTuple<T extends IterableContainer> = T extends readonly []\n ? true\n : T extends readonly [infer Head, ...infer Rest]\n ? IsUnion<Head> extends true\n ? false\n : IsConstantTuple<Rest>\n : false;\n\n/**\n * There is no way to tell Typescript to only narrow the \"accepted\" side of a\n * type-predicate and so in many cases the negated side is also affected, this\n * results in over-narrowing in many cases, breaking typing. For this reason we\n * only want to use the type-predicate variant of `isIncludedIn` when we can\n * assume the result represents the expected types (closely enough). This is not\n * and ideal solution and we will still generate wrong types in some cases (see\n * tests), but it reduces the surface of this problem significantly, while still\n * keeping the utility of `isIncludedIn` for the common cases.\n *\n * TL;DR - The types are narrowable when: T is literal and S is a pure tuple, or\n * when T isn't a literal, but S is.\n *\n * @example\n * const data = 1 as 1 | 2 | 3;\n * const container = [] as Array<1 | 2>;\n * if (isIncludedIn(data, container)) {\n * ... it makes sense to narrow data to `1 | 2` as the value `3` is not part\n * ... of the typing of container, so will never result in being true.\n * } else {\n * ... but it doesn't make sense to narrow the value to 3 here, because 1\n * ... and 2 are still valid values for data, when container doesn't include\n * ... them **at runtime**.\n * ... Typescript narrows the _rejected_ branch based on how it narrowed the\n * ... _accepted_ clause, and we can't control that; because our input type\n * ... is `1 | 2 | 3` and the accepted side is `1 | 2`, the rejected side is\n * ... typed `Exclude<1 | 2 | 3, 1 | 2>`, which is `3`.\n * }\n * }\n */\ntype IsNarrowable<T, S extends IterableContainer<T>>\n = IsLiteral<T> extends true\n // When T is literal (i.g. it isn't a primitive type like `string` or\n // `number`) then the criteria for narrowing is that the container is a\n // \"pure\" tuple because we *assume* that S represents a constant set of\n // values, and that it's typing also represents it's runtime content 1-\n // for-1. If S isn't a pure tuple it means we can't tell from the typing\n // which of it's values are actually present in runtime so can't use them\n // to narrow correctly.\n ? IsConstantTuple<S>\n // When T isn't a literal type but the items in S are we can narrow the\n // type because it won't affect the negated side (`Exclude<number, 3>`\n // is still `number`).\n : IsLiteral<S[number]>;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param data - The item that is checked.\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n * P.isIncludedIn(data, container);\n * @example\n * P.isIncludedIn(2, [1, 2, 3]); // => true\n * P.isIncludedIn(4, [1, 2, 3]); // => false\n *\n * const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n * P.isIncludedIn(data, [\"cat\", \"dog\"] as const); // true (typed \"cat\" | \"dog\");\n * @dataFirst\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n data: T,\n container: IsNarrowable<T, S> extends true ? S : never,\n): data is S[number];\nexport function isIncludedIn<T, S extends T>(\n data: T,\n container: IterableContainer<S>,\n): boolean;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n * P.isIncludedIn(container)(data);\n * @example\n * P.pipe(2, P.isIncludedIn([1, 2, 3])); // => true\n * P.pipe(4, P.isIncludedIn([1, 2, 3])); // => false\n *\n * const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n * P.pipe(\n * data,\n * P.isIncludedIn([\"cat\", \"dog\"] as const),\n * ); // => true (typed \"cat\" | \"dog\");\n * @dataLast\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n container: IsNarrowable<T, S> extends true ? S : never,\n): (data: T) => data is S[number];\nexport function isIncludedIn<T, S extends T>(\n container: IterableContainer<S>,\n): (data: T) => boolean;\n\nexport function isIncludedIn(\n dataOrContainer: unknown,\n container?: ReadonlyArray<unknown>,\n): unknown {\n if (container === undefined) {\n // === dataLast ===\n // We don't use curry here because we can optimize the dataLast case by\n // memoizing a set and accessing it in O(1) time instead of scanning the\n // array **each time** (O(n)) each time.\n const asSet = new Set(dataOrContainer as ReadonlyArray<unknown>);\n return (data: unknown) => asSet.has(data);\n }\n\n // === dataFirst ===\n return container.includes(dataOrContainer);\n}\n"],"mappings":"AAyIA,SAAgB,EACd,EACA,EACS,CACT,GAAI,IAAc,IAAA,GAAW,CAK3B,IAAM,EAAQ,IAAI,IAAI,EAA0C,CAChE,MAAQ,IAAkB,EAAM,IAAI,EAAK,CAI3C,OAAO,EAAU,SAAS,EAAgB"}
1
+ {"version":3,"file":"is-included-in.js","names":[],"sources":["../src/is-included-in.ts"],"sourcesContent":["import type { IsLiteral, IsUnion } from 'type-fest';\nimport type { IterableContainer } from './internal/types/iterable-container';\n\n/**\n * A \"constant\" tuple is a type that has a single runtime value that can fulfil\n * it. This means that it doesn't have any variadic/rest/spread/array parts, and\n * that all it's values are singular (non-union) literals.\n *\n * We use this type to allow narrowing when checking against a set of values\n * defined as a const.\n *\n * @example\n * type T1 = IsConstantTuple<[\"cat\", \"dog\", 3, true]>; // => true;\n * type T2 = IsConstantTuple<[\"cat\" | \"dog\"]>; // false;\n * type T2 = IsConstantTuple<[\"cat\", ...\"cat\"[]]>; // false;\n */\ntype IsConstantTuple<T extends IterableContainer> = T extends readonly []\n ? true\n : T extends readonly [infer Head, ...infer Rest]\n ? IsUnion<Head> extends true\n ? false\n : IsConstantTuple<Rest>\n : false;\n\n/**\n * There is no way to tell Typescript to only narrow the \"accepted\" side of a\n * type-predicate and so in many cases the negated side is also affected, this\n * results in over-narrowing in many cases, breaking typing. For this reason we\n * only want to use the type-predicate variant of `isIncludedIn` when we can\n * assume the result represents the expected types (closely enough). This is not\n * and ideal solution and we will still generate wrong types in some cases (see\n * tests), but it reduces the surface of this problem significantly, while still\n * keeping the utility of `isIncludedIn` for the common cases.\n *\n * TL;DR - The types are narrowable when: T is literal and S is a pure tuple, or\n * when T isn't a literal, but S is.\n *\n * @example\n * const data = 1 as 1 | 2 | 3;\n * const container = [] as (1 | 2)[];\n * if (isIncludedIn(data, container)) {\n * ... it makes sense to narrow data to `1 | 2` as the value `3` is not part\n * ... of the typing of container, so will never result in being true.\n * } else {\n * ... but it doesn't make sense to narrow the value to 3 here, because 1\n * ... and 2 are still valid values for data, when container doesn't include\n * ... them **at runtime**.\n * ... Typescript narrows the _rejected_ branch based on how it narrowed the\n * ... _accepted_ clause, and we can't control that; because our input type\n * ... is `1 | 2 | 3` and the accepted side is `1 | 2`, the rejected side is\n * ... typed `Exclude<1 | 2 | 3, 1 | 2>`, which is `3`.\n * }\n * }\n */\ntype IsNarrowable<T, S extends IterableContainer<T>>\n = IsLiteral<T> extends true\n ? // When T is literal (i.g. it isn't a primitive type like `string` or\n // `number`) then the criteria for narrowing is that the container is a\n // \"pure\" tuple because we *assume* that S represents a constant set of\n // values, and that it's typing also represents it's runtime content 1-\n // for-1. If S isn't a pure tuple it means we can't tell from the typing\n // which of it's values are actually present in runtime so can't use them\n // to narrow correctly.\n IsConstantTuple<S>\n : // When T isn't a literal type but the items in S are we can narrow the\n // type because it won't affect the negated side (`Exclude<number, 3>`\n // is still `number`).\n IsLiteral<S[number]>;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param data - The item that is checked.\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n * isIncludedIn(data, container);\n * @example\n * isIncludedIn(2, [1, 2, 3]); // => true\n * isIncludedIn(4, [1, 2, 3]); // => false\n *\n * const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n * isIncludedIn(data, [\"cat\", \"dog\"] as const); // true (typed \"cat\" | \"dog\");\n * @dataFirst\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n data: T,\n container: IsNarrowable<T, S> extends true ? S : never,\n): data is S[number];\nexport function isIncludedIn<T, S extends T>(\n data: T,\n container: IterableContainer<S>,\n): boolean;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n * isIncludedIn(container)(data);\n * @example\n * pipe(2, isIncludedIn([1, 2, 3])); // => true\n * pipe(4, isIncludedIn([1, 2, 3])); // => false\n *\n * const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n * pipe(\n * data,\n * isIncludedIn([\"cat\", \"dog\"] as const),\n * ); // => true (typed \"cat\" | \"dog\");\n * @dataLast\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n container: IsNarrowable<T, S> extends true ? S : never,\n): (data: T) => data is S[number];\nexport function isIncludedIn<T, S extends T>(\n container: IterableContainer<S>,\n): (data: T) => boolean;\n\nexport function isIncludedIn(\n dataOrContainer: unknown,\n container?: ReadonlyArray<unknown>,\n): unknown {\n if (container === undefined) {\n // === dataLast ===\n // We don't use curry here because we can optimize the dataLast case by\n // memoizing a set and accessing it in O(1) time instead of scanning the\n // array **each time** (O(n)) each time.\n const asSet = new Set(dataOrContainer as ReadonlyArray<unknown>);\n return (data: unknown) => asSet.has(data);\n }\n\n // === dataFirst ===\n return container.includes(dataOrContainer);\n}\n"],"mappings":"AAyIA,SAAgB,EACd,EACA,EACS,CACT,GAAI,IAAc,IAAA,GAAW,CAK3B,IAAM,EAAQ,IAAI,IAAI,EAA0C,CAChE,MAAQ,IAAkB,EAAM,IAAI,EAAK,CAI3C,OAAO,EAAU,SAAS,EAAgB"}
@@ -1 +1,2 @@
1
- function e(e){return e!==null}exports.isNonNull=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e!==null}exports.isNonNull=e;
2
+ //# sourceMappingURL=is-non-null.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-non-null.cjs","names":[],"sources":["../src/is-non-null.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is not `null` and narrows its type accordingly.\n * Notice that `undefined` is not null!\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined, false otherwise.\n * @signature\n * isNonNull(data)\n * @example\n * isNonNull('string') //=> true\n * isNonNull(null) //=> false\n * isNonNull(undefined) //=> true\n * @category Guard\n */\nexport function isNonNull<T>(data: T | null): data is T {\n return data !== null;\n}\n"],"mappings":"mEAcA,SAAgB,EAAa,EAA2B,CACtD,OAAO,IAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-non-null.js","names":[],"sources":["../src/is-non-null.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is not `null` and narrows its type accordingly.\n * Notice that `undefined` is not null!\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined, false otherwise.\n * @signature\n * P.isNonNull(data)\n * @example\n * P.isNonNull('string') //=> true\n * P.isNonNull(null) //=> false\n * P.isNonNull(undefined) //=> true\n * @category Guard\n */\nexport function isNonNull<T>(data: T | null): data is T {\n return data !== null;\n}\n"],"mappings":"AAcA,SAAgB,EAAa,EAA2B,CACtD,OAAO,IAAS"}
1
+ {"version":3,"file":"is-non-null.js","names":[],"sources":["../src/is-non-null.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is not `null` and narrows its type accordingly.\n * Notice that `undefined` is not null!\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined, false otherwise.\n * @signature\n * isNonNull(data)\n * @example\n * isNonNull('string') //=> true\n * isNonNull(null) //=> false\n * isNonNull(undefined) //=> true\n * @category Guard\n */\nexport function isNonNull<T>(data: T | null): data is T {\n return data !== null;\n}\n"],"mappings":"AAcA,SAAgB,EAAa,EAA2B,CACtD,OAAO,IAAS"}
@@ -1 +1,2 @@
1
- function e(e){return e!=null}exports.isNonNullish=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e!=null}exports.isNonNullish=e;
2
+ //# sourceMappingURL=is-non-nullish.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-non-nullish.cjs","names":[],"sources":["../src/is-non-nullish.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is defined *AND* isn't `null`\n * and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined and isn't `null`, false\n * otherwise.\n * @signature\n * isNonNullish(data)\n * @example\n * isNonNullish('string') //=> true\n * isNonNullish(null) //=> false\n * isNonNullish(undefined) //=> false\n * @category Guard\n */\nexport function isNonNullish<T>(data: T): data is NonNullable<T> {\n return data !== undefined && data !== null;\n}\n"],"mappings":"mEAeA,SAAgB,EAAgB,EAAiC,CAC/D,OAAO,GAA+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-non-nullish.js","names":[],"sources":["../src/is-non-nullish.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is defined *AND* isn't `null`\n * and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined and isn't `null`, false\n * otherwise.\n * @signature\n * P.isNonNullish(data)\n * @example\n * P.isNonNullish('string') //=> true\n * P.isNonNullish(null) //=> false\n * P.isNonNullish(undefined) //=> false\n * @category Guard\n */\nexport function isNonNullish<T>(data: T): data is NonNullable<T> {\n return data !== undefined && data !== null;\n}\n"],"mappings":"AAeA,SAAgB,EAAgB,EAAiC,CAC/D,OAAO,GAA+B"}
1
+ {"version":3,"file":"is-non-nullish.js","names":[],"sources":["../src/is-non-nullish.ts"],"sourcesContent":["/**\n * A function that checks if the passed parameter is defined *AND* isn't `null`\n * and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is defined and isn't `null`, false\n * otherwise.\n * @signature\n * isNonNullish(data)\n * @example\n * isNonNullish('string') //=> true\n * isNonNullish(null) //=> false\n * isNonNullish(undefined) //=> false\n * @category Guard\n */\nexport function isNonNullish<T>(data: T): data is NonNullable<T> {\n return data !== undefined && data !== null;\n}\n"],"mappings":"AAeA,SAAgB,EAAgB,EAAiC,CAC/D,OAAO,GAA+B"}
package/dist/is-not.cjs CHANGED
@@ -1 +1,2 @@
1
- function e(e){return t=>!e(t)}exports.isNot=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return t=>!e(t)}exports.isNot=e;
2
+ //# sourceMappingURL=is-not.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-not.cjs","names":[],"sources":["../src/is-not.ts"],"sourcesContent":["/**\n * A function that takes a guard function as predicate and returns a guard that negates it.\n *\n * @param predicate - The guard function to negate.\n * @returns Function A guard function.\n * @signature\n * isNot(isTruthy)(data)\n * @example\n * isNot(isTruthy)(false) //=> true\n * isNot(isTruthy)(true) //=> false\n * @dataLast\n * @category Guard\n */\nexport function isNot<T, S extends T>(\n predicate: (data: T) => data is S,\n): (data: T) => data is Exclude<T, S>;\nexport function isNot<T>(predicate: (data: T) => boolean): (data: T) => boolean;\n\nexport function isNot<T>(predicate: (data: T) => boolean) {\n return (data: T): boolean => !predicate(data);\n}\n"],"mappings":"mEAkBA,SAAgB,EAAS,EAAiC,CACxD,MAAQ,IAAqB,CAAC,EAAU,EAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-not.js","names":[],"sources":["../src/is-not.ts"],"sourcesContent":["/**\n * A function that takes a guard function as predicate and returns a guard that negates it.\n *\n * @param predicate - The guard function to negate.\n * @returns Function A guard function.\n * @signature\n * P.isNot(P.isTruthy)(data)\n * @example\n * P.isNot(P.isTruthy)(false) //=> true\n * P.isNot(P.isTruthy)(true) //=> false\n * @dataLast\n * @category Guard\n */\nexport function isNot<T, S extends T>(\n predicate: (data: T) => data is S,\n): (data: T) => data is Exclude<T, S>;\nexport function isNot<T>(predicate: (data: T) => boolean): (data: T) => boolean;\n\nexport function isNot<T>(predicate: (data: T) => boolean) {\n return (data: T): boolean => !predicate(data);\n}\n"],"mappings":"AAkBA,SAAgB,EAAS,EAAiC,CACxD,MAAQ,IAAqB,CAAC,EAAU,EAAK"}
1
+ {"version":3,"file":"is-not.js","names":[],"sources":["../src/is-not.ts"],"sourcesContent":["/**\n * A function that takes a guard function as predicate and returns a guard that negates it.\n *\n * @param predicate - The guard function to negate.\n * @returns Function A guard function.\n * @signature\n * isNot(isTruthy)(data)\n * @example\n * isNot(isTruthy)(false) //=> true\n * isNot(isTruthy)(true) //=> false\n * @dataLast\n * @category Guard\n */\nexport function isNot<T, S extends T>(\n predicate: (data: T) => data is S,\n): (data: T) => data is Exclude<T, S>;\nexport function isNot<T>(predicate: (data: T) => boolean): (data: T) => boolean;\n\nexport function isNot<T>(predicate: (data: T) => boolean) {\n return (data: T): boolean => !predicate(data);\n}\n"],"mappings":"AAkBA,SAAgB,EAAS,EAAiC,CACxD,MAAQ,IAAqB,CAAC,EAAU,EAAK"}
@@ -1 +1,2 @@
1
- function e(e){return e==null}exports.isNullish=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e==null}exports.isNullish=e;
2
+ //# sourceMappingURL=is-nullish.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-nullish.cjs","names":[],"sources":["../src/is-nullish.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is either `null` or\n * `undefined` and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is either `null` or `undefined`, false\n * otherwise.\n * @signature\n * isNullish(data)\n * @example\n * isNullish(undefined) //=> true\n * isNullish(null) //=> true\n * isNullish('somethingElse') //=> false\n * @category Guard\n */\nexport function isNullish<T>(\n data: T | null | undefined,\n): data is NarrowedTo<T, null | undefined> {\n return data === null || data === undefined;\n}\n"],"mappings":"mEAiBA,SAAgB,EACd,EACyC,CACzC,OAAO,GAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-nullish.js","names":[],"sources":["../src/is-nullish.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is either `null` or\n * `undefined` and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is either `null` or `undefined`, false\n * otherwise.\n * @signature\n * P.isNullish(data)\n * @example\n * P.isNullish(undefined) //=> true\n * P.isNullish(null) //=> true\n * P.isNullish('somethingElse') //=> false\n * @category Guard\n */\nexport function isNullish<T>(\n data: null | T | undefined,\n): data is NarrowedTo<T, null | undefined> {\n return data === null || data === undefined;\n}\n"],"mappings":"AAiBA,SAAgB,EACd,EACyC,CACzC,OAAO,GAAS"}
1
+ {"version":3,"file":"is-nullish.js","names":[],"sources":["../src/is-nullish.ts"],"sourcesContent":["import type { NarrowedTo } from './internal/types/narrowed-to';\n\n/**\n * A function that checks if the passed parameter is either `null` or\n * `undefined` and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is either `null` or `undefined`, false\n * otherwise.\n * @signature\n * isNullish(data)\n * @example\n * isNullish(undefined) //=> true\n * isNullish(null) //=> true\n * isNullish('somethingElse') //=> false\n * @category Guard\n */\nexport function isNullish<T>(\n data: T | null | undefined,\n): data is NarrowedTo<T, null | undefined> {\n return data === null || data === undefined;\n}\n"],"mappings":"AAiBA,SAAgB,EACd,EACyC,CACzC,OAAO,GAAS"}