zhiaiwan-utils 1.0.3

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 (761) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +92 -0
  3. package/dist/cjs/_internal/MapCache.js +29 -0
  4. package/dist/cjs/_internal/assignSources.js +24 -0
  5. package/dist/cjs/_internal/assignValue.js +20 -0
  6. package/dist/cjs/_internal/baseClone.js +190 -0
  7. package/dist/cjs/_internal/baseCollectionKeys.js +59 -0
  8. package/dist/cjs/_internal/baseDefaultsDeep.js +59 -0
  9. package/dist/cjs/_internal/baseDifference.js +25 -0
  10. package/dist/cjs/_internal/baseExtremum.js +34 -0
  11. package/dist/cjs/_internal/baseExtremumBy.js +63 -0
  12. package/dist/cjs/_internal/baseFilter.js +61 -0
  13. package/dist/cjs/_internal/baseFind.js +153 -0
  14. package/dist/cjs/_internal/baseFlatten.js +32 -0
  15. package/dist/cjs/_internal/baseForEach.js +92 -0
  16. package/dist/cjs/_internal/baseForOwn.js +33 -0
  17. package/dist/cjs/_internal/baseIsEqual.js +161 -0
  18. package/dist/cjs/_internal/baseIsMatch.js +80 -0
  19. package/dist/cjs/_internal/baseIteratee.js +46 -0
  20. package/dist/cjs/_internal/baseKeysIn.js +44 -0
  21. package/dist/cjs/_internal/baseMap.js +49 -0
  22. package/dist/cjs/_internal/baseMerge.js +139 -0
  23. package/dist/cjs/_internal/basePad.js +40 -0
  24. package/dist/cjs/_internal/basePath.js +85 -0
  25. package/dist/cjs/_internal/baseRange.js +18 -0
  26. package/dist/cjs/_internal/baseReduce.js +77 -0
  27. package/dist/cjs/_internal/baseSum.js +27 -0
  28. package/dist/cjs/_internal/baseTreeTraverse.js +225 -0
  29. package/dist/cjs/_internal/baseTrim.js +32 -0
  30. package/dist/cjs/_internal/baseUnset.js +49 -0
  31. package/dist/cjs/_internal/baseUpdate.js +65 -0
  32. package/dist/cjs/_internal/coerceToString.js +21 -0
  33. package/dist/cjs/_internal/colorMath.js +66 -0
  34. package/dist/cjs/_internal/compareValues.js +49 -0
  35. package/dist/cjs/_internal/composePartials.js +39 -0
  36. package/dist/cjs/_internal/createCompounder.js +24 -0
  37. package/dist/cjs/_internal/deburr.js +74 -0
  38. package/dist/cjs/_internal/flattenPaths.js +21 -0
  39. package/dist/cjs/_internal/htmlEscape.js +36 -0
  40. package/dist/cjs/_internal/identity.js +11 -0
  41. package/dist/cjs/_internal/index.js +21 -0
  42. package/dist/cjs/_internal/isArguments.js +31 -0
  43. package/dist/cjs/_internal/isArrayLike.js +15 -0
  44. package/dist/cjs/_internal/isArrayLikeObject.js +15 -0
  45. package/dist/cjs/_internal/isEmptyValue.js +11 -0
  46. package/dist/cjs/_internal/isFlattenable.js +15 -0
  47. package/dist/cjs/_internal/isIndex.js +23 -0
  48. package/dist/cjs/_internal/isLength.js +15 -0
  49. package/dist/cjs/_internal/isPlainObject.js +17 -0
  50. package/dist/cjs/_internal/mergeInto.js +33 -0
  51. package/dist/cjs/_internal/repeatString.js +15 -0
  52. package/dist/cjs/_internal/toInteger.js +24 -0
  53. package/dist/cjs/_internal/toLength.js +17 -0
  54. package/dist/cjs/_internal/toPath.js +29 -0
  55. package/dist/cjs/_internal/upperFirst.js +14 -0
  56. package/dist/cjs/_internal/validateFieldRule.js +138 -0
  57. package/dist/cjs/_internal/words.js +13 -0
  58. package/dist/cjs/array/chunk.js +37 -0
  59. package/dist/cjs/array/compact.js +34 -0
  60. package/dist/cjs/array/concat.js +37 -0
  61. package/dist/cjs/array/difference.js +44 -0
  62. package/dist/cjs/array/differenceBy.js +55 -0
  63. package/dist/cjs/array/drop.js +31 -0
  64. package/dist/cjs/array/each.js +23 -0
  65. package/dist/cjs/array/every.js +69 -0
  66. package/dist/cjs/array/filter.js +26 -0
  67. package/dist/cjs/array/find.js +29 -0
  68. package/dist/cjs/array/findIndex.js +24 -0
  69. package/dist/cjs/array/findLast.js +24 -0
  70. package/dist/cjs/array/findLastIndex.js +24 -0
  71. package/dist/cjs/array/flatten.js +27 -0
  72. package/dist/cjs/array/flattenDeep.js +28 -0
  73. package/dist/cjs/array/forEach.js +32 -0
  74. package/dist/cjs/array/forEachRight.js +29 -0
  75. package/dist/cjs/array/groupBy.js +67 -0
  76. package/dist/cjs/array/head.js +21 -0
  77. package/dist/cjs/array/includes.js +60 -0
  78. package/dist/cjs/array/index.js +92 -0
  79. package/dist/cjs/array/intersection.js +51 -0
  80. package/dist/cjs/array/keyBy.js +79 -0
  81. package/dist/cjs/array/last.js +23 -0
  82. package/dist/cjs/array/map.js +26 -0
  83. package/dist/cjs/array/max.js +25 -0
  84. package/dist/cjs/array/maxBy.js +27 -0
  85. package/dist/cjs/array/mean.js +27 -0
  86. package/dist/cjs/array/meanBy.js +30 -0
  87. package/dist/cjs/array/min.js +25 -0
  88. package/dist/cjs/array/minBy.js +27 -0
  89. package/dist/cjs/array/orderBy.js +95 -0
  90. package/dist/cjs/array/partition.js +68 -0
  91. package/dist/cjs/array/reduce.js +30 -0
  92. package/dist/cjs/array/reduceRight.js +30 -0
  93. package/dist/cjs/array/some.js +66 -0
  94. package/dist/cjs/array/sortBy.js +27 -0
  95. package/dist/cjs/array/sum.js +25 -0
  96. package/dist/cjs/array/sumBy.js +31 -0
  97. package/dist/cjs/array/take.js +31 -0
  98. package/dist/cjs/array/union.js +35 -0
  99. package/dist/cjs/array/uniq.js +33 -0
  100. package/dist/cjs/array/uniqBy.js +41 -0
  101. package/dist/cjs/array/without.js +30 -0
  102. package/dist/cjs/color/getCssVariable.js +31 -0
  103. package/dist/cjs/color/getThemePalette.js +56 -0
  104. package/dist/cjs/color/hexToRgb.js +26 -0
  105. package/dist/cjs/color/index.js +16 -0
  106. package/dist/cjs/color/rgbStringToHex.js +42 -0
  107. package/dist/cjs/color/rgbToHex.js +24 -0
  108. package/dist/cjs/convert/index.js +32 -0
  109. package/dist/cjs/convert/toArray.js +56 -0
  110. package/dist/cjs/convert/toFinite.js +34 -0
  111. package/dist/cjs/convert/toInteger.js +33 -0
  112. package/dist/cjs/convert/toLength.js +30 -0
  113. package/dist/cjs/convert/toLower.js +25 -0
  114. package/dist/cjs/convert/toNumber.js +55 -0
  115. package/dist/cjs/convert/toPairs.js +24 -0
  116. package/dist/cjs/convert/toPairsIn.js +32 -0
  117. package/dist/cjs/convert/toPath.js +23 -0
  118. package/dist/cjs/convert/toPlainObject.js +39 -0
  119. package/dist/cjs/convert/toSafeInteger.js +34 -0
  120. package/dist/cjs/convert/toString.js +34 -0
  121. package/dist/cjs/convert/toUpper.js +25 -0
  122. package/dist/cjs/function/after.js +32 -0
  123. package/dist/cjs/function/before.js +32 -0
  124. package/dist/cjs/function/curry.js +57 -0
  125. package/dist/cjs/function/debounce.js +107 -0
  126. package/dist/cjs/function/flow.js +51 -0
  127. package/dist/cjs/function/flowRight.js +46 -0
  128. package/dist/cjs/function/index.js +30 -0
  129. package/dist/cjs/function/memoize.js +26 -0
  130. package/dist/cjs/function/once.js +31 -0
  131. package/dist/cjs/function/partial.js +35 -0
  132. package/dist/cjs/function/partialRight.js +33 -0
  133. package/dist/cjs/function/throttle.js +20 -0
  134. package/dist/cjs/index.js +28 -0
  135. package/dist/cjs/object/assign.js +24 -0
  136. package/dist/cjs/object/clone.js +29 -0
  137. package/dist/cjs/object/cloneDeep.js +30 -0
  138. package/dist/cjs/object/cloneDeepWith.js +30 -0
  139. package/dist/cjs/object/cloneWith.js +30 -0
  140. package/dist/cjs/object/defaults.js +23 -0
  141. package/dist/cjs/object/defaultsDeep.js +44 -0
  142. package/dist/cjs/object/findKey.js +26 -0
  143. package/dist/cjs/object/findLastKey.js +26 -0
  144. package/dist/cjs/object/forIn.js +29 -0
  145. package/dist/cjs/object/forOwn.js +29 -0
  146. package/dist/cjs/object/fromPairs.js +28 -0
  147. package/dist/cjs/object/get.js +37 -0
  148. package/dist/cjs/object/has.js +39 -0
  149. package/dist/cjs/object/index.js +64 -0
  150. package/dist/cjs/object/invert.js +34 -0
  151. package/dist/cjs/object/keys.js +25 -0
  152. package/dist/cjs/object/mapKeys.js +37 -0
  153. package/dist/cjs/object/mapValues.js +37 -0
  154. package/dist/cjs/object/merge.js +29 -0
  155. package/dist/cjs/object/mergeWith.js +41 -0
  156. package/dist/cjs/object/omit.js +36 -0
  157. package/dist/cjs/object/omitBy.js +38 -0
  158. package/dist/cjs/object/pick.js +37 -0
  159. package/dist/cjs/object/pickBy.js +38 -0
  160. package/dist/cjs/object/set.js +67 -0
  161. package/dist/cjs/object/unset.js +28 -0
  162. package/dist/cjs/object/update.js +31 -0
  163. package/dist/cjs/object/updateWith.js +33 -0
  164. package/dist/cjs/object/values.js +25 -0
  165. package/dist/cjs/string/camelCase.js +37 -0
  166. package/dist/cjs/string/capitalize.js +25 -0
  167. package/dist/cjs/string/endsWith.js +36 -0
  168. package/dist/cjs/string/escape.js +26 -0
  169. package/dist/cjs/string/index.js +40 -0
  170. package/dist/cjs/string/kebabCase.js +27 -0
  171. package/dist/cjs/string/lowerCase.js +24 -0
  172. package/dist/cjs/string/pad.js +31 -0
  173. package/dist/cjs/string/padEnd.js +31 -0
  174. package/dist/cjs/string/padStart.js +31 -0
  175. package/dist/cjs/string/repeat.js +30 -0
  176. package/dist/cjs/string/snakeCase.js +27 -0
  177. package/dist/cjs/string/startsWith.js +34 -0
  178. package/dist/cjs/string/trim.js +30 -0
  179. package/dist/cjs/string/trimEnd.js +30 -0
  180. package/dist/cjs/string/trimStart.js +30 -0
  181. package/dist/cjs/string/unescape.js +26 -0
  182. package/dist/cjs/string/upperFirst.js +25 -0
  183. package/dist/cjs/tree/filterTreeNodes.js +51 -0
  184. package/dist/cjs/tree/findTreeNode.js +45 -0
  185. package/dist/cjs/tree/forEachTree.js +33 -0
  186. package/dist/cjs/tree/getParentNodes.js +49 -0
  187. package/dist/cjs/tree/getTreeDepth.js +38 -0
  188. package/dist/cjs/tree/index.js +30 -0
  189. package/dist/cjs/tree/mapTree.js +98 -0
  190. package/dist/cjs/tree/pruneTree.js +126 -0
  191. package/dist/cjs/tree/toFlatList.js +57 -0
  192. package/dist/cjs/tree/toTree.js +71 -0
  193. package/dist/cjs/tree/traverseTree.js +29 -0
  194. package/dist/cjs/tree/traverseTreeBfs.js +29 -0
  195. package/dist/cjs/util/clamp.js +56 -0
  196. package/dist/cjs/util/constant.js +21 -0
  197. package/dist/cjs/util/defaultTo.js +28 -0
  198. package/dist/cjs/util/defer.js +25 -0
  199. package/dist/cjs/util/delay.js +25 -0
  200. package/dist/cjs/util/identity.js +22 -0
  201. package/dist/cjs/util/inRange.js +41 -0
  202. package/dist/cjs/util/index.js +48 -0
  203. package/dist/cjs/util/iteratee.js +30 -0
  204. package/dist/cjs/util/matches.js +27 -0
  205. package/dist/cjs/util/matchesProperty.js +37 -0
  206. package/dist/cjs/util/negate.js +25 -0
  207. package/dist/cjs/util/noop.js +20 -0
  208. package/dist/cjs/util/now.js +20 -0
  209. package/dist/cjs/util/property.js +33 -0
  210. package/dist/cjs/util/random.js +71 -0
  211. package/dist/cjs/util/range.js +46 -0
  212. package/dist/cjs/util/size.js +47 -0
  213. package/dist/cjs/util/sleep.js +22 -0
  214. package/dist/cjs/util/times.js +41 -0
  215. package/dist/cjs/util/uniqueId.js +26 -0
  216. package/dist/cjs/util/validateFields.js +106 -0
  217. package/dist/cjs/verify/index.js +78 -0
  218. package/dist/cjs/verify/isArguments.js +25 -0
  219. package/dist/cjs/verify/isArray.js +21 -0
  220. package/dist/cjs/verify/isArrayBuffer.js +21 -0
  221. package/dist/cjs/verify/isArrayLike.js +31 -0
  222. package/dist/cjs/verify/isBoolean.js +21 -0
  223. package/dist/cjs/verify/isBuffer.js +23 -0
  224. package/dist/cjs/verify/isDate.js +21 -0
  225. package/dist/cjs/verify/isElement.js +26 -0
  226. package/dist/cjs/verify/isEmpty.js +44 -0
  227. package/dist/cjs/verify/isEqual.js +30 -0
  228. package/dist/cjs/verify/isEqualWith.js +31 -0
  229. package/dist/cjs/verify/isError.js +23 -0
  230. package/dist/cjs/verify/isFinite.js +28 -0
  231. package/dist/cjs/verify/isFunction.js +22 -0
  232. package/dist/cjs/verify/isInteger.js +22 -0
  233. package/dist/cjs/verify/isLength.js +26 -0
  234. package/dist/cjs/verify/isMap.js +21 -0
  235. package/dist/cjs/verify/isMatch.js +30 -0
  236. package/dist/cjs/verify/isMatchWith.js +31 -0
  237. package/dist/cjs/verify/isNaN.js +28 -0
  238. package/dist/cjs/verify/isNative.js +25 -0
  239. package/dist/cjs/verify/isNil.js +27 -0
  240. package/dist/cjs/verify/isNull.js +21 -0
  241. package/dist/cjs/verify/isNumber.js +24 -0
  242. package/dist/cjs/verify/isObject.js +26 -0
  243. package/dist/cjs/verify/isObjectLike.js +30 -0
  244. package/dist/cjs/verify/isPlainObject.js +25 -0
  245. package/dist/cjs/verify/isRegExp.js +21 -0
  246. package/dist/cjs/verify/isSafeInteger.js +30 -0
  247. package/dist/cjs/verify/isSet.js +21 -0
  248. package/dist/cjs/verify/isString.js +21 -0
  249. package/dist/cjs/verify/isSymbol.js +21 -0
  250. package/dist/cjs/verify/isTypedArray.js +38 -0
  251. package/dist/cjs/verify/isUndefined.js +21 -0
  252. package/dist/cjs/verify/isWeakMap.js +21 -0
  253. package/dist/cjs/verify/isWeakSet.js +21 -0
  254. package/dist/cjs/version.js +17 -0
  255. package/dist/esm/_internal/MapCache.js +26 -0
  256. package/dist/esm/_internal/assignSources.js +21 -0
  257. package/dist/esm/_internal/assignValue.js +17 -0
  258. package/dist/esm/_internal/baseClone.js +187 -0
  259. package/dist/esm/_internal/baseCollectionKeys.js +52 -0
  260. package/dist/esm/_internal/baseDefaultsDeep.js +53 -0
  261. package/dist/esm/_internal/baseDifference.js +22 -0
  262. package/dist/esm/_internal/baseExtremum.js +28 -0
  263. package/dist/esm/_internal/baseExtremumBy.js +57 -0
  264. package/dist/esm/_internal/baseFilter.js +55 -0
  265. package/dist/esm/_internal/baseFind.js +145 -0
  266. package/dist/esm/_internal/baseFlatten.js +26 -0
  267. package/dist/esm/_internal/baseForEach.js +86 -0
  268. package/dist/esm/_internal/baseForOwn.js +26 -0
  269. package/dist/esm/_internal/baseIsEqual.js +158 -0
  270. package/dist/esm/_internal/baseIsMatch.js +74 -0
  271. package/dist/esm/_internal/baseIteratee.js +40 -0
  272. package/dist/esm/_internal/baseKeysIn.js +38 -0
  273. package/dist/esm/_internal/baseMap.js +43 -0
  274. package/dist/esm/_internal/baseMerge.js +132 -0
  275. package/dist/esm/_internal/basePad.js +34 -0
  276. package/dist/esm/_internal/basePath.js +77 -0
  277. package/dist/esm/_internal/baseRange.js +15 -0
  278. package/dist/esm/_internal/baseReduce.js +71 -0
  279. package/dist/esm/_internal/baseSum.js +21 -0
  280. package/dist/esm/_internal/baseTreeTraverse.js +219 -0
  281. package/dist/esm/_internal/baseTrim.js +29 -0
  282. package/dist/esm/_internal/baseUnset.js +43 -0
  283. package/dist/esm/_internal/baseUpdate.js +59 -0
  284. package/dist/esm/_internal/coerceToString.js +18 -0
  285. package/dist/esm/_internal/colorMath.js +56 -0
  286. package/dist/esm/_internal/compareValues.js +45 -0
  287. package/dist/esm/_internal/composePartials.js +35 -0
  288. package/dist/esm/_internal/createCompounder.js +18 -0
  289. package/dist/esm/_internal/deburr.js +71 -0
  290. package/dist/esm/_internal/flattenPaths.js +18 -0
  291. package/dist/esm/_internal/htmlEscape.js +32 -0
  292. package/dist/esm/_internal/identity.js +8 -0
  293. package/dist/esm/_internal/index.js +8 -0
  294. package/dist/esm/_internal/isArguments.js +28 -0
  295. package/dist/esm/_internal/isArrayLike.js +9 -0
  296. package/dist/esm/_internal/isArrayLikeObject.js +9 -0
  297. package/dist/esm/_internal/isEmptyValue.js +8 -0
  298. package/dist/esm/_internal/isFlattenable.js +9 -0
  299. package/dist/esm/_internal/isIndex.js +20 -0
  300. package/dist/esm/_internal/isLength.js +12 -0
  301. package/dist/esm/_internal/isPlainObject.js +14 -0
  302. package/dist/esm/_internal/mergeInto.js +27 -0
  303. package/dist/esm/_internal/repeatString.js +12 -0
  304. package/dist/esm/_internal/toInteger.js +21 -0
  305. package/dist/esm/_internal/toLength.js +11 -0
  306. package/dist/esm/_internal/toPath.js +26 -0
  307. package/dist/esm/_internal/upperFirst.js +11 -0
  308. package/dist/esm/_internal/validateFieldRule.js +132 -0
  309. package/dist/esm/_internal/words.js +10 -0
  310. package/dist/esm/array/chunk.js +31 -0
  311. package/dist/esm/array/compact.js +31 -0
  312. package/dist/esm/array/concat.js +34 -0
  313. package/dist/esm/array/difference.js +38 -0
  314. package/dist/esm/array/differenceBy.js +49 -0
  315. package/dist/esm/array/drop.js +25 -0
  316. package/dist/esm/array/each.js +18 -0
  317. package/dist/esm/array/every.js +63 -0
  318. package/dist/esm/array/filter.js +20 -0
  319. package/dist/esm/array/find.js +26 -0
  320. package/dist/esm/array/findIndex.js +21 -0
  321. package/dist/esm/array/findLast.js +21 -0
  322. package/dist/esm/array/findLastIndex.js +21 -0
  323. package/dist/esm/array/flatten.js +21 -0
  324. package/dist/esm/array/flattenDeep.js +22 -0
  325. package/dist/esm/array/forEach.js +26 -0
  326. package/dist/esm/array/forEachRight.js +23 -0
  327. package/dist/esm/array/groupBy.js +61 -0
  328. package/dist/esm/array/head.js +18 -0
  329. package/dist/esm/array/includes.js +54 -0
  330. package/dist/esm/array/index.js +43 -0
  331. package/dist/esm/array/intersection.js +48 -0
  332. package/dist/esm/array/keyBy.js +73 -0
  333. package/dist/esm/array/last.js +20 -0
  334. package/dist/esm/array/map.js +20 -0
  335. package/dist/esm/array/max.js +19 -0
  336. package/dist/esm/array/maxBy.js +21 -0
  337. package/dist/esm/array/mean.js +21 -0
  338. package/dist/esm/array/meanBy.js +24 -0
  339. package/dist/esm/array/min.js +19 -0
  340. package/dist/esm/array/minBy.js +21 -0
  341. package/dist/esm/array/orderBy.js +89 -0
  342. package/dist/esm/array/partition.js +62 -0
  343. package/dist/esm/array/reduce.js +24 -0
  344. package/dist/esm/array/reduceRight.js +24 -0
  345. package/dist/esm/array/some.js +60 -0
  346. package/dist/esm/array/sortBy.js +21 -0
  347. package/dist/esm/array/sum.js +19 -0
  348. package/dist/esm/array/sumBy.js +25 -0
  349. package/dist/esm/array/take.js +25 -0
  350. package/dist/esm/array/union.js +32 -0
  351. package/dist/esm/array/uniq.js +30 -0
  352. package/dist/esm/array/uniqBy.js +35 -0
  353. package/dist/esm/array/without.js +24 -0
  354. package/dist/esm/color/getCssVariable.js +28 -0
  355. package/dist/esm/color/getThemePalette.js +53 -0
  356. package/dist/esm/color/hexToRgb.js +23 -0
  357. package/dist/esm/color/index.js +5 -0
  358. package/dist/esm/color/rgbStringToHex.js +36 -0
  359. package/dist/esm/color/rgbToHex.js +21 -0
  360. package/dist/esm/convert/index.js +13 -0
  361. package/dist/esm/convert/toArray.js +50 -0
  362. package/dist/esm/convert/toFinite.js +28 -0
  363. package/dist/esm/convert/toInteger.js +27 -0
  364. package/dist/esm/convert/toLength.js +24 -0
  365. package/dist/esm/convert/toLower.js +19 -0
  366. package/dist/esm/convert/toNumber.js +52 -0
  367. package/dist/esm/convert/toPairs.js +21 -0
  368. package/dist/esm/convert/toPairsIn.js +29 -0
  369. package/dist/esm/convert/toPath.js +16 -0
  370. package/dist/esm/convert/toPlainObject.js +36 -0
  371. package/dist/esm/convert/toSafeInteger.js +28 -0
  372. package/dist/esm/convert/toString.js +31 -0
  373. package/dist/esm/convert/toUpper.js +19 -0
  374. package/dist/esm/function/after.js +29 -0
  375. package/dist/esm/function/before.js +29 -0
  376. package/dist/esm/function/curry.js +53 -0
  377. package/dist/esm/function/debounce.js +104 -0
  378. package/dist/esm/function/flow.js +49 -0
  379. package/dist/esm/function/flowRight.js +43 -0
  380. package/dist/esm/function/index.js +11 -0
  381. package/dist/esm/function/memoize.js +20 -0
  382. package/dist/esm/function/once.js +28 -0
  383. package/dist/esm/function/partial.js +31 -0
  384. package/dist/esm/function/partialRight.js +30 -0
  385. package/dist/esm/function/throttle.js +14 -0
  386. package/dist/esm/index.js +10 -0
  387. package/dist/esm/object/assign.js +21 -0
  388. package/dist/esm/object/clone.js +23 -0
  389. package/dist/esm/object/cloneDeep.js +24 -0
  390. package/dist/esm/object/cloneDeepWith.js +24 -0
  391. package/dist/esm/object/cloneWith.js +24 -0
  392. package/dist/esm/object/defaults.js +20 -0
  393. package/dist/esm/object/defaultsDeep.js +38 -0
  394. package/dist/esm/object/findKey.js +23 -0
  395. package/dist/esm/object/findLastKey.js +23 -0
  396. package/dist/esm/object/forIn.js +23 -0
  397. package/dist/esm/object/forOwn.js +23 -0
  398. package/dist/esm/object/fromPairs.js +25 -0
  399. package/dist/esm/object/get.js +31 -0
  400. package/dist/esm/object/has.js +33 -0
  401. package/dist/esm/object/index.js +29 -0
  402. package/dist/esm/object/invert.js +31 -0
  403. package/dist/esm/object/keys.js +22 -0
  404. package/dist/esm/object/mapKeys.js +31 -0
  405. package/dist/esm/object/mapValues.js +31 -0
  406. package/dist/esm/object/merge.js +23 -0
  407. package/dist/esm/object/mergeWith.js +35 -0
  408. package/dist/esm/object/omit.js +30 -0
  409. package/dist/esm/object/omitBy.js +32 -0
  410. package/dist/esm/object/pick.js +31 -0
  411. package/dist/esm/object/pickBy.js +32 -0
  412. package/dist/esm/object/set.js +61 -0
  413. package/dist/esm/object/unset.js +22 -0
  414. package/dist/esm/object/update.js +25 -0
  415. package/dist/esm/object/updateWith.js +27 -0
  416. package/dist/esm/object/values.js +22 -0
  417. package/dist/esm/string/camelCase.js +31 -0
  418. package/dist/esm/string/capitalize.js +19 -0
  419. package/dist/esm/string/endsWith.js +30 -0
  420. package/dist/esm/string/escape.js +20 -0
  421. package/dist/esm/string/index.js +17 -0
  422. package/dist/esm/string/kebabCase.js +22 -0
  423. package/dist/esm/string/lowerCase.js +19 -0
  424. package/dist/esm/string/pad.js +25 -0
  425. package/dist/esm/string/padEnd.js +25 -0
  426. package/dist/esm/string/padStart.js +25 -0
  427. package/dist/esm/string/repeat.js +24 -0
  428. package/dist/esm/string/snakeCase.js +22 -0
  429. package/dist/esm/string/startsWith.js +28 -0
  430. package/dist/esm/string/trim.js +24 -0
  431. package/dist/esm/string/trimEnd.js +24 -0
  432. package/dist/esm/string/trimStart.js +24 -0
  433. package/dist/esm/string/unescape.js +20 -0
  434. package/dist/esm/string/upperFirst.js +19 -0
  435. package/dist/esm/tree/filterTreeNodes.js +45 -0
  436. package/dist/esm/tree/findTreeNode.js +39 -0
  437. package/dist/esm/tree/forEachTree.js +27 -0
  438. package/dist/esm/tree/getParentNodes.js +43 -0
  439. package/dist/esm/tree/getTreeDepth.js +32 -0
  440. package/dist/esm/tree/index.js +12 -0
  441. package/dist/esm/tree/mapTree.js +95 -0
  442. package/dist/esm/tree/pruneTree.js +123 -0
  443. package/dist/esm/tree/toFlatList.js +51 -0
  444. package/dist/esm/tree/toTree.js +68 -0
  445. package/dist/esm/tree/traverseTree.js +23 -0
  446. package/dist/esm/tree/traverseTreeBfs.js +23 -0
  447. package/dist/esm/util/clamp.js +53 -0
  448. package/dist/esm/util/constant.js +18 -0
  449. package/dist/esm/util/defaultTo.js +25 -0
  450. package/dist/esm/util/defer.js +19 -0
  451. package/dist/esm/util/delay.js +22 -0
  452. package/dist/esm/util/identity.js +17 -0
  453. package/dist/esm/util/inRange.js +38 -0
  454. package/dist/esm/util/index.js +21 -0
  455. package/dist/esm/util/iteratee.js +24 -0
  456. package/dist/esm/util/matches.js +21 -0
  457. package/dist/esm/util/matchesProperty.js +31 -0
  458. package/dist/esm/util/negate.js +22 -0
  459. package/dist/esm/util/noop.js +17 -0
  460. package/dist/esm/util/now.js +17 -0
  461. package/dist/esm/util/property.js +27 -0
  462. package/dist/esm/util/random.js +68 -0
  463. package/dist/esm/util/range.js +40 -0
  464. package/dist/esm/util/size.js +41 -0
  465. package/dist/esm/util/sleep.js +19 -0
  466. package/dist/esm/util/times.js +35 -0
  467. package/dist/esm/util/uniqueId.js +23 -0
  468. package/dist/esm/util/validateFields.js +100 -0
  469. package/dist/esm/verify/index.js +36 -0
  470. package/dist/esm/verify/isArguments.js +18 -0
  471. package/dist/esm/verify/isArray.js +18 -0
  472. package/dist/esm/verify/isArrayBuffer.js +18 -0
  473. package/dist/esm/verify/isArrayLike.js +25 -0
  474. package/dist/esm/verify/isBoolean.js +18 -0
  475. package/dist/esm/verify/isBuffer.js +20 -0
  476. package/dist/esm/verify/isDate.js +18 -0
  477. package/dist/esm/verify/isElement.js +20 -0
  478. package/dist/esm/verify/isEmpty.js +38 -0
  479. package/dist/esm/verify/isEqual.js +24 -0
  480. package/dist/esm/verify/isEqualWith.js +25 -0
  481. package/dist/esm/verify/isError.js +20 -0
  482. package/dist/esm/verify/isFinite.js +22 -0
  483. package/dist/esm/verify/isFunction.js +19 -0
  484. package/dist/esm/verify/isInteger.js +19 -0
  485. package/dist/esm/verify/isLength.js +19 -0
  486. package/dist/esm/verify/isMap.js +18 -0
  487. package/dist/esm/verify/isMatch.js +24 -0
  488. package/dist/esm/verify/isMatchWith.js +25 -0
  489. package/dist/esm/verify/isNaN.js +22 -0
  490. package/dist/esm/verify/isNative.js +22 -0
  491. package/dist/esm/verify/isNil.js +24 -0
  492. package/dist/esm/verify/isNull.js +18 -0
  493. package/dist/esm/verify/isNumber.js +21 -0
  494. package/dist/esm/verify/isObject.js +23 -0
  495. package/dist/esm/verify/isObjectLike.js +27 -0
  496. package/dist/esm/verify/isPlainObject.js +18 -0
  497. package/dist/esm/verify/isRegExp.js +18 -0
  498. package/dist/esm/verify/isSafeInteger.js +24 -0
  499. package/dist/esm/verify/isSet.js +18 -0
  500. package/dist/esm/verify/isString.js +18 -0
  501. package/dist/esm/verify/isSymbol.js +18 -0
  502. package/dist/esm/verify/isTypedArray.js +35 -0
  503. package/dist/esm/verify/isUndefined.js +18 -0
  504. package/dist/esm/verify/isWeakMap.js +18 -0
  505. package/dist/esm/verify/isWeakSet.js +18 -0
  506. package/dist/esm/version.js +14 -0
  507. package/dist/types/_internal/MapCache.d.ts +13 -0
  508. package/dist/types/_internal/assignSources.d.ts +6 -0
  509. package/dist/types/_internal/assignValue.d.ts +6 -0
  510. package/dist/types/_internal/baseClone.d.ts +11 -0
  511. package/dist/types/_internal/baseCollectionKeys.d.ts +12 -0
  512. package/dist/types/_internal/baseDefaultsDeep.d.ts +6 -0
  513. package/dist/types/_internal/baseDifference.d.ts +6 -0
  514. package/dist/types/_internal/baseExtremum.d.ts +6 -0
  515. package/dist/types/_internal/baseExtremumBy.d.ts +7 -0
  516. package/dist/types/_internal/baseFilter.d.ts +7 -0
  517. package/dist/types/_internal/baseFind.d.ts +20 -0
  518. package/dist/types/_internal/baseFlatten.d.ts +6 -0
  519. package/dist/types/_internal/baseForEach.d.ts +6 -0
  520. package/dist/types/_internal/baseForOwn.d.ts +14 -0
  521. package/dist/types/_internal/baseIsEqual.d.ts +10 -0
  522. package/dist/types/_internal/baseIsMatch.d.ts +10 -0
  523. package/dist/types/_internal/baseIteratee.d.ts +7 -0
  524. package/dist/types/_internal/baseKeysIn.d.ts +6 -0
  525. package/dist/types/_internal/baseMap.d.ts +7 -0
  526. package/dist/types/_internal/baseMerge.d.ts +13 -0
  527. package/dist/types/_internal/basePad.d.ts +6 -0
  528. package/dist/types/_internal/basePath.d.ts +20 -0
  529. package/dist/types/_internal/baseRange.d.ts +6 -0
  530. package/dist/types/_internal/baseReduce.d.ts +7 -0
  531. package/dist/types/_internal/baseSum.d.ts +6 -0
  532. package/dist/types/_internal/baseTreeTraverse.d.ts +86 -0
  533. package/dist/types/_internal/baseTrim.d.ts +6 -0
  534. package/dist/types/_internal/baseUnset.d.ts +6 -0
  535. package/dist/types/_internal/baseUpdate.d.ts +6 -0
  536. package/dist/types/_internal/coerceToString.d.ts +6 -0
  537. package/dist/types/_internal/colorMath.d.ts +14 -0
  538. package/dist/types/_internal/compareValues.d.ts +12 -0
  539. package/dist/types/_internal/composePartials.d.ts +8 -0
  540. package/dist/types/_internal/createCompounder.d.ts +6 -0
  541. package/dist/types/_internal/deburr.d.ts +6 -0
  542. package/dist/types/_internal/flattenPaths.d.ts +6 -0
  543. package/dist/types/_internal/htmlEscape.d.ts +12 -0
  544. package/dist/types/_internal/identity.d.ts +6 -0
  545. package/dist/types/_internal/index.d.ts +10 -0
  546. package/dist/types/_internal/isArguments.d.ts +6 -0
  547. package/dist/types/_internal/isArrayLike.d.ts +6 -0
  548. package/dist/types/_internal/isArrayLikeObject.d.ts +6 -0
  549. package/dist/types/_internal/isEmptyValue.d.ts +6 -0
  550. package/dist/types/_internal/isFlattenable.d.ts +6 -0
  551. package/dist/types/_internal/isIndex.d.ts +6 -0
  552. package/dist/types/_internal/isLength.d.ts +6 -0
  553. package/dist/types/_internal/isPlainObject.d.ts +8 -0
  554. package/dist/types/_internal/mergeInto.d.ts +7 -0
  555. package/dist/types/_internal/repeatString.d.ts +6 -0
  556. package/dist/types/_internal/toInteger.d.ts +6 -0
  557. package/dist/types/_internal/toLength.d.ts +6 -0
  558. package/dist/types/_internal/toPath.d.ts +7 -0
  559. package/dist/types/_internal/upperFirst.d.ts +6 -0
  560. package/dist/types/_internal/validateFieldRule.d.ts +26 -0
  561. package/dist/types/_internal/words.d.ts +6 -0
  562. package/dist/types/array/chunk.d.ts +17 -0
  563. package/dist/types/array/compact.d.ts +16 -0
  564. package/dist/types/array/concat.d.ts +17 -0
  565. package/dist/types/array/difference.d.ts +17 -0
  566. package/dist/types/array/differenceBy.d.ts +18 -0
  567. package/dist/types/array/drop.d.ts +17 -0
  568. package/dist/types/array/each.d.ts +18 -0
  569. package/dist/types/array/every.d.ts +21 -0
  570. package/dist/types/array/filter.d.ts +18 -0
  571. package/dist/types/array/find.d.ts +23 -0
  572. package/dist/types/array/findIndex.d.ts +18 -0
  573. package/dist/types/array/findLast.d.ts +18 -0
  574. package/dist/types/array/findLastIndex.d.ts +18 -0
  575. package/dist/types/array/flatten.d.ts +16 -0
  576. package/dist/types/array/flattenDeep.d.ts +16 -0
  577. package/dist/types/array/forEach.d.ts +23 -0
  578. package/dist/types/array/forEachRight.d.ts +20 -0
  579. package/dist/types/array/groupBy.d.ts +18 -0
  580. package/dist/types/array/head.d.ts +16 -0
  581. package/dist/types/array/includes.d.ts +21 -0
  582. package/dist/types/array/index.d.ts +43 -0
  583. package/dist/types/array/intersection.d.ts +16 -0
  584. package/dist/types/array/keyBy.d.ts +24 -0
  585. package/dist/types/array/last.d.ts +16 -0
  586. package/dist/types/array/map.d.ts +18 -0
  587. package/dist/types/array/max.d.ts +16 -0
  588. package/dist/types/array/maxBy.d.ts +18 -0
  589. package/dist/types/array/mean.d.ts +16 -0
  590. package/dist/types/array/meanBy.d.ts +18 -0
  591. package/dist/types/array/min.d.ts +16 -0
  592. package/dist/types/array/minBy.d.ts +18 -0
  593. package/dist/types/array/orderBy.d.ts +23 -0
  594. package/dist/types/array/partition.d.ts +18 -0
  595. package/dist/types/array/reduce.d.ts +19 -0
  596. package/dist/types/array/reduceRight.d.ts +19 -0
  597. package/dist/types/array/some.d.ts +18 -0
  598. package/dist/types/array/sortBy.d.ts +18 -0
  599. package/dist/types/array/sum.d.ts +16 -0
  600. package/dist/types/array/sumBy.d.ts +18 -0
  601. package/dist/types/array/take.d.ts +17 -0
  602. package/dist/types/array/union.d.ts +16 -0
  603. package/dist/types/array/uniq.d.ts +16 -0
  604. package/dist/types/array/uniqBy.d.ts +18 -0
  605. package/dist/types/array/without.d.ts +17 -0
  606. package/dist/types/color/getCssVariable.d.ts +18 -0
  607. package/dist/types/color/getThemePalette.d.ts +28 -0
  608. package/dist/types/color/hexToRgb.d.ts +16 -0
  609. package/dist/types/color/index.d.ts +6 -0
  610. package/dist/types/color/rgbStringToHex.d.ts +16 -0
  611. package/dist/types/color/rgbToHex.d.ts +18 -0
  612. package/dist/types/convert/index.d.ts +13 -0
  613. package/dist/types/convert/toArray.d.ts +19 -0
  614. package/dist/types/convert/toFinite.d.ts +19 -0
  615. package/dist/types/convert/toInteger.d.ts +19 -0
  616. package/dist/types/convert/toLength.d.ts +19 -0
  617. package/dist/types/convert/toLower.d.ts +16 -0
  618. package/dist/types/convert/toNumber.d.ts +19 -0
  619. package/dist/types/convert/toPairs.d.ts +16 -0
  620. package/dist/types/convert/toPairsIn.d.ts +20 -0
  621. package/dist/types/convert/toPath.d.ts +16 -0
  622. package/dist/types/convert/toPlainObject.d.ts +19 -0
  623. package/dist/types/convert/toSafeInteger.d.ts +19 -0
  624. package/dist/types/convert/toString.d.ts +19 -0
  625. package/dist/types/convert/toUpper.d.ts +16 -0
  626. package/dist/types/function/after.d.ts +20 -0
  627. package/dist/types/function/before.d.ts +20 -0
  628. package/dist/types/function/curry.d.ts +27 -0
  629. package/dist/types/function/debounce.d.ts +31 -0
  630. package/dist/types/function/flow.d.ts +18 -0
  631. package/dist/types/function/flowRight.d.ts +18 -0
  632. package/dist/types/function/index.d.ts +11 -0
  633. package/dist/types/function/memoize.d.ts +41 -0
  634. package/dist/types/function/once.d.ts +18 -0
  635. package/dist/types/function/partial.d.ts +26 -0
  636. package/dist/types/function/partialRight.d.ts +25 -0
  637. package/dist/types/function/throttle.d.ts +26 -0
  638. package/dist/types/index.d.ts +10 -0
  639. package/dist/types/object/assign.d.ts +18 -0
  640. package/dist/types/object/clone.d.ts +20 -0
  641. package/dist/types/object/cloneDeep.d.ts +21 -0
  642. package/dist/types/object/cloneDeepWith.d.ts +23 -0
  643. package/dist/types/object/cloneWith.d.ts +23 -0
  644. package/dist/types/object/defaults.d.ts +17 -0
  645. package/dist/types/object/defaultsDeep.d.ts +17 -0
  646. package/dist/types/object/findKey.d.ts +17 -0
  647. package/dist/types/object/findLastKey.d.ts +17 -0
  648. package/dist/types/object/forIn.d.ts +16 -0
  649. package/dist/types/object/forOwn.d.ts +16 -0
  650. package/dist/types/object/fromPairs.d.ts +16 -0
  651. package/dist/types/object/get.d.ts +20 -0
  652. package/dist/types/object/has.d.ts +19 -0
  653. package/dist/types/object/index.d.ts +29 -0
  654. package/dist/types/object/invert.d.ts +16 -0
  655. package/dist/types/object/keys.d.ts +19 -0
  656. package/dist/types/object/mapKeys.d.ts +18 -0
  657. package/dist/types/object/mapValues.d.ts +18 -0
  658. package/dist/types/object/merge.d.ts +20 -0
  659. package/dist/types/object/mergeWith.d.ts +27 -0
  660. package/dist/types/object/omit.d.ts +18 -0
  661. package/dist/types/object/omitBy.d.ts +18 -0
  662. package/dist/types/object/pick.d.ts +18 -0
  663. package/dist/types/object/pickBy.d.ts +18 -0
  664. package/dist/types/object/set.d.ts +23 -0
  665. package/dist/types/object/unset.d.ts +19 -0
  666. package/dist/types/object/update.d.ts +19 -0
  667. package/dist/types/object/updateWith.d.ts +21 -0
  668. package/dist/types/object/values.d.ts +19 -0
  669. package/dist/types/string/camelCase.d.ts +19 -0
  670. package/dist/types/string/capitalize.d.ts +16 -0
  671. package/dist/types/string/endsWith.d.ts +21 -0
  672. package/dist/types/string/escape.d.ts +16 -0
  673. package/dist/types/string/index.d.ts +17 -0
  674. package/dist/types/string/kebabCase.d.ts +20 -0
  675. package/dist/types/string/lowerCase.d.ts +17 -0
  676. package/dist/types/string/pad.d.ts +21 -0
  677. package/dist/types/string/padEnd.d.ts +21 -0
  678. package/dist/types/string/padStart.d.ts +21 -0
  679. package/dist/types/string/repeat.d.ts +20 -0
  680. package/dist/types/string/snakeCase.d.ts +20 -0
  681. package/dist/types/string/startsWith.d.ts +21 -0
  682. package/dist/types/string/trim.d.ts +20 -0
  683. package/dist/types/string/trimEnd.d.ts +20 -0
  684. package/dist/types/string/trimStart.d.ts +20 -0
  685. package/dist/types/string/unescape.d.ts +16 -0
  686. package/dist/types/string/upperFirst.d.ts +16 -0
  687. package/dist/types/tree/filterTreeNodes.d.ts +29 -0
  688. package/dist/types/tree/findTreeNode.d.ts +22 -0
  689. package/dist/types/tree/forEachTree.d.ts +25 -0
  690. package/dist/types/tree/getParentNodes.d.ts +26 -0
  691. package/dist/types/tree/getTreeDepth.d.ts +22 -0
  692. package/dist/types/tree/index.d.ts +14 -0
  693. package/dist/types/tree/mapTree.d.ts +23 -0
  694. package/dist/types/tree/pruneTree.d.ts +32 -0
  695. package/dist/types/tree/toFlatList.d.ts +26 -0
  696. package/dist/types/tree/toTree.d.ts +22 -0
  697. package/dist/types/tree/traverseTree.d.ts +22 -0
  698. package/dist/types/tree/traverseTreeBfs.d.ts +22 -0
  699. package/dist/types/util/clamp.d.ts +18 -0
  700. package/dist/types/util/constant.d.ts +16 -0
  701. package/dist/types/util/defaultTo.d.ts +23 -0
  702. package/dist/types/util/defer.d.ts +16 -0
  703. package/dist/types/util/delay.d.ts +17 -0
  704. package/dist/types/util/identity.d.ts +17 -0
  705. package/dist/types/util/inRange.d.ts +18 -0
  706. package/dist/types/util/index.d.ts +22 -0
  707. package/dist/types/util/iteratee.d.ts +17 -0
  708. package/dist/types/util/matches.d.ts +16 -0
  709. package/dist/types/util/matchesProperty.d.ts +17 -0
  710. package/dist/types/util/negate.d.ts +16 -0
  711. package/dist/types/util/noop.d.ts +15 -0
  712. package/dist/types/util/now.d.ts +15 -0
  713. package/dist/types/util/property.d.ts +16 -0
  714. package/dist/types/util/random.d.ts +18 -0
  715. package/dist/types/util/range.d.ts +18 -0
  716. package/dist/types/util/size.d.ts +22 -0
  717. package/dist/types/util/sleep.d.ts +15 -0
  718. package/dist/types/util/times.d.ts +17 -0
  719. package/dist/types/util/uniqueId.d.ts +19 -0
  720. package/dist/types/util/validateFields.d.ts +46 -0
  721. package/dist/types/verify/index.d.ts +36 -0
  722. package/dist/types/verify/isArguments.d.ts +18 -0
  723. package/dist/types/verify/isArray.d.ts +16 -0
  724. package/dist/types/verify/isArrayBuffer.d.ts +16 -0
  725. package/dist/types/verify/isArrayLike.d.ts +24 -0
  726. package/dist/types/verify/isBoolean.d.ts +16 -0
  727. package/dist/types/verify/isBuffer.d.ts +17 -0
  728. package/dist/types/verify/isDate.d.ts +16 -0
  729. package/dist/types/verify/isElement.d.ts +17 -0
  730. package/dist/types/verify/isEmpty.d.ts +21 -0
  731. package/dist/types/verify/isEqual.d.ts +21 -0
  732. package/dist/types/verify/isEqualWith.d.ts +24 -0
  733. package/dist/types/verify/isError.d.ts +18 -0
  734. package/dist/types/verify/isFinite.d.ts +19 -0
  735. package/dist/types/verify/isFunction.d.ts +16 -0
  736. package/dist/types/verify/isInteger.d.ts +17 -0
  737. package/dist/types/verify/isLength.d.ts +19 -0
  738. package/dist/types/verify/isMap.d.ts +16 -0
  739. package/dist/types/verify/isMatch.d.ts +21 -0
  740. package/dist/types/verify/isMatchWith.d.ts +24 -0
  741. package/dist/types/verify/isNaN.d.ts +19 -0
  742. package/dist/types/verify/isNative.d.ts +19 -0
  743. package/dist/types/verify/isNil.d.ts +22 -0
  744. package/dist/types/verify/isNull.d.ts +16 -0
  745. package/dist/types/verify/isNumber.d.ts +19 -0
  746. package/dist/types/verify/isObject.d.ts +20 -0
  747. package/dist/types/verify/isObjectLike.d.ts +25 -0
  748. package/dist/types/verify/isPlainObject.d.ts +18 -0
  749. package/dist/types/verify/isRegExp.d.ts +16 -0
  750. package/dist/types/verify/isSafeInteger.d.ts +19 -0
  751. package/dist/types/verify/isSet.d.ts +16 -0
  752. package/dist/types/verify/isString.d.ts +16 -0
  753. package/dist/types/verify/isSymbol.d.ts +16 -0
  754. package/dist/types/verify/isTypedArray.d.ts +19 -0
  755. package/dist/types/verify/isUndefined.d.ts +16 -0
  756. package/dist/types/verify/isWeakMap.d.ts +16 -0
  757. package/dist/types/verify/isWeakSet.d.ts +16 -0
  758. package/dist/types/version.d.ts +13 -0
  759. package/dist/umd/zhiaiwan-utils.js +8178 -0
  760. package/dist/umd/zhiaiwan-utils.min.js +2 -0
  761. package/package.json +99 -0
