es-toolkit 1.50.0 → 1.51.0-dev.2065

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 (355) 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/flowRight.d.mts +1 -1
  192. package/dist/compat/function/flowRight.d.ts +1 -1
  193. package/dist/compat/function/partial.d.mts +1 -1
  194. package/dist/compat/function/partial.d.ts +1 -1
  195. package/dist/compat/function/rest.d.mts +1 -1
  196. package/dist/compat/function/rest.d.ts +1 -1
  197. package/dist/compat/function/rest.js +1 -1
  198. package/dist/compat/function/rest.mjs +1 -1
  199. package/dist/compat/index.d.mts +3 -3
  200. package/dist/compat/index.d.ts +3 -3
  201. package/dist/compat/index.js +6 -4
  202. package/dist/compat/index.mjs +5 -5
  203. package/dist/compat/math/maxBy.js +1 -1
  204. package/dist/compat/math/maxBy.mjs +1 -1
  205. package/dist/compat/math/meanBy.d.mts +4 -0
  206. package/dist/compat/math/meanBy.d.ts +4 -0
  207. package/dist/compat/math/meanBy.js +8 -3
  208. package/dist/compat/math/meanBy.mjs +8 -3
  209. package/dist/compat/math/minBy.js +1 -1
  210. package/dist/compat/math/minBy.mjs +1 -1
  211. package/dist/compat/object/cloneDeep.d.mts +5 -5
  212. package/dist/compat/object/cloneDeep.d.ts +5 -5
  213. package/dist/compat/object/cloneDeep.js +5 -5
  214. package/dist/compat/object/cloneDeep.mjs +5 -5
  215. package/dist/compat/object/cloneDeepWith.js +3 -1
  216. package/dist/compat/object/cloneDeepWith.mjs +3 -1
  217. package/dist/compat/object/cloneWith.d.mts +1 -1
  218. package/dist/compat/object/cloneWith.d.ts +1 -1
  219. package/dist/compat/object/cloneWith.js +1 -1
  220. package/dist/compat/object/cloneWith.mjs +1 -1
  221. package/dist/compat/object/entries.d.mts +1 -0
  222. package/dist/compat/object/entries.d.ts +1 -0
  223. package/dist/compat/object/entries.js +1 -0
  224. package/dist/compat/object/entries.mjs +1 -0
  225. package/dist/compat/object/entriesIn.d.mts +1 -0
  226. package/dist/compat/object/entriesIn.d.ts +1 -0
  227. package/dist/compat/object/entriesIn.js +1 -0
  228. package/dist/compat/object/entriesIn.mjs +1 -0
  229. package/dist/compat/object/omit.js +5 -5
  230. package/dist/compat/object/omit.mjs +5 -5
  231. package/dist/compat/object/transform.js +1 -1
  232. package/dist/compat/object/transform.mjs +1 -1
  233. package/dist/compat/object/updateWith.js +2 -2
  234. package/dist/compat/object/updateWith.mjs +2 -2
  235. package/dist/compat/predicate/isMatchWith.js +14 -5
  236. package/dist/compat/predicate/isMatchWith.mjs +14 -5
  237. package/dist/compat/string/template.js +2 -1
  238. package/dist/compat/string/template.mjs +2 -1
  239. package/dist/compat/string/words.js +17 -13
  240. package/dist/compat/string/words.mjs +17 -13
  241. package/dist/compat/util/iteratee.js +1 -3
  242. package/dist/compat/util/iteratee.mjs +1 -3
  243. package/dist/compat/util/toArray.d.mts +5 -5
  244. package/dist/compat/util/toArray.d.ts +5 -5
  245. package/dist/compat/util/toArray.js +9 -5
  246. package/dist/compat/util/toArray.mjs +9 -5
  247. package/dist/compat/util/toPath.js +11 -3
  248. package/dist/compat/util/toPath.mjs +11 -3
  249. package/dist/compat/util/toString.js +4 -1
  250. package/dist/compat/util/toString.mjs +4 -1
  251. package/dist/fp/array/at.d.mts +1 -1
  252. package/dist/fp/array/at.d.ts +1 -1
  253. package/dist/fp/array/orderBy.d.mts +1 -1
  254. package/dist/fp/array/orderBy.d.ts +1 -1
  255. package/dist/fp/array/sortBy.d.mts +1 -1
  256. package/dist/fp/array/sortBy.d.ts +1 -1
  257. package/dist/fp/array/unzip.d.mts +3 -0
  258. package/dist/fp/array/unzip.d.ts +3 -0
  259. package/dist/fp/array/unzip.js +3 -0
  260. package/dist/fp/array/unzip.mjs +3 -0
  261. package/dist/function/memoize.d.mts +3 -2
  262. package/dist/function/memoize.d.ts +3 -2
  263. package/dist/function/memoize.js +3 -2
  264. package/dist/function/memoize.mjs +3 -2
  265. package/dist/function/partial.d.mts +2 -2
  266. package/dist/function/partial.d.ts +2 -2
  267. package/dist/function/partialRight.d.mts +5 -5
  268. package/dist/function/partialRight.d.ts +5 -5
  269. package/dist/function/rest.d.mts +1 -1
  270. package/dist/function/rest.d.ts +1 -1
  271. package/dist/function/rest.js +1 -1
  272. package/dist/function/rest.mjs +1 -1
  273. package/dist/function/retry.d.mts +7 -4
  274. package/dist/function/retry.d.ts +7 -4
  275. package/dist/function/retry.js +4 -2
  276. package/dist/function/retry.mjs +1 -1
  277. package/dist/index.d.mts +9 -2
  278. package/dist/index.d.ts +9 -2
  279. package/dist/index.js +18 -4
  280. package/dist/index.mjs +12 -5
  281. package/dist/object/cloneDeepWith.d.mts +3 -1
  282. package/dist/object/cloneDeepWith.d.ts +3 -1
  283. package/dist/object/cloneDeepWith.js +3 -1
  284. package/dist/object/cloneDeepWith.mjs +3 -1
  285. package/dist/object/deepFreeze.d.mts +20 -0
  286. package/dist/object/deepFreeze.d.ts +20 -0
  287. package/dist/object/deepFreeze.js +29 -0
  288. package/dist/object/deepFreeze.mjs +29 -0
  289. package/dist/object/flattenObject.d.mts +16 -1
  290. package/dist/object/flattenObject.d.ts +16 -1
  291. package/dist/object/flattenObject.js +15 -6
  292. package/dist/object/flattenObject.mjs +15 -6
  293. package/dist/object/index.d.mts +7 -1
  294. package/dist/object/index.d.ts +7 -1
  295. package/dist/object/index.js +12 -0
  296. package/dist/object/index.mjs +7 -1
  297. package/dist/object/mapKeysAsync.d.mts +25 -0
  298. package/dist/object/mapKeysAsync.d.ts +25 -0
  299. package/dist/object/mapKeysAsync.js +32 -0
  300. package/dist/object/mapKeysAsync.mjs +32 -0
  301. package/dist/object/mapValuesAsync.d.mts +26 -0
  302. package/dist/object/mapValuesAsync.d.ts +26 -0
  303. package/dist/object/mapValuesAsync.js +32 -0
  304. package/dist/object/mapValuesAsync.mjs +32 -0
  305. package/dist/object/merge.js +2 -4
  306. package/dist/object/merge.mjs +1 -3
  307. package/dist/object/mergeWith.js +4 -4
  308. package/dist/object/mergeWith.mjs +4 -4
  309. package/dist/object/toCamelCaseKeys.d.mts +2 -6
  310. package/dist/object/toCamelCaseKeys.d.ts +2 -6
  311. package/dist/object/toConstantCaseKeys.d.mts +52 -0
  312. package/dist/object/toConstantCaseKeys.d.ts +52 -0
  313. package/dist/object/toConstantCaseKeys.js +66 -0
  314. package/dist/object/toConstantCaseKeys.mjs +66 -0
  315. package/dist/object/toKebabCaseKeys.d.mts +52 -0
  316. package/dist/object/toKebabCaseKeys.d.ts +52 -0
  317. package/dist/object/toKebabCaseKeys.js +66 -0
  318. package/dist/object/toKebabCaseKeys.mjs +66 -0
  319. package/dist/object/toMerged.js +4 -4
  320. package/dist/object/toMerged.mjs +4 -4
  321. package/dist/object/toPascalCaseKeys.d.mts +52 -0
  322. package/dist/object/toPascalCaseKeys.d.ts +52 -0
  323. package/dist/object/toPascalCaseKeys.js +66 -0
  324. package/dist/object/toPascalCaseKeys.mjs +66 -0
  325. package/dist/object/toSnakeCaseKeys.d.mts +2 -3
  326. package/dist/object/toSnakeCaseKeys.d.ts +2 -3
  327. package/dist/promise/index.d.mts +2 -1
  328. package/dist/promise/index.d.ts +2 -1
  329. package/dist/promise/index.js +2 -0
  330. package/dist/promise/index.mjs +2 -1
  331. package/dist/promise/limitAsync.d.mts +35 -0
  332. package/dist/promise/limitAsync.d.ts +35 -0
  333. package/dist/promise/limitAsync.js +46 -0
  334. package/dist/promise/limitAsync.mjs +46 -0
  335. package/dist/string/dedent.d.mts +37 -0
  336. package/dist/string/dedent.d.ts +37 -0
  337. package/dist/string/dedent.js +38 -0
  338. package/dist/string/dedent.mjs +38 -0
  339. package/dist/string/index.d.mts +2 -1
  340. package/dist/string/index.d.ts +2 -1
  341. package/dist/string/index.js +5 -3
  342. package/dist/string/index.mjs +5 -4
  343. package/dist/types/ToCamelCaseKeys.d.mts +24 -0
  344. package/dist/types/ToCamelCaseKeys.d.ts +24 -0
  345. package/dist/types/ToConstantCaseKeys.d.mts +21 -0
  346. package/dist/types/ToConstantCaseKeys.d.ts +21 -0
  347. package/dist/types/ToKebabCaseKeys.d.mts +23 -0
  348. package/dist/types/ToKebabCaseKeys.d.ts +23 -0
  349. package/dist/types/ToPascalCaseKeys.d.mts +24 -0
  350. package/dist/types/ToPascalCaseKeys.d.ts +24 -0
  351. package/dist/types/ToSnakeCaseKeys.d.mts +21 -0
  352. package/dist/types/ToSnakeCaseKeys.d.ts +21 -0
  353. package/dist/types/index.d.mts +6 -1
  354. package/dist/types/index.d.ts +6 -1
  355. package/package.json +27 -2
@@ -0,0 +1,52 @@
1
+ import { ToPascalCaseKeys } from "../types/ToPascalCaseKeys.js";
2
+
3
+ //#region src/object/toPascalCaseKeys.d.ts
4
+ /**
5
+ * Creates a new object composed of the properties with keys converted to PascalCase.
6
+ *
7
+ * This function takes an object and returns a new object that includes the same properties,
8
+ * but with all keys converted to PascalCase format.
9
+ *
10
+ * @template T - The type of object.
11
+ * @param obj - The object to convert keys from.
12
+ * @returns A new object with all keys converted to PascalCase.
13
+ *
14
+ * @example
15
+ * // Example with objects
16
+ * const obj = { userId: 1, firstName: 'John' };
17
+ * const result = toPascalCaseKeys(obj);
18
+ * // result will be { UserId: 1, FirstName: 'John' }
19
+ *
20
+ * // Example with arrays of objects
21
+ * const arr = [
22
+ * { userId: 1, firstName: 'John' },
23
+ * { userId: 2, firstName: 'Jane' }
24
+ * ];
25
+ * const arrResult = toPascalCaseKeys(arr);
26
+ * // arrResult will be [{ UserId: 1, FirstName: 'John' }, { UserId: 2, FirstName: 'Jane' }]
27
+ *
28
+ * // Example with nested objects
29
+ * const nested = {
30
+ * userData: {
31
+ * userId: 1,
32
+ * userAddress: {
33
+ * streetName: 'Main St',
34
+ * zipCode: '12345'
35
+ * }
36
+ * }
37
+ * };
38
+ * const nestedResult = toPascalCaseKeys(nested);
39
+ * // nestedResult will be:
40
+ * // {
41
+ * // UserData: {
42
+ * // UserId: 1,
43
+ * // UserAddress: {
44
+ * // StreetName: 'Main St',
45
+ * // ZipCode: '12345'
46
+ * // }
47
+ * // }
48
+ * // }
49
+ */
50
+ declare function toPascalCaseKeys<T>(obj: T): ToPascalCaseKeys<T>;
51
+ //#endregion
52
+ export { toPascalCaseKeys };
@@ -0,0 +1,66 @@
1
+ const require_isArray = require("../compat/predicate/isArray.js");
2
+ const require_isPlainObject = require("../compat/predicate/isPlainObject.js");
3
+ const require_pascalCase = require("../string/pascalCase.js");
4
+ //#region src/object/toPascalCaseKeys.ts
5
+ /**
6
+ * Creates a new object composed of the properties with keys converted to PascalCase.
7
+ *
8
+ * This function takes an object and returns a new object that includes the same properties,
9
+ * but with all keys converted to PascalCase format.
10
+ *
11
+ * @template T - The type of object.
12
+ * @param obj - The object to convert keys from.
13
+ * @returns A new object with all keys converted to PascalCase.
14
+ *
15
+ * @example
16
+ * // Example with objects
17
+ * const obj = { userId: 1, firstName: 'John' };
18
+ * const result = toPascalCaseKeys(obj);
19
+ * // result will be { UserId: 1, FirstName: 'John' }
20
+ *
21
+ * // Example with arrays of objects
22
+ * const arr = [
23
+ * { userId: 1, firstName: 'John' },
24
+ * { userId: 2, firstName: 'Jane' }
25
+ * ];
26
+ * const arrResult = toPascalCaseKeys(arr);
27
+ * // arrResult will be [{ UserId: 1, FirstName: 'John' }, { UserId: 2, FirstName: 'Jane' }]
28
+ *
29
+ * // Example with nested objects
30
+ * const nested = {
31
+ * userData: {
32
+ * userId: 1,
33
+ * userAddress: {
34
+ * streetName: 'Main St',
35
+ * zipCode: '12345'
36
+ * }
37
+ * }
38
+ * };
39
+ * const nestedResult = toPascalCaseKeys(nested);
40
+ * // nestedResult will be:
41
+ * // {
42
+ * // UserData: {
43
+ * // UserId: 1,
44
+ * // UserAddress: {
45
+ * // StreetName: 'Main St',
46
+ * // ZipCode: '12345'
47
+ * // }
48
+ * // }
49
+ * // }
50
+ */
51
+ function toPascalCaseKeys(obj) {
52
+ if (require_isArray.isArray(obj)) return obj.map((item) => toPascalCaseKeys(item));
53
+ if (require_isPlainObject.isPlainObject(obj)) {
54
+ const result = {};
55
+ const keys = Object.keys(obj);
56
+ for (let i = 0; i < keys.length; i++) {
57
+ const key = keys[i];
58
+ const pascalKey = require_pascalCase.pascalCase(key);
59
+ result[pascalKey] = toPascalCaseKeys(obj[key]);
60
+ }
61
+ return result;
62
+ }
63
+ return obj;
64
+ }
65
+ //#endregion
66
+ exports.toPascalCaseKeys = toPascalCaseKeys;
@@ -0,0 +1,66 @@
1
+ import { isArray } from "../compat/predicate/isArray.mjs";
2
+ import { isPlainObject } from "../compat/predicate/isPlainObject.mjs";
3
+ import { pascalCase } from "../string/pascalCase.mjs";
4
+ //#region src/object/toPascalCaseKeys.ts
5
+ /**
6
+ * Creates a new object composed of the properties with keys converted to PascalCase.
7
+ *
8
+ * This function takes an object and returns a new object that includes the same properties,
9
+ * but with all keys converted to PascalCase format.
10
+ *
11
+ * @template T - The type of object.
12
+ * @param obj - The object to convert keys from.
13
+ * @returns A new object with all keys converted to PascalCase.
14
+ *
15
+ * @example
16
+ * // Example with objects
17
+ * const obj = { userId: 1, firstName: 'John' };
18
+ * const result = toPascalCaseKeys(obj);
19
+ * // result will be { UserId: 1, FirstName: 'John' }
20
+ *
21
+ * // Example with arrays of objects
22
+ * const arr = [
23
+ * { userId: 1, firstName: 'John' },
24
+ * { userId: 2, firstName: 'Jane' }
25
+ * ];
26
+ * const arrResult = toPascalCaseKeys(arr);
27
+ * // arrResult will be [{ UserId: 1, FirstName: 'John' }, { UserId: 2, FirstName: 'Jane' }]
28
+ *
29
+ * // Example with nested objects
30
+ * const nested = {
31
+ * userData: {
32
+ * userId: 1,
33
+ * userAddress: {
34
+ * streetName: 'Main St',
35
+ * zipCode: '12345'
36
+ * }
37
+ * }
38
+ * };
39
+ * const nestedResult = toPascalCaseKeys(nested);
40
+ * // nestedResult will be:
41
+ * // {
42
+ * // UserData: {
43
+ * // UserId: 1,
44
+ * // UserAddress: {
45
+ * // StreetName: 'Main St',
46
+ * // ZipCode: '12345'
47
+ * // }
48
+ * // }
49
+ * // }
50
+ */
51
+ function toPascalCaseKeys(obj) {
52
+ if (isArray(obj)) return obj.map((item) => toPascalCaseKeys(item));
53
+ if (isPlainObject(obj)) {
54
+ const result = {};
55
+ const keys = Object.keys(obj);
56
+ for (let i = 0; i < keys.length; i++) {
57
+ const key = keys[i];
58
+ const pascalKey = pascalCase(key);
59
+ result[pascalKey] = toPascalCaseKeys(obj[key]);
60
+ }
61
+ return result;
62
+ }
63
+ return obj;
64
+ }
65
+ //#endregion
66
+ export { toPascalCaseKeys };
@@ -1,7 +1,6 @@
1
+ import { ToSnakeCaseKeys } from "../types/ToSnakeCaseKeys.mjs";
2
+
1
3
  //#region src/object/toSnakeCaseKeys.d.ts
2
- type SnakeCase<S extends string> = S extends Uppercase<S> ? Lowercase<S> : S extends `${infer P1}${infer P2}` ? P2 extends Uncapitalize<P2> ? `${Lowercase<P1>}${SnakeCase<P2>}` : `${Lowercase<P1>}_${SnakeCase<Uncapitalize<P2>>}` : Lowercase<S>;
3
- type NonPlainObject = Date | RegExp | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | Promise<any> | Error | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ((...args: any[]) => any) | typeof globalThis;
4
- type ToSnakeCaseKeys<T> = T extends NonPlainObject ? T : T extends any[] ? Array<ToSnakeCaseKeys<T[number]>> : T extends Record<string, any> ? { [K in keyof T as SnakeCase<string & K>]: ToSnakeCaseKeys<T[K]> } : T;
5
4
  /**
6
5
  * Creates a new object composed of the properties with keys converted to snake_case.
7
6
  *
@@ -1,7 +1,6 @@
1
+ import { ToSnakeCaseKeys } from "../types/ToSnakeCaseKeys.js";
2
+
1
3
  //#region src/object/toSnakeCaseKeys.d.ts
2
- type SnakeCase<S extends string> = S extends Uppercase<S> ? Lowercase<S> : S extends `${infer P1}${infer P2}` ? P2 extends Uncapitalize<P2> ? `${Lowercase<P1>}${SnakeCase<P2>}` : `${Lowercase<P1>}_${SnakeCase<Uncapitalize<P2>>}` : Lowercase<S>;
3
- type NonPlainObject = Date | RegExp | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | Promise<any> | Error | ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ((...args: any[]) => any) | typeof globalThis;
4
- type ToSnakeCaseKeys<T> = T extends NonPlainObject ? T : T extends any[] ? Array<ToSnakeCaseKeys<T[number]>> : T extends Record<string, any> ? { [K in keyof T as SnakeCase<string & K>]: ToSnakeCaseKeys<T[K]> } : T;
5
4
  /**
6
5
  * Creates a new object composed of the properties with keys converted to snake_case.
7
6
  *
@@ -1,7 +1,8 @@
1
+ import { limitAsync } from "./limitAsync.mjs";
1
2
  import { allKeyed } from "./allKeyed.mjs";
2
3
  import { delay } from "./delay.mjs";
3
4
  import { Mutex } from "./mutex.mjs";
4
5
  import { Semaphore } from "./semaphore.mjs";
5
6
  import { timeout } from "./timeout.mjs";
6
7
  import { withTimeout } from "./withTimeout.mjs";
7
- export { Mutex, Semaphore, allKeyed, delay, timeout, withTimeout };
8
+ export { Mutex, Semaphore, allKeyed, delay, limitAsync, timeout, withTimeout };
@@ -1,7 +1,8 @@
1
+ import { limitAsync } from "./limitAsync.js";
1
2
  import { allKeyed } from "./allKeyed.js";
2
3
  import { delay } from "./delay.js";
3
4
  import { Mutex } from "./mutex.js";
4
5
  import { Semaphore } from "./semaphore.js";
5
6
  import { timeout } from "./timeout.js";
6
7
  import { withTimeout } from "./withTimeout.js";
7
- export { Mutex, Semaphore, allKeyed, delay, timeout, withTimeout };
8
+ export { Mutex, Semaphore, allKeyed, delay, limitAsync, timeout, withTimeout };
@@ -1,5 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_semaphore = require("./semaphore.js");
3
+ const require_limitAsync = require("./limitAsync.js");
3
4
  const require_delay = require("./delay.js");
4
5
  const require_allKeyed = require("./allKeyed.js");
5
6
  const require_mutex = require("./mutex.js");
@@ -9,5 +10,6 @@ exports.Mutex = require_mutex.Mutex;
9
10
  exports.Semaphore = require_semaphore.Semaphore;
10
11
  exports.allKeyed = require_allKeyed.allKeyed;
11
12
  exports.delay = require_delay.delay;
13
+ exports.limitAsync = require_limitAsync.limitAsync;
12
14
  exports.timeout = require_timeout.timeout;
13
15
  exports.withTimeout = require_withTimeout.withTimeout;
@@ -1,7 +1,8 @@
1
1
  import { Semaphore } from "./semaphore.mjs";
2
+ import { limitAsync } from "./limitAsync.mjs";
2
3
  import { delay } from "./delay.mjs";
3
4
  import { allKeyed } from "./allKeyed.mjs";
4
5
  import { Mutex } from "./mutex.mjs";
5
6
  import { timeout } from "./timeout.mjs";
6
7
  import { withTimeout } from "./withTimeout.mjs";
7
- export { Mutex, Semaphore, allKeyed, delay, timeout, withTimeout };
8
+ export { Mutex, Semaphore, allKeyed, delay, limitAsync, timeout, withTimeout };
@@ -0,0 +1,35 @@
1
+ //#region src/promise/limitAsync.d.ts
2
+ /**
3
+ * Wraps an async function to limit the number of concurrent executions.
4
+ *
5
+ * This function creates a wrapper around an async callback that ensures at most
6
+ * `concurrency` number of executions can run simultaneously. Additional calls will
7
+ * wait until a slot becomes available.
8
+ *
9
+ * @template F - The type of the async function to wrap.
10
+ * @param callback The async function to wrap with concurrency control.
11
+ * @param concurrency Maximum number of concurrent executions allowed.
12
+ * @returns A wrapped version of the callback with concurrency limiting.
13
+ * @example
14
+ * const limitedFetch = limitAsync(async (url) => {
15
+ * return await fetch(url);
16
+ * }, 3);
17
+ *
18
+ * // Only 3 fetches will run concurrently
19
+ * const urls = ['url1', 'url2', 'url3', 'url4', 'url5'];
20
+ * await Promise.all(urls.map(url => limitedFetch(url)));
21
+ *
22
+ * @example
23
+ * const processItem = async (item) => {
24
+ * // Expensive async operation
25
+ * return await heavyComputation(item);
26
+ * };
27
+ *
28
+ * const limitedProcess = limitAsync(processItem, 2);
29
+ * const items = [1, 2, 3, 4, 5];
30
+ * // At most 2 items will be processed concurrently
31
+ * await Promise.all(items.map(item => limitedProcess(item)));
32
+ */
33
+ declare function limitAsync<F extends (...args: any[]) => Promise<any>>(callback: F, concurrency: number): F;
34
+ //#endregion
35
+ export { limitAsync };
@@ -0,0 +1,35 @@
1
+ //#region src/promise/limitAsync.d.ts
2
+ /**
3
+ * Wraps an async function to limit the number of concurrent executions.
4
+ *
5
+ * This function creates a wrapper around an async callback that ensures at most
6
+ * `concurrency` number of executions can run simultaneously. Additional calls will
7
+ * wait until a slot becomes available.
8
+ *
9
+ * @template F - The type of the async function to wrap.
10
+ * @param callback The async function to wrap with concurrency control.
11
+ * @param concurrency Maximum number of concurrent executions allowed.
12
+ * @returns A wrapped version of the callback with concurrency limiting.
13
+ * @example
14
+ * const limitedFetch = limitAsync(async (url) => {
15
+ * return await fetch(url);
16
+ * }, 3);
17
+ *
18
+ * // Only 3 fetches will run concurrently
19
+ * const urls = ['url1', 'url2', 'url3', 'url4', 'url5'];
20
+ * await Promise.all(urls.map(url => limitedFetch(url)));
21
+ *
22
+ * @example
23
+ * const processItem = async (item) => {
24
+ * // Expensive async operation
25
+ * return await heavyComputation(item);
26
+ * };
27
+ *
28
+ * const limitedProcess = limitAsync(processItem, 2);
29
+ * const items = [1, 2, 3, 4, 5];
30
+ * // At most 2 items will be processed concurrently
31
+ * await Promise.all(items.map(item => limitedProcess(item)));
32
+ */
33
+ declare function limitAsync<F extends (...args: any[]) => Promise<any>>(callback: F, concurrency: number): F;
34
+ //#endregion
35
+ export { limitAsync };
@@ -0,0 +1,46 @@
1
+ const require_semaphore = require("./semaphore.js");
2
+ //#region src/promise/limitAsync.ts
3
+ /**
4
+ * Wraps an async function to limit the number of concurrent executions.
5
+ *
6
+ * This function creates a wrapper around an async callback that ensures at most
7
+ * `concurrency` number of executions can run simultaneously. Additional calls will
8
+ * wait until a slot becomes available.
9
+ *
10
+ * @template F - The type of the async function to wrap.
11
+ * @param callback The async function to wrap with concurrency control.
12
+ * @param concurrency Maximum number of concurrent executions allowed.
13
+ * @returns A wrapped version of the callback with concurrency limiting.
14
+ * @example
15
+ * const limitedFetch = limitAsync(async (url) => {
16
+ * return await fetch(url);
17
+ * }, 3);
18
+ *
19
+ * // Only 3 fetches will run concurrently
20
+ * const urls = ['url1', 'url2', 'url3', 'url4', 'url5'];
21
+ * await Promise.all(urls.map(url => limitedFetch(url)));
22
+ *
23
+ * @example
24
+ * const processItem = async (item) => {
25
+ * // Expensive async operation
26
+ * return await heavyComputation(item);
27
+ * };
28
+ *
29
+ * const limitedProcess = limitAsync(processItem, 2);
30
+ * const items = [1, 2, 3, 4, 5];
31
+ * // At most 2 items will be processed concurrently
32
+ * await Promise.all(items.map(item => limitedProcess(item)));
33
+ */
34
+ function limitAsync(callback, concurrency) {
35
+ const semaphore = new require_semaphore.Semaphore(concurrency);
36
+ return async function(...args) {
37
+ try {
38
+ await semaphore.acquire();
39
+ return await callback.apply(this, args);
40
+ } finally {
41
+ semaphore.release();
42
+ }
43
+ };
44
+ }
45
+ //#endregion
46
+ exports.limitAsync = limitAsync;
@@ -0,0 +1,46 @@
1
+ import { Semaphore } from "./semaphore.mjs";
2
+ //#region src/promise/limitAsync.ts
3
+ /**
4
+ * Wraps an async function to limit the number of concurrent executions.
5
+ *
6
+ * This function creates a wrapper around an async callback that ensures at most
7
+ * `concurrency` number of executions can run simultaneously. Additional calls will
8
+ * wait until a slot becomes available.
9
+ *
10
+ * @template F - The type of the async function to wrap.
11
+ * @param callback The async function to wrap with concurrency control.
12
+ * @param concurrency Maximum number of concurrent executions allowed.
13
+ * @returns A wrapped version of the callback with concurrency limiting.
14
+ * @example
15
+ * const limitedFetch = limitAsync(async (url) => {
16
+ * return await fetch(url);
17
+ * }, 3);
18
+ *
19
+ * // Only 3 fetches will run concurrently
20
+ * const urls = ['url1', 'url2', 'url3', 'url4', 'url5'];
21
+ * await Promise.all(urls.map(url => limitedFetch(url)));
22
+ *
23
+ * @example
24
+ * const processItem = async (item) => {
25
+ * // Expensive async operation
26
+ * return await heavyComputation(item);
27
+ * };
28
+ *
29
+ * const limitedProcess = limitAsync(processItem, 2);
30
+ * const items = [1, 2, 3, 4, 5];
31
+ * // At most 2 items will be processed concurrently
32
+ * await Promise.all(items.map(item => limitedProcess(item)));
33
+ */
34
+ function limitAsync(callback, concurrency) {
35
+ const semaphore = new Semaphore(concurrency);
36
+ return async function(...args) {
37
+ try {
38
+ await semaphore.acquire();
39
+ return await callback.apply(this, args);
40
+ } finally {
41
+ semaphore.release();
42
+ }
43
+ };
44
+ }
45
+ //#endregion
46
+ export { limitAsync };
@@ -0,0 +1,37 @@
1
+ //#region src/string/dedent.d.ts
2
+ /**
3
+ * Removes common leading whitespace from each line of a multi-line string.
4
+ *
5
+ * This function can be used as a regular function, as a tagged template literal,
6
+ * or composed with another tag function (TC39 String.dedent proposal).
7
+ * It calculates the common indentation across all non-empty lines and removes it,
8
+ * preserving relative indentation differences between lines.
9
+ * The first and last lines are removed if they are empty or contain only whitespace.
10
+ *
11
+ * @param {string | TemplateStringsArray | Function} str - The string, template literal, or tag function to dedent.
12
+ * @param {unknown[]} values - The values to interpolate when used as a tagged template literal.
13
+ * @returns {string | Function} The dedented string, or a dedented tag function when composed.
14
+ *
15
+ * @example
16
+ * // As a regular function
17
+ * dedent(" hello\n world"); // "hello\nworld"
18
+ *
19
+ * @example
20
+ * // As a tagged template literal
21
+ * dedent`
22
+ * hello
23
+ * world
24
+ * `; // "hello\nworld"
25
+ *
26
+ * @example
27
+ * // Tag composition
28
+ * const html = dedent((strings, ...values) => strings.join(''));
29
+ * html`
30
+ * <div>Hello</div>
31
+ * `; // "<div>Hello</div>"
32
+ */
33
+ declare function dedent(str: string): string;
34
+ declare function dedent(str: TemplateStringsArray, ...values: unknown[]): string;
35
+ declare function dedent<T>(tagFn: (strings: TemplateStringsArray, ...values: unknown[]) => T): (strings: TemplateStringsArray, ...values: unknown[]) => T;
36
+ //#endregion
37
+ export { dedent };
@@ -0,0 +1,37 @@
1
+ //#region src/string/dedent.d.ts
2
+ /**
3
+ * Removes common leading whitespace from each line of a multi-line string.
4
+ *
5
+ * This function can be used as a regular function, as a tagged template literal,
6
+ * or composed with another tag function (TC39 String.dedent proposal).
7
+ * It calculates the common indentation across all non-empty lines and removes it,
8
+ * preserving relative indentation differences between lines.
9
+ * The first and last lines are removed if they are empty or contain only whitespace.
10
+ *
11
+ * @param {string | TemplateStringsArray | Function} str - The string, template literal, or tag function to dedent.
12
+ * @param {unknown[]} values - The values to interpolate when used as a tagged template literal.
13
+ * @returns {string | Function} The dedented string, or a dedented tag function when composed.
14
+ *
15
+ * @example
16
+ * // As a regular function
17
+ * dedent(" hello\n world"); // "hello\nworld"
18
+ *
19
+ * @example
20
+ * // As a tagged template literal
21
+ * dedent`
22
+ * hello
23
+ * world
24
+ * `; // "hello\nworld"
25
+ *
26
+ * @example
27
+ * // Tag composition
28
+ * const html = dedent((strings, ...values) => strings.join(''));
29
+ * html`
30
+ * <div>Hello</div>
31
+ * `; // "<div>Hello</div>"
32
+ */
33
+ declare function dedent(str: string): string;
34
+ declare function dedent(str: TemplateStringsArray, ...values: unknown[]): string;
35
+ declare function dedent<T>(tagFn: (strings: TemplateStringsArray, ...values: unknown[]) => T): (strings: TemplateStringsArray, ...values: unknown[]) => T;
36
+ //#endregion
37
+ export { dedent };
@@ -0,0 +1,38 @@
1
+ //#region src/string/dedent.ts
2
+ function dedent(str, ...values) {
3
+ switch (typeof str) {
4
+ case "function": return function(strings, ...args) {
5
+ return str(dedentTemplateStringsArray(strings), ...args);
6
+ };
7
+ case "string": return dedentImpl(str);
8
+ default: {
9
+ let text = str[0];
10
+ for (let i = 0; i < values.length; i++) text += String(values[i]) + str[i + 1];
11
+ return dedentImpl(text);
12
+ }
13
+ }
14
+ }
15
+ function dedentTemplateStringsArray(strings) {
16
+ const parts = dedentImpl(strings.join("\0")).split("\0");
17
+ return Object.assign(parts, { raw: parts });
18
+ }
19
+ function dedentImpl(text) {
20
+ text = text.replace(/\r\n/g, "\n");
21
+ const lines = text.split("\n");
22
+ if (lines.length > 0 && lines[0].trim() === "") lines.shift();
23
+ if (lines.length > 0 && lines[lines.length - 1].trim() === "") lines.pop();
24
+ let commonIndent = Infinity;
25
+ for (let i = 0; i < lines.length; i++) {
26
+ const line = lines[i];
27
+ if (line.trim() === "") continue;
28
+ let indent = 0;
29
+ while (indent < line.length && (line[indent] === " " || line[indent] === " ")) indent++;
30
+ if (indent < commonIndent) commonIndent = indent;
31
+ }
32
+ if (commonIndent === Infinity) return "";
33
+ for (let i = 0; i < lines.length; i++) if (lines[i].trim() === "") lines[i] = "";
34
+ else lines[i] = lines[i].slice(commonIndent);
35
+ return lines.join("\n");
36
+ }
37
+ //#endregion
38
+ exports.dedent = dedent;
@@ -0,0 +1,38 @@
1
+ //#region src/string/dedent.ts
2
+ function dedent(str, ...values) {
3
+ switch (typeof str) {
4
+ case "function": return function(strings, ...args) {
5
+ return str(dedentTemplateStringsArray(strings), ...args);
6
+ };
7
+ case "string": return dedentImpl(str);
8
+ default: {
9
+ let text = str[0];
10
+ for (let i = 0; i < values.length; i++) text += String(values[i]) + str[i + 1];
11
+ return dedentImpl(text);
12
+ }
13
+ }
14
+ }
15
+ function dedentTemplateStringsArray(strings) {
16
+ const parts = dedentImpl(strings.join("\0")).split("\0");
17
+ return Object.assign(parts, { raw: parts });
18
+ }
19
+ function dedentImpl(text) {
20
+ text = text.replace(/\r\n/g, "\n");
21
+ const lines = text.split("\n");
22
+ if (lines.length > 0 && lines[0].trim() === "") lines.shift();
23
+ if (lines.length > 0 && lines[lines.length - 1].trim() === "") lines.pop();
24
+ let commonIndent = Infinity;
25
+ for (let i = 0; i < lines.length; i++) {
26
+ const line = lines[i];
27
+ if (line.trim() === "") continue;
28
+ let indent = 0;
29
+ while (indent < line.length && (line[indent] === " " || line[indent] === " ")) indent++;
30
+ if (indent < commonIndent) commonIndent = indent;
31
+ }
32
+ if (commonIndent === Infinity) return "";
33
+ for (let i = 0; i < lines.length; i++) if (lines[i].trim() === "") lines[i] = "";
34
+ else lines[i] = lines[i].slice(commonIndent);
35
+ return lines.join("\n");
36
+ }
37
+ //#endregion
38
+ export { dedent };
@@ -2,6 +2,7 @@ import { camelCase } from "./camelCase.mjs";
2
2
  import { capitalize } from "./capitalize.mjs";
3
3
  import { constantCase } from "./constantCase.mjs";
4
4
  import { deburr } from "./deburr.mjs";
5
+ import { dedent } from "./dedent.mjs";
5
6
  import { escape } from "./escape.mjs";
6
7
  import { escapeRegExp } from "./escapeRegExp.mjs";
7
8
  import { kebabCase } from "./kebabCase.mjs";
@@ -19,4 +20,4 @@ import { unescape } from "./unescape.mjs";
19
20
  import { upperCase } from "./upperCase.mjs";
20
21
  import { upperFirst } from "./upperFirst.mjs";
21
22
  import { words } from "./words.mjs";
22
- export { camelCase, capitalize, constantCase, deburr, escape, escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, pascalCase, reverseString, snakeCase, startCase, trim, trimEnd, trimStart, unescape, upperCase, upperFirst, words };
23
+ export { camelCase, capitalize, constantCase, deburr, dedent, escape, escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, pascalCase, reverseString, snakeCase, startCase, trim, trimEnd, trimStart, unescape, upperCase, upperFirst, words };
@@ -2,6 +2,7 @@ import { camelCase } from "./camelCase.js";
2
2
  import { capitalize } from "./capitalize.js";
3
3
  import { constantCase } from "./constantCase.js";
4
4
  import { deburr } from "./deburr.js";
5
+ import { dedent } from "./dedent.js";
5
6
  import { escape } from "./escape.js";
6
7
  import { escapeRegExp } from "./escapeRegExp.js";
7
8
  import { kebabCase } from "./kebabCase.js";
@@ -19,4 +20,4 @@ import { unescape } from "./unescape.js";
19
20
  import { upperCase } from "./upperCase.js";
20
21
  import { upperFirst } from "./upperFirst.js";
21
22
  import { words } from "./words.js";
22
- export { camelCase, capitalize, constantCase, deburr, escape, escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, pascalCase, reverseString, snakeCase, startCase, trim, trimEnd, trimStart, unescape, upperCase, upperFirst, words };
23
+ export { camelCase, capitalize, constantCase, deburr, dedent, escape, escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, pascalCase, reverseString, snakeCase, startCase, trim, trimEnd, trimStart, unescape, upperCase, upperFirst, words };
@@ -2,16 +2,17 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_capitalize = require("./capitalize.js");
3
3
  const require_words = require("./words.js");
4
4
  const require_camelCase = require("./camelCase.js");
5
- const require_snakeCase = require("./snakeCase.js");
6
5
  const require_constantCase = require("./constantCase.js");
6
+ const require_kebabCase = require("./kebabCase.js");
7
+ const require_pascalCase = require("./pascalCase.js");
8
+ const require_snakeCase = require("./snakeCase.js");
7
9
  const require_deburr = require("./deburr.js");
10
+ const require_dedent = require("./dedent.js");
8
11
  const require_escape = require("./escape.js");
9
12
  const require_escapeRegExp = require("./escapeRegExp.js");
10
- const require_kebabCase = require("./kebabCase.js");
11
13
  const require_lowerCase = require("./lowerCase.js");
12
14
  const require_lowerFirst = require("./lowerFirst.js");
13
15
  const require_pad = require("./pad.js");
14
- const require_pascalCase = require("./pascalCase.js");
15
16
  const require_reverseString = require("./reverseString.js");
16
17
  const require_startCase = require("./startCase.js");
17
18
  const require_trimEnd = require("./trimEnd.js");
@@ -24,6 +25,7 @@ exports.camelCase = require_camelCase.camelCase;
24
25
  exports.capitalize = require_capitalize.capitalize;
25
26
  exports.constantCase = require_constantCase.constantCase;
26
27
  exports.deburr = require_deburr.deburr;
28
+ exports.dedent = require_dedent.dedent;
27
29
  exports.escape = require_escape.escape;
28
30
  exports.escapeRegExp = require_escapeRegExp.escapeRegExp;
29
31
  exports.kebabCase = require_kebabCase.kebabCase;
@@ -1,16 +1,17 @@
1
1
  import { capitalize } from "./capitalize.mjs";
2
2
  import { words } from "./words.mjs";
3
3
  import { camelCase } from "./camelCase.mjs";
4
- import { snakeCase } from "./snakeCase.mjs";
5
4
  import { constantCase } from "./constantCase.mjs";
5
+ import { kebabCase } from "./kebabCase.mjs";
6
+ import { pascalCase } from "./pascalCase.mjs";
7
+ import { snakeCase } from "./snakeCase.mjs";
6
8
  import { deburr } from "./deburr.mjs";
9
+ import { dedent } from "./dedent.mjs";
7
10
  import { escape } from "./escape.mjs";
8
11
  import { escapeRegExp } from "./escapeRegExp.mjs";
9
- import { kebabCase } from "./kebabCase.mjs";
10
12
  import { lowerCase } from "./lowerCase.mjs";
11
13
  import { lowerFirst } from "./lowerFirst.mjs";
12
14
  import { pad } from "./pad.mjs";
13
- import { pascalCase } from "./pascalCase.mjs";
14
15
  import { reverseString } from "./reverseString.mjs";
15
16
  import { startCase } from "./startCase.mjs";
16
17
  import { trimEnd } from "./trimEnd.mjs";
@@ -19,4 +20,4 @@ import { trim } from "./trim.mjs";
19
20
  import { unescape } from "./unescape.mjs";
20
21
  import { upperCase } from "./upperCase.mjs";
21
22
  import { upperFirst } from "./upperFirst.mjs";
22
- export { camelCase, capitalize, constantCase, deburr, escape, escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, pascalCase, reverseString, snakeCase, startCase, trim, trimEnd, trimStart, unescape, upperCase, upperFirst, words };
23
+ export { camelCase, capitalize, constantCase, deburr, dedent, escape, escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, pascalCase, reverseString, snakeCase, startCase, trim, trimEnd, trimStart, unescape, upperCase, upperFirst, words };