@ls-stack/utils 3.65.0 → 3.67.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 (336) hide show
  1. package/dist/{arrayUtils.d.cts → arrayUtils.d.mts} +24 -23
  2. package/dist/arrayUtils.mjs +249 -0
  3. package/dist/assertions-qMxfVhSu.mjs +207 -0
  4. package/dist/{assertions.d.ts → assertions.d.mts} +4 -3
  5. package/dist/assertions.mjs +3 -0
  6. package/dist/asyncQueue.d.mts +497 -0
  7. package/dist/asyncQueue.mjs +757 -0
  8. package/dist/{awaitDebounce.d.cts → awaitDebounce.d.mts} +11 -6
  9. package/dist/awaitDebounce.mjs +54 -0
  10. package/dist/{cache.d.ts → cache.d.mts} +76 -68
  11. package/dist/cache.mjs +355 -0
  12. package/dist/castValues-DfICShCc.mjs +19 -0
  13. package/dist/{castValues.d.cts → castValues.d.mts} +3 -2
  14. package/dist/castValues.mjs +3 -0
  15. package/dist/{concurrentCalls.d.ts → concurrentCalls.d.mts} +74 -65
  16. package/dist/concurrentCalls.mjs +295 -0
  17. package/dist/consoleFmt.d.mts +55 -0
  18. package/dist/consoleFmt.mjs +63 -0
  19. package/dist/conversions-DTmwEMIu.mjs +12 -0
  20. package/dist/conversions.d.mts +4 -0
  21. package/dist/conversions.mjs +3 -0
  22. package/dist/createThrottleController.d.mts +18 -0
  23. package/dist/createThrottleController.mjs +40 -0
  24. package/dist/debounce.d.mts +47 -0
  25. package/dist/debounce.mjs +117 -0
  26. package/dist/dedent.d.mts +74 -0
  27. package/dist/dedent.mjs +80 -0
  28. package/dist/deepEqual-C7EZEixx.mjs +78 -0
  29. package/dist/{deepEqual.d.cts → deepEqual.d.mts} +3 -2
  30. package/dist/deepEqual.mjs +3 -0
  31. package/dist/{deepReplaceValues.d.cts → deepReplaceValues.d.mts} +4 -3
  32. package/dist/deepReplaceValues.mjs +61 -0
  33. package/dist/diffParser.d.mts +79 -0
  34. package/dist/diffParser.mjs +424 -0
  35. package/dist/enhancedMap.d.mts +21 -0
  36. package/dist/enhancedMap.mjs +69 -0
  37. package/dist/exhaustiveMatch.d.mts +10 -0
  38. package/dist/exhaustiveMatch.mjs +48 -0
  39. package/dist/{filterObjectOrArrayKeys.d.cts → filterObjectOrArrayKeys.d.mts} +15 -8
  40. package/dist/filterObjectOrArrayKeys.mjs +497 -0
  41. package/dist/{getAutoIncrementId.d.cts → getAutoIncrementId.d.mts} +9 -5
  42. package/dist/getAutoIncrementId.mjs +53 -0
  43. package/dist/{getCompositeKey.d.cts → getCompositeKey.d.mts} +3 -2
  44. package/dist/getCompositeKey.mjs +50 -0
  45. package/dist/{getValueStableKey.d.cts → getValueStableKey.d.mts} +5 -3
  46. package/dist/getValueStableKey.mjs +17 -0
  47. package/dist/{hash.d.cts → hash.d.mts} +3 -2
  48. package/dist/hash.mjs +28 -0
  49. package/dist/interpolate.d.mts +17 -0
  50. package/dist/interpolate.mjs +28 -0
  51. package/dist/{iteratorUtils.d.cts → iteratorUtils.d.mts} +5 -4
  52. package/dist/iteratorUtils.mjs +39 -0
  53. package/dist/keepPrevIfUnchanged.d.mts +12 -0
  54. package/dist/keepPrevIfUnchanged.mjs +9 -0
  55. package/dist/keyedMap.d.mts +76 -0
  56. package/dist/keyedMap.mjs +139 -0
  57. package/dist/keyedSet.d.mts +77 -0
  58. package/dist/keyedSet.mjs +129 -0
  59. package/dist/{levenshtein.d.cts → levenshtein.d.mts} +3 -2
  60. package/dist/levenshtein.mjs +121 -0
  61. package/dist/main.d.mts +4 -0
  62. package/dist/main.mjs +7 -0
  63. package/dist/matchPath.d.mts +50 -0
  64. package/dist/matchPath.mjs +81 -0
  65. package/dist/mathUtils-BDP1lM_z.mjs +81 -0
  66. package/dist/{mathUtils.d.cts → mathUtils.d.mts} +3 -2
  67. package/dist/mathUtils.mjs +3 -0
  68. package/dist/{mutationUtils.d.cts → mutationUtils.d.mts} +6 -5
  69. package/dist/mutationUtils.mjs +44 -0
  70. package/dist/{objUtils.d.ts → objUtils.d.mts} +8 -6
  71. package/dist/objUtils.mjs +115 -0
  72. package/dist/parallelAsyncCalls.d.mts +83 -0
  73. package/dist/parallelAsyncCalls.mjs +121 -0
  74. package/dist/partialEqual.d.mts +139 -0
  75. package/dist/partialEqual.mjs +1055 -0
  76. package/dist/promiseUtils.d.mts +9 -0
  77. package/dist/promiseUtils.mjs +17 -0
  78. package/dist/regexUtils.d.mts +18 -0
  79. package/dist/regexUtils.mjs +34 -0
  80. package/dist/{retryOnError.d.cts → retryOnError.d.mts} +38 -37
  81. package/dist/retryOnError.mjs +91 -0
  82. package/dist/{runShellCmd.d.ts → runShellCmd.d.mts} +24 -15
  83. package/dist/runShellCmd.mjs +151 -0
  84. package/dist/{safeJson.d.cts → safeJson.d.mts} +3 -2
  85. package/dist/safeJson.mjs +30 -0
  86. package/dist/{saferTyping.d.cts → saferTyping.d.mts} +4 -3
  87. package/dist/saferTyping.mjs +45 -0
  88. package/dist/serializeXML.d.mts +23 -0
  89. package/dist/serializeXML.mjs +74 -0
  90. package/dist/{shallowEqual.d.cts → shallowEqual.d.mts} +3 -2
  91. package/dist/shallowEqual.mjs +54 -0
  92. package/dist/sleep.d.mts +4 -0
  93. package/dist/sleep.mjs +7 -0
  94. package/dist/stringUtils-DjhWOiYn.mjs +113 -0
  95. package/dist/{stringUtils.d.cts → stringUtils.d.mts} +3 -2
  96. package/dist/stringUtils.mjs +3 -0
  97. package/dist/{testUtils.d.ts → testUtils.d.mts} +83 -52
  98. package/dist/testUtils.mjs +310 -0
  99. package/dist/{throttle.d.ts → throttle.d.mts} +18 -17
  100. package/dist/throttle.mjs +102 -0
  101. package/dist/time-sr2lhQRw.mjs +67 -0
  102. package/dist/{time.d.ts → time.d.mts} +8 -7
  103. package/dist/time.mjs +3 -0
  104. package/dist/{timers.d.cts → timers.d.mts} +22 -13
  105. package/dist/timers.mjs +220 -0
  106. package/dist/{tsResult.d.cts → tsResult.d.mts} +52 -48
  107. package/dist/tsResult.mjs +142 -0
  108. package/dist/typeGuards-B1mzA-Rz.mjs +128 -0
  109. package/dist/{typeGuards.d.cts → typeGuards.d.mts} +3 -2
  110. package/dist/typeGuards.mjs +3 -0
  111. package/dist/{typeUtils.d.ts → typeUtils.d.mts} +13 -34
  112. package/dist/typeUtils.mjs +1 -0
  113. package/dist/{typedStrings.d.cts → typedStrings.d.mts} +5 -4
  114. package/dist/typedStrings.mjs +131 -0
  115. package/dist/typingFnUtils-Bb8drgKF.mjs +101 -0
  116. package/dist/{typingFnUtils.d.cts → typingFnUtils.d.mts} +13 -22
  117. package/dist/typingFnUtils.mjs +3 -0
  118. package/dist/{typingTestUtils.d.cts → typingTestUtils.d.mts} +11 -15
  119. package/dist/typingTestUtils.mjs +80 -0
  120. package/dist/typingUtils.d.mts +20 -0
  121. package/dist/typingUtils.mjs +1 -0
  122. package/dist/yamlStringify.d.mts +17 -0
  123. package/dist/yamlStringify.mjs +189 -0
  124. package/package.json +65 -242
  125. package/dist/arrayUtils.cjs +0 -229
  126. package/dist/arrayUtils.d.ts +0 -171
  127. package/dist/arrayUtils.js +0 -42
  128. package/dist/assertions.cjs +0 -107
  129. package/dist/assertions.d.cts +0 -192
  130. package/dist/assertions.js +0 -25
  131. package/dist/asyncQueue.cjs +0 -672
  132. package/dist/asyncQueue.d.cts +0 -488
  133. package/dist/asyncQueue.d.ts +0 -488
  134. package/dist/asyncQueue.js +0 -631
  135. package/dist/awaitDebounce.cjs +0 -106
  136. package/dist/awaitDebounce.d.ts +0 -41
  137. package/dist/awaitDebounce.js +0 -28
  138. package/dist/cache.cjs +0 -367
  139. package/dist/cache.d.cts +0 -228
  140. package/dist/cache.js +0 -19
  141. package/dist/castValues.cjs +0 -50
  142. package/dist/castValues.d.ts +0 -4
  143. package/dist/castValues.js +0 -8
  144. package/dist/chunk-5DZT3Z5Z.js +0 -8
  145. package/dist/chunk-6FBIEPWU.js +0 -96
  146. package/dist/chunk-6FIBVC2P.js +0 -56
  147. package/dist/chunk-7CQPOM5I.js +0 -100
  148. package/dist/chunk-B6DNOZCP.js +0 -369
  149. package/dist/chunk-BM4PYVOX.js +0 -109
  150. package/dist/chunk-C2SVCIWE.js +0 -57
  151. package/dist/chunk-CCUPDGSZ.js +0 -132
  152. package/dist/chunk-DBOWTYR4.js +0 -49
  153. package/dist/chunk-DFXNVEH6.js +0 -14
  154. package/dist/chunk-DX2524CZ.js +0 -314
  155. package/dist/chunk-GMJTLFM6.js +0 -60
  156. package/dist/chunk-IATIXMCE.js +0 -20
  157. package/dist/chunk-II4R3VVX.js +0 -25
  158. package/dist/chunk-JF2MDHOJ.js +0 -40
  159. package/dist/chunk-JQFUKJU5.js +0 -71
  160. package/dist/chunk-MI4UE2PQ.js +0 -561
  161. package/dist/chunk-PUKVXYYL.js +0 -52
  162. package/dist/chunk-QQS7I7ZL.js +0 -16
  163. package/dist/chunk-VAAMRG4K.js +0 -20
  164. package/dist/chunk-WFQJUJTC.js +0 -182
  165. package/dist/chunk-ZXIKIA5B.js +0 -178
  166. package/dist/concurrentCalls.cjs +0 -406
  167. package/dist/concurrentCalls.d.cts +0 -116
  168. package/dist/concurrentCalls.js +0 -346
  169. package/dist/consoleFmt.cjs +0 -85
  170. package/dist/consoleFmt.d.cts +0 -54
  171. package/dist/consoleFmt.d.ts +0 -54
  172. package/dist/consoleFmt.js +0 -60
  173. package/dist/conversions.cjs +0 -44
  174. package/dist/conversions.d.cts +0 -3
  175. package/dist/conversions.d.ts +0 -3
  176. package/dist/conversions.js +0 -6
  177. package/dist/createThrottleController.cjs +0 -193
  178. package/dist/createThrottleController.d.cts +0 -13
  179. package/dist/createThrottleController.d.ts +0 -13
  180. package/dist/createThrottleController.js +0 -61
  181. package/dist/debounce.cjs +0 -157
  182. package/dist/debounce.d.cts +0 -46
  183. package/dist/debounce.d.ts +0 -46
  184. package/dist/debounce.js +0 -8
  185. package/dist/dedent.cjs +0 -104
  186. package/dist/dedent.d.cts +0 -73
  187. package/dist/dedent.d.ts +0 -73
  188. package/dist/dedent.js +0 -79
  189. package/dist/deepEqual.cjs +0 -96
  190. package/dist/deepEqual.d.ts +0 -21
  191. package/dist/deepEqual.js +0 -8
  192. package/dist/deepReplaceValues.cjs +0 -87
  193. package/dist/deepReplaceValues.d.ts +0 -27
  194. package/dist/deepReplaceValues.js +0 -7
  195. package/dist/enhancedMap.cjs +0 -131
  196. package/dist/enhancedMap.d.cts +0 -20
  197. package/dist/enhancedMap.d.ts +0 -20
  198. package/dist/enhancedMap.js +0 -10
  199. package/dist/exhaustiveMatch.cjs +0 -66
  200. package/dist/exhaustiveMatch.d.cts +0 -9
  201. package/dist/exhaustiveMatch.d.ts +0 -9
  202. package/dist/exhaustiveMatch.js +0 -40
  203. package/dist/filterObjectOrArrayKeys.cjs +0 -619
  204. package/dist/filterObjectOrArrayKeys.d.ts +0 -88
  205. package/dist/filterObjectOrArrayKeys.js +0 -9
  206. package/dist/getAutoIncrementId.cjs +0 -44
  207. package/dist/getAutoIncrementId.d.ts +0 -46
  208. package/dist/getAutoIncrementId.js +0 -18
  209. package/dist/getCompositeKey.cjs +0 -86
  210. package/dist/getCompositeKey.d.ts +0 -11
  211. package/dist/getCompositeKey.js +0 -8
  212. package/dist/getValueStableKey.cjs +0 -89
  213. package/dist/getValueStableKey.d.ts +0 -15
  214. package/dist/getValueStableKey.js +0 -11
  215. package/dist/hash.cjs +0 -57
  216. package/dist/hash.d.ts +0 -7
  217. package/dist/hash.js +0 -32
  218. package/dist/interpolate.cjs +0 -88
  219. package/dist/interpolate.d.cts +0 -11
  220. package/dist/interpolate.d.ts +0 -11
  221. package/dist/interpolate.js +0 -46
  222. package/dist/iteratorUtils.cjs +0 -73
  223. package/dist/iteratorUtils.d.ts +0 -10
  224. package/dist/iteratorUtils.js +0 -44
  225. package/dist/keepPrevIfUnchanged.cjs +0 -102
  226. package/dist/keepPrevIfUnchanged.d.cts +0 -7
  227. package/dist/keepPrevIfUnchanged.d.ts +0 -7
  228. package/dist/keepPrevIfUnchanged.js +0 -7
  229. package/dist/keyedMap.cjs +0 -224
  230. package/dist/keyedMap.d.cts +0 -75
  231. package/dist/keyedMap.d.ts +0 -75
  232. package/dist/keyedMap.js +0 -145
  233. package/dist/keyedSet.cjs +0 -205
  234. package/dist/keyedSet.d.cts +0 -76
  235. package/dist/keyedSet.d.ts +0 -76
  236. package/dist/keyedSet.js +0 -126
  237. package/dist/levenshtein.cjs +0 -180
  238. package/dist/levenshtein.d.ts +0 -5
  239. package/dist/levenshtein.js +0 -153
  240. package/dist/main.cjs +0 -32
  241. package/dist/main.d.cts +0 -3
  242. package/dist/main.d.ts +0 -3
  243. package/dist/main.js +0 -7
  244. package/dist/matchPath.cjs +0 -155
  245. package/dist/matchPath.d.cts +0 -53
  246. package/dist/matchPath.d.ts +0 -53
  247. package/dist/matchPath.js +0 -108
  248. package/dist/mathUtils.cjs +0 -81
  249. package/dist/mathUtils.d.ts +0 -54
  250. package/dist/mathUtils.js +0 -22
  251. package/dist/mutationUtils.cjs +0 -153
  252. package/dist/mutationUtils.d.ts +0 -15
  253. package/dist/mutationUtils.js +0 -55
  254. package/dist/objUtils.cjs +0 -242
  255. package/dist/objUtils.d.cts +0 -28
  256. package/dist/objUtils.js +0 -38
  257. package/dist/parallelAsyncCalls.cjs +0 -162
  258. package/dist/parallelAsyncCalls.d.cts +0 -82
  259. package/dist/parallelAsyncCalls.d.ts +0 -82
  260. package/dist/parallelAsyncCalls.js +0 -126
  261. package/dist/partialEqual.cjs +0 -1196
  262. package/dist/partialEqual.d.cts +0 -141
  263. package/dist/partialEqual.d.ts +0 -141
  264. package/dist/partialEqual.js +0 -1168
  265. package/dist/promiseUtils.cjs +0 -38
  266. package/dist/promiseUtils.d.cts +0 -8
  267. package/dist/promiseUtils.d.ts +0 -8
  268. package/dist/promiseUtils.js +0 -6
  269. package/dist/regexUtils.cjs +0 -60
  270. package/dist/regexUtils.d.cts +0 -17
  271. package/dist/regexUtils.d.ts +0 -17
  272. package/dist/regexUtils.js +0 -33
  273. package/dist/retryOnError.cjs +0 -130
  274. package/dist/retryOnError.d.ts +0 -83
  275. package/dist/retryOnError.js +0 -101
  276. package/dist/runShellCmd.cjs +0 -127
  277. package/dist/runShellCmd.d.cts +0 -90
  278. package/dist/runShellCmd.js +0 -98
  279. package/dist/safeJson.cjs +0 -45
  280. package/dist/safeJson.d.ts +0 -16
  281. package/dist/safeJson.js +0 -8
  282. package/dist/saferTyping.cjs +0 -52
  283. package/dist/saferTyping.d.ts +0 -47
  284. package/dist/saferTyping.js +0 -23
  285. package/dist/serializeXML.cjs +0 -154
  286. package/dist/serializeXML.d.cts +0 -22
  287. package/dist/serializeXML.d.ts +0 -22
  288. package/dist/serializeXML.js +0 -116
  289. package/dist/shallowEqual.cjs +0 -88
  290. package/dist/shallowEqual.d.ts +0 -4
  291. package/dist/shallowEqual.js +0 -63
  292. package/dist/sleep.cjs +0 -32
  293. package/dist/sleep.d.cts +0 -3
  294. package/dist/sleep.d.ts +0 -3
  295. package/dist/sleep.js +0 -6
  296. package/dist/stringUtils.cjs +0 -155
  297. package/dist/stringUtils.d.ts +0 -55
  298. package/dist/stringUtils.js +0 -50
  299. package/dist/testUtils.cjs +0 -1490
  300. package/dist/testUtils.d.cts +0 -133
  301. package/dist/testUtils.js +0 -359
  302. package/dist/throttle.cjs +0 -282
  303. package/dist/throttle.d.cts +0 -98
  304. package/dist/throttle.js +0 -38
  305. package/dist/time.cjs +0 -152
  306. package/dist/time.d.cts +0 -25
  307. package/dist/time.js +0 -38
  308. package/dist/timers.cjs +0 -194
  309. package/dist/timers.d.ts +0 -121
  310. package/dist/timers.js +0 -156
  311. package/dist/tsResult.cjs +0 -226
  312. package/dist/tsResult.d.ts +0 -114
  313. package/dist/tsResult.js +0 -180
  314. package/dist/typeGuards.cjs +0 -70
  315. package/dist/typeGuards.d.ts +0 -111
  316. package/dist/typeGuards.js +0 -18
  317. package/dist/typeUtils.cjs +0 -18
  318. package/dist/typeUtils.d.cts +0 -61
  319. package/dist/typeUtils.js +0 -0
  320. package/dist/typedStrings.cjs +0 -90
  321. package/dist/typedStrings.d.ts +0 -163
  322. package/dist/typedStrings.js +0 -57
  323. package/dist/typingFnUtils.cjs +0 -96
  324. package/dist/typingFnUtils.d.ts +0 -100
  325. package/dist/typingFnUtils.js +0 -30
  326. package/dist/typingTestUtils.cjs +0 -52
  327. package/dist/typingTestUtils.d.ts +0 -79
  328. package/dist/typingTestUtils.js +0 -27
  329. package/dist/typingUtils.cjs +0 -18
  330. package/dist/typingUtils.d.cts +0 -35
  331. package/dist/typingUtils.d.ts +0 -35
  332. package/dist/typingUtils.js +0 -0
  333. package/dist/yamlStringify.cjs +0 -423
  334. package/dist/yamlStringify.d.cts +0 -10
  335. package/dist/yamlStringify.d.ts +0 -10
  336. package/dist/yamlStringify.js +0 -9
@@ -0,0 +1,189 @@
1
+ import { a as isPlainObject, i as isObject } from "./typeGuards-B1mzA-Rz.mjs";
2
+ import { C as truncateString } from "./stringUtils-DjhWOiYn.mjs";
3
+ import { t as bytesToHumanReadable } from "./conversions-DTmwEMIu.mjs";
4
+
5
+ //#region src/yamlStringify.ts
6
+ function yamlStringify(obj, { maxLineLength = 100, showUndefined, maxDepth = 50, collapseObjects = false, addRootObjSpaces = "beforeAndAfter" } = {}) {
7
+ if (isObject(obj) || Array.isArray(obj) || typeof obj === "function") return `${stringifyValue(obj, "", maxLineLength, !!showUndefined, maxDepth, 0, collapseObjects, addRootObjSpaces, false)}\n`;
8
+ return JSON.stringify(obj) || "undefined";
9
+ }
10
+ function stringifyValue(value, indent, maxLineLength, showUndefined, maxDepth, depth, collapseObjects, addObjSpaces, isArrayItem) {
11
+ let result = "";
12
+ const childIndent = `${indent} `;
13
+ if (isPlainObject(value)) {
14
+ if (Object.keys(value).length === 0) return "{}";
15
+ if (collapseObjects && depth > 0) {
16
+ const entries = Object.entries(value).filter(([, val]) => val !== void 0 || showUndefined);
17
+ const isSimpleObject = entries.every(([, val]) => {
18
+ if (typeof val === "string") return !val.includes("'") && !val.includes("\"") && !val.includes("\\");
19
+ return typeof val === "number" || typeof val === "boolean" || val === null || val === void 0;
20
+ });
21
+ const shouldCollapse = isArrayItem ? entries.length > 1 : entries.length > 0;
22
+ if (isSimpleObject && shouldCollapse) {
23
+ let line = "{ ";
24
+ line += entries.map(([key, val]) => {
25
+ let valueStr;
26
+ if (typeof val === "string") if (val.includes("'") && !val.includes("\"")) valueStr = `"${val}"`;
27
+ else if (val.includes("\"") && !val.includes("'")) valueStr = `'${val}'`;
28
+ else if (val.includes("'") && val.includes("\"")) valueStr = `"${val.replace(/"/g, "\\\"")}"`;
29
+ else valueStr = `'${val}'`;
30
+ else valueStr = String(val);
31
+ return `${key}: ${valueStr}`;
32
+ }).join(", ");
33
+ line += " }";
34
+ if (line.length <= maxLineLength) return line;
35
+ }
36
+ }
37
+ let prevValue;
38
+ let afterSpaceWasAdded = false;
39
+ for (let [key, objVal] of Object.entries(value)) {
40
+ if (objVal === void 0 && !showUndefined) continue;
41
+ if (depth > maxDepth) objVal = `{max depth reached}`;
42
+ const normalizedValue$1 = normalizeValue(objVal);
43
+ if (normalizedValue$1 !== null) {
44
+ objVal = normalizedValue$1[1];
45
+ key = `${key}{${normalizedValue$1[0]}}`;
46
+ }
47
+ const valueString = stringifyValue(objVal, childIndent, maxLineLength, showUndefined, maxDepth, depth + 1, collapseObjects, addObjSpaces, false);
48
+ const willBeCollapsed = isObject(objVal) && (Object.keys(objVal).length === 0 || collapseObjects && depth + 1 > 0 && (() => {
49
+ const filteredEntries = Object.entries(objVal).filter(([, val]) => val !== void 0 || showUndefined);
50
+ return (isArrayItem ? filteredEntries.length > 1 : filteredEntries.length > 0) && filteredEntries.every(([, val]) => {
51
+ if (typeof val === "string") return !val.includes("'") && !val.includes("\"") && !val.includes("\\");
52
+ return typeof val === "number" || typeof val === "boolean" || val === null || val === void 0;
53
+ });
54
+ })());
55
+ const prevWasCollapsed = prevValue && isObject(prevValue) && (Object.keys(prevValue).length === 0 || collapseObjects && depth + 1 > 0 && (() => {
56
+ const filteredEntries = Object.entries(prevValue).filter(([, val]) => val !== void 0 || showUndefined);
57
+ return (isArrayItem ? filteredEntries.length > 1 : filteredEntries.length > 0) && filteredEntries.every(([, val]) => {
58
+ if (typeof val === "string") return !val.includes("'") && !val.includes("\"") && !val.includes("\\");
59
+ return typeof val === "number" || typeof val === "boolean" || val === null || val === void 0;
60
+ });
61
+ })());
62
+ if (!afterSpaceWasAdded && indent === "" && isObject(objVal) && !willBeCollapsed && prevValue && !prevWasCollapsed && (addObjSpaces === "before" || addObjSpaces === "beforeAndAfter")) result += "\n";
63
+ if (Array.isArray(objVal)) if (valueString.split("\n").length === 1 && !valueString.trim().startsWith("-")) result += `${indent}${key}: `;
64
+ else result += `${indent}${key}:\n`;
65
+ else if (isObject(objVal)) {
66
+ const isCollapsedObject = valueString.startsWith("{") && !valueString.includes("\n");
67
+ if (Object.keys(objVal).length === 0 || isCollapsedObject) result += `${indent}${key}: `;
68
+ else result += `${indent}${key}:\n`;
69
+ } else result += `${indent}${key}: `;
70
+ result += valueString;
71
+ result += "\n";
72
+ if (indent === "") {
73
+ const isCollapsedObject = valueString.startsWith("{") && !valueString.includes("\n") && valueString.length > 2;
74
+ if (isObject(objVal) && !isCollapsedObject) if (addObjSpaces === "after" || addObjSpaces === "beforeAndAfter") {
75
+ result += "\n";
76
+ afterSpaceWasAdded = true;
77
+ } else afterSpaceWasAdded = false;
78
+ }
79
+ prevValue = objVal;
80
+ }
81
+ return result.trimEnd();
82
+ }
83
+ if (Array.isArray(value)) {
84
+ let arrayWasAdded = false;
85
+ if (value.length === 0 || value.every((item) => typeof item === "string" || typeof item === "number" || typeof item === "boolean" || item === null || item === void 0)) {
86
+ let line = "";
87
+ line += `[`;
88
+ line += value.map((item) => {
89
+ let valueToUse = item;
90
+ if (depth > maxDepth) valueToUse = `{max depth reached}`;
91
+ if (typeof valueToUse === "string" && valueToUse.includes("\n")) valueToUse = valueToUse.replace(/\n/g, "\\n");
92
+ return stringifyValue(valueToUse, "", maxLineLength, showUndefined, maxDepth, depth + 1, collapseObjects, addObjSpaces, true);
93
+ }).join(", ");
94
+ line += "]";
95
+ if (line.length <= maxLineLength) {
96
+ result += line;
97
+ arrayWasAdded = true;
98
+ }
99
+ }
100
+ if (!arrayWasAdded) for (let item of value) {
101
+ if (depth > maxDepth) item = `{max depth reached}`;
102
+ result += `${indent}- `;
103
+ if (Array.isArray(item) || isObject(item)) {
104
+ let arrayString = stringifyValue(item, childIndent, maxLineLength, showUndefined, maxDepth, depth + 1, collapseObjects, addObjSpaces, true);
105
+ arrayString = arrayString.trimStart();
106
+ result += arrayString;
107
+ } else result += stringifyValue(item, childIndent, maxLineLength, showUndefined, maxDepth, depth + 1, collapseObjects, addObjSpaces, true);
108
+ result += "\n";
109
+ }
110
+ return result.trimEnd();
111
+ }
112
+ if (typeof value === "string") {
113
+ if (value.includes("\n")) {
114
+ const lines = value.split("\n");
115
+ for (const [i, line] of lines.entries()) if (i === 0) {
116
+ if (value.endsWith("\n")) result += `|`;
117
+ else result += `|-`;
118
+ result += `\n${indent}${line}\n`;
119
+ } else result += `${indent}${line}\n`;
120
+ } else if (value.includes("'") && !value.includes("\"")) result += `"${value}"`;
121
+ else if (value.includes("\"") && !value.includes("'")) result += `'${value}'`;
122
+ else if (value.includes("'") && value.includes("\"")) result += `"${value.replace(/"/g, "\\\"")}"`;
123
+ else result += `'${value}'`;
124
+ return result.trimEnd();
125
+ }
126
+ if (typeof value === "number" || typeof value === "boolean" || value === null || value === void 0) return String(value).trimEnd();
127
+ const normalizedValue = normalizeValue(value);
128
+ if (normalizedValue !== null) return stringifyValue({ [`${normalizedValue[0]}#`]: normalizedValue[1] }, indent, maxLineLength, showUndefined, maxDepth, depth + 1, collapseObjects, addObjSpaces, false);
129
+ return JSON.stringify(value);
130
+ }
131
+ function normalizeValue(value) {
132
+ if (value === null || isPlainObject(value) || Array.isArray(value)) return null;
133
+ if (value instanceof Map) {
134
+ const mapEntries = Array.from(value.entries());
135
+ let mapValue;
136
+ if (mapEntries.every(([key]) => typeof key === "string")) {
137
+ const mapObjValue = {};
138
+ for (const [key, val] of mapEntries) mapObjValue[key] = val;
139
+ mapValue = mapObjValue;
140
+ } else mapValue = mapEntries.map(([key, val]) => ({
141
+ key,
142
+ value: val
143
+ }));
144
+ return ["Map", mapValue];
145
+ }
146
+ if (value instanceof Set) return ["Set", Array.from(value)];
147
+ if (value instanceof Date) return ["Date", value.toISOString()];
148
+ if (value instanceof RegExp) return ["RegExp", value.toString()];
149
+ if (value instanceof Error) return ["Error", {
150
+ message: value.message,
151
+ name: value.name,
152
+ stack: value.stack
153
+ }];
154
+ if (value instanceof File) return ["File", {
155
+ name: value.name,
156
+ type: value.type,
157
+ lastModified: new Date(value.lastModified).toISOString(),
158
+ size: bytesToHumanReadable(value.size)
159
+ }];
160
+ if (typeof value === "object") {
161
+ if ("toJSON" in value && typeof value.toJSON === "function") return [value.constructor.name, value.toJSON()];
162
+ if ("toString" in value && typeof value.toString === "function") {
163
+ const stringValue = value.toString();
164
+ if (stringValue.toString() !== "[object Object]") return [value.constructor.name, stringValue];
165
+ }
166
+ const objectValue = { ...value };
167
+ const displayValue = {};
168
+ let addedKeys = 0;
169
+ for (const [key, item] of Object.entries(objectValue)) {
170
+ if (addedKeys > 4) {
171
+ displayValue["...and more properties"] = Object.keys(objectValue).length - 4;
172
+ break;
173
+ }
174
+ if (typeof item === "string" || typeof item === "number" || typeof item === "boolean" || item === null || item === void 0) {
175
+ displayValue[key] = item;
176
+ addedKeys++;
177
+ }
178
+ }
179
+ return [String(value.constructor.name), displayValue];
180
+ }
181
+ if (typeof value === "function") {
182
+ const functionString = value.toString();
183
+ return [`Function`, functionString.includes("\n") ? truncateString(functionString.split("\n").join(""), 40) : functionString];
184
+ }
185
+ return null;
186
+ }
187
+
188
+ //#endregion
189
+ export { yamlStringify };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ls-stack/utils",
3
3
  "description": "Universal TypeScript utilities for browser and Node.js",
4
- "version": "3.65.0",
4
+ "version": "3.67.0",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "dist",
@@ -12,246 +12,69 @@
12
12
  "author": "Lucas Santos",
13
13
  "type": "module",
14
14
  "sideEffects": false,
15
- "main": "./dist/main.cjs",
16
- "module": "./dist/main.js",
17
- "types": "./dist/main.d.ts",
15
+ "module": "./dist/main.mjs",
16
+ "types": "./dist/main.d.mts",
18
17
  "exports": {
19
- ".": {
20
- "import": "./dist/main.js",
21
- "require": "./dist/main.cjs"
22
- },
23
- "./__snapshots__": {
24
- "import": "./dist/__snapshots__.js",
25
- "require": "./dist/__snapshots__.cjs"
26
- },
27
- "./arrayUtils": {
28
- "import": "./dist/arrayUtils.js",
29
- "require": "./dist/arrayUtils.cjs"
30
- },
31
- "./assertions": {
32
- "import": "./dist/assertions.js",
33
- "require": "./dist/assertions.cjs"
34
- },
35
- "./asyncQueue": {
36
- "import": "./dist/asyncQueue.js",
37
- "require": "./dist/asyncQueue.cjs"
38
- },
39
- "./awaitDebounce": {
40
- "import": "./dist/awaitDebounce.js",
41
- "require": "./dist/awaitDebounce.cjs"
42
- },
43
- "./cache": {
44
- "import": "./dist/cache.js",
45
- "require": "./dist/cache.cjs"
46
- },
47
- "./castValues": {
48
- "import": "./dist/castValues.js",
49
- "require": "./dist/castValues.cjs"
50
- },
51
- "./concurrentCalls": {
52
- "import": "./dist/concurrentCalls.js",
53
- "require": "./dist/concurrentCalls.cjs"
54
- },
55
- "./consoleFmt": {
56
- "import": "./dist/consoleFmt.js",
57
- "require": "./dist/consoleFmt.cjs"
58
- },
59
- "./conversions": {
60
- "import": "./dist/conversions.js",
61
- "require": "./dist/conversions.cjs"
62
- },
63
- "./createThrottleController": {
64
- "import": "./dist/createThrottleController.js",
65
- "require": "./dist/createThrottleController.cjs"
66
- },
67
- "./debounce": {
68
- "import": "./dist/debounce.js",
69
- "require": "./dist/debounce.cjs"
70
- },
71
- "./dedent": {
72
- "import": "./dist/dedent.js",
73
- "require": "./dist/dedent.cjs"
74
- },
75
- "./deepEqual": {
76
- "import": "./dist/deepEqual.js",
77
- "require": "./dist/deepEqual.cjs"
78
- },
79
- "./deepReplaceValues": {
80
- "import": "./dist/deepReplaceValues.js",
81
- "require": "./dist/deepReplaceValues.cjs"
82
- },
83
- "./enhancedMap": {
84
- "import": "./dist/enhancedMap.js",
85
- "require": "./dist/enhancedMap.cjs"
86
- },
87
- "./exhaustiveMatch": {
88
- "import": "./dist/exhaustiveMatch.js",
89
- "require": "./dist/exhaustiveMatch.cjs"
90
- },
91
- "./filterObjectOrArrayKeys": {
92
- "import": "./dist/filterObjectOrArrayKeys.js",
93
- "require": "./dist/filterObjectOrArrayKeys.cjs"
94
- },
95
- "./getAutoIncrementId": {
96
- "import": "./dist/getAutoIncrementId.js",
97
- "require": "./dist/getAutoIncrementId.cjs"
98
- },
99
- "./getCompositeKey": {
100
- "import": "./dist/getCompositeKey.js",
101
- "require": "./dist/getCompositeKey.cjs"
102
- },
103
- "./getValueStableKey": {
104
- "import": "./dist/getValueStableKey.js",
105
- "require": "./dist/getValueStableKey.cjs"
106
- },
107
- "./hash": {
108
- "import": "./dist/hash.js",
109
- "require": "./dist/hash.cjs"
110
- },
111
- "./interpolate": {
112
- "import": "./dist/interpolate.js",
113
- "require": "./dist/interpolate.cjs"
114
- },
115
- "./iteratorUtils": {
116
- "import": "./dist/iteratorUtils.js",
117
- "require": "./dist/iteratorUtils.cjs"
118
- },
119
- "./keepPrevIfUnchanged": {
120
- "import": "./dist/keepPrevIfUnchanged.js",
121
- "require": "./dist/keepPrevIfUnchanged.cjs"
122
- },
123
- "./keyedMap": {
124
- "import": "./dist/keyedMap.js",
125
- "require": "./dist/keyedMap.cjs"
126
- },
127
- "./levenshtein": {
128
- "import": "./dist/levenshtein.js",
129
- "require": "./dist/levenshtein.cjs"
130
- },
131
- "./matchPath": {
132
- "import": "./dist/matchPath.js",
133
- "require": "./dist/matchPath.cjs"
134
- },
135
- "./mathUtils": {
136
- "import": "./dist/mathUtils.js",
137
- "require": "./dist/mathUtils.cjs"
138
- },
139
- "./mutationUtils": {
140
- "import": "./dist/mutationUtils.js",
141
- "require": "./dist/mutationUtils.cjs"
142
- },
143
- "./objUtils": {
144
- "import": "./dist/objUtils.js",
145
- "require": "./dist/objUtils.cjs"
146
- },
147
- "./parallelAsyncCalls": {
148
- "import": "./dist/parallelAsyncCalls.js",
149
- "require": "./dist/parallelAsyncCalls.cjs"
150
- },
151
- "./partialEqual": {
152
- "import": "./dist/partialEqual.js",
153
- "require": "./dist/partialEqual.cjs"
154
- },
155
- "./promiseUtils": {
156
- "import": "./dist/promiseUtils.js",
157
- "require": "./dist/promiseUtils.cjs"
158
- },
159
- "./regexUtils": {
160
- "import": "./dist/regexUtils.js",
161
- "require": "./dist/regexUtils.cjs"
162
- },
163
- "./retryOnError": {
164
- "import": "./dist/retryOnError.js",
165
- "require": "./dist/retryOnError.cjs"
166
- },
167
- "./runShellCmd": {
168
- "import": "./dist/runShellCmd.js",
169
- "require": "./dist/runShellCmd.cjs"
170
- },
171
- "./safeJson": {
172
- "import": "./dist/safeJson.js",
173
- "require": "./dist/safeJson.cjs"
174
- },
175
- "./saferTyping": {
176
- "import": "./dist/saferTyping.js",
177
- "require": "./dist/saferTyping.cjs"
178
- },
179
- "./serializeXML": {
180
- "import": "./dist/serializeXML.js",
181
- "require": "./dist/serializeXML.cjs"
182
- },
183
- "./keyedSet": {
184
- "import": "./dist/keyedSet.js",
185
- "require": "./dist/keyedSet.cjs"
186
- },
187
- "./shallowEqual": {
188
- "import": "./dist/shallowEqual.js",
189
- "require": "./dist/shallowEqual.cjs"
190
- },
191
- "./sleep": {
192
- "import": "./dist/sleep.js",
193
- "require": "./dist/sleep.cjs"
194
- },
195
- "./stringUtils": {
196
- "import": "./dist/stringUtils.js",
197
- "require": "./dist/stringUtils.cjs"
198
- },
199
- "./testUtils": {
200
- "import": "./dist/testUtils.js",
201
- "require": "./dist/testUtils.cjs"
202
- },
203
- "./throttle": {
204
- "import": "./dist/throttle.js",
205
- "require": "./dist/throttle.cjs"
206
- },
207
- "./time": {
208
- "import": "./dist/time.js",
209
- "require": "./dist/time.cjs"
210
- },
211
- "./timers": {
212
- "import": "./dist/timers.js",
213
- "require": "./dist/timers.cjs"
214
- },
215
- "./tsResult": {
216
- "import": "./dist/tsResult.js",
217
- "require": "./dist/tsResult.cjs"
218
- },
219
- "./typeGuards": {
220
- "import": "./dist/typeGuards.js",
221
- "require": "./dist/typeGuards.cjs"
222
- },
223
- "./typeUtils": {
224
- "import": "./dist/typeUtils.js",
225
- "require": "./dist/typeUtils.cjs"
226
- },
227
- "./typeUtils.typesTest": {
228
- "import": "./dist/typeUtils.typesTest.js",
229
- "require": "./dist/typeUtils.typesTest.cjs"
230
- },
231
- "./typedStrings": {
232
- "import": "./dist/typedStrings.js",
233
- "require": "./dist/typedStrings.cjs"
234
- },
235
- "./typingFnUtils": {
236
- "import": "./dist/typingFnUtils.js",
237
- "require": "./dist/typingFnUtils.cjs"
238
- },
239
- "./typingTestUtils": {
240
- "import": "./dist/typingTestUtils.js",
241
- "require": "./dist/typingTestUtils.cjs"
242
- },
243
- "./typingTestUtils.typesTest": {
244
- "import": "./dist/typingTestUtils.typesTest.js",
245
- "require": "./dist/typingTestUtils.typesTest.cjs"
246
- },
247
- "./typingUtils": {
248
- "import": "./dist/typingUtils.js",
249
- "require": "./dist/typingUtils.cjs"
250
- },
251
- "./yamlStringify": {
252
- "import": "./dist/yamlStringify.js",
253
- "require": "./dist/yamlStringify.cjs"
254
- }
18
+ ".": "./dist/main.mjs",
19
+ "./__snapshots__": "./dist/__snapshots__.mjs",
20
+ "./arrayUtils": "./dist/arrayUtils.mjs",
21
+ "./assertions": "./dist/assertions.mjs",
22
+ "./asyncQueue": "./dist/asyncQueue.mjs",
23
+ "./awaitDebounce": "./dist/awaitDebounce.mjs",
24
+ "./cache": "./dist/cache.mjs",
25
+ "./castValues": "./dist/castValues.mjs",
26
+ "./concurrentCalls": "./dist/concurrentCalls.mjs",
27
+ "./consoleFmt": "./dist/consoleFmt.mjs",
28
+ "./conversions": "./dist/conversions.mjs",
29
+ "./createThrottleController": "./dist/createThrottleController.mjs",
30
+ "./debounce": "./dist/debounce.mjs",
31
+ "./dedent": "./dist/dedent.mjs",
32
+ "./deepEqual": "./dist/deepEqual.mjs",
33
+ "./deepReplaceValues": "./dist/deepReplaceValues.mjs",
34
+ "./diffParser": "./dist/diffParser.mjs",
35
+ "./enhancedMap": "./dist/enhancedMap.mjs",
36
+ "./exhaustiveMatch": "./dist/exhaustiveMatch.mjs",
37
+ "./filterObjectOrArrayKeys": "./dist/filterObjectOrArrayKeys.mjs",
38
+ "./getAutoIncrementId": "./dist/getAutoIncrementId.mjs",
39
+ "./getCompositeKey": "./dist/getCompositeKey.mjs",
40
+ "./getValueStableKey": "./dist/getValueStableKey.mjs",
41
+ "./hash": "./dist/hash.mjs",
42
+ "./interpolate": "./dist/interpolate.mjs",
43
+ "./iteratorUtils": "./dist/iteratorUtils.mjs",
44
+ "./keepPrevIfUnchanged": "./dist/keepPrevIfUnchanged.mjs",
45
+ "./keyedMap": "./dist/keyedMap.mjs",
46
+ "./keyedSet": "./dist/keyedSet.mjs",
47
+ "./levenshtein": "./dist/levenshtein.mjs",
48
+ "./matchPath": "./dist/matchPath.mjs",
49
+ "./mathUtils": "./dist/mathUtils.mjs",
50
+ "./mutationUtils": "./dist/mutationUtils.mjs",
51
+ "./objUtils": "./dist/objUtils.mjs",
52
+ "./parallelAsyncCalls": "./dist/parallelAsyncCalls.mjs",
53
+ "./partialEqual": "./dist/partialEqual.mjs",
54
+ "./promiseUtils": "./dist/promiseUtils.mjs",
55
+ "./regexUtils": "./dist/regexUtils.mjs",
56
+ "./retryOnError": "./dist/retryOnError.mjs",
57
+ "./runShellCmd": "./dist/runShellCmd.mjs",
58
+ "./safeJson": "./dist/safeJson.mjs",
59
+ "./saferTyping": "./dist/saferTyping.mjs",
60
+ "./serializeXML": "./dist/serializeXML.mjs",
61
+ "./shallowEqual": "./dist/shallowEqual.mjs",
62
+ "./sleep": "./dist/sleep.mjs",
63
+ "./stringUtils": "./dist/stringUtils.mjs",
64
+ "./testUtils": "./dist/testUtils.mjs",
65
+ "./throttle": "./dist/throttle.mjs",
66
+ "./time": "./dist/time.mjs",
67
+ "./timers": "./dist/timers.mjs",
68
+ "./tsResult": "./dist/tsResult.mjs",
69
+ "./typeGuards": "./dist/typeGuards.mjs",
70
+ "./typeUtils": "./dist/typeUtils.mjs",
71
+ "./typeUtils.typesTest": "./dist/typeUtils.typesTest.mjs",
72
+ "./typedStrings": "./dist/typedStrings.mjs",
73
+ "./typingFnUtils": "./dist/typingFnUtils.mjs",
74
+ "./typingTestUtils": "./dist/typingTestUtils.mjs",
75
+ "./typingTestUtils.typesTest": "./dist/typingTestUtils.typesTest.mjs",
76
+ "./typingUtils": "./dist/typingUtils.mjs",
77
+ "./yamlStringify": "./dist/yamlStringify.mjs"
255
78
  },
256
79
  "engines": {
257
80
  "node": ">=20.0.0"
@@ -273,7 +96,7 @@
273
96
  "prettier": "3.4.2",
274
97
  "prettier-plugin-organize-imports": "^4.1.0",
275
98
  "tsm": "^2.3.0",
276
- "tsup": "^8.3.5",
99
+ "tsdown": "^0.18.2",
277
100
  "typedoc": "^0.28.4",
278
101
  "typedoc-plugin-markdown": "^4.6.3",
279
102
  "typedoc-plugin-missing-exports": "^4.0.0",
@@ -294,7 +117,7 @@
294
117
  "tsc:watch": "tsc -p tsconfig.prod.json --watch",
295
118
  "eslint": "CI=true eslint src/ --color --max-warnings=0 --fix",
296
119
  "format": "prettier --write .",
297
- "build": "tsup",
120
+ "build": "tsdown",
298
121
  "bench:deepEqual": "tsm --no-warnings benchmarks/deepEqual.ts",
299
122
  "docs": "typedoc",
300
123
  "docs:watch": "typedoc --watch"