es-toolkit 1.50.0 → 1.51.0-dev.2069

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 (495) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/NOTICE +39 -0
  3. package/README.md +2 -2
  4. package/bigint.d.ts +1 -0
  5. package/bigint.js +1 -0
  6. package/dist/_internal/NonPlainObject.d.mts +8 -0
  7. package/dist/_internal/NonPlainObject.d.ts +8 -0
  8. package/dist/_internal/bigIntRangeLength.js +19 -0
  9. package/dist/_internal/bigIntRangeLength.mjs +19 -0
  10. package/dist/_internal/isMergeableValue.js +17 -0
  11. package/dist/_internal/isMergeableValue.mjs +17 -0
  12. package/dist/_internal/isUnsafeProperty.js +7 -4
  13. package/dist/_internal/isUnsafeProperty.mjs +7 -4
  14. package/dist/_internal/isUnsafeToWriteProperty.js +22 -0
  15. package/dist/_internal/isUnsafeToWriteProperty.mjs +22 -0
  16. package/dist/array/at.d.mts +1 -1
  17. package/dist/array/at.d.ts +1 -1
  18. package/dist/array/filterAsync.js +1 -1
  19. package/dist/array/filterAsync.mjs +1 -1
  20. package/dist/array/flatMapAsync.js +1 -1
  21. package/dist/array/flatMapAsync.mjs +1 -1
  22. package/dist/array/forEachAsync.js +1 -1
  23. package/dist/array/forEachAsync.mjs +1 -1
  24. package/dist/array/index.js +1 -1
  25. package/dist/array/index.mjs +1 -1
  26. package/dist/array/limitAsync.d.mts +4 -28
  27. package/dist/array/limitAsync.d.ts +4 -28
  28. package/dist/array/limitAsync.js +2 -39
  29. package/dist/array/limitAsync.mjs +3 -39
  30. package/dist/array/mapAsync.js +1 -1
  31. package/dist/array/mapAsync.mjs +1 -1
  32. package/dist/array/orderBy.d.mts +1 -1
  33. package/dist/array/orderBy.d.ts +1 -1
  34. package/dist/array/pullAt.d.mts +1 -1
  35. package/dist/array/pullAt.d.ts +1 -1
  36. package/dist/array/pullAt.js +1 -1
  37. package/dist/array/pullAt.mjs +1 -1
  38. package/dist/array/sortBy.d.mts +1 -1
  39. package/dist/array/sortBy.d.ts +1 -1
  40. package/dist/array/unzip.d.mts +3 -0
  41. package/dist/array/unzip.d.ts +3 -0
  42. package/dist/array/unzip.js +3 -0
  43. package/dist/array/unzip.mjs +3 -0
  44. package/dist/bigint/clamp.d.mts +37 -0
  45. package/dist/bigint/clamp.d.ts +37 -0
  46. package/dist/bigint/clamp.js +16 -0
  47. package/dist/bigint/clamp.mjs +16 -0
  48. package/dist/bigint/inRange.d.mts +37 -0
  49. package/dist/bigint/inRange.d.ts +37 -0
  50. package/dist/bigint/inRange.js +20 -0
  51. package/dist/bigint/inRange.mjs +20 -0
  52. package/dist/bigint/index.d.mts +14 -0
  53. package/dist/bigint/index.d.ts +14 -0
  54. package/dist/bigint/index.js +27 -0
  55. package/dist/bigint/index.mjs +14 -0
  56. package/dist/bigint/max.d.mts +21 -0
  57. package/dist/bigint/max.d.ts +21 -0
  58. package/dist/bigint/max.js +26 -0
  59. package/dist/bigint/max.mjs +26 -0
  60. package/dist/bigint/maxBy.d.mts +21 -0
  61. package/dist/bigint/maxBy.d.ts +21 -0
  62. package/dist/bigint/maxBy.js +34 -0
  63. package/dist/bigint/maxBy.mjs +34 -0
  64. package/dist/bigint/median.d.mts +22 -0
  65. package/dist/bigint/median.d.ts +22 -0
  66. package/dist/bigint/median.js +28 -0
  67. package/dist/bigint/median.mjs +28 -0
  68. package/dist/bigint/medianBy.d.mts +21 -0
  69. package/dist/bigint/medianBy.d.ts +21 -0
  70. package/dist/bigint/medianBy.js +24 -0
  71. package/dist/bigint/medianBy.mjs +24 -0
  72. package/dist/bigint/min.d.mts +18 -0
  73. package/dist/bigint/min.d.ts +18 -0
  74. package/dist/bigint/min.js +23 -0
  75. package/dist/bigint/min.mjs +23 -0
  76. package/dist/bigint/minBy.d.mts +21 -0
  77. package/dist/bigint/minBy.d.ts +21 -0
  78. package/dist/bigint/minBy.js +34 -0
  79. package/dist/bigint/minBy.mjs +34 -0
  80. package/dist/bigint/percentile.d.mts +23 -0
  81. package/dist/bigint/percentile.d.ts +23 -0
  82. package/dist/bigint/percentile.js +31 -0
  83. package/dist/bigint/percentile.mjs +31 -0
  84. package/dist/bigint/range.d.mts +45 -0
  85. package/dist/bigint/range.d.ts +45 -0
  86. package/dist/bigint/range.js +24 -0
  87. package/dist/bigint/range.mjs +24 -0
  88. package/dist/bigint/rangeRight.d.mts +43 -0
  89. package/dist/bigint/rangeRight.d.ts +43 -0
  90. package/dist/bigint/rangeRight.js +25 -0
  91. package/dist/bigint/rangeRight.mjs +25 -0
  92. package/dist/bigint/sum.d.mts +18 -0
  93. package/dist/bigint/sum.d.ts +18 -0
  94. package/dist/bigint/sum.js +22 -0
  95. package/dist/bigint/sum.mjs +22 -0
  96. package/dist/bigint/sumBy.d.mts +20 -0
  97. package/dist/bigint/sumBy.d.ts +20 -0
  98. package/dist/bigint/sumBy.js +24 -0
  99. package/dist/bigint/sumBy.mjs +24 -0
  100. package/dist/browser.global.js +6 -3
  101. package/dist/compat/_internal/normalizeZero.js +13 -0
  102. package/dist/compat/_internal/normalizeZero.mjs +13 -0
  103. package/dist/compat/_internal/toKey.js +1 -1
  104. package/dist/compat/_internal/toKey.mjs +1 -1
  105. package/dist/compat/_internal/unicodeSize.js +45 -0
  106. package/dist/compat/_internal/unicodeSize.mjs +45 -0
  107. package/dist/compat/array/chunk.js +1 -0
  108. package/dist/compat/array/chunk.mjs +1 -0
  109. package/dist/compat/array/difference.js +2 -1
  110. package/dist/compat/array/difference.mjs +2 -1
  111. package/dist/compat/array/differenceBy.js +3 -2
  112. package/dist/compat/array/differenceBy.mjs +3 -2
  113. package/dist/compat/array/drop.d.mts +1 -1
  114. package/dist/compat/array/drop.d.ts +1 -1
  115. package/dist/compat/array/dropRight.d.mts +2 -3
  116. package/dist/compat/array/dropRight.d.ts +2 -3
  117. package/dist/compat/array/dropRight.js +4 -4
  118. package/dist/compat/array/dropRight.mjs +4 -4
  119. package/dist/compat/array/every.js +9 -9
  120. package/dist/compat/array/every.mjs +9 -9
  121. package/dist/compat/array/fill.js +8 -2
  122. package/dist/compat/array/fill.mjs +8 -2
  123. package/dist/compat/array/find.js +14 -13
  124. package/dist/compat/array/find.mjs +14 -13
  125. package/dist/compat/array/findIndex.js +3 -19
  126. package/dist/compat/array/findIndex.mjs +3 -19
  127. package/dist/compat/array/findLast.js +3 -3
  128. package/dist/compat/array/findLast.mjs +3 -3
  129. package/dist/compat/array/flatMap.js +3 -8
  130. package/dist/compat/array/flatMap.mjs +3 -7
  131. package/dist/compat/array/flatMapDepth.js +1 -1
  132. package/dist/compat/array/flatMapDepth.mjs +1 -1
  133. package/dist/compat/array/forEach.js +1 -1
  134. package/dist/compat/array/forEach.mjs +1 -1
  135. package/dist/compat/array/includes.js +13 -13
  136. package/dist/compat/array/includes.mjs +13 -13
  137. package/dist/compat/array/indexOf.js +2 -1
  138. package/dist/compat/array/indexOf.mjs +2 -1
  139. package/dist/compat/array/intersection.js +3 -2
  140. package/dist/compat/array/intersection.mjs +3 -2
  141. package/dist/compat/array/intersectionBy.js +7 -11
  142. package/dist/compat/array/intersectionBy.mjs +7 -11
  143. package/dist/compat/array/intersectionWith.js +6 -18
  144. package/dist/compat/array/intersectionWith.mjs +6 -18
  145. package/dist/compat/array/last.js +1 -1
  146. package/dist/compat/array/last.mjs +1 -1
  147. package/dist/compat/array/lastIndexOf.js +3 -1
  148. package/dist/compat/array/lastIndexOf.mjs +3 -1
  149. package/dist/compat/array/map.js +3 -3
  150. package/dist/compat/array/map.mjs +3 -3
  151. package/dist/compat/array/orderBy.js +8 -6
  152. package/dist/compat/array/orderBy.mjs +8 -6
  153. package/dist/compat/array/partition.js +6 -6
  154. package/dist/compat/array/partition.mjs +6 -6
  155. package/dist/compat/array/pull.js +1 -1
  156. package/dist/compat/array/pull.mjs +1 -1
  157. package/dist/compat/array/pullAll.js +2 -0
  158. package/dist/compat/array/pullAll.mjs +2 -0
  159. package/dist/compat/array/remove.js +8 -4
  160. package/dist/compat/array/remove.mjs +8 -4
  161. package/dist/compat/array/reverse.js +1 -1
  162. package/dist/compat/array/reverse.mjs +1 -1
  163. package/dist/compat/array/sampleSize.js +2 -1
  164. package/dist/compat/array/sampleSize.mjs +2 -1
  165. package/dist/compat/array/size.js +2 -1
  166. package/dist/compat/array/size.mjs +2 -1
  167. package/dist/compat/array/some.js +2 -1
  168. package/dist/compat/array/some.mjs +2 -1
  169. package/dist/compat/array/takeRightWhile.js +2 -2
  170. package/dist/compat/array/takeRightWhile.mjs +2 -2
  171. package/dist/compat/array/takeWhile.js +2 -2
  172. package/dist/compat/array/takeWhile.mjs +2 -2
  173. package/dist/compat/array/unionBy.js +2 -1
  174. package/dist/compat/array/unionBy.mjs +2 -1
  175. package/dist/compat/array/uniqBy.js +4 -3
  176. package/dist/compat/array/uniqBy.mjs +4 -3
  177. package/dist/compat/array/unzip.d.mts +3 -0
  178. package/dist/compat/array/unzip.d.ts +3 -0
  179. package/dist/compat/array/unzip.js +3 -0
  180. package/dist/compat/array/unzip.mjs +3 -0
  181. package/dist/compat/array/unzipWith.js +1 -1
  182. package/dist/compat/array/unzipWith.mjs +1 -1
  183. package/dist/compat/array/zipObject.js +2 -0
  184. package/dist/compat/array/zipObject.mjs +2 -0
  185. package/dist/compat/compat.d.mts +3 -3
  186. package/dist/compat/compat.d.ts +3 -3
  187. package/dist/compat/compat.js +8 -4
  188. package/dist/compat/compat.mjs +8 -4
  189. package/dist/compat/function/curry.d.mts +1 -1
  190. package/dist/compat/function/curry.d.ts +1 -1
  191. package/dist/compat/function/debounce.js +1 -1
  192. package/dist/compat/function/debounce.mjs +1 -1
  193. package/dist/compat/function/flowRight.d.mts +1 -1
  194. package/dist/compat/function/flowRight.d.ts +1 -1
  195. package/dist/compat/function/partial.d.mts +1 -1
  196. package/dist/compat/function/partial.d.ts +1 -1
  197. package/dist/compat/function/rest.d.mts +1 -1
  198. package/dist/compat/function/rest.d.ts +1 -1
  199. package/dist/compat/function/rest.js +1 -1
  200. package/dist/compat/function/rest.mjs +1 -1
  201. package/dist/compat/index.d.mts +3 -3
  202. package/dist/compat/index.d.ts +3 -3
  203. package/dist/compat/index.js +6 -4
  204. package/dist/compat/index.mjs +5 -5
  205. package/dist/compat/math/maxBy.js +1 -1
  206. package/dist/compat/math/maxBy.mjs +1 -1
  207. package/dist/compat/math/meanBy.d.mts +4 -0
  208. package/dist/compat/math/meanBy.d.ts +4 -0
  209. package/dist/compat/math/meanBy.js +8 -3
  210. package/dist/compat/math/meanBy.mjs +8 -3
  211. package/dist/compat/math/minBy.js +1 -1
  212. package/dist/compat/math/minBy.mjs +1 -1
  213. package/dist/compat/object/cloneDeep.d.mts +5 -5
  214. package/dist/compat/object/cloneDeep.d.ts +5 -5
  215. package/dist/compat/object/cloneDeep.js +5 -5
  216. package/dist/compat/object/cloneDeep.mjs +5 -5
  217. package/dist/compat/object/cloneDeepWith.js +3 -1
  218. package/dist/compat/object/cloneDeepWith.mjs +3 -1
  219. package/dist/compat/object/cloneWith.d.mts +1 -1
  220. package/dist/compat/object/cloneWith.d.ts +1 -1
  221. package/dist/compat/object/cloneWith.js +1 -1
  222. package/dist/compat/object/cloneWith.mjs +1 -1
  223. package/dist/compat/object/entries.d.mts +1 -0
  224. package/dist/compat/object/entries.d.ts +1 -0
  225. package/dist/compat/object/entries.js +1 -0
  226. package/dist/compat/object/entries.mjs +1 -0
  227. package/dist/compat/object/entriesIn.d.mts +1 -0
  228. package/dist/compat/object/entriesIn.d.ts +1 -0
  229. package/dist/compat/object/entriesIn.js +1 -0
  230. package/dist/compat/object/entriesIn.mjs +1 -0
  231. package/dist/compat/object/omit.js +5 -5
  232. package/dist/compat/object/omit.mjs +5 -5
  233. package/dist/compat/object/transform.js +1 -1
  234. package/dist/compat/object/transform.mjs +1 -1
  235. package/dist/compat/object/updateWith.js +2 -2
  236. package/dist/compat/object/updateWith.mjs +2 -2
  237. package/dist/compat/predicate/isMatchWith.js +14 -5
  238. package/dist/compat/predicate/isMatchWith.mjs +14 -5
  239. package/dist/compat/string/template.js +2 -1
  240. package/dist/compat/string/template.mjs +2 -1
  241. package/dist/compat/string/words.js +17 -13
  242. package/dist/compat/string/words.mjs +17 -13
  243. package/dist/compat/util/iteratee.js +1 -3
  244. package/dist/compat/util/iteratee.mjs +1 -3
  245. package/dist/compat/util/toArray.d.mts +5 -5
  246. package/dist/compat/util/toArray.d.ts +5 -5
  247. package/dist/compat/util/toArray.js +9 -5
  248. package/dist/compat/util/toArray.mjs +9 -5
  249. package/dist/compat/util/toPath.js +11 -3
  250. package/dist/compat/util/toPath.mjs +11 -3
  251. package/dist/compat/util/toString.js +4 -1
  252. package/dist/compat/util/toString.mjs +4 -1
  253. package/dist/fp/array/at.d.mts +1 -1
  254. package/dist/fp/array/at.d.ts +1 -1
  255. package/dist/fp/array/orderBy.d.mts +1 -1
  256. package/dist/fp/array/orderBy.d.ts +1 -1
  257. package/dist/fp/array/sortBy.d.mts +1 -1
  258. package/dist/fp/array/sortBy.d.ts +1 -1
  259. package/dist/fp/array/unzip.d.mts +3 -0
  260. package/dist/fp/array/unzip.d.ts +3 -0
  261. package/dist/fp/array/unzip.js +3 -0
  262. package/dist/fp/array/unzip.mjs +3 -0
  263. package/dist/fp/iterator/chunk.d.mts +19 -0
  264. package/dist/fp/iterator/chunk.d.ts +19 -0
  265. package/dist/fp/iterator/chunk.js +24 -0
  266. package/dist/fp/iterator/chunk.mjs +24 -0
  267. package/dist/fp/iterator/count.d.mts +20 -0
  268. package/dist/fp/iterator/count.d.ts +20 -0
  269. package/dist/fp/iterator/count.js +25 -0
  270. package/dist/fp/iterator/count.mjs +25 -0
  271. package/dist/fp/iterator/drop.d.mts +20 -0
  272. package/dist/fp/iterator/drop.d.ts +20 -0
  273. package/dist/fp/iterator/drop.js +24 -0
  274. package/dist/fp/iterator/drop.mjs +24 -0
  275. package/dist/fp/iterator/dropWhile.d.mts +18 -0
  276. package/dist/fp/iterator/dropWhile.d.ts +18 -0
  277. package/dist/fp/iterator/dropWhile.js +23 -0
  278. package/dist/fp/iterator/dropWhile.mjs +23 -0
  279. package/dist/fp/iterator/every.d.mts +20 -0
  280. package/dist/fp/iterator/every.d.ts +20 -0
  281. package/dist/fp/iterator/every.js +24 -0
  282. package/dist/fp/iterator/every.mjs +24 -0
  283. package/dist/fp/iterator/filter.d.mts +37 -0
  284. package/dist/fp/iterator/filter.d.ts +37 -0
  285. package/dist/fp/iterator/filter.js +8 -0
  286. package/dist/fp/iterator/filter.mjs +8 -0
  287. package/dist/fp/iterator/find.d.mts +20 -0
  288. package/dist/fp/iterator/find.d.ts +20 -0
  289. package/dist/fp/iterator/find.js +24 -0
  290. package/dist/fp/iterator/find.mjs +24 -0
  291. package/dist/fp/iterator/flatMap.d.mts +20 -0
  292. package/dist/fp/iterator/flatMap.d.ts +20 -0
  293. package/dist/fp/iterator/flatMap.js +24 -0
  294. package/dist/fp/iterator/flatMap.mjs +24 -0
  295. package/dist/fp/iterator/forEach.d.mts +22 -0
  296. package/dist/fp/iterator/forEach.d.ts +22 -0
  297. package/dist/fp/iterator/forEach.js +26 -0
  298. package/dist/fp/iterator/forEach.mjs +26 -0
  299. package/dist/fp/iterator/head.d.mts +19 -0
  300. package/dist/fp/iterator/head.d.ts +19 -0
  301. package/dist/fp/iterator/head.js +24 -0
  302. package/dist/fp/iterator/head.mjs +24 -0
  303. package/dist/fp/iterator/index.d.mts +21 -0
  304. package/dist/fp/iterator/index.d.ts +21 -0
  305. package/dist/fp/iterator/index.js +41 -0
  306. package/dist/fp/iterator/index.mjs +21 -0
  307. package/dist/fp/iterator/map.d.mts +20 -0
  308. package/dist/fp/iterator/map.d.ts +20 -0
  309. package/dist/fp/iterator/map.js +24 -0
  310. package/dist/fp/iterator/map.mjs +24 -0
  311. package/dist/fp/iterator/partition.d.mts +22 -0
  312. package/dist/fp/iterator/partition.d.ts +22 -0
  313. package/dist/fp/iterator/partition.js +27 -0
  314. package/dist/fp/iterator/partition.mjs +27 -0
  315. package/dist/fp/iterator/reduce.d.mts +24 -0
  316. package/dist/fp/iterator/reduce.d.ts +24 -0
  317. package/dist/fp/iterator/reduce.js +28 -0
  318. package/dist/fp/iterator/reduce.mjs +28 -0
  319. package/dist/fp/iterator/scan.d.mts +21 -0
  320. package/dist/fp/iterator/scan.d.ts +21 -0
  321. package/dist/fp/iterator/scan.js +26 -0
  322. package/dist/fp/iterator/scan.mjs +26 -0
  323. package/dist/fp/iterator/some.d.mts +20 -0
  324. package/dist/fp/iterator/some.d.ts +20 -0
  325. package/dist/fp/iterator/some.js +24 -0
  326. package/dist/fp/iterator/some.mjs +24 -0
  327. package/dist/fp/iterator/take.d.mts +21 -0
  328. package/dist/fp/iterator/take.d.ts +21 -0
  329. package/dist/fp/iterator/take.js +25 -0
  330. package/dist/fp/iterator/take.mjs +25 -0
  331. package/dist/fp/iterator/takeWhile.d.mts +19 -0
  332. package/dist/fp/iterator/takeWhile.d.ts +19 -0
  333. package/dist/fp/iterator/takeWhile.js +24 -0
  334. package/dist/fp/iterator/takeWhile.mjs +24 -0
  335. package/dist/fp/iterator/toArray.d.mts +21 -0
  336. package/dist/fp/iterator/toArray.d.ts +21 -0
  337. package/dist/fp/iterator/toArray.js +25 -0
  338. package/dist/fp/iterator/toArray.mjs +25 -0
  339. package/dist/fp/iterator/uniqBy.d.mts +20 -0
  340. package/dist/fp/iterator/uniqBy.d.ts +20 -0
  341. package/dist/fp/iterator/uniqBy.js +25 -0
  342. package/dist/fp/iterator/uniqBy.mjs +25 -0
  343. package/dist/fp/iterator/zip.d.mts +20 -0
  344. package/dist/fp/iterator/zip.d.ts +20 -0
  345. package/dist/fp/iterator/zip.js +25 -0
  346. package/dist/fp/iterator/zip.mjs +25 -0
  347. package/dist/function/memoize.d.mts +3 -2
  348. package/dist/function/memoize.d.ts +3 -2
  349. package/dist/function/memoize.js +3 -2
  350. package/dist/function/memoize.mjs +3 -2
  351. package/dist/function/partial.d.mts +2 -2
  352. package/dist/function/partial.d.ts +2 -2
  353. package/dist/function/partialRight.d.mts +5 -5
  354. package/dist/function/partialRight.d.ts +5 -5
  355. package/dist/function/rest.d.mts +1 -1
  356. package/dist/function/rest.d.ts +1 -1
  357. package/dist/function/rest.js +1 -1
  358. package/dist/function/rest.mjs +1 -1
  359. package/dist/function/retry.d.mts +7 -4
  360. package/dist/function/retry.d.ts +7 -4
  361. package/dist/function/retry.js +4 -2
  362. package/dist/function/retry.mjs +1 -1
  363. package/dist/index.d.mts +9 -2
  364. package/dist/index.d.ts +9 -2
  365. package/dist/index.js +18 -4
  366. package/dist/index.mjs +12 -5
  367. package/dist/iterator/_internal/iterator.js +74 -0
  368. package/dist/iterator/_internal/iterator.mjs +74 -0
  369. package/dist/iterator/chunk.d.mts +21 -0
  370. package/dist/iterator/chunk.d.ts +21 -0
  371. package/dist/iterator/chunk.js +40 -0
  372. package/dist/iterator/chunk.mjs +40 -0
  373. package/dist/iterator/count.d.mts +18 -0
  374. package/dist/iterator/count.d.ts +18 -0
  375. package/dist/iterator/count.js +26 -0
  376. package/dist/iterator/count.mjs +26 -0
  377. package/dist/iterator/dropWhile.d.mts +20 -0
  378. package/dist/iterator/dropWhile.d.ts +20 -0
  379. package/dist/iterator/dropWhile.js +52 -0
  380. package/dist/iterator/dropWhile.mjs +52 -0
  381. package/dist/iterator/head.d.mts +21 -0
  382. package/dist/iterator/head.d.ts +21 -0
  383. package/dist/iterator/head.js +26 -0
  384. package/dist/iterator/head.mjs +26 -0
  385. package/dist/iterator/index.d.mts +12 -0
  386. package/dist/iterator/index.d.ts +12 -0
  387. package/dist/iterator/index.js +23 -0
  388. package/dist/iterator/index.mjs +12 -0
  389. package/dist/iterator/iterate.d.mts +20 -0
  390. package/dist/iterator/iterate.d.ts +20 -0
  391. package/dist/iterator/iterate.js +32 -0
  392. package/dist/iterator/iterate.mjs +32 -0
  393. package/dist/iterator/partition.d.mts +18 -0
  394. package/dist/iterator/partition.d.ts +18 -0
  395. package/dist/iterator/partition.js +36 -0
  396. package/dist/iterator/partition.mjs +36 -0
  397. package/dist/iterator/range.d.mts +42 -0
  398. package/dist/iterator/range.d.ts +42 -0
  399. package/dist/iterator/range.js +25 -0
  400. package/dist/iterator/range.mjs +25 -0
  401. package/dist/iterator/scan.d.mts +23 -0
  402. package/dist/iterator/scan.d.ts +23 -0
  403. package/dist/iterator/scan.js +47 -0
  404. package/dist/iterator/scan.mjs +47 -0
  405. package/dist/iterator/takeWhile.d.mts +20 -0
  406. package/dist/iterator/takeWhile.d.ts +20 -0
  407. package/dist/iterator/takeWhile.js +34 -0
  408. package/dist/iterator/takeWhile.mjs +34 -0
  409. package/dist/iterator/uniqBy.d.mts +22 -0
  410. package/dist/iterator/uniqBy.d.ts +22 -0
  411. package/dist/iterator/uniqBy.js +43 -0
  412. package/dist/iterator/uniqBy.mjs +43 -0
  413. package/dist/iterator/zip.d.mts +23 -0
  414. package/dist/iterator/zip.d.ts +23 -0
  415. package/dist/iterator/zip.js +45 -0
  416. package/dist/iterator/zip.mjs +45 -0
  417. package/dist/object/cloneDeepWith.d.mts +3 -1
  418. package/dist/object/cloneDeepWith.d.ts +3 -1
  419. package/dist/object/cloneDeepWith.js +3 -1
  420. package/dist/object/cloneDeepWith.mjs +3 -1
  421. package/dist/object/deepFreeze.d.mts +20 -0
  422. package/dist/object/deepFreeze.d.ts +20 -0
  423. package/dist/object/deepFreeze.js +29 -0
  424. package/dist/object/deepFreeze.mjs +29 -0
  425. package/dist/object/flattenObject.d.mts +16 -1
  426. package/dist/object/flattenObject.d.ts +16 -1
  427. package/dist/object/flattenObject.js +15 -6
  428. package/dist/object/flattenObject.mjs +15 -6
  429. package/dist/object/index.d.mts +7 -1
  430. package/dist/object/index.d.ts +7 -1
  431. package/dist/object/index.js +12 -0
  432. package/dist/object/index.mjs +7 -1
  433. package/dist/object/mapKeysAsync.d.mts +25 -0
  434. package/dist/object/mapKeysAsync.d.ts +25 -0
  435. package/dist/object/mapKeysAsync.js +32 -0
  436. package/dist/object/mapKeysAsync.mjs +32 -0
  437. package/dist/object/mapValuesAsync.d.mts +26 -0
  438. package/dist/object/mapValuesAsync.d.ts +26 -0
  439. package/dist/object/mapValuesAsync.js +32 -0
  440. package/dist/object/mapValuesAsync.mjs +32 -0
  441. package/dist/object/merge.js +2 -4
  442. package/dist/object/merge.mjs +1 -3
  443. package/dist/object/mergeWith.js +4 -4
  444. package/dist/object/mergeWith.mjs +4 -4
  445. package/dist/object/toCamelCaseKeys.d.mts +2 -6
  446. package/dist/object/toCamelCaseKeys.d.ts +2 -6
  447. package/dist/object/toConstantCaseKeys.d.mts +52 -0
  448. package/dist/object/toConstantCaseKeys.d.ts +52 -0
  449. package/dist/object/toConstantCaseKeys.js +66 -0
  450. package/dist/object/toConstantCaseKeys.mjs +66 -0
  451. package/dist/object/toKebabCaseKeys.d.mts +52 -0
  452. package/dist/object/toKebabCaseKeys.d.ts +52 -0
  453. package/dist/object/toKebabCaseKeys.js +66 -0
  454. package/dist/object/toKebabCaseKeys.mjs +66 -0
  455. package/dist/object/toMerged.js +4 -4
  456. package/dist/object/toMerged.mjs +4 -4
  457. package/dist/object/toPascalCaseKeys.d.mts +52 -0
  458. package/dist/object/toPascalCaseKeys.d.ts +52 -0
  459. package/dist/object/toPascalCaseKeys.js +66 -0
  460. package/dist/object/toPascalCaseKeys.mjs +66 -0
  461. package/dist/object/toSnakeCaseKeys.d.mts +2 -3
  462. package/dist/object/toSnakeCaseKeys.d.ts +2 -3
  463. package/dist/promise/index.d.mts +2 -1
  464. package/dist/promise/index.d.ts +2 -1
  465. package/dist/promise/index.js +2 -0
  466. package/dist/promise/index.mjs +2 -1
  467. package/dist/promise/limitAsync.d.mts +35 -0
  468. package/dist/promise/limitAsync.d.ts +35 -0
  469. package/dist/promise/limitAsync.js +46 -0
  470. package/dist/promise/limitAsync.mjs +46 -0
  471. package/dist/string/dedent.d.mts +37 -0
  472. package/dist/string/dedent.d.ts +37 -0
  473. package/dist/string/dedent.js +38 -0
  474. package/dist/string/dedent.mjs +38 -0
  475. package/dist/string/index.d.mts +2 -1
  476. package/dist/string/index.d.ts +2 -1
  477. package/dist/string/index.js +5 -3
  478. package/dist/string/index.mjs +5 -4
  479. package/dist/types/ToCamelCaseKeys.d.mts +24 -0
  480. package/dist/types/ToCamelCaseKeys.d.ts +24 -0
  481. package/dist/types/ToConstantCaseKeys.d.mts +21 -0
  482. package/dist/types/ToConstantCaseKeys.d.ts +21 -0
  483. package/dist/types/ToKebabCaseKeys.d.mts +23 -0
  484. package/dist/types/ToKebabCaseKeys.d.ts +23 -0
  485. package/dist/types/ToPascalCaseKeys.d.mts +24 -0
  486. package/dist/types/ToPascalCaseKeys.d.ts +24 -0
  487. package/dist/types/ToSnakeCaseKeys.d.mts +21 -0
  488. package/dist/types/ToSnakeCaseKeys.d.ts +21 -0
  489. package/dist/types/index.d.mts +6 -1
  490. package/dist/types/index.d.ts +6 -1
  491. package/fp/iterator.d.ts +1 -0
  492. package/fp/iterator.js +1 -0
  493. package/iterator.d.ts +1 -0
  494. package/iterator.js +1 -0
  495. package/package.json +70 -2
@@ -23,7 +23,7 @@ The traversal is interrupted when the `iteratee` function returns `false`.
23
23
  * @example
24
24
  * // Transform an array
25
25
  * const array = [2, 3, 4];
26
- * transform(array, (acc, value) => { acc += value; return value % 2 === 0; }, 0) // => 5
26
+ * transform(array, (acc, value) => { acc.sum += value; return value % 2 === 0; }, { sum: 0 }) // => { sum: 5 }
27
27
  *
28
28
  * @example
29
29
  * // Transform an object
@@ -1,4 +1,3 @@
1
- const require_isUnsafeProperty = require("../../_internal/isUnsafeProperty.js");
2
1
  const require_toKey = require("../_internal/toKey.js");
3
2
  const require_toPath = require("../util/toPath.js");
4
3
  const require_get = require("./get.js");
@@ -6,6 +5,7 @@ const require_isObject = require("../predicate/isObject.js");
6
5
  const require_isIndex = require("../_internal/isIndex.js");
7
6
  const require_isKey = require("../_internal/isKey.js");
8
7
  const require_assignValue = require("../_internal/assignValue.js");
8
+ const require_isUnsafeToWriteProperty = require("../../_internal/isUnsafeToWriteProperty.js");
9
9
  //#region src/compat/object/updateWith.ts
10
10
  /**
11
11
  * Updates the value at the specified path of the given object using an updater function and a customizer.
@@ -34,7 +34,7 @@ function updateWith(obj, path, updater, customizer) {
34
34
  let current = obj;
35
35
  for (let i = 0; i < resolvedPath.length && current != null; i++) {
36
36
  const key = require_toKey.toKey(resolvedPath[i]);
37
- if (require_isUnsafeProperty.isUnsafeProperty(key)) continue;
37
+ if (require_isUnsafeToWriteProperty.isUnsafeToWriteProperty(key)) return obj;
38
38
  let newValue;
39
39
  if (i === resolvedPath.length - 1) newValue = updateValue;
40
40
  else {
@@ -1,4 +1,3 @@
1
- import { isUnsafeProperty } from "../../_internal/isUnsafeProperty.mjs";
2
1
  import { toKey } from "../_internal/toKey.mjs";
3
2
  import { toPath } from "../util/toPath.mjs";
4
3
  import { get } from "./get.mjs";
@@ -6,6 +5,7 @@ import { isObject } from "../predicate/isObject.mjs";
6
5
  import { isIndex } from "../_internal/isIndex.mjs";
7
6
  import { isKey } from "../_internal/isKey.mjs";
8
7
  import { assignValue } from "../_internal/assignValue.mjs";
8
+ import { isUnsafeToWriteProperty } from "../../_internal/isUnsafeToWriteProperty.mjs";
9
9
  //#region src/compat/object/updateWith.ts
10
10
  /**
11
11
  * Updates the value at the specified path of the given object using an updater function and a customizer.
@@ -34,7 +34,7 @@ function updateWith(obj, path, updater, customizer) {
34
34
  let current = obj;
35
35
  for (let i = 0; i < resolvedPath.length && current != null; i++) {
36
36
  const key = toKey(resolvedPath[i]);
37
- if (isUnsafeProperty(key)) continue;
37
+ if (isUnsafeToWriteProperty(key)) return obj;
38
38
  let newValue;
39
39
  if (i === resolvedPath.length - 1) newValue = updateValue;
40
40
  else {
@@ -1,4 +1,6 @@
1
1
  const require_isPrimitive = require("../../predicate/isPrimitive.js");
2
+ const require_getTag = require("../_internal/getTag.js");
3
+ require("../_internal/tags.js");
2
4
  const require_eq = require("../util/eq.js");
3
5
  const require_isObject = require("./isObject.js");
4
6
  //#region src/compat/predicate/isMatchWith.ts
@@ -19,7 +21,8 @@ const require_isObject = require("./isObject.js");
19
21
  * - **Primitives**: Matches using strict equality
20
22
  *
21
23
  * Special cases:
22
- * - Empty objects, arrays, Maps, and Sets always match any target
24
+ * - Empty arrays, Maps, and Sets always match any target
25
+ * - An empty object matches any target at the top level, but at nested levels it only matches object targets
23
26
  * - `null` and `undefined` source values have specific matching rules
24
27
  * - Circular references are handled using an internal stack to prevent infinite recursion
25
28
  *
@@ -82,7 +85,7 @@ function isMatchWith(target, source, compare) {
82
85
  function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
83
86
  if (source === target) return true;
84
87
  switch (typeof source) {
85
- case "object": return isObjectMatch(target, source, compare, stack);
88
+ case "object": return isObjectMatch(target, source, compare, stack, isRoot);
86
89
  case "function":
87
90
  if (Object.keys(source).length > 0) return isMatchWithInternal(target, { ...source }, compare, stack, isRoot);
88
91
  return require_eq.eq(target, source);
@@ -95,20 +98,26 @@ function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
95
98
  return require_eq.eq(target, source);
96
99
  }
97
100
  }
98
- function isObjectMatch(target, source, compare, stack) {
101
+ function isObjectMatch(target, source, compare, stack, isRoot = false) {
99
102
  if (source == null) return true;
100
103
  if (Array.isArray(source)) return isArrayMatch(target, source, compare, stack);
101
104
  if (source instanceof Map) return isMapMatch(target, source, compare, stack);
102
105
  if (source instanceof Set) return isSetMatch(target, source, compare, stack);
103
106
  const keys = Object.keys(source);
104
- if (target == null || require_isPrimitive.isPrimitive(target)) return keys.length === 0;
107
+ if (target == null) return isRoot && keys.length === 0;
108
+ if (isRoot) {
109
+ if (require_isPrimitive.isPrimitive(target)) target = Object(target);
110
+ } else {
111
+ const tag = require_getTag.getTag(target);
112
+ if (tag !== "[object Object]" && tag !== "[object Arguments]") return false;
113
+ }
105
114
  if (keys.length === 0) return true;
106
115
  if (stack?.has(source)) return stack.get(source) === target;
107
116
  stack?.set(source, target);
108
117
  try {
109
118
  for (let i = 0; i < keys.length; i++) {
110
119
  const key = keys[i];
111
- if (!require_isPrimitive.isPrimitive(target) && !(key in target)) return false;
120
+ if (!(key in target)) return false;
112
121
  if (source[key] === void 0 && target[key] !== void 0) return false;
113
122
  if (source[key] === null && target[key] !== null) return false;
114
123
  if (!compare(target[key], source[key], key, target, source, stack)) return false;
@@ -1,4 +1,6 @@
1
1
  import { isPrimitive } from "../../predicate/isPrimitive.mjs";
2
+ import { getTag } from "../_internal/getTag.mjs";
3
+ import "../_internal/tags.mjs";
2
4
  import { eq } from "../util/eq.mjs";
3
5
  import { isObject } from "./isObject.mjs";
4
6
  //#region src/compat/predicate/isMatchWith.ts
@@ -19,7 +21,8 @@ import { isObject } from "./isObject.mjs";
19
21
  * - **Primitives**: Matches using strict equality
20
22
  *
21
23
  * Special cases:
22
- * - Empty objects, arrays, Maps, and Sets always match any target
24
+ * - Empty arrays, Maps, and Sets always match any target
25
+ * - An empty object matches any target at the top level, but at nested levels it only matches object targets
23
26
  * - `null` and `undefined` source values have specific matching rules
24
27
  * - Circular references are handled using an internal stack to prevent infinite recursion
25
28
  *
@@ -82,7 +85,7 @@ function isMatchWith(target, source, compare) {
82
85
  function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
83
86
  if (source === target) return true;
84
87
  switch (typeof source) {
85
- case "object": return isObjectMatch(target, source, compare, stack);
88
+ case "object": return isObjectMatch(target, source, compare, stack, isRoot);
86
89
  case "function":
87
90
  if (Object.keys(source).length > 0) return isMatchWithInternal(target, { ...source }, compare, stack, isRoot);
88
91
  return eq(target, source);
@@ -95,20 +98,26 @@ function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
95
98
  return eq(target, source);
96
99
  }
97
100
  }
98
- function isObjectMatch(target, source, compare, stack) {
101
+ function isObjectMatch(target, source, compare, stack, isRoot = false) {
99
102
  if (source == null) return true;
100
103
  if (Array.isArray(source)) return isArrayMatch(target, source, compare, stack);
101
104
  if (source instanceof Map) return isMapMatch(target, source, compare, stack);
102
105
  if (source instanceof Set) return isSetMatch(target, source, compare, stack);
103
106
  const keys = Object.keys(source);
104
- if (target == null || isPrimitive(target)) return keys.length === 0;
107
+ if (target == null) return isRoot && keys.length === 0;
108
+ if (isRoot) {
109
+ if (isPrimitive(target)) target = Object(target);
110
+ } else {
111
+ const tag = getTag(target);
112
+ if (tag !== "[object Object]" && tag !== "[object Arguments]") return false;
113
+ }
105
114
  if (keys.length === 0) return true;
106
115
  if (stack?.has(source)) return stack.get(source) === target;
107
116
  stack?.set(source, target);
108
117
  try {
109
118
  for (let i = 0; i < keys.length; i++) {
110
119
  const key = keys[i];
111
- if (!isPrimitive(target) && !(key in target)) return false;
120
+ if (!(key in target)) return false;
112
121
  if (source[key] === void 0 && target[key] !== void 0) return false;
113
122
  if (source[key] === null && target[key] !== null) return false;
114
123
  if (!compare(target[key], source[key], key, target, source, stack)) return false;
@@ -1,4 +1,5 @@
1
1
  const require_toString = require("../util/toString.js");
2
+ const require_isIterateeCall = require("../_internal/isIterateeCall.js");
2
3
  const require_attempt = require("../function/attempt.js");
3
4
  const require_defaults = require("../object/defaults.js");
4
5
  const require_escape = require("./escape.js");
@@ -92,7 +93,7 @@ const templateSettings = {
92
93
  */
93
94
  function template(string, options, guard) {
94
95
  string = require_toString.toString(string);
95
- if (guard) options = templateSettings;
96
+ if (guard && require_isIterateeCall.isIterateeCall(string, options, guard)) options = templateSettings;
96
97
  options = require_defaults.defaults({ ...options }, templateSettings);
97
98
  const delimitersRegExp = new RegExp([
98
99
  options.escape?.source ?? noMatchExp.source,
@@ -1,4 +1,5 @@
1
1
  import { toString } from "../util/toString.mjs";
2
+ import { isIterateeCall } from "../_internal/isIterateeCall.mjs";
2
3
  import { attempt } from "../function/attempt.mjs";
3
4
  import { defaults } from "../object/defaults.mjs";
4
5
  import { escape } from "./escape.mjs";
@@ -92,7 +93,7 @@ const templateSettings = {
92
93
  */
93
94
  function template(string, options, guard) {
94
95
  string = toString(string);
95
- if (guard) options = templateSettings;
96
+ if (guard && isIterateeCall(string, options, guard)) options = templateSettings;
96
97
  options = defaults({ ...options }, templateSettings);
97
98
  const delimitersRegExp = new RegExp([
98
99
  options.escape?.source ?? noMatchExp.source,
@@ -10,17 +10,21 @@ const rUnicodeOptContrUpper = "(?:['’](?:D|LL|M|RE|S|T|VE))?";
10
10
  const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`;
11
11
  const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`;
12
12
  const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`;
13
- const rUnicodeWord = RegExp([
14
- `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
15
- `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
16
- `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
17
- `${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
18
- `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
19
- `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
20
- `${rNumber}+`,
21
- "\\p{Emoji_Presentation}",
22
- "\\p{Extended_Pictographic}"
23
- ].join("|"), "gu");
13
+ let rUnicodeWord;
14
+ function getUnicodeWordPattern() {
15
+ if (rUnicodeWord == null) rUnicodeWord = RegExp([
16
+ `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
17
+ `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
18
+ `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
19
+ `${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
20
+ `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
21
+ `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
22
+ `${rNumber}+`,
23
+ "\\p{Emoji_Presentation}",
24
+ "\\p{Extended_Pictographic}"
25
+ ].join("|"), "gu");
26
+ return rUnicodeWord;
27
+ }
24
28
  /**
25
29
  * Splits `string` into an array of its words.
26
30
  *
@@ -32,9 +36,9 @@ const rUnicodeWord = RegExp([
32
36
  * const wordsArray1 = words('fred, barney, & pebbles');
33
37
  * // => ['fred', 'barney', 'pebbles']
34
38
  */
35
- function words(str, pattern = rUnicodeWord, guard) {
39
+ function words(str, pattern, guard) {
36
40
  const input = require_toString.toString(str);
37
- if (guard) pattern = rUnicodeWord;
41
+ if (guard || pattern === void 0) pattern = getUnicodeWordPattern();
38
42
  if (typeof pattern === "number") pattern = pattern.toString();
39
43
  return Array.from(input.match(pattern) ?? []).filter((x) => x !== "");
40
44
  }
@@ -10,17 +10,21 @@ const rUnicodeOptContrUpper = "(?:['’](?:D|LL|M|RE|S|T|VE))?";
10
10
  const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`;
11
11
  const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`;
12
12
  const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`;
13
- const rUnicodeWord = RegExp([
14
- `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
15
- `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
16
- `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
17
- `${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
18
- `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
19
- `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
20
- `${rNumber}+`,
21
- "\\p{Emoji_Presentation}",
22
- "\\p{Extended_Pictographic}"
23
- ].join("|"), "gu");
13
+ let rUnicodeWord;
14
+ function getUnicodeWordPattern() {
15
+ if (rUnicodeWord == null) rUnicodeWord = RegExp([
16
+ `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
17
+ `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
18
+ `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
19
+ `${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
20
+ `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
21
+ `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
22
+ `${rNumber}+`,
23
+ "\\p{Emoji_Presentation}",
24
+ "\\p{Extended_Pictographic}"
25
+ ].join("|"), "gu");
26
+ return rUnicodeWord;
27
+ }
24
28
  /**
25
29
  * Splits `string` into an array of its words.
26
30
  *
@@ -32,9 +36,9 @@ const rUnicodeWord = RegExp([
32
36
  * const wordsArray1 = words('fred, barney, & pebbles');
33
37
  * // => ['fred', 'barney', 'pebbles']
34
38
  */
35
- function words(str, pattern = rUnicodeWord, guard) {
39
+ function words(str, pattern, guard) {
36
40
  const input = toString(str);
37
- if (guard) pattern = rUnicodeWord;
41
+ if (guard || pattern === void 0) pattern = getUnicodeWordPattern();
38
42
  if (typeof pattern === "number") pattern = pattern.toString();
39
43
  return Array.from(input.match(pattern) ?? []).filter((x) => x !== "");
40
44
  }
@@ -40,9 +40,7 @@ function iteratee(value) {
40
40
  case "object":
41
41
  if (Array.isArray(value) && value.length === 2) return require_matchesProperty.matchesProperty(value[0], value[1]);
42
42
  return require_matches.matches(value);
43
- case "string":
44
- case "symbol":
45
- case "number": return require_property.property(value);
43
+ default: return require_property.property(value);
46
44
  }
47
45
  }
48
46
  //#endregion
@@ -40,9 +40,7 @@ function iteratee(value) {
40
40
  case "object":
41
41
  if (Array.isArray(value) && value.length === 2) return matchesProperty(value[0], value[1]);
42
42
  return matches(value);
43
- case "string":
44
- case "symbol":
45
- case "number": return property(value);
43
+ default: return property(value);
46
44
  }
47
45
  }
48
46
  //#endregion
@@ -7,8 +7,8 @@
7
7
  * @returns Returns an array of the record's values or an empty array if null/undefined.
8
8
  *
9
9
  * @example
10
- * toArray({ 'a': 1, 'b': 2 }) // => returns [1, 2]
11
- * toArray(null) // => returns []
10
+ * toArray({ 'a': 1, 'b': 2 }) // => [1, 2]
11
+ * toArray(null) // => []
12
12
  */
13
13
  declare function toArray<T>(value: Record<string, T> | Record<number, T> | null | undefined): T[];
14
14
  /**
@@ -19,8 +19,8 @@ declare function toArray<T>(value: Record<string, T> | Record<number, T> | null
19
19
  * @returns Returns an array of the value's values.
20
20
  *
21
21
  * @example
22
- * toArray({ x: 10, y: 20 }) // => returns [10, 20]
23
- * toArray('abc') // => returns ['a', 'b', 'c']
22
+ * toArray({ x: 10, y: 20 }) // => [10, 20]
23
+ * toArray('abc') // => ['a', 'b', 'c']
24
24
  */
25
25
  declare function toArray<T>(value: T): Array<T[keyof T]>;
26
26
  /**
@@ -29,7 +29,7 @@ declare function toArray<T>(value: T): Array<T[keyof T]>;
29
29
  * @returns Returns an empty array.
30
30
  *
31
31
  * @example
32
- * toArray() // => returns []
32
+ * toArray() // => []
33
33
  */
34
34
  declare function toArray(): any[];
35
35
  //#endregion
@@ -7,8 +7,8 @@
7
7
  * @returns Returns an array of the record's values or an empty array if null/undefined.
8
8
  *
9
9
  * @example
10
- * toArray({ 'a': 1, 'b': 2 }) // => returns [1, 2]
11
- * toArray(null) // => returns []
10
+ * toArray({ 'a': 1, 'b': 2 }) // => [1, 2]
11
+ * toArray(null) // => []
12
12
  */
13
13
  declare function toArray<T>(value: Record<string, T> | Record<number, T> | null | undefined): T[];
14
14
  /**
@@ -19,8 +19,8 @@ declare function toArray<T>(value: Record<string, T> | Record<number, T> | null
19
19
  * @returns Returns an array of the value's values.
20
20
  *
21
21
  * @example
22
- * toArray({ x: 10, y: 20 }) // => returns [10, 20]
23
- * toArray('abc') // => returns ['a', 'b', 'c']
22
+ * toArray({ x: 10, y: 20 }) // => [10, 20]
23
+ * toArray('abc') // => ['a', 'b', 'c']
24
24
  */
25
25
  declare function toArray<T>(value: T): Array<T[keyof T]>;
26
26
  /**
@@ -29,7 +29,7 @@ declare function toArray<T>(value: T): Array<T[keyof T]>;
29
29
  * @returns Returns an empty array.
30
30
  *
31
31
  * @example
32
- * toArray() // => returns []
32
+ * toArray() // => []
33
33
  */
34
34
  declare function toArray(): any[];
35
35
  //#endregion
@@ -1,3 +1,4 @@
1
+ const require_isIterable = require("../../predicate/isIterable.js");
1
2
  const require_isArrayLike = require("../predicate/isArrayLike.js");
2
3
  const require_isMap = require("../predicate/isMap.js");
3
4
  const require_isSet = require("../predicate/isSet.js");
@@ -9,15 +10,18 @@ const require_isSet = require("../predicate/isSet.js");
9
10
  * @returns Returns the converted array.
10
11
  *
11
12
  * @example
12
- * toArray({ 'a': 1, 'b': 2 }) // => returns [1,2]
13
- * toArray('abc') // => returns ['a', 'b', 'c']
14
- * toArray(1) // => returns []
15
- * toArray(null) // => returns []
13
+ * toArray({ 'a': 1, 'b': 2 }) // => [1,2]
14
+ * toArray('abc') // => ['a', 'b', 'c']
15
+ * toArray(1) // => []
16
+ * toArray(null) // => []
16
17
  */
17
18
  function toArray(value) {
18
19
  if (value == null) return [];
19
20
  if (require_isArrayLike.isArrayLike(value) || require_isMap.isMap(value) || require_isSet.isSet(value)) return Array.from(value);
20
- if (typeof value === "object") return Object.values(value);
21
+ if (typeof value === "object") {
22
+ if (require_isIterable.isIterable(value)) return Array.from(value);
23
+ return Object.values(value);
24
+ }
21
25
  return [];
22
26
  }
23
27
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { isIterable } from "../../predicate/isIterable.mjs";
1
2
  import { isArrayLike } from "../predicate/isArrayLike.mjs";
2
3
  import { isMap } from "../predicate/isMap.mjs";
3
4
  import { isSet } from "../predicate/isSet.mjs";
@@ -9,15 +10,18 @@ import { isSet } from "../predicate/isSet.mjs";
9
10
  * @returns Returns the converted array.
10
11
  *
11
12
  * @example
12
- * toArray({ 'a': 1, 'b': 2 }) // => returns [1,2]
13
- * toArray('abc') // => returns ['a', 'b', 'c']
14
- * toArray(1) // => returns []
15
- * toArray(null) // => returns []
13
+ * toArray({ 'a': 1, 'b': 2 }) // => [1,2]
14
+ * toArray('abc') // => ['a', 'b', 'c']
15
+ * toArray(1) // => []
16
+ * toArray(null) // => []
16
17
  */
17
18
  function toArray(value) {
18
19
  if (value == null) return [];
19
20
  if (isArrayLike(value) || isMap(value) || isSet(value)) return Array.from(value);
20
- if (typeof value === "object") return Object.values(value);
21
+ if (typeof value === "object") {
22
+ if (isIterable(value)) return Array.from(value);
23
+ return Object.values(value);
24
+ }
21
25
  return [];
22
26
  }
23
27
  //#endregion
@@ -29,6 +29,8 @@ function toPath(deepKey) {
29
29
  let key = "";
30
30
  let quoteChar = "";
31
31
  let bracket = false;
32
+ let bracketHadQuote = false;
33
+ const bracketNumberRegex = /^-?\d+(?:\.\d+)?$/;
32
34
  if (deepKey.charCodeAt(0) === 46) result.push("");
33
35
  while (index < length) {
34
36
  const char = deepKey[index];
@@ -37,14 +39,20 @@ function toPath(deepKey) {
37
39
  key += deepKey[index];
38
40
  } else if (char === quoteChar) quoteChar = "";
39
41
  else key += char;
40
- else if (bracket) if (char === "\"" || char === "'") quoteChar = char;
41
- else if (char === "]") {
42
+ else if (bracket) if (char === "\"" || char === "'") {
43
+ quoteChar = char;
44
+ bracketHadQuote = true;
45
+ } else if (char === "]") {
42
46
  bracket = false;
43
- result.push(key);
47
+ if (!bracketHadQuote && key.includes(".") && !bracketNumberRegex.test(key)) {
48
+ const segments = key.split(".");
49
+ for (let i = 0; i < segments.length; i++) if (segments[i] !== "") result.push(segments[i]);
50
+ } else result.push(key);
44
51
  key = "";
45
52
  } else key += char;
46
53
  else if (char === "[") {
47
54
  bracket = true;
55
+ bracketHadQuote = false;
48
56
  if (key) {
49
57
  result.push(key);
50
58
  key = "";
@@ -29,6 +29,8 @@ function toPath(deepKey) {
29
29
  let key = "";
30
30
  let quoteChar = "";
31
31
  let bracket = false;
32
+ let bracketHadQuote = false;
33
+ const bracketNumberRegex = /^-?\d+(?:\.\d+)?$/;
32
34
  if (deepKey.charCodeAt(0) === 46) result.push("");
33
35
  while (index < length) {
34
36
  const char = deepKey[index];
@@ -37,14 +39,20 @@ function toPath(deepKey) {
37
39
  key += deepKey[index];
38
40
  } else if (char === quoteChar) quoteChar = "";
39
41
  else key += char;
40
- else if (bracket) if (char === "\"" || char === "'") quoteChar = char;
41
- else if (char === "]") {
42
+ else if (bracket) if (char === "\"" || char === "'") {
43
+ quoteChar = char;
44
+ bracketHadQuote = true;
45
+ } else if (char === "]") {
42
46
  bracket = false;
43
- result.push(key);
47
+ if (!bracketHadQuote && key.includes(".") && !bracketNumberRegex.test(key)) {
48
+ const segments = key.split(".");
49
+ for (let i = 0; i < segments.length; i++) if (segments[i] !== "") result.push(segments[i]);
50
+ } else result.push(key);
44
51
  key = "";
45
52
  } else key += char;
46
53
  else if (char === "[") {
47
54
  bracket = true;
55
+ bracketHadQuote = false;
48
56
  if (key) {
49
57
  result.push(key);
50
58
  key = "";
@@ -17,8 +17,11 @@
17
17
  */
18
18
  function toString(value) {
19
19
  if (value == null) return "";
20
+ return baseToString(value);
21
+ }
22
+ function baseToString(value) {
20
23
  if (typeof value === "string") return value;
21
- if (Array.isArray(value)) return value.map(toString).join(",");
24
+ if (Array.isArray(value)) return value.map(baseToString).join(",");
22
25
  const result = String(value);
23
26
  if (result === "0" && Object.is(Number(value), -0)) return "-0";
24
27
  return result;
@@ -17,8 +17,11 @@
17
17
  */
18
18
  function toString(value) {
19
19
  if (value == null) return "";
20
+ return baseToString(value);
21
+ }
22
+ function baseToString(value) {
20
23
  if (typeof value === "string") return value;
21
- if (Array.isArray(value)) return value.map(toString).join(",");
24
+ if (Array.isArray(value)) return value.map(baseToString).join(",");
22
25
  const result = String(value);
23
26
  if (result === "0" && Object.is(Number(value), -0)) return "-0";
24
27
  return result;
@@ -15,6 +15,6 @@
15
15
  * pipe([10, 20, 30, 40], at([1, -1]));
16
16
  * // => [20, 40]
17
17
  */
18
- declare function at<T>(indices: number[]): (array: readonly T[]) => T[];
18
+ declare function at<T>(indices: readonly number[]): (array: readonly T[]) => T[];
19
19
  //#endregion
20
20
  export { at };
@@ -15,6 +15,6 @@
15
15
  * pipe([10, 20, 30, 40], at([1, -1]));
16
16
  * // => [20, 40]
17
17
  */
18
- declare function at<T>(indices: number[]): (array: readonly T[]) => T[];
18
+ declare function at<T>(indices: readonly number[]): (array: readonly T[]) => T[];
19
19
  //#endregion
20
20
  export { at };
@@ -16,6 +16,6 @@
16
16
  * pipe([{ name: 'a', age: 2 }, { name: 'b', age: 1 }], orderBy(['age'], ['asc']));
17
17
  * // => [{ name: 'b', age: 1 }, { name: 'a', age: 2 }]
18
18
  */
19
- declare function orderBy<T extends object>(criteria: Array<((item: T) => unknown) | keyof T>, orders: Array<'asc' | 'desc'>): (array: readonly T[]) => T[];
19
+ declare function orderBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>, orders: ReadonlyArray<'asc' | 'desc'>): (array: readonly T[]) => T[];
20
20
  //#endregion
21
21
  export { orderBy };
@@ -16,6 +16,6 @@
16
16
  * pipe([{ name: 'a', age: 2 }, { name: 'b', age: 1 }], orderBy(['age'], ['asc']));
17
17
  * // => [{ name: 'b', age: 1 }, { name: 'a', age: 2 }]
18
18
  */
19
- declare function orderBy<T extends object>(criteria: Array<((item: T) => unknown) | keyof T>, orders: Array<'asc' | 'desc'>): (array: readonly T[]) => T[];
19
+ declare function orderBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>, orders: ReadonlyArray<'asc' | 'desc'>): (array: readonly T[]) => T[];
20
20
  //#endregion
21
21
  export { orderBy };
@@ -21,6 +21,6 @@
21
21
  * pipe(users, sortBy(['user', 'age']));
22
22
  * // => [{ user: 'bar', age: 7 }, { user: 'foo', age: 8 }, { user: 'foo', age: 24 }]
23
23
  */
24
- declare function sortBy<T extends object>(criteria: Array<((item: T) => unknown) | keyof T>): (array: readonly T[]) => T[];
24
+ declare function sortBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>): (array: readonly T[]) => T[];
25
25
  //#endregion
26
26
  export { sortBy };
@@ -21,6 +21,6 @@
21
21
  * pipe(users, sortBy(['user', 'age']));
22
22
  * // => [{ user: 'bar', age: 7 }, { user: 'foo', age: 8 }, { user: 'foo', age: 24 }]
23
23
  */
24
- declare function sortBy<T extends object>(criteria: Array<((item: T) => unknown) | keyof T>): (array: readonly T[]) => T[];
24
+ declare function sortBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>): (array: readonly T[]) => T[];
25
25
  //#endregion
26
26
  export { sortBy };
@@ -6,6 +6,9 @@ type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
6
6
  * The returned function is the data-last form of the main {@link unzip} utility.
7
7
  * Use it with {@link pipe}.
8
8
  *
9
+ * When the returned function is invoked, the result's length matches the longest nested array.
10
+ * Missing positions in shorter arrays are filled with `undefined`.
11
+ *
9
12
  * @template T - The tuple type inside the zipped array.
10
13
  * @returns A function that maps zipped tuples to arrays grouped by tuple position.
11
14
  *
@@ -6,6 +6,9 @@ type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
6
6
  * The returned function is the data-last form of the main {@link unzip} utility.
7
7
  * Use it with {@link pipe}.
8
8
  *
9
+ * When the returned function is invoked, the result's length matches the longest nested array.
10
+ * Missing positions in shorter arrays are filled with `undefined`.
11
+ *
9
12
  * @template T - The tuple type inside the zipped array.
10
13
  * @returns A function that maps zipped tuples to arrays grouped by tuple position.
11
14
  *
@@ -6,6 +6,9 @@ const require_unzip = require("../../array/unzip.js");
6
6
  * The returned function is the data-last form of the main {@link unzip} utility.
7
7
  * Use it with {@link pipe}.
8
8
  *
9
+ * When the returned function is invoked, the result's length matches the longest nested array.
10
+ * Missing positions in shorter arrays are filled with `undefined`.
11
+ *
9
12
  * @template T - The tuple type inside the zipped array.
10
13
  * @returns A function that maps zipped tuples to arrays grouped by tuple position.
11
14
  *
@@ -6,6 +6,9 @@ import { unzip as unzip$1 } from "../../array/unzip.mjs";
6
6
  * The returned function is the data-last form of the main {@link unzip} utility.
7
7
  * Use it with {@link pipe}.
8
8
  *
9
+ * When the returned function is invoked, the result's length matches the longest nested array.
10
+ * Missing positions in shorter arrays are filled with `undefined`.
11
+ *
9
12
  * @template T - The tuple type inside the zipped array.
10
13
  * @returns A function that maps zipped tuples to arrays grouped by tuple position.
11
14
  *