es-toolkit 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/dist/array/chunk.mjs +1 -1
  3. package/dist/array/compact.mjs +1 -1
  4. package/dist/array/countBy.mjs +1 -1
  5. package/dist/array/difference.mjs +1 -1
  6. package/dist/array/differenceBy.mjs +1 -1
  7. package/dist/array/differenceWith.mjs +1 -1
  8. package/dist/array/drop.mjs +1 -1
  9. package/dist/array/dropRight.mjs +1 -1
  10. package/dist/array/dropRightWhile.mjs +1 -1
  11. package/dist/array/dropWhile.mjs +1 -1
  12. package/dist/array/fill.mjs +1 -1
  13. package/dist/array/flatMap.mjs +1 -1
  14. package/dist/array/flatten.mjs +1 -1
  15. package/dist/array/flattenDeep.mjs +1 -1
  16. package/dist/array/forEachRight.mjs +1 -1
  17. package/dist/array/groupBy.mjs +1 -1
  18. package/dist/array/head.mjs +1 -1
  19. package/dist/array/index.js.map +1 -1
  20. package/dist/array/index.mjs +14 -14
  21. package/dist/array/initial.mjs +1 -1
  22. package/dist/array/intersection.mjs +1 -1
  23. package/dist/array/intersectionBy.mjs +1 -1
  24. package/dist/array/intersectionWith.mjs +1 -1
  25. package/dist/array/keyBy.mjs +1 -1
  26. package/dist/array/last.mjs +1 -1
  27. package/dist/array/maxBy.mjs +1 -1
  28. package/dist/array/minBy.mjs +1 -1
  29. package/dist/array/orderBy.mjs +1 -1
  30. package/dist/array/partition.mjs +1 -1
  31. package/dist/array/sample.mjs +1 -1
  32. package/dist/array/sampleSize.mjs +1 -1
  33. package/dist/array/shuffle.mjs +1 -1
  34. package/dist/array/tail.d.mts +24 -0
  35. package/dist/array/tail.d.ts +24 -0
  36. package/dist/array/tail.js.map +1 -1
  37. package/dist/array/tail.mjs +2 -2
  38. package/dist/array/take.mjs +1 -1
  39. package/dist/array/takeRight.mjs +1 -1
  40. package/dist/array/takeRightWhile.mjs +1 -1
  41. package/dist/array/takeWhile.mjs +1 -1
  42. package/dist/array/toFilled.mjs +1 -1
  43. package/dist/array/union.mjs +1 -1
  44. package/dist/array/unionBy.mjs +1 -1
  45. package/dist/array/unionWith.mjs +1 -1
  46. package/dist/array/uniq.mjs +1 -1
  47. package/dist/array/uniqBy.mjs +1 -1
  48. package/dist/array/uniqWith.mjs +1 -1
  49. package/dist/array/unzip.mjs +1 -1
  50. package/dist/array/unzipWith.mjs +1 -1
  51. package/dist/array/without.mjs +1 -1
  52. package/dist/array/xor.mjs +1 -1
  53. package/dist/array/xorBy.mjs +1 -1
  54. package/dist/array/xorWith.mjs +1 -1
  55. package/dist/array/zip.mjs +1 -1
  56. package/dist/array/zipObject.mjs +1 -1
  57. package/dist/array/zipWith.mjs +1 -1
  58. package/dist/browser.d.mts +2 -0
  59. package/dist/browser.d.ts +2 -0
  60. package/dist/browser.js +1108 -0
  61. package/dist/browser.js.map +1 -0
  62. package/dist/browser.mjs +108 -0
  63. package/dist/browser.mjs.map +1 -0
  64. package/dist/{chunk-424M7IR7.mjs → chunk-24FKGR6U.mjs} +6 -1
  65. package/dist/chunk-27QMXBLJ.mjs +9 -0
  66. package/dist/chunk-27QMXBLJ.mjs.map +1 -0
  67. package/dist/chunk-54TK5BIS.mjs +1 -0
  68. package/dist/chunk-B645AYL4.mjs +1 -0
  69. package/dist/{chunk-J3GE7DEU.mjs → chunk-CVVZHOJX.mjs} +2 -2
  70. package/dist/{chunk-XWPCDIFC.mjs → chunk-IIDZ3KAJ.mjs} +3 -3
  71. package/dist/chunk-MIGAC7F4.mjs +25 -0
  72. package/dist/chunk-MIGAC7F4.mjs.map +1 -0
  73. package/dist/chunk-SPKLWVNJ.mjs +373 -0
  74. package/dist/chunk-SPKLWVNJ.mjs.map +1 -0
  75. package/dist/{chunk-OF6NM4G7.mjs → chunk-TJ4Z5I7M.mjs} +1 -1
  76. package/dist/{chunk-OF6NM4G7.mjs.map → chunk-TJ4Z5I7M.mjs.map} +1 -1
  77. package/dist/{chunk-U7V3G7CR.mjs → chunk-WFZXCGEG.mjs} +2 -2
  78. package/dist/chunk-XGQWTHW6.mjs +34 -0
  79. package/dist/chunk-XGQWTHW6.mjs.map +1 -0
  80. package/dist/compat/index.d.mts +59 -3
  81. package/dist/compat/index.d.ts +59 -3
  82. package/dist/compat/index.js +105 -1
  83. package/dist/compat/index.js.map +1 -1
  84. package/dist/compat/index.mjs +105 -51
  85. package/dist/compat/index.mjs.map +1 -1
  86. package/dist/error/AbortError.mjs +1 -1
  87. package/dist/error/TimeoutError.mjs +1 -1
  88. package/dist/error/index.mjs +1 -1
  89. package/dist/function/debounce.mjs +1 -1
  90. package/dist/function/index.mjs +4 -4
  91. package/dist/function/negate.mjs +1 -1
  92. package/dist/function/noop.mjs +1 -1
  93. package/dist/function/once.mjs +1 -1
  94. package/dist/function/throttle.mjs +1 -1
  95. package/dist/index.d.mts +3 -0
  96. package/dist/index.d.ts +3 -0
  97. package/dist/index.js +58 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/index.mjs +62 -50
  100. package/dist/math/clamp.mjs +1 -1
  101. package/dist/math/inRange.mjs +1 -1
  102. package/dist/math/index.mjs +7 -7
  103. package/dist/math/mean.mjs +1 -1
  104. package/dist/math/meanBy.mjs +1 -1
  105. package/dist/math/random.mjs +1 -1
  106. package/dist/math/randomInt.mjs +1 -1
  107. package/dist/math/range.mjs +1 -1
  108. package/dist/math/round.mjs +1 -1
  109. package/dist/math/sum.mjs +1 -1
  110. package/dist/math/sumBy.mjs +1 -1
  111. package/dist/object/clone.mjs +1 -1
  112. package/dist/object/flattenObject.d.mts +28 -0
  113. package/dist/object/flattenObject.d.ts +28 -0
  114. package/dist/object/flattenObject.js +77 -0
  115. package/dist/object/flattenObject.js.map +1 -0
  116. package/dist/object/flattenObject.mjs +9 -0
  117. package/dist/object/index.d.mts +1 -0
  118. package/dist/object/index.d.ts +1 -0
  119. package/dist/object/index.js +49 -0
  120. package/dist/object/index.js.map +1 -1
  121. package/dist/object/index.mjs +14 -9
  122. package/dist/object/invert.mjs +1 -1
  123. package/dist/object/omit.mjs +2 -2
  124. package/dist/object/omitBy.mjs +1 -1
  125. package/dist/object/pick.mjs +1 -1
  126. package/dist/object/pickBy.mjs +1 -1
  127. package/dist/predicate/index.d.mts +2 -0
  128. package/dist/predicate/index.d.ts +2 -0
  129. package/dist/predicate/index.js +30 -0
  130. package/dist/predicate/index.js.map +1 -1
  131. package/dist/predicate/index.mjs +15 -7
  132. package/dist/predicate/isEqual.mjs +1 -1
  133. package/dist/predicate/isLength.d.mts +3 -0
  134. package/dist/predicate/isLength.d.ts +3 -0
  135. package/dist/predicate/isLength.js +33 -0
  136. package/dist/predicate/isLength.js.map +1 -0
  137. package/dist/predicate/isLength.mjs +8 -0
  138. package/dist/predicate/isLength.mjs.map +1 -0
  139. package/dist/predicate/isNil.mjs +1 -1
  140. package/dist/predicate/isNotNil.mjs +1 -1
  141. package/dist/predicate/isNull.mjs +1 -1
  142. package/dist/predicate/isPlainObject.d.mts +16 -0
  143. package/dist/predicate/isPlainObject.d.ts +16 -0
  144. package/dist/predicate/isPlainObject.js +49 -0
  145. package/dist/predicate/isPlainObject.js.map +1 -0
  146. package/dist/predicate/isPlainObject.mjs +8 -0
  147. package/dist/predicate/isPlainObject.mjs.map +1 -0
  148. package/dist/predicate/isUndefined.mjs +1 -1
  149. package/dist/promise/delay.mjs +1 -1
  150. package/dist/promise/index.mjs +3 -3
  151. package/dist/promise/timeout.mjs +2 -2
  152. package/dist/promise/withTimeout.mjs +3 -3
  153. package/dist/string/camelCase.mjs +1 -1
  154. package/dist/string/capitalize.mjs +1 -1
  155. package/dist/string/index.mjs +7 -7
  156. package/dist/string/kebabCase.mjs +1 -1
  157. package/dist/string/lowerCase.mjs +1 -1
  158. package/dist/string/snakeCase.mjs +1 -1
  159. package/dist/string/startCase.mjs +1 -1
  160. package/package.json +3 -1
  161. package/umd/browser.global.js +2 -0
  162. package/dist/chunk-ASJF5D6C.mjs +0 -1
  163. package/dist/chunk-NKLIE2OI.mjs +0 -1
  164. package/dist/chunk-OSOLEQLZ.mjs +0 -1
  165. /package/dist/{chunk-424M7IR7.mjs.map → chunk-24FKGR6U.mjs.map} +0 -0
  166. /package/dist/{chunk-ASJF5D6C.mjs.map → chunk-54TK5BIS.mjs.map} +0 -0
  167. /package/dist/{chunk-NKLIE2OI.mjs.map → chunk-B645AYL4.mjs.map} +0 -0
  168. /package/dist/{chunk-J3GE7DEU.mjs.map → chunk-CVVZHOJX.mjs.map} +0 -0
  169. /package/dist/{chunk-XWPCDIFC.mjs.map → chunk-IIDZ3KAJ.mjs.map} +0 -0
  170. /package/dist/{chunk-U7V3G7CR.mjs.map → chunk-WFZXCGEG.mjs.map} +0 -0
  171. /package/dist/{chunk-OSOLEQLZ.mjs.map → object/flattenObject.mjs.map} +0 -0
package/dist/index.js CHANGED
@@ -76,6 +76,7 @@ __export(src_exports, {
76
76
  flatMap: () => flatMap,
77
77
  flatten: () => flatten,
78
78
  flattenDeep: () => flattenDeep,
79
+ flattenObject: () => flattenObject,
79
80
  forEachRight: () => forEachRight,
80
81
  groupBy: () => groupBy,
81
82
  head: () => head,
@@ -86,9 +87,11 @@ __export(src_exports, {
86
87
  intersectionWith: () => intersectionWith,
87
88
  invert: () => invert,
88
89
  isEqual: () => isEqual,
90
+ isLength: () => isLength,
89
91
  isNil: () => isNil,
90
92
  isNotNil: () => isNotNil,
91
93
  isNull: () => isNull,
94
+ isPlainObject: () => isPlainObject,
92
95
  isUndefined: () => isUndefined,
93
96
  kebabCase: () => kebabCase,
94
97
  keyBy: () => keyBy,
@@ -917,6 +920,53 @@ function isPrimitive(value) {
917
920
  return value == null || typeof value !== "object" && typeof value !== "function";
918
921
  }
919
922
 
923
+ // src/predicate/isPlainObject.ts
924
+ function isPlainObject(object) {
925
+ if (typeof object !== "object") {
926
+ return false;
927
+ }
928
+ if (object == null) {
929
+ return false;
930
+ }
931
+ if (Object.getPrototypeOf(object) === null) {
932
+ return true;
933
+ }
934
+ if (object.toString() !== "[object Object]") {
935
+ return false;
936
+ }
937
+ let proto = object;
938
+ while (Object.getPrototypeOf(proto) !== null) {
939
+ proto = Object.getPrototypeOf(proto);
940
+ }
941
+ return Object.getPrototypeOf(object) === proto;
942
+ }
943
+
944
+ // src/object/flattenObject.ts
945
+ function flattenObject(object) {
946
+ return flattenObjectImpl(object);
947
+ }
948
+ function flattenObjectImpl(object, prefix = "") {
949
+ const result = {};
950
+ const keys = Object.keys(object);
951
+ for (let i = 0; i < keys.length; i++) {
952
+ const key = keys[i];
953
+ const value = object[key];
954
+ const prefixedKey = prefix ? `${prefix}.${key}` : key;
955
+ if (isPlainObject(value) && Object.keys(value).length > 0) {
956
+ Object.assign(result, flattenObjectImpl(value, prefixedKey));
957
+ continue;
958
+ }
959
+ if (Array.isArray(value)) {
960
+ for (let index = 0; index < value.length; index++) {
961
+ result[`${prefixedKey}.${index}`] = value[index];
962
+ }
963
+ continue;
964
+ }
965
+ result[prefixedKey] = value;
966
+ }
967
+ return result;
968
+ }
969
+
920
970
  // src/predicate/isEqual.ts
921
971
  function isEqual(a, b) {
922
972
  if (Object.is(a, b)) {
@@ -970,6 +1020,11 @@ function isUndefined(x) {
970
1020
  return x === void 0;
971
1021
  }
972
1022
 
1023
+ // src/predicate/isLength.ts
1024
+ function isLength(value) {
1025
+ return typeof value === "number" && value > -1 && value % 1 === 0 && value <= Number.MAX_SAFE_INTEGER;
1026
+ }
1027
+
973
1028
  // src/promise/delay.ts
974
1029
  function delay(ms, { signal } = {}) {
975
1030
  return new Promise((resolve, reject) => {
@@ -1083,6 +1138,7 @@ function startCase(str) {
1083
1138
  flatMap,
1084
1139
  flatten,
1085
1140
  flattenDeep,
1141
+ flattenObject,
1086
1142
  forEachRight,
1087
1143
  groupBy,
1088
1144
  head,
@@ -1093,9 +1149,11 @@ function startCase(str) {
1093
1149
  intersectionWith,
1094
1150
  invert,
1095
1151
  isEqual,
1152
+ isLength,
1096
1153
  isNil,
1097
1154
  isNotNil,
1098
1155
  isNull,
1156
+ isPlainObject,
1099
1157
  isUndefined,
1100
1158
  kebabCase,
1101
1159
  keyBy,