@@ -0,0 +1,23 @@
1
+ import baseClone from '../_internal/baseClone';
2
+ /**
3
+ * 创建 `value` 的浅拷贝。数组、Map、Set 会复制一层容器;
4
+ * `ArrayBuffer` 会复制字节;`TypedArray` 共享底层 buffer;嵌套引用仍与源值共享。
5
+ *
6
+ * @param value - 要拷贝的值
7
+ * @returns 浅拷贝后的新值
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const obj = { a: { b: 1 } };
12
+ * const copy = zhiaiwanUtils.clone(obj);
13
+ * copy.a.b = 2;
14
+ * obj.a.b;
15
+ * // => 2
16
+ * ```
17
+ *
18
+ * @since 1.0.0
19
+ * @category Object
20
+ */
21
+ export default function clone(value) {
22
+ return baseClone(value);
23
+ }
@@ -0,0 +1,24 @@
1
+ import baseClone from '../_internal/baseClone';
2
+ /**
3
+ * 递归创建 `value` 的深拷贝。支持数组、普通对象、`Date`、`RegExp`、`Map`、`Set`、
4
+ * `ArrayBuffer`、`DataView`、`TypedArray`、`Error`、包装对象以及循环引用;
5
+ * `WeakMap`/`WeakSet` 与函数会原样返回。
6
+ *
7
+ * @param value - 要深拷贝的值
8
+ * @returns 深拷贝后的新值
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const obj = { a: [{ b: 1 }] };
13
+ * const copy = zhiaiwanUtils.cloneDeep(obj);
14
+ * copy.a[0].b = 2;
15
+ * obj.a[0].b;
16
+ * // => 1
17
+ * ```
18
+ *
19
+ * @since 1.0.0
20
+ * @category Object
21
+ */
22
+ export default function cloneDeep(value) {
23
+ return baseClone(value, new WeakMap(), { deep: true });
24
+ }
@@ -0,0 +1,24 @@
1
+ import baseClone from '../_internal/baseClone';
2
+ /**
3
+ * 递归创建 `value` 的深拷贝,并通过 `customizer` 自定义克隆结果。
4
+ * 当 `customizer` 返回 `undefined` 时,回退到默认深拷贝逻辑。
5
+ *
6
+ * @param value - 要深拷贝的值
7
+ * @param customizer - 自定义克隆函数,签名为 `(value, key?, object?, stack?)`
8
+ * @returns 深拷贝后的新值
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const copy = zhiaiwanUtils.cloneDeepWith({ a: { b: 1 } }, (val) => {
13
+ * if (typeof val === 'number') {
14
+ * return 0;
15
+ * }
16
+ * });
17
+ * ```
18
+ *
19
+ * @since 1.0.0
20
+ * @category Object
21
+ */
22
+ export default function cloneDeepWith(value, customizer) {
23
+ return baseClone(value, new WeakMap(), { deep: true, customizer });
24
+ }
@@ -0,0 +1,24 @@
1
+ import baseClone from '../_internal/baseClone';
2
+ /**
3
+ * 创建 `value` 的浅拷贝,并通过 `customizer` 自定义克隆结果。
4
+ * 当 `customizer` 返回 `undefined` 时,回退到默认克隆逻辑。
5
+ *
6
+ * @param value - 要拷贝的值
7
+ * @param customizer - 自定义克隆函数,签名为 `(value, key?, object?, stack?)`
8
+ * @returns 浅拷贝后的新值
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const copy = zhiaiwanUtils.cloneWith({ a: 1 }, (val) => {
13
+ * if (typeof val === 'number') {
14
+ * return val + 1;
15
+ * }
16
+ * });
17
+ * ```
18
+ *
19
+ * @since 1.0.0
20
+ * @category Object
21
+ */
22
+ export default function cloneWith(value, customizer) {
23
+ return baseClone(value, new WeakMap(), { customizer });
24
+ }
@@ -0,0 +1,20 @@
1
+ import { assignSources } from '../_internal/assignSources';
2
+ /**
3
+ * 将 sources 的自有可枚举属性浅合并到 object,仅当 object 上对应属性为 undefined 时才赋值。
4
+ *
5
+ * @param object - 目标对象
6
+ * @param sources - 一个或多个源对象
7
+ * @returns 合并后的 object
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * zhiaiwanUtils.defaults({ a: 1 }, { b: 2 }, { a: 3, b: 4 });
12
+ * // => { a: 1, b: 2 }
13
+ * ```
14
+ *
15
+ * @since 1.0.0
16
+ * @category Object
17
+ */
18
+ export default function defaults(object, ...sources) {
19
+ return assignSources(object, sources, true);
20
+ }
@@ -0,0 +1,38 @@
1
+ import baseDefaultsDeep from '../_internal/baseDefaultsDeep';
2
+ import isPlainObject from '../_internal/isPlainObject';
3
+ /**
4
+ * 将 sources 的自有可枚举属性深合并到 object,仅当 object 上对应属性为 undefined 时才赋值。
5
+ *
6
+ * @param object - 目标对象
7
+ * @param sources - 一个或多个源对象
8
+ * @returns 合并后的 object
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * zhiaiwanUtils.defaultsDeep({ a: { b: 2 } }, { a: { b: 3, c: 5 }, d: 4 });
13
+ * // => { a: { b: 2, c: 5 }, d: 4 }
14
+ * ```
15
+ *
16
+ * @since 1.0.0
17
+ * @category Object
18
+ */
19
+ export default function defaultsDeep(object, ...sources) {
20
+ const target = (object == null ? {} : object);
21
+ for (const source of sources) {
22
+ if (source == null || typeof source !== 'object') {
23
+ continue;
24
+ }
25
+ if (Array.isArray(source)) {
26
+ if (!Array.isArray(target)) {
27
+ continue;
28
+ }
29
+ baseDefaultsDeep(target, source);
30
+ continue;
31
+ }
32
+ if (!isPlainObject(source)) {
33
+ continue;
34
+ }
35
+ baseDefaultsDeep(target, source);
36
+ }
37
+ return target;
38
+ }
@@ -0,0 +1,23 @@
1
+ import { baseFindKey } from '../_internal/baseFind';
2
+ /**
3
+ * 返回对象中第一个满足 `predicate` 的键名。
4
+ *
5
+ * @param object - 待查找的对象
6
+ * @param predicate - 匹配函数,接收 `(value, key, object)`,默认匹配真值
7
+ * @returns 匹配键名,未找到时返回 `undefined`
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * findKey({ a: 1, b: 2 }, (value) => value === 2);
12
+ * // => 'b'
13
+ * ```
14
+ *
15
+ * @since 1.0.0
16
+ * @category Object
17
+ */
18
+ export default function findKey(object, predicate) {
19
+ if (object == null) {
20
+ return undefined;
21
+ }
22
+ return baseFindKey(object, predicate, false);
23
+ }
@@ -0,0 +1,23 @@
1
+ import { baseFindKey } from '../_internal/baseFind';
2
+ /**
3
+ * 从右往左返回对象中最后一个满足 `predicate` 的键名。
4
+ *
5
+ * @param object - 待查找的对象
6
+ * @param predicate - 匹配函数,接收 `(value, key, object)`,默认匹配真值
7
+ * @returns 匹配键名,未找到时返回 `undefined`
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * findLastKey({ a: 1, b: 2, c: 3 }, (value) => value < 3);
12
+ * // => 'b'
13
+ * ```
14
+ *
15
+ * @since 1.0.0
16
+ * @category Object
17
+ */
18
+ export default function findLastKey(object, predicate) {
19
+ if (object == null) {
20
+ return undefined;
21
+ }
22
+ return baseFindKey(object, predicate, true);
23
+ }
@@ -0,0 +1,23 @@
1
+ import { baseForIn } from '../_internal/baseForOwn';
2
+ import identity from '../_internal/identity';
3
+ /**
4
+ * 遍历 object 自有与继承的可枚举属性。
5
+ *
6
+ * @param object - 待遍历对象
7
+ * @param iteratee - 每次迭代调用的函数
8
+ * @returns 原 object
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * zhiaiwanUtils.forIn({ a: 1 }, (value, key) => console.log(key, value));
13
+ * ```
14
+ *
15
+ * @since 1.0.0
16
+ * @category Object
17
+ */
18
+ export default function forIn(object, iteratee = identity) {
19
+ if (object == null) {
20
+ return object;
21
+ }
22
+ return baseForIn(object, iteratee);
23
+ }
@@ -0,0 +1,23 @@
1
+ import { baseForOwn } from '../_internal/baseForOwn';
2
+ import identity from '../_internal/identity';
3
+ /**
4
+ * 遍历 object 自有可枚举属性。
5
+ *
6
+ * @param object - 待遍历对象
7
+ * @param iteratee - 每次迭代调用的函数
8
+ * @returns 原 object
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * zhiaiwanUtils.forOwn({ a: 1, b: 2 }, (value, key) => console.log(key, value));
13
+ * ```
14
+ *
15
+ * @since 1.0.0
16
+ * @category Object
17
+ */
18
+ export default function forOwn(object, iteratee = identity) {
19
+ if (object == null) {
20
+ return object;
21
+ }
22
+ return baseForOwn(object, iteratee);
23
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * toPairs 的逆运算,将键值对数组转为对象。
3
+ *
4
+ * @param pairs - 键值对数组
5
+ * @returns 新对象
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * zhiaiwanUtils.fromPairs([['a', 1], ['b', 2]]);
10
+ * // => { a: 1, b: 2 }
11
+ * ```
12
+ *
13
+ * @since 1.0.0
14
+ * @category Object
15
+ */
16
+ export default function fromPairs(pairs) {
17
+ const result = {};
18
+ if (pairs == null) {
19
+ return result;
20
+ }
21
+ for (const pair of pairs) {
22
+ result[String(pair[0])] = pair[1];
23
+ }
24
+ return result;
25
+ }
@@ -0,0 +1,31 @@
1
+ import toPath from '../_internal/toPath';
2
+ /**
3
+ * 根据路径 path 获取 object 上的值。若解析到的值为 undefined,则返回 defaultValue。
4
+ *
5
+ * @param object - 要检索的对象
6
+ * @param path - 属性路径,支持 `'a.b[0].c'` 字符串或键数组
7
+ * @param defaultValue - 解析值为 undefined 时返回的默认值
8
+ * @returns 解析得到的值
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const obj = { a: [{ b: { c: 3 } }] };
13
+ * get(obj, 'a[0].b.c'); // => 3
14
+ * get(obj, ['a', '0', 'b', 'c']); // => 3
15
+ * get(obj, 'a.b.c', 'default'); // => 'default'
16
+ * ```
17
+ *
18
+ * @since 1.0.0
19
+ * @category Object
20
+ */
21
+ export default function get(object, path, defaultValue) {
22
+ const keys = toPath(path);
23
+ let current = object;
24
+ for (const key of keys) {
25
+ if (current == null) {
26
+ return defaultValue;
27
+ }
28
+ current = current[key];
29
+ }
30
+ return current === undefined ? defaultValue : current;
31
+ }
@@ -0,0 +1,33 @@
1
+ import toPath from '../_internal/toPath';
2
+ /**
3
+ * 检查 path 是否是 object 的自有属性路径(路径上每一级均为自有属性,不含继承属性)。
4
+ *
5
+ * @param object - 要检索的对象
6
+ * @param path - 属性路径,支持 `'a.b[0].c'` 字符串或键数组
7
+ * @returns 如果路径存在,返回 true,否则返回 false
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const obj = { a: { b: 2 } };
12
+ * has(obj, 'a.b'); // => true
13
+ * has(obj, 'a.c'); // => false
14
+ * has(obj, ['a', 'b']); // => true
15
+ * ```
16
+ *
17
+ * @since 1.0.0
18
+ * @category Object
19
+ */
20
+ export default function has(object, path) {
21
+ const keys = toPath(path);
22
+ if (keys.length === 0) {
23
+ return false;
24
+ }
25
+ let current = object;
26
+ for (const key of keys) {
27
+ if (current == null || !Object.prototype.hasOwnProperty.call(Object(current), key)) {
28
+ return false;
29
+ }
30
+ current = current[key];
31
+ }
32
+ return true;
33
+ }
@@ -0,0 +1,29 @@
1
+ export { default as clone } from './clone';
2
+ export { default as cloneDeep } from './cloneDeep';
3
+ export { default as cloneWith } from './cloneWith';
4
+ export { default as cloneDeepWith } from './cloneDeepWith';
5
+ export { default as get } from './get';
6
+ export { default as set } from './set';
7
+ export { default as has } from './has';
8
+ export { default as findKey } from './findKey';
9
+ export { default as findLastKey } from './findLastKey';
10
+ export { default as pick } from './pick';
11
+ export { default as omit } from './omit';
12
+ export { default as merge } from './merge';
13
+ export { default as mergeWith } from './mergeWith';
14
+ export { default as unset } from './unset';
15
+ export { default as defaults } from './defaults';
16
+ export { default as defaultsDeep } from './defaultsDeep';
17
+ export { default as assign } from './assign';
18
+ export { default as keys } from './keys';
19
+ export { default as values } from './values';
20
+ export { default as pickBy } from './pickBy';
21
+ export { default as omitBy } from './omitBy';
22
+ export { default as mapKeys } from './mapKeys';
23
+ export { default as mapValues } from './mapValues';
24
+ export { default as invert } from './invert';
25
+ export { default as fromPairs } from './fromPairs';
26
+ export { default as forOwn } from './forOwn';
27
+ export { default as forIn } from './forIn';
28
+ export { default as update } from './update';
29
+ export { default as updateWith } from './updateWith';
@@ -0,0 +1,31 @@
1
+ import { baseForOwn } from '../_internal/baseForOwn';
2
+ /**
3
+ * 反转 object 的键值;重复值时后者覆盖前者。
4
+ *
5
+ * @param object - 源对象
6
+ * @returns 键值反转后的新对象
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * zhiaiwanUtils.invert({ a: 1, b: 2, c: 1 });
11
+ * // => { '1': 'c', '2': 'b' }
12
+ * ```
13
+ *
14
+ * @since 1.0.0
15
+ * @category Object
16
+ */
17
+ export default function invert(object) {
18
+ const result = {};
19
+ if (object == null) {
20
+ return result;
21
+ }
22
+ baseForOwn(object, (value, key) => {
23
+ let normalized = value;
24
+ if (value != null && typeof value.toString !== 'function') {
25
+ normalized = Object.prototype.toString.call(value);
26
+ }
27
+ result[String(normalized)] = key;
28
+ return undefined;
29
+ });
30
+ return result;
31
+ }
@@ -0,0 +1,22 @@
1
+ import { baseKeys } from '../_internal/baseCollectionKeys';
2
+ /**
3
+ * 返回 object 的自有可枚举属性名数组;数组与类数组返回下标字符串。
4
+ *
5
+ * @param object - 要查询的对象或集合
6
+ * @returns 属性名数组
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * zhiaiwanUtils.keys({ a: 1, b: 2 });
11
+ * // => ['a', 'b']
12
+ *
13
+ * zhiaiwanUtils.keys([1, 2, 3]);
14
+ * // => ['0', '1', '2']
15
+ * ```
16
+ *
17
+ * @since 1.0.0
18
+ * @category Object
19
+ */
20
+ export default function keys(object) {
21
+ return baseKeys(object);
22
+ }
@@ -0,0 +1,31 @@
1
+ import assignValue from '../_internal/assignValue';
2
+ import { baseForOwn } from '../_internal/baseForOwn';
3
+ import baseIteratee from '../_internal/baseIteratee';
4
+ /**
5
+ * 遍历 object 自有属性并生成新键名。
6
+ *
7
+ * @param object - 源对象
8
+ * @param iteratee - 生成新键名的函数或简写
9
+ * @returns 键名映射后的新对象
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * zhiaiwanUtils.mapKeys({ a: 1, b: 2 }, (value, key) => key + value);
14
+ * // => { a1: 1, b2: 2 }
15
+ * ```
16
+ *
17
+ * @since 1.0.0
18
+ * @category Object
19
+ */
20
+ export default function mapKeys(object, iteratee = baseIteratee()) {
21
+ const result = {};
22
+ if (object == null) {
23
+ return result;
24
+ }
25
+ const resolvedIteratee = baseIteratee(iteratee);
26
+ baseForOwn(object, (value, key, coll) => {
27
+ assignValue(result, resolvedIteratee(value, key, coll), value);
28
+ return undefined;
29
+ });
30
+ return result;
31
+ }
@@ -0,0 +1,31 @@
1
+ import assignValue from '../_internal/assignValue';
2
+ import { baseForOwn } from '../_internal/baseForOwn';
3
+ import baseIteratee from '../_internal/baseIteratee';
4
+ /**
5
+ * 遍历 object 自有属性并生成新值。
6
+ *
7
+ * @param object - 源对象
8
+ * @param iteratee - 生成新值的函数或简写
9
+ * @returns 值映射后的新对象
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * zhiaiwanUtils.mapValues({ a: 1, b: 2 }, (n) => (n as number) * 3);
14
+ * // => { a: 3, b: 6 }
15
+ * ```
16
+ *
17
+ * @since 1.0.0
18
+ * @category Object
19
+ */
20
+ export default function mapValues(object, iteratee = baseIteratee()) {
21
+ const result = {};
22
+ if (object == null) {
23
+ return result;
24
+ }
25
+ const resolvedIteratee = baseIteratee(iteratee);
26
+ baseForOwn(object, (value, key, coll) => {
27
+ assignValue(result, key, resolvedIteratee(value, key, coll));
28
+ return undefined;
29
+ });
30
+ return result;
31
+ }
@@ -0,0 +1,23 @@
1
+ import mergeInto from '../_internal/mergeInto';
2
+ /**
3
+ * 递归合并 sources 到 object。普通对象深合并,数组合并按索引覆盖。
4
+ * 若 object 为 null 或 undefined,会创建并返回新对象。
5
+ *
6
+ * @param object - 目标对象
7
+ * @param sources - 一个或多个源对象
8
+ * @returns 合并后的 object
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const object = { a: [{ b: 2 }, { d: 4 }] };
13
+ * const other = { a: [{ c: 3 }, { e: 5 }] };
14
+ * zhiaiwanUtils.merge(object, other);
15
+ * // => { a: [{ b: 2, c: 3 }, { d: 4, e: 5 }] }
16
+ * ```
17
+ *
18
+ * @since 1.0.0
19
+ * @category Object
20
+ */
21
+ export default function merge(object, ...sources) {
22
+ return mergeInto(object, sources);
23
+ }
@@ -0,0 +1,35 @@
1
+ import mergeInto from '../_internal/mergeInto';
2
+ /**
3
+ * 与 merge 相同,但允许通过 customizer 定制合并结果。
4
+ * customizer 返回 undefined 时回退到默认合并逻辑。
5
+ *
6
+ * @param object - 目标对象
7
+ * @param sources - 一个或多个源对象
8
+ * @param customizer - 自定义合并函数
9
+ * @returns 合并后的 object
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const object = { users: [{ name: 'a' }] };
14
+ * const other = { users: [{ name: 'b' }] };
15
+ * zhiaiwanUtils.mergeWith(object, other, (obj, src) => {
16
+ * if (Array.isArray(obj)) {
17
+ * return obj.concat(src);
18
+ * }
19
+ * });
20
+ * // => { users: [{ name: 'a' }, { name: 'b' }] }
21
+ * ```
22
+ *
23
+ * @since 1.0.0
24
+ * @category Object
25
+ */
26
+ export default function mergeWith(object, ...args) {
27
+ const sources = [...args];
28
+ let customizer;
29
+ const last = sources[sources.length - 1];
30
+ if (typeof last === 'function') {
31
+ customizer = last;
32
+ sources.pop();
33
+ }
34
+ return mergeInto(object, sources, customizer);
35
+ }
@@ -0,0 +1,30 @@
1
+ import baseClone from '../_internal/baseClone';
2
+ import baseUnset from '../_internal/baseUnset';
3
+ import flattenPaths from '../_internal/flattenPaths';
4
+ /**
5
+ * 从 object 中排除指定路径上的自有属性,返回深拷贝后的新对象。
6
+ *
7
+ * @param object - 源对象
8
+ * @param paths - 要排除的属性路径,支持 `'a.b'` 字符串、键数组或混合传入
9
+ * @returns 排除指定属性后的新对象
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const obj = { a: { b: 1, c: 2 }, d: 3 };
14
+ * zhiaiwanUtils.omit(obj, 'a.b');
15
+ * // => { a: { c: 2 }, d: 3 }
16
+ * ```
17
+ *
18
+ * @since 1.0.0
19
+ * @category Object
20
+ */
21
+ export default function omit(object, ...paths) {
22
+ if (object == null) {
23
+ return {};
24
+ }
25
+ const result = baseClone(object, new WeakMap(), { deep: true });
26
+ for (const path of flattenPaths(paths)) {
27
+ baseUnset(result, path);
28
+ }
29
+ return result;
30
+ }
@@ -0,0 +1,32 @@
1
+ import baseIteratee from '../_internal/baseIteratee';
2
+ import baseKeysIn from '../_internal/baseKeysIn';
3
+ /**
4
+ * 返回 object 中 predicate 不为真值的属性组成的新对象。
5
+ *
6
+ * @param object - 源对象
7
+ * @param predicate - 每次属性检查调用的函数或简写
8
+ * @returns 排除后的新对象
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * zhiaiwanUtils.omitBy({ a: 1, b: '2', c: 3 }, (value) => typeof value === 'number');
13
+ * // => { b: '2' }
14
+ * ```
15
+ *
16
+ * @since 1.0.0
17
+ * @category Object
18
+ */
19
+ export default function omitBy(object, predicate = baseIteratee()) {
20
+ if (object == null) {
21
+ return {};
22
+ }
23
+ const resolvedPredicate = baseIteratee(predicate);
24
+ const result = {};
25
+ for (const key of baseKeysIn(object)) {
26
+ const value = object[key];
27
+ if (!resolvedPredicate(value, key, object)) {
28
+ result[key] = value;
29
+ }
30
+ }
31
+ return result;
32
+ }
@@ -0,0 +1,31 @@
1
+ import flattenPaths from '../_internal/flattenPaths';
2
+ import { getPathValue, hasPath, setPathValue } from '../_internal/basePath';
3
+ /**
4
+ * 从 object 中选取指定路径上的自有属性,组成新对象。
5
+ *
6
+ * @param object - 源对象
7
+ * @param paths - 要选取的属性路径,支持 `'a.b'` 字符串、键数组或混合传入
8
+ * @returns 由选取属性组成的新对象
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const obj = { a: { b: 1 }, c: 3 };
13
+ * zhiaiwanUtils.pick(obj, 'a.b', 'c');
14
+ * // => { a: { b: 1 }, c: 3 }
15
+ * ```
16
+ *
17
+ * @since 1.0.0
18
+ * @category Object
19
+ */
20
+ export default function pick(object, ...paths) {
21
+ if (object == null) {
22
+ return {};
23
+ }
24
+ const result = {};
25
+ for (const path of flattenPaths(paths)) {
26
+ if (hasPath(object, path)) {
27
+ setPathValue(result, path, getPathValue(object, path));
28
+ }
29
+ }
30
+ return result;
31
+ }