@ls-stack/utils 3.65.0 → 3.66.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 +63 -0
  34. package/dist/diffParser.mjs +410 -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
@@ -1,3 +1,4 @@
1
+ //#region src/arrayUtils.d.ts
1
2
  /**
2
3
  * Allow to filter and map with better typing ergonomics
3
4
  *
@@ -22,7 +23,7 @@ type FilterAndMapReturn<T> = false | T;
22
23
  type SortOrder = 'desc' | 'asc';
23
24
  type SortByValueFn<T> = (item: T) => (number | string)[] | number | string;
24
25
  type SortByProps = {
25
- order?: SortOrder | SortOrder[];
26
+ order?: SortOrder | SortOrder[];
26
27
  } | SortOrder | SortOrder[];
27
28
  /**
28
29
  * Sort an array based on a value
@@ -71,9 +72,9 @@ declare function sortBy<T>(arr: T[], sortByValue: SortByValueFn<T>, props?: Sort
71
72
  declare function getAscIndexOrder(index: number | undefined): number;
72
73
  declare function arrayWithPrev<T>(array: T[]): [current: T, prev: T | null][];
73
74
  declare function arrayWithPrevAndIndex<T>(array: T[]): {
74
- item: T;
75
- prev: T | null;
76
- index: number;
75
+ item: T;
76
+ prev: T | null;
77
+ index: number;
77
78
  }[];
78
79
  declare function isInArray<T, const U extends T>(value: T, oneOf: readonly U[]): value is U;
79
80
  declare function isInArrayWithoutNarrowing<T, const U extends T>(value: T, oneOf: readonly U[]): boolean;
@@ -111,23 +112,23 @@ declare function truncateArray<T>(array: T[], maxLength: number, appendIfTruncat
111
112
  */
112
113
  declare function findAndMap<T, R>(array: T[], predicate: (value: T) => R | false): R | undefined;
113
114
  type ArrayOps<T> = {
114
- /**
115
- * Filter and map an array
116
- *
117
- * @example
118
- * const items = [1, 2, 3];
119
- *
120
- * const enhancedItems = arrayOps(items);
121
- *
122
- * enhancedItems.filterAndMap((item) => (item === 2 ? false : item));
123
- *
124
- * @param mapFilter - A function that takes an item and returns a value or
125
- * `false` to reject the item.
126
- */
127
- filterAndMap: <R>(mapFilter: (item: T, index: number) => false | R) => R[];
128
- sortBy: (sortByValue: SortByValueFn<T>, props: SortByProps) => T[];
129
- rejectDuplicates: (getKey: (item: T) => unknown) => T[];
130
- findAndMap: <R>(predicate: (value: T) => R | false) => R | undefined;
115
+ /**
116
+ * Filter and map an array
117
+ *
118
+ * @example
119
+ * const items = [1, 2, 3];
120
+ *
121
+ * const enhancedItems = arrayOps(items);
122
+ *
123
+ * enhancedItems.filterAndMap((item) => (item === 2 ? false : item));
124
+ *
125
+ * @param mapFilter - A function that takes an item and returns a value or
126
+ * `false` to reject the item.
127
+ */
128
+ filterAndMap: <R>(mapFilter: (item: T, index: number) => false | R) => R[];
129
+ sortBy: (sortByValue: SortByValueFn<T>, props: SortByProps) => T[];
130
+ rejectDuplicates: (getKey: (item: T) => unknown) => T[];
131
+ findAndMap: <R>(predicate: (value: T) => R | false) => R | undefined;
131
132
  };
132
133
  /**
133
134
  * Enhance an array with extra methods
@@ -167,5 +168,5 @@ declare function intersperse<T, I>(array: T[], separator: I): (T | I)[];
167
168
  * @returns A new array with the repeated values
168
169
  */
169
170
  declare function repeat<T>(value: T, count: number, separator?: T): T[];
170
-
171
- export { type FilterAndMapReturn, type SortByProps, type SortByValueFn, arrayOps, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, findAfterIndex, findAndMap, findBeforeIndex, getAscIndexOrder, hasDuplicates, intersperse, isInArray, isInArrayWithoutNarrowing, looseIsInArray, rejectArrayUndefinedValues, rejectDuplicates, repeat, sortBy, truncateArray };
171
+ //#endregion
172
+ export { FilterAndMapReturn, SortByProps, SortByValueFn, arrayOps, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, findAfterIndex, findAndMap, findBeforeIndex, getAscIndexOrder, hasDuplicates, intersperse, isInArray, isInArrayWithoutNarrowing, looseIsInArray, rejectArrayUndefinedValues, rejectDuplicates, repeat, sortBy, truncateArray };
@@ -0,0 +1,249 @@
1
+ import { a as isFunction } from "./assertions-qMxfVhSu.mjs";
2
+
3
+ //#region src/arrayUtils.ts
4
+ /**
5
+ * Allow to filter and map with better typing ergonomics
6
+ *
7
+ * In the `mapFilter` function return `false` to reject the item, or any other
8
+ * value to map it.
9
+ *
10
+ * @example
11
+ * // Filter reject and turn value into `value mapped`
12
+ * const items = ['value', 'value', 'reject', 'reject'];
13
+ *
14
+ * const mappedItems = filterAndMap(items, (item) =>
15
+ * item === 'reject' ? false : `${item} mapped`,
16
+ * );
17
+ *
18
+ * mappedItems; // ['value mapped', 'value mapped']
19
+ *
20
+ * @param array
21
+ * @param mapFilter
22
+ */
23
+ function filterAndMap(array, mapFilter) {
24
+ const result = [];
25
+ let i = -1;
26
+ for (const item of array) {
27
+ i += 1;
28
+ const filterResult = mapFilter(item, i);
29
+ if (filterResult !== false) result.push(filterResult);
30
+ }
31
+ return result;
32
+ }
33
+ /**
34
+ * Sort an array based on a value
35
+ *
36
+ * Sort by `ascending` order by default
37
+ *
38
+ * Use `Infinity` as as wildcard to absolute max and min values
39
+ *
40
+ * @example
41
+ * const items = [1, 3, 2, 4];
42
+ *
43
+ * const sortedItems = sortBy(items, (item) => item);
44
+ * // [1, 2, 3, 4]
45
+ *
46
+ * const items2 = [
47
+ * { a: 1, b: 2 },
48
+ * { a: 2, b: 1 },
49
+ * { a: 1, b: 1 },
50
+ * ];
51
+ *
52
+ * // return a array to sort by multiple values
53
+ * const sortedItems = sortBy(items, (item) => [item.a, item.b]);
54
+ *
55
+ * @param arr
56
+ * @param sortByValue
57
+ * @param props
58
+ */
59
+ function sortBy(arr, sortByValue, props = "asc") {
60
+ const order = Array.isArray(props) || typeof props === "string" ? props : props.order ?? "asc";
61
+ return [...arr].sort((a, b) => {
62
+ const _aPriority = sortByValue(a);
63
+ const _bPriority = sortByValue(b);
64
+ const aPriority = Array.isArray(_aPriority) ? _aPriority : [_aPriority];
65
+ const bPriority = Array.isArray(_bPriority) ? _bPriority : [_bPriority];
66
+ for (let i = 0; i < aPriority.length; i++) {
67
+ const levelOrder = typeof order === "string" ? order : order[i] ?? "asc";
68
+ const aP = aPriority[i] ?? 0;
69
+ const bP = bPriority[i] ?? 0;
70
+ if (aP === bP) continue;
71
+ if (bP === Infinity || aP === -Infinity || aP < bP) return levelOrder === "asc" ? -1 : 1;
72
+ if (aP === Infinity || bP === -Infinity || aP > bP) return levelOrder === "asc" ? 1 : -1;
73
+ }
74
+ return 0;
75
+ });
76
+ }
77
+ /**
78
+ * Get the correct 0 based value for sync with other array in ascending order
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const items = [1, 2, 3];
83
+ *
84
+ * const index = sortBy(
85
+ * items,
86
+ * (item) => getAscIndexOrder(
87
+ * followOrder.findIndex((order) => order === item)
88
+ * )
89
+ * );
90
+ * ```;
91
+ *
92
+ * @param index
93
+ */
94
+ function getAscIndexOrder(index) {
95
+ return index === -1 ? Infinity : index ?? Infinity;
96
+ }
97
+ function arrayWithPrev(array) {
98
+ return array.map((item, i) => [item, array[i - 1] ?? null]);
99
+ }
100
+ function arrayWithPrevAndIndex(array) {
101
+ return array.map((item, i) => ({
102
+ item,
103
+ prev: array[i - 1] ?? null,
104
+ index: i
105
+ }));
106
+ }
107
+ function isInArray(value, oneOf) {
108
+ for (let i = 0; i < oneOf.length; i++) if (oneOf[i] === value) return true;
109
+ return false;
110
+ }
111
+ function isInArrayWithoutNarrowing(value, oneOf) {
112
+ return oneOf.includes(value);
113
+ }
114
+ function looseIsInArray(value, array) {
115
+ return array.includes(value);
116
+ }
117
+ function findAfterIndex(array, index, predicate) {
118
+ for (let i = index + 1; i < array.length; i++) if (predicate(array[i])) return array[i];
119
+ }
120
+ function findBeforeIndex(array, index, predicate) {
121
+ let indexToUse = index;
122
+ if (indexToUse >= array.length) indexToUse = array.length;
123
+ for (let i = indexToUse - 1; i >= 0; i--) if (predicate(array[i])) return array[i];
124
+ }
125
+ function rejectArrayUndefinedValues(array) {
126
+ return array.filter((item) => item !== void 0);
127
+ }
128
+ function hasDuplicates(array, getKey = (item) => item) {
129
+ const seen = /* @__PURE__ */ new Set();
130
+ for (const item of array) {
131
+ const key = getKey(item);
132
+ if (seen.has(key)) return true;
133
+ seen.add(key);
134
+ }
135
+ return false;
136
+ }
137
+ function rejectDuplicates(array, getKey = (item) => item) {
138
+ const seen = /* @__PURE__ */ new Set();
139
+ const result = [];
140
+ for (const item of array) {
141
+ const key = getKey(item);
142
+ if (seen.has(key)) continue;
143
+ seen.add(key);
144
+ result.push(item);
145
+ }
146
+ return result;
147
+ }
148
+ function truncateArray(array, maxLength, appendIfTruncated) {
149
+ const truncate = array.length > maxLength;
150
+ const result = truncate ? [...array.slice(0, maxLength)] : array;
151
+ if (truncate && appendIfTruncated) {
152
+ if (isFunction(appendIfTruncated)) return [...result, appendIfTruncated(array.length - maxLength)];
153
+ return [...result, appendIfTruncated];
154
+ }
155
+ return result;
156
+ }
157
+ /**
158
+ * Finds the first item in an array where the predicate returns a non-false
159
+ * value and returns that mapped value.
160
+ *
161
+ * Combines find and map operations - applies the predicate to each item until
162
+ * one returns a value that is not `false`, then returns that mapped value. If
163
+ * no item matches, returns `undefined`.
164
+ *
165
+ * @example
166
+ * const users = [
167
+ * { id: 1, name: 'Alice' },
168
+ * { id: 2, name: 'Bob' },
169
+ * ];
170
+ *
171
+ * const foundName = findAndMap(users, (user) =>
172
+ * user.id === 2 ? user.name.toUpperCase() : false,
173
+ * );
174
+ * // foundName is 'BOB'
175
+ *
176
+ * @param array - The array to search through
177
+ * @param predicate - Function that returns a mapped value or `false` to skip
178
+ * the item
179
+ * @returns The first mapped value that is not `false`, or `undefined` if no
180
+ * item matches
181
+ */
182
+ function findAndMap(array, predicate) {
183
+ for (const item of array) {
184
+ const value = predicate(item);
185
+ if (value !== false) return value;
186
+ }
187
+ }
188
+ /**
189
+ * Enhance an array with extra methods
190
+ *
191
+ * @example
192
+ * const enhancedItems = arrayOps(array);
193
+ *
194
+ * enhancedItems.filterAndMap((item) => (item === 2 ? false : item));
195
+ * enhancedItems.sortBy((item) => item);
196
+ * enhancedItems.rejectDuplicates((item) => item);
197
+ *
198
+ * @param array
199
+ */
200
+ function arrayOps(array) {
201
+ return {
202
+ filterAndMap: (mapFilter) => filterAndMap(array, mapFilter),
203
+ sortBy: (sortByValue, props) => sortBy(array, sortByValue, props),
204
+ rejectDuplicates: (getKey) => rejectDuplicates(array, getKey),
205
+ findAndMap: (predicate) => findAndMap(array, predicate)
206
+ };
207
+ }
208
+ /**
209
+ * Inserts a separator value between each element in an array.
210
+ *
211
+ * @example
212
+ * intersperse([1, 2, 3], 0); // [1, 0, 2, 0, 3]
213
+ *
214
+ * @param array - The array to intersperse
215
+ * @param separator - The value to insert between elements
216
+ * @returns A new array with separator values inserted between elements
217
+ */
218
+ function intersperse(array, separator) {
219
+ const result = [];
220
+ for (let i = 0; i < array.length; i++) {
221
+ result.push(array[i]);
222
+ if (i < array.length - 1) result.push(separator);
223
+ }
224
+ return result;
225
+ }
226
+ /**
227
+ * Creates an array by repeating a value a specified number of times, optionally
228
+ * with a separator between each repetition.
229
+ *
230
+ * @example
231
+ * repeat('x', 3); // ['x', 'x', 'x']
232
+ * repeat('x', 3, '-'); // ['x', '-', 'x', '-', 'x']
233
+ *
234
+ * @param value - The value to repeat
235
+ * @param count - Number of times to repeat the value
236
+ * @param separator - Optional separator to insert between repetitions
237
+ * @returns A new array with the repeated values
238
+ */
239
+ function repeat(value, count, separator) {
240
+ const result = [];
241
+ for (let i = 0; i < count; i++) {
242
+ result.push(value);
243
+ if (separator !== void 0 && i < count - 1) result.push(separator);
244
+ }
245
+ return result;
246
+ }
247
+
248
+ //#endregion
249
+ export { arrayOps, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, findAfterIndex, findAndMap, findBeforeIndex, getAscIndexOrder, hasDuplicates, intersperse, isInArray, isInArrayWithoutNarrowing, looseIsInArray, rejectArrayUndefinedValues, rejectDuplicates, repeat, sortBy, truncateArray };
@@ -0,0 +1,207 @@
1
+ import { a as isPlainObject$1, i as isObject$1, n as isFunction$1, o as isPromise$1 } from "./typeGuards-B1mzA-Rz.mjs";
2
+
3
+ //#region src/assertions.ts
4
+ const undefErrMsg = "not undefined assertion failed";
5
+ const nullishErrMsg = "not nullish assertion failed";
6
+ /**
7
+ * Ensures a value is not undefined and returns it with the correct type.
8
+ *
9
+ * Throws an error if the value is undefined. Use it instead of `!` operator for
10
+ * better type safety.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const maybeString: string | undefined = getValue();
15
+ * const definiteString = notUndefined(maybeString); // Type: string
16
+ *
17
+ * // With custom error message
18
+ * const value = notUndefined(maybeValue, 'Value must be defined');
19
+ *
20
+ * // With custom error function
21
+ * const value = notUndefined(maybeValue, () => new ValidationError('Required field'));
22
+ * ```;
23
+ *
24
+ * @template T - The type of the input value
25
+ * @param value - The value to check for undefined
26
+ * @param error - Error message string or function that returns an Error to
27
+ * throw if value is undefined
28
+ * @returns The input value with undefined excluded from its type
29
+ * @throws {Error} When the value is undefined
30
+ */
31
+ function notUndefined(value, error = undefErrMsg) {
32
+ if (value === void 0) throw typeof error === "function" ? error() : new Error(error);
33
+ return value;
34
+ }
35
+ /**
36
+ * Ensures a value is not null or undefined and returns it with the correct
37
+ * type.
38
+ *
39
+ * Throws an error if the value is null or undefined. Use it instead of `!`
40
+ * operator for better type safety.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const maybeString: string | null | undefined = getValue();
45
+ * const definiteString = notNullish(maybeString); // Type: string
46
+ *
47
+ * // With custom error message
48
+ * const value = notNullish(maybeValue, 'Value cannot be null or undefined');
49
+ *
50
+ * // With custom error function
51
+ * const value = notNullish(maybeValue, () => new ValidationError('Required field'));
52
+ * ```;
53
+ *
54
+ * @template T - The type of the input value
55
+ * @param value - The value to check for null or undefined
56
+ * @param error - Error message string or function that returns an Error to
57
+ * throw if value is nullish
58
+ * @returns The input value with null and undefined excluded from its type
59
+ * @throws {Error} When the value is null or undefined
60
+ */
61
+ function notNullish(value, error = nullishErrMsg) {
62
+ if (value === void 0 || value === null) throw typeof error === "function" ? error() : new Error(error);
63
+ return value;
64
+ }
65
+ /**
66
+ * Asserts that a value is not null or undefined using TypeScript's assertion
67
+ * signature.
68
+ *
69
+ * Throws an error if the value is null or undefined. Use it instead of `!`
70
+ * operator for better type safety.
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * function processValue(input: string | null | undefined) {
75
+ * assertIsNotNullish(input);
76
+ * // TypeScript now knows input is string
77
+ * console.log(input.toUpperCase());
78
+ * }
79
+ *
80
+ * // With custom error
81
+ * assertIsNotNullish(value, 'Value is required for processing');
82
+ * ```;
83
+ *
84
+ * @template T - The type of the input value
85
+ * @param value - The value to assert is not null or undefined
86
+ * @param error - Error message string or function that returns an Error to
87
+ * throw if value is nullish
88
+ * @throws {Error} When the value is null or undefined
89
+ */
90
+ function assertIsNotNullish(value, error = nullishErrMsg) {
91
+ if (value === void 0 || value === null) throw typeof error === "function" ? error() : new Error(error);
92
+ }
93
+ /**
94
+ * Asserts that a value is not undefined using TypeScript's assertion signature.
95
+ *
96
+ * Throws an error if the value is undefined. Use it instead of `!` operator for
97
+ * better type safety.
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * function processValue(input: string | undefined) {
102
+ * assertIsNotUndefined(input);
103
+ * // TypeScript now knows input is string
104
+ * console.log(input.toUpperCase());
105
+ * }
106
+ *
107
+ * // With custom error
108
+ * assertIsNotUndefined(value, 'Value must be defined');
109
+ * ```;
110
+ *
111
+ * @template T - The type of the input value
112
+ * @param value - The value to assert is not undefined
113
+ * @param error - Error message string or function that returns an Error to
114
+ * throw if value is undefined
115
+ * @throws {Error} When the value is undefined
116
+ */
117
+ function assertIsNotUndefined(value, error = undefErrMsg) {
118
+ if (value === void 0) throw typeof error === "function" ? error() : new Error(error);
119
+ }
120
+ /**
121
+ * Asserts that a condition is always true, throwing an error if it's falsy.
122
+ *
123
+ * This function is useful for enforcing invariants in your code - conditions
124
+ * that should always be true. It uses TypeScript's assertion signature to
125
+ * narrow types based on the condition.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * function divide(a: number, b: number) {
130
+ * invariant(b !== 0, 'Division by zero is not allowed');
131
+ * return a / b;
132
+ * }
133
+ *
134
+ * // Type narrowing example
135
+ * function processUser(user: User | null) {
136
+ * invariant(user, 'User must be logged in');
137
+ * // TypeScript now knows user is User, not null
138
+ * console.log(user.name);
139
+ * }
140
+ *
141
+ * // With custom error function
142
+ * invariant(isValid, () => new ValidationError('Invalid state detected'));
143
+ * ```;
144
+ *
145
+ * @param condition - The condition to check (any truthy/falsy value)
146
+ * @param error - Error message string or function that returns an Error to
147
+ * throw if condition is falsy
148
+ * @throws {Error} When the condition is falsy
149
+ */
150
+ function invariant(condition, error = "Invariant violation") {
151
+ if (!condition) throw typeof error === "function" ? error() : /* @__PURE__ */ new Error(`Invariant violation: ${error}`);
152
+ }
153
+ /**
154
+ * Ensures exhaustive type checking in switch statements or conditional logic.
155
+ *
156
+ * This function should be used in the default case of switch statements or the
157
+ * final else branch of conditional logic to ensure all possible cases are
158
+ * handled. It helps catch missing cases at compile time when new union members
159
+ * are added.
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * type Status = 'pending' | 'success' | 'error';
164
+ *
165
+ * function handleStatus(status: Status) {
166
+ * switch (status) {
167
+ * case 'pending':
168
+ * return 'Loading...';
169
+ * case 'success':
170
+ * return 'Done!';
171
+ * case 'error':
172
+ * return 'Failed!';
173
+ * default:
174
+ * throw exhaustiveCheck(status); // TypeScript error if Status gains new members
175
+ * }
176
+ * }
177
+ *
178
+ * // In conditional logic
179
+ * function processValue(value: string | number) {
180
+ * if (typeof value === 'string') {
181
+ * return value.toUpperCase();
182
+ * } else if (typeof value === 'number') {
183
+ * return value.toString();
184
+ * } else {
185
+ * throw exhaustiveCheck(value); // Ensures all cases are covered
186
+ * }
187
+ * }
188
+ * ```;
189
+ *
190
+ * @template Except - The type that should never be reached
191
+ * @param narrowedType - The value that should never exist at runtime
192
+ * @returns An Error object (this function should never actually execute)
193
+ */
194
+ function exhaustiveCheck(narrowedType) {
195
+ return /* @__PURE__ */ new Error("This should never happen");
196
+ }
197
+ /** @deprecated Use import from `@ls-stack/typeGuards` instead */
198
+ const isFunction = isFunction$1;
199
+ /** @deprecated Use import from `@ls-stack/typeGuards` instead */
200
+ const isObject = isObject$1;
201
+ /** @deprecated Use import from `@ls-stack/typeGuards` instead */
202
+ const isPlainObject = isPlainObject$1;
203
+ /** @deprecated Use import from `@ls-stack/typeGuards` instead */
204
+ const isPromise = isPromise$1;
205
+
206
+ //#endregion
207
+ export { isFunction as a, isPromise as c, invariant as i, notNullish as l, assertIsNotUndefined as n, isObject as o, exhaustiveCheck as r, isPlainObject as s, assertIsNotNullish as t, notUndefined as u };
@@ -1,5 +1,6 @@
1
- import { isFunction as isFunction$1, isObject as isObject$1, isPlainObject as isPlainObject$1, isPromise as isPromise$1 } from './typeGuards.js';
1
+ import { isFunction as isFunction$1, isObject as isObject$1, isPlainObject as isPlainObject$1, isPromise as isPromise$1 } from "./typeGuards.mjs";
2
2
 
3
+ //#region src/assertions.d.ts
3
4
  type NotUndefined<T> = T extends undefined ? never : T;
4
5
  type StrictNonUndefined<T, N = unknown> = undefined extends T ? NotUndefined<T> : N;
5
6
  /**
@@ -188,5 +189,5 @@ declare const isObject: typeof isObject$1;
188
189
  declare const isPlainObject: typeof isPlainObject$1;
189
190
  /** @deprecated Use import from `@ls-stack/typeGuards` instead */
190
191
  declare const isPromise: typeof isPromise$1;
191
-
192
- export { assertIsNotNullish, assertIsNotUndefined, exhaustiveCheck, invariant, isFunction, isObject, isPlainObject, isPromise, notNullish, notUndefined };
192
+ //#endregion
193
+ export { assertIsNotNullish, assertIsNotUndefined, exhaustiveCheck, invariant, isFunction, isObject, isPlainObject, isPromise, notNullish, notUndefined };
@@ -0,0 +1,3 @@
1
+ import { a as isFunction, c as isPromise, i as invariant, l as notNullish, n as assertIsNotUndefined, o as isObject, r as exhaustiveCheck, s as isPlainObject, t as assertIsNotNullish, u as notUndefined } from "./assertions-qMxfVhSu.mjs";
2
+
3
+ export { assertIsNotNullish, assertIsNotUndefined, exhaustiveCheck, invariant, isFunction, isObject, isPlainObject, isPromise, notNullish, notUndefined };