@ls-stack/utils 3.63.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 (328) 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 -234
  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/levenshtein.cjs +0 -180
  230. package/dist/levenshtein.d.ts +0 -5
  231. package/dist/levenshtein.js +0 -153
  232. package/dist/main.cjs +0 -32
  233. package/dist/main.d.cts +0 -3
  234. package/dist/main.d.ts +0 -3
  235. package/dist/main.js +0 -7
  236. package/dist/matchPath.cjs +0 -155
  237. package/dist/matchPath.d.cts +0 -53
  238. package/dist/matchPath.d.ts +0 -53
  239. package/dist/matchPath.js +0 -108
  240. package/dist/mathUtils.cjs +0 -81
  241. package/dist/mathUtils.d.ts +0 -54
  242. package/dist/mathUtils.js +0 -22
  243. package/dist/mutationUtils.cjs +0 -153
  244. package/dist/mutationUtils.d.ts +0 -15
  245. package/dist/mutationUtils.js +0 -55
  246. package/dist/objUtils.cjs +0 -242
  247. package/dist/objUtils.d.cts +0 -28
  248. package/dist/objUtils.js +0 -38
  249. package/dist/parallelAsyncCalls.cjs +0 -162
  250. package/dist/parallelAsyncCalls.d.cts +0 -82
  251. package/dist/parallelAsyncCalls.d.ts +0 -82
  252. package/dist/parallelAsyncCalls.js +0 -126
  253. package/dist/partialEqual.cjs +0 -1196
  254. package/dist/partialEqual.d.cts +0 -141
  255. package/dist/partialEqual.d.ts +0 -141
  256. package/dist/partialEqual.js +0 -1168
  257. package/dist/promiseUtils.cjs +0 -38
  258. package/dist/promiseUtils.d.cts +0 -8
  259. package/dist/promiseUtils.d.ts +0 -8
  260. package/dist/promiseUtils.js +0 -6
  261. package/dist/regexUtils.cjs +0 -60
  262. package/dist/regexUtils.d.cts +0 -17
  263. package/dist/regexUtils.d.ts +0 -17
  264. package/dist/regexUtils.js +0 -33
  265. package/dist/retryOnError.cjs +0 -130
  266. package/dist/retryOnError.d.ts +0 -83
  267. package/dist/retryOnError.js +0 -101
  268. package/dist/runShellCmd.cjs +0 -127
  269. package/dist/runShellCmd.d.cts +0 -90
  270. package/dist/runShellCmd.js +0 -98
  271. package/dist/safeJson.cjs +0 -45
  272. package/dist/safeJson.d.ts +0 -16
  273. package/dist/safeJson.js +0 -8
  274. package/dist/saferTyping.cjs +0 -52
  275. package/dist/saferTyping.d.ts +0 -47
  276. package/dist/saferTyping.js +0 -23
  277. package/dist/serializeXML.cjs +0 -154
  278. package/dist/serializeXML.d.cts +0 -22
  279. package/dist/serializeXML.d.ts +0 -22
  280. package/dist/serializeXML.js +0 -116
  281. package/dist/shallowEqual.cjs +0 -88
  282. package/dist/shallowEqual.d.ts +0 -4
  283. package/dist/shallowEqual.js +0 -63
  284. package/dist/sleep.cjs +0 -32
  285. package/dist/sleep.d.cts +0 -3
  286. package/dist/sleep.d.ts +0 -3
  287. package/dist/sleep.js +0 -6
  288. package/dist/stringUtils.cjs +0 -155
  289. package/dist/stringUtils.d.ts +0 -55
  290. package/dist/stringUtils.js +0 -50
  291. package/dist/testUtils.cjs +0 -1490
  292. package/dist/testUtils.d.cts +0 -133
  293. package/dist/testUtils.js +0 -359
  294. package/dist/throttle.cjs +0 -282
  295. package/dist/throttle.d.cts +0 -98
  296. package/dist/throttle.js +0 -38
  297. package/dist/time.cjs +0 -152
  298. package/dist/time.d.cts +0 -25
  299. package/dist/time.js +0 -38
  300. package/dist/timers.cjs +0 -194
  301. package/dist/timers.d.ts +0 -121
  302. package/dist/timers.js +0 -156
  303. package/dist/tsResult.cjs +0 -226
  304. package/dist/tsResult.d.ts +0 -114
  305. package/dist/tsResult.js +0 -180
  306. package/dist/typeGuards.cjs +0 -70
  307. package/dist/typeGuards.d.ts +0 -111
  308. package/dist/typeGuards.js +0 -18
  309. package/dist/typeUtils.cjs +0 -18
  310. package/dist/typeUtils.d.cts +0 -61
  311. package/dist/typeUtils.js +0 -0
  312. package/dist/typedStrings.cjs +0 -90
  313. package/dist/typedStrings.d.ts +0 -163
  314. package/dist/typedStrings.js +0 -57
  315. package/dist/typingFnUtils.cjs +0 -96
  316. package/dist/typingFnUtils.d.ts +0 -100
  317. package/dist/typingFnUtils.js +0 -30
  318. package/dist/typingTestUtils.cjs +0 -52
  319. package/dist/typingTestUtils.d.ts +0 -79
  320. package/dist/typingTestUtils.js +0 -27
  321. package/dist/typingUtils.cjs +0 -18
  322. package/dist/typingUtils.d.cts +0 -35
  323. package/dist/typingUtils.d.ts +0 -35
  324. package/dist/typingUtils.js +0 -0
  325. package/dist/yamlStringify.cjs +0 -423
  326. package/dist/yamlStringify.d.cts +0 -10
  327. package/dist/yamlStringify.d.ts +0 -10
  328. package/dist/yamlStringify.js +0 -9
@@ -1,34 +1,19 @@
1
- type PartialRecord<K extends keyof any, T> = {
2
- [P in K]?: T;
3
- };
4
- type NonPartial<T> = {
5
- [K in keyof Required<T>]: T[K];
6
- };
1
+ //#region src/typeUtils.d.ts
2
+ type PartialRecord<K$1 extends keyof any, T> = { [P in K$1]?: T };
3
+ type NonPartial<T> = { [K in keyof Required<T>]: T[K] };
7
4
  /**
8
5
  * @deprecated Use `ObjKeysWithValuesOfType` from `@ls-stack/utils/typeUtils`
9
6
  * instead
10
7
  */
11
- type ObjKeysWithValuesOfType<Obj extends Record<PropertyKey, unknown>, ValueType> = {
12
- [K in keyof Obj]: Obj[K] extends ValueType ? K : never;
13
- }[keyof Obj];
14
- type IsAny<T> = unknown extends T ? [
15
- keyof T
16
- ] extends [never] ? false : true : false;
17
- type Prettify<T extends Record<string, unknown>> = {
18
- [P in keyof T]: T[P];
19
- } & {};
20
- type DeepPrettify<T> = {
21
- [K in keyof T]: T[K] extends Record<string, unknown> ? DeepPrettify<T[K]> : T[K];
22
- } & {};
8
+ type ObjKeysWithValuesOfType<Obj extends Record<PropertyKey, unknown>, ValueType> = { [K in keyof Obj]: Obj[K] extends ValueType ? K : never }[keyof Obj];
9
+ type IsAny<T> = unknown extends T ? [keyof T] extends [never] ? false : true : false;
10
+ type Prettify<T extends Record<string, unknown>> = { [P in keyof T]: T[P] } & {};
11
+ type DeepPrettify<T> = { [K in keyof T]: T[K] extends Record<string, unknown> ? DeepPrettify<T[K]> : T[K] } & {};
23
12
  type DefaultSkipTransverseDeepReplace = Date | RegExp | ((...args: any[]) => any) | Error | Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any>;
24
13
  type PathMatches<CurrentPath extends string, SkipPaths extends string> = true extends (SkipPaths extends any ? CurrentPath extends SkipPaths ? true : SkipPaths extends `${infer Prefix}[*]${infer Suffix}` ? CurrentPath extends `${Prefix}[${string}]${Suffix}` ? true : false : false : false) ? true : false;
25
14
  type BuildPath<BasePath extends string, Key extends PropertyKey> = BasePath extends '$' ? Key extends string | number ? `${Key}` : never : Key extends string | number ? `${BasePath}.${Key}` : never;
26
15
  type BuildArrayPath<BasePath extends string> = BasePath extends '$' ? '[*]' : `${BasePath}[*]`;
27
- type DeepReplaceValueImpl<T, ReplaceType, NewType, SkipPaths extends string | undefined, SkipType, Path extends string = '$'> = SkipPaths extends string ? PathMatches<Path, SkipPaths> extends true ? T : T extends ReplaceType ? T extends SkipType ? T : NewType : T extends readonly (infer U)[] ? Array<DeepReplaceValueImpl<U, ReplaceType, NewType, SkipPaths, SkipType, BuildArrayPath<Path>>> : T extends SkipType ? T : T extends Record<string, any> ? {
28
- [K in keyof T]: DeepReplaceValueImpl<T[K], ReplaceType, NewType, SkipPaths, SkipType, BuildPath<Path, K>>;
29
- } : T : T extends ReplaceType ? T extends SkipType ? T : NewType : T extends readonly (infer U)[] ? Array<DeepReplaceValueImpl<U, ReplaceType, NewType, SkipPaths, SkipType, BuildArrayPath<Path>>> : T extends SkipType ? T : T extends Record<string, any> ? {
30
- [K in keyof T]: DeepReplaceValueImpl<T[K], ReplaceType, NewType, SkipPaths, SkipType, BuildPath<Path, K>>;
31
- } : T;
16
+ type DeepReplaceValueImpl<T, ReplaceType, NewType, SkipPaths extends string | undefined, SkipType, Path extends string = '$'> = SkipPaths extends string ? PathMatches<Path, SkipPaths> extends true ? T : T extends ReplaceType ? T extends SkipType ? T : NewType : T extends readonly (infer U)[] ? Array<DeepReplaceValueImpl<U, ReplaceType, NewType, SkipPaths, SkipType, BuildArrayPath<Path>>> : T extends SkipType ? T : T extends Record<string, any> ? { [K in keyof T]: DeepReplaceValueImpl<T[K], ReplaceType, NewType, SkipPaths, SkipType, BuildPath<Path, K>> } : T : T extends ReplaceType ? T extends SkipType ? T : NewType : T extends readonly (infer U)[] ? Array<DeepReplaceValueImpl<U, ReplaceType, NewType, SkipPaths, SkipType, BuildArrayPath<Path>>> : T extends SkipType ? T : T extends Record<string, any> ? { [K in keyof T]: DeepReplaceValueImpl<T[K], ReplaceType, NewType, SkipPaths, SkipType, BuildPath<Path, K>> } : T;
32
17
  /**
33
18
  * Replaces all values that extends `ReplaceType` with `NewType` in a deeply
34
19
  * nested object or array.
@@ -41,21 +26,15 @@ type DeepReplaceValueImpl<T, ReplaceType, NewType, SkipPaths extends string | un
41
26
  * @template SkipTypes - The types to skip in transverse and replace.
42
27
  */
43
28
  type DeepReplaceValue<T, ReplaceType, NewType, SkipPaths extends string | undefined = undefined, SkipTypes = DefaultSkipTransverseDeepReplace> = DeepReplaceValueImpl<T, ReplaceType, NewType, SkipPaths, SkipTypes>;
44
- type KeysWithUndefinedValues<T extends Record<string, unknown>> = {
45
- [K in keyof T]: undefined extends T[K] ? K : never;
46
- }[keyof T];
29
+ type KeysWithUndefinedValues<T extends Record<string, unknown>> = { [K in keyof T]: undefined extends T[K] ? K : never }[keyof T];
47
30
  /**
48
31
  * Marks all possible undefined values as partial at the root level of the
49
32
  * object.
50
33
  */
51
34
  type PartialPossiblyUndefinedValues<T extends Record<string, unknown>> = Prettify<Partial<Pick<T, KeysWithUndefinedValues<T>>> & Omit<T, KeysWithUndefinedValues<T>>>;
52
- type PickUndefinedKeys<T> = {
53
- [K in keyof T]: undefined extends T[K] ? K : never;
54
- }[keyof T];
55
- type PickRequiredKeys<T> = {
56
- [K in keyof T]: undefined extends T[K] ? never : K;
57
- }[keyof T];
35
+ type PickUndefinedKeys<T> = { [K in keyof T]: undefined extends T[K] ? K : never }[keyof T];
36
+ type PickRequiredKeys<T> = { [K in keyof T]: undefined extends T[K] ? never : K }[keyof T];
58
37
  type MakeUndefinedKeysOptional<T> = Prettify<Partial<Pick<T, PickUndefinedKeys<T>>> & Pick<T, PickRequiredKeys<T>>>;
59
38
  type StringWithAutoComplete<T extends string> = T | (string & {});
60
-
61
- export type { DeepPrettify, DeepReplaceValue, DefaultSkipTransverseDeepReplace, IsAny, MakeUndefinedKeysOptional, NonPartial, ObjKeysWithValuesOfType, PartialPossiblyUndefinedValues, PartialRecord, Prettify, StringWithAutoComplete };
39
+ //#endregion
40
+ export { DeepPrettify, DeepReplaceValue, DefaultSkipTransverseDeepReplace, IsAny, MakeUndefinedKeysOptional, NonPartial, ObjKeysWithValuesOfType, PartialPossiblyUndefinedValues, PartialRecord, Prettify, StringWithAutoComplete };
@@ -0,0 +1 @@
1
+ export { };
@@ -1,3 +1,4 @@
1
+ //#region src/typedStrings.d.ts
1
2
  /**
2
3
  * A type representing a string that contains a specific substring. Uses
3
4
  * template literal types to ensure type safety at compile time.
@@ -101,7 +102,7 @@ declare function splitTypedString<T extends string>(str: StringContaining<NoInfe
101
102
  * (1-based)
102
103
  * @returns A tuple with exactly two string elements
103
104
  */
104
- declare function splitTypedStringAt<T extends string>(str: StringContaining<NoInfer<T>> | StringStartingWith<NoInfer<T>> | StringEndingWith<NoInfer<T>>, separator: T,
105
+ declare function splitTypedStringAt<T extends string>(str: StringContaining<NoInfer<T>> | StringStartingWith<NoInfer<T>> | StringEndingWith<NoInfer<T>>, separator: T,
105
106
  /**
106
107
  * The position of the separator to split at.
107
108
  *
@@ -122,7 +123,7 @@ splitAtNSeparatorPos?: number): [string, string];
122
123
  * ```;
123
124
  */
124
125
  type NonEmptyString = string & {
125
- __nonEmptyString: true;
126
+ __nonEmptyString: true;
126
127
  };
127
128
  /**
128
129
  * Type guard function that checks if a string is non-empty. Narrows the type to
@@ -159,5 +160,5 @@ declare function asNonEmptyStringOrNull(str: string): NonEmptyString | null;
159
160
  * @throws Error if the string is empty
160
161
  */
161
162
  declare function assertStringIsNonEmpty(str: string): asserts str is NonEmptyString;
162
-
163
- export { type NonEmptyString, type StringContaining, type StringEndingWith, type StringStartingWith, asNonEmptyStringOrNull, asNonEmptyStringOrThrow, assertStringIsNonEmpty, isNonEmptyString, splitTypedString, splitTypedStringAt, stringContains, stringEndsWith, stringStartsWith };
163
+ //#endregion
164
+ export { NonEmptyString, StringContaining, StringEndingWith, StringStartingWith, asNonEmptyStringOrNull, asNonEmptyStringOrThrow, assertStringIsNonEmpty, isNonEmptyString, splitTypedString, splitTypedStringAt, stringContains, stringEndsWith, stringStartsWith };
@@ -0,0 +1,131 @@
1
+ //#region src/typedStrings.ts
2
+ /**
3
+ * Type guard function that checks if a string contains a specific substring.
4
+ * Narrows the type to `StringContaining<T>` when the check passes.
5
+ *
6
+ * @param str - The string to check
7
+ * @param substring - The substring to search for
8
+ * @returns `true` if the string contains the substring, `false` otherwise
9
+ */
10
+ function stringContains(str, substring) {
11
+ return str.includes(substring);
12
+ }
13
+ /**
14
+ * Type guard function that checks if a string starts with a specific substring.
15
+ * Narrows the type to `StringStartingWith<T>` when the check passes.
16
+ *
17
+ * @param str - The string to check
18
+ * @param substring - The substring to check for at the beginning
19
+ * @returns `true` if the string starts with the substring, `false` otherwise
20
+ */
21
+ function stringStartsWith(str, substring) {
22
+ return str.startsWith(substring);
23
+ }
24
+ /**
25
+ * Type guard function that checks if a string ends with a specific substring.
26
+ * Narrows the type to `StringEndingWith<T>` when the check passes.
27
+ *
28
+ * @param str - The string to check
29
+ * @param substring - The substring to check for at the end
30
+ * @returns `true` if the string ends with the substring, `false` otherwise
31
+ */
32
+ function stringEndsWith(str, substring) {
33
+ return str.endsWith(substring);
34
+ }
35
+ /**
36
+ * Splits a typed string by a separator that is guaranteed to exist in the
37
+ * string. Returns an array with at least two elements: the parts before and
38
+ * after the first separator, plus any additional parts if there are multiple
39
+ * separators.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const path: StringContaining<'/'> = 'src/utils/types.ts';
44
+ * const [first, second, ...rest] = splitTypedString(path, '/');
45
+ * // first: 'src', second: 'utils', rest: ['types.ts']
46
+ * ```;
47
+ *
48
+ * @param str - A string that contains, starts with, or ends with the separator
49
+ * @param separator - The separator to split by
50
+ * @returns An array with at least two string elements
51
+ */
52
+ function splitTypedString(str, separator) {
53
+ return str.split(separator);
54
+ }
55
+ /**
56
+ * Splits a typed string at a specific occurrence of the separator. Unlike
57
+ * `splitTypedString`, this returns exactly two parts: everything before the nth
58
+ * separator and everything after it.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * const path: StringContaining<'.'> = 'file.name.ext';
63
+ * const [name, ext] = splitTypedStringAt(path, '.', 2);
64
+ * // name: 'file.name', ext: 'ext'
65
+ * ```;
66
+ *
67
+ * @param str - A string that contains, starts with, or ends with the separator
68
+ * @param separator - The separator to split by
69
+ * @param splitAtNSeparatorPos - The position of the separator to split at
70
+ * (1-based)
71
+ * @returns A tuple with exactly two string elements
72
+ */
73
+ function splitTypedStringAt(str, separator, splitAtNSeparatorPos = 1) {
74
+ const parts = str.split(separator);
75
+ let leftPart = parts[0];
76
+ let rightPart = parts.slice(1).join(separator);
77
+ if (leftPart === void 0) throw new Error("String does not contain the separator");
78
+ if (splitAtNSeparatorPos > 1) {
79
+ leftPart = parts.slice(0, splitAtNSeparatorPos).join(separator);
80
+ rightPart = parts.slice(splitAtNSeparatorPos).join(separator);
81
+ }
82
+ return [leftPart, rightPart];
83
+ }
84
+ /**
85
+ * Type guard function that checks if a string is non-empty. Narrows the type to
86
+ * `NonEmptyString` when the check passes.
87
+ *
88
+ * @param str - The string to check
89
+ * @returns `true` if the string has length > 0, `false` otherwise
90
+ */
91
+ function isNonEmptyString(str) {
92
+ return str.length > 0;
93
+ }
94
+ /**
95
+ * Converts a string to `NonEmptyString` or throws an error if the string is
96
+ * empty. Use this when you need to ensure a string is non-empty and want to
97
+ * fail fast.
98
+ *
99
+ * @param str - The string to convert
100
+ * @returns The string as `NonEmptyString`
101
+ * @throws Error if the string is empty
102
+ */
103
+ function asNonEmptyStringOrThrow(str) {
104
+ if (isNonEmptyString(str)) return str;
105
+ throw new Error("String is empty");
106
+ }
107
+ /**
108
+ * Converts a string to `NonEmptyString` or returns `null` if the string is
109
+ * empty. Use this when empty strings should be handled gracefully rather than
110
+ * throwing errors.
111
+ *
112
+ * @param str - The string to convert
113
+ * @returns The string as `NonEmptyString` or `null` if empty
114
+ */
115
+ function asNonEmptyStringOrNull(str) {
116
+ if (isNonEmptyString(str)) return str;
117
+ return null;
118
+ }
119
+ /**
120
+ * Assertion function that ensures a string is non-empty. Throws an error if the
121
+ * string is empty, otherwise narrows the type to `NonEmptyString`.
122
+ *
123
+ * @param str - The string to assert as non-empty
124
+ * @throws Error if the string is empty
125
+ */
126
+ function assertStringIsNonEmpty(str) {
127
+ if (!isNonEmptyString(str)) throw new Error("String is empty");
128
+ }
129
+
130
+ //#endregion
131
+ export { asNonEmptyStringOrNull, asNonEmptyStringOrThrow, assertStringIsNonEmpty, isNonEmptyString, splitTypedString, splitTypedStringAt, stringContains, stringEndsWith, stringStartsWith };
@@ -0,0 +1,101 @@
1
+ //#region src/typingFnUtils.ts
2
+ function asNonPartial(obj) {
3
+ return obj;
4
+ }
5
+ /**
6
+ * A wrapper to Object.entries with a better typing inference
7
+ *
8
+ * @param obj
9
+ */
10
+ function typedObjectEntries(obj) {
11
+ return Object.entries(obj);
12
+ }
13
+ /**
14
+ * A wrapper to Object.entries with a better typing inference, but with strict
15
+ * typing narrowing keys to strings.
16
+ *
17
+ * @param obj
18
+ */
19
+ function strictTypedObjectEntries(obj) {
20
+ return Object.entries(obj);
21
+ }
22
+ /**
23
+ * A wrapper to Object.keys with a better typing inference
24
+ *
25
+ * @param obj
26
+ */
27
+ function typedObjectKeys(obj) {
28
+ return Object.keys(obj);
29
+ }
30
+ /**
31
+ * A safe way to cast types, use to substitute the `as Type`
32
+ *
33
+ * @param value
34
+ */
35
+ function asType(value) {
36
+ return value;
37
+ }
38
+ /**
39
+ * Narrow a string to a union of strings
40
+ *
41
+ * @param key
42
+ * @param union
43
+ */
44
+ function narrowStringToUnion(key, union) {
45
+ if (!key) return void 0;
46
+ if (union instanceof Set) return union.has(key) ? key : void 0;
47
+ if (union.includes(key)) return key;
48
+ }
49
+ /**
50
+ * Type helper to check if a type is a subtype of another type.
51
+ *
52
+ * @template BaseType - The base type to check against
53
+ * @template SubType - The type that should extend BaseType
54
+ * @returns Returns undefined, only used for type checking
55
+ */
56
+ function typeOnRightExtendsLeftType() {}
57
+ /** @deprecated Use typeOnRightExtendsLeftType instead */
58
+ const isSubTypeOf = typeOnRightExtendsLeftType;
59
+ /**
60
+ * Type helper to narrow a string to a key of an object.
61
+ *
62
+ * @param key
63
+ * @param obj
64
+ */
65
+ function isObjKey(key, obj) {
66
+ return typeof key === "string" && key in obj;
67
+ }
68
+ /**
69
+ * Type helper to compare two union types and determine their relationship.
70
+ *
71
+ * @template T - The first union type (left side)
72
+ * @template U - The second union type (right side)
73
+ * @param _diff - Null if unions are identical, or an object describing the
74
+ * errors
75
+ */
76
+ function unionsAreTheSame(_diff) {}
77
+ function asPartialUndefinedValues(value) {
78
+ return value;
79
+ }
80
+ /**
81
+ * Type guard to check if an array has at least one element.
82
+ *
83
+ * @param array - The array to check
84
+ * @returns True if the array is non-empty, false otherwise
85
+ */
86
+ function isNonEmptyArray(array) {
87
+ return array.length > 0;
88
+ }
89
+ /**
90
+ * Type guard to check if an object has a specific key and narrow its type.
91
+ *
92
+ * @param obj - The object to check
93
+ * @param key - The key to check for
94
+ * @returns True if the object has the key, false otherwise
95
+ */
96
+ function objectHasKey(obj, key) {
97
+ return key in obj;
98
+ }
99
+
100
+ //#endregion
101
+ export { isObjKey as a, objectHasKey as c, typedObjectEntries as d, typedObjectKeys as f, isNonEmptyArray as i, strictTypedObjectEntries as l, asPartialUndefinedValues as n, isSubTypeOf as o, unionsAreTheSame as p, asType as r, narrowStringToUnion as s, asNonPartial as t, typeOnRightExtendsLeftType as u };
@@ -1,24 +1,21 @@
1
- import { PartialPossiblyUndefinedValues } from './typeUtils.cjs';
2
- import { NonPartial } from './typingUtils.cjs';
1
+ import { PartialPossiblyUndefinedValues } from "./typeUtils.mjs";
2
+ import { NonPartial } from "./typingUtils.mjs";
3
3
 
4
+ //#region src/typingFnUtils.d.ts
4
5
  declare function asNonPartial<T extends Record<string, unknown>>(obj: T): NonPartial<T>;
5
6
  /**
6
7
  * A wrapper to Object.entries with a better typing inference
7
8
  *
8
9
  * @param obj
9
10
  */
10
- declare function typedObjectEntries<T extends Record<string, unknown>>(obj: T): NonNullable<{
11
- [K in keyof T]: [K, T[K]];
12
- }[keyof T]>[];
11
+ declare function typedObjectEntries<T extends Record<string, unknown>>(obj: T): NonNullable<{ [K in keyof T]: [K, T[K]] }[keyof T]>[];
13
12
  /**
14
13
  * A wrapper to Object.entries with a better typing inference, but with strict
15
14
  * typing narrowing keys to strings.
16
15
  *
17
16
  * @param obj
18
17
  */
19
- declare function strictTypedObjectEntries<T extends Record<string, unknown>>(obj: T): NonNullable<{
20
- [K in keyof T]: [K & string, T[K]];
21
- }[keyof T]>[];
18
+ declare function strictTypedObjectEntries<T extends Record<string, unknown>>(obj: T): NonNullable<{ [K in keyof T]: [K & string, T[K]] }[keyof T]>[];
22
19
  /**
23
20
  * A wrapper to Object.keys with a better typing inference
24
21
  *
@@ -55,17 +52,13 @@ declare const isSubTypeOf: typeof typeOnRightExtendsLeftType;
55
52
  * @param obj
56
53
  */
57
54
  declare function isObjKey<T extends Record<string, unknown>>(key: unknown, obj: T): key is keyof T;
58
- type UnionDiff<T, U> = [
59
- T
60
- ] extends [U] ? [
61
- U
62
- ] extends [T] ? null : {
63
- onRightHasExtraErr: Exclude<U, T>;
55
+ type UnionDiff<T, U> = [T] extends [U] ? [U] extends [T] ? null : {
56
+ onRightHasExtraErr: Exclude<U, T>;
64
57
  } : [U] extends [T] ? {
65
- onRightHasMissingErr: Exclude<T, U>;
58
+ onRightHasMissingErr: Exclude<T, U>;
66
59
  } : {
67
- onRightHasExtraErr: Exclude<U, T>;
68
- onRightHasMissingErr: Exclude<T, U>;
60
+ onRightHasExtraErr: Exclude<U, T>;
61
+ onRightHasMissingErr: Exclude<T, U>;
69
62
  };
70
63
  /**
71
64
  * Type helper to compare two union types and determine their relationship.
@@ -93,8 +86,6 @@ declare function isNonEmptyArray<T>(array: T[]): array is NonEmptyArray<T>;
93
86
  * @param key - The key to check for
94
87
  * @returns True if the object has the key, false otherwise
95
88
  */
96
- declare function objectHasKey<T extends string>(obj: object, key: T): obj is object & {
97
- [K in T]: unknown;
98
- };
99
-
100
- export { type NonEmptyArray, asNonPartial, asPartialUndefinedValues, asType, isNonEmptyArray, isObjKey, isSubTypeOf, narrowStringToUnion, objectHasKey, strictTypedObjectEntries, typeOnRightExtendsLeftType, typedObjectEntries, typedObjectKeys, unionsAreTheSame };
89
+ declare function objectHasKey<T extends string>(obj: object, key: T): obj is object & { [K in T]: unknown };
90
+ //#endregion
91
+ export { NonEmptyArray, asNonPartial, asPartialUndefinedValues, asType, isNonEmptyArray, isObjKey, isSubTypeOf, narrowStringToUnion, objectHasKey, strictTypedObjectEntries, typeOnRightExtendsLeftType, typedObjectEntries, typedObjectKeys, unionsAreTheSame };
@@ -0,0 +1,3 @@
1
+ import { a as isObjKey, c as objectHasKey, d as typedObjectEntries, f as typedObjectKeys, i as isNonEmptyArray, l as strictTypedObjectEntries, n as asPartialUndefinedValues, o as isSubTypeOf, p as unionsAreTheSame, r as asType, s as narrowStringToUnion, t as asNonPartial, u as typeOnRightExtendsLeftType } from "./typingFnUtils-Bb8drgKF.mjs";
2
+
3
+ export { asNonPartial, asPartialUndefinedValues, asType, isNonEmptyArray, isObjKey, isSubTypeOf, narrowStringToUnion, objectHasKey, strictTypedObjectEntries, typeOnRightExtendsLeftType, typedObjectEntries, typedObjectKeys, unionsAreTheSame };
@@ -1,4 +1,5 @@
1
- type TestTypeIsEqual<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
1
+ //#region src/typingTestUtils.d.ts
2
+ type TestTypeIsEqual<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
2
3
  type TestTypeNotEqual<X, Y> = true extends TestTypeIsEqual<X, Y> ? false : true;
3
4
  declare function test(title: string, func: () => any): void;
4
5
  declare function describe(title: string, func: () => any): void;
@@ -48,12 +49,7 @@ declare function expectTypesAre<X, Y>(result: TestTypeIsEqual<X, Y> extends true
48
49
  * @param result Optional error parameter that appears only when types don't
49
50
  * match
50
51
  */
51
- declare function expectTypesAreEqual<X, Y>(...result: TestTypeIsEqual<X, Y> extends true ? [] : [
52
- error: 'type assertion failed, types should be equal but',
53
- typeOnLeft: X,
54
- _: 'is not equal to',
55
- typeOnRight: Y
56
- ]): void;
52
+ declare function expectTypesAreEqual<X, Y>(...result: TestTypeIsEqual<X, Y> extends true ? [] : [error: 'type assertion failed, types should be equal but', typeOnLeft: X, _: 'is not equal to', typeOnRight: Y]): void;
57
53
  /**
58
54
  * Helper function for type testing that ensures two types are not equal. If
59
55
  * types are equal, it will show a compile-time error.
@@ -68,12 +64,12 @@ declare function expectTypesAreEqual<X, Y>(...result: TestTypeIsEqual<X, Y> exte
68
64
  */
69
65
  declare function expectTypesAreNotEqual<X, Y>(...result: TestTypeIsEqual<X, Y> extends false ? [] : ['error: type assertion failed, types should be NOT equal']): void;
70
66
  declare const typingTest: {
71
- test: typeof test;
72
- describe: typeof describe;
73
- expectType: typeof expectType;
74
- expectTypesAre: typeof expectTypesAre;
75
- expectTypesAreEqual: typeof expectTypesAreEqual;
76
- expectTypesAreNotEqual: typeof expectTypesAreNotEqual;
67
+ test: typeof test;
68
+ describe: typeof describe;
69
+ expectType: typeof expectType;
70
+ expectTypesAre: typeof expectTypesAre;
71
+ expectTypesAreEqual: typeof expectTypesAreEqual;
72
+ expectTypesAreNotEqual: typeof expectTypesAreNotEqual;
77
73
  };
78
-
79
- export { type TestTypeIsEqual, type TestTypeNotEqual, typingTest };
74
+ //#endregion
75
+ export { TestTypeIsEqual, TestTypeNotEqual, typingTest };
@@ -0,0 +1,80 @@
1
+ //#region src/typingTestUtils.ts
2
+ function test(title, func) {
3
+ func();
4
+ }
5
+ function describe(title, func) {
6
+ func();
7
+ }
8
+ /**
9
+ * Helper function for type testing that ensures a type extends `true`. Used in
10
+ * combination with `TestTypeIsEqual` to verify type equality at compile time.
11
+ *
12
+ * @deprecated Use {@link expectTypesAreEqual} or {@link expectTypesAreNotEqual}
13
+ * instead
14
+ * @example
15
+ * expectType<TestTypeIsEqual<string, string>>(); // OK
16
+ * expectType<TestTypeIsEqual<string, number>>(); // Type error
17
+ *
18
+ * @template T Type that must extend `true`
19
+ * @returns An empty object cast to type T
20
+ */
21
+ function expectType() {
22
+ return {};
23
+ }
24
+ /**
25
+ * Helper function for type testing that compares two types and expects a
26
+ * specific result. This function allows for more explicit type equality
27
+ * assertions with a descriptive result.
28
+ *
29
+ * @deprecated Use {@link expectTypesAreEqual} or {@link expectTypesAreNotEqual}
30
+ * instead
31
+ * @example
32
+ * expectTypesAre<string, string>('equal'); // OK
33
+ * expectTypesAre<string, number>('notEqual'); // OK
34
+ * expectTypesAre<string, string>('notEqual'); // Type error
35
+ *
36
+ * @template X First type to compare
37
+ * @template Y Second type to compare
38
+ * @param result Expected comparison result: 'equal' if types are equal,
39
+ * 'notEqual' if they differ
40
+ */
41
+ function expectTypesAre(result) {}
42
+ /**
43
+ * Helper function for type testing that ensures two types are equal. If types
44
+ * are not equal, it will show a compile-time error with details about the
45
+ * mismatch.
46
+ *
47
+ * @example
48
+ * expectTypesAreEqual<string, string>(); // OK
49
+ * expectTypesAreEqual<string, number>(); // Compile error with details
50
+ *
51
+ * @template X First type to compare
52
+ * @template Y Second type to compare
53
+ * @param result Optional error parameter that appears only when types don't
54
+ * match
55
+ */
56
+ function expectTypesAreEqual(...result) {}
57
+ /**
58
+ * Helper function for type testing that ensures two types are not equal. If
59
+ * types are equal, it will show a compile-time error.
60
+ *
61
+ * @example
62
+ * expectTypesAreNotEqual<string, number>(); // OK
63
+ * expectTypesAreNotEqual<string, string>(); // Compile error
64
+ *
65
+ * @template X First type to compare
66
+ * @template Y Second type to compare
67
+ * @param result Optional error parameter that appears only when types match
68
+ */
69
+ function expectTypesAreNotEqual(...result) {}
70
+ const typingTest = {
71
+ test,
72
+ describe,
73
+ expectType,
74
+ expectTypesAre,
75
+ expectTypesAreEqual,
76
+ expectTypesAreNotEqual
77
+ };
78
+
79
+ //#endregion
80
+ export { typingTest };
@@ -0,0 +1,20 @@
1
+ //#region src/typingUtils.d.ts
2
+ /** @deprecated Use `PartialRecord` from `@ls-stack/utils/typeUtils` instead */
3
+ type PartialRecord<K$1 extends keyof any, T> = { [P in K$1]?: T };
4
+ /** @deprecated Use `NonPartial` from `@ls-stack/utils/typeUtils` instead */
5
+ type NonPartial<T> = { [K in keyof Required<T>]: T[K] };
6
+ /**
7
+ * @deprecated Use `ObjKeysWithValuesOfType` from `@ls-stack/utils/typeUtils`
8
+ * instead
9
+ */
10
+ type ObjKeysWithValuesOfType<Obj extends Record<PropertyKey, unknown>, ValueType> = { [K in keyof Obj]: Obj[K] extends ValueType ? K : never }[keyof Obj];
11
+ /** @deprecated Use `IsAny` from `@ls-stack/utils/typeUtils` instead */
12
+ type IsAny<T> = unknown extends T ? [keyof T] extends [never] ? false : true : false;
13
+ /** @deprecated Use `DeepPrettify` from `@ls-stack/utils/typeUtils` instead */
14
+ type Prettify<T extends Record<string, unknown>> = { [P in keyof T]: T[P] } & {};
15
+ /** @deprecated Use `DeepPrettify` from `@ls-stack/utils/typeUtils` instead */
16
+ type DeepPrettify<T> = { [K in keyof T]: T[K] extends Record<string, unknown> ? DeepPrettify<T[K]> : T[K] } & {};
17
+ type AddPrefixToObjKeys<T extends Record<string, unknown>, Prefix extends string> = { [K in keyof T & string as `${Prefix}${K}`]: T[K] };
18
+ type AddSuffixToObjKeys<T extends Record<string, unknown>, Suffix extends string> = { [K in keyof T & string as `${K}${Suffix}`]: T[K] };
19
+ //#endregion
20
+ export { AddPrefixToObjKeys, AddSuffixToObjKeys, DeepPrettify, IsAny, NonPartial, ObjKeysWithValuesOfType, PartialRecord, Prettify };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,17 @@
1
+ //#region src/yamlStringify.d.ts
2
+ type YamlStringifyOptions = {
3
+ maxLineLength?: number;
4
+ showUndefined?: boolean;
5
+ maxDepth?: number;
6
+ collapseObjects?: boolean;
7
+ addRootObjSpaces?: 'before' | 'after' | 'beforeAndAfter' | false;
8
+ };
9
+ declare function yamlStringify(obj: unknown, {
10
+ maxLineLength,
11
+ showUndefined,
12
+ maxDepth,
13
+ collapseObjects,
14
+ addRootObjSpaces
15
+ }?: YamlStringifyOptions): string;
16
+ //#endregion
17
+ export { YamlStringifyOptions, yamlStringify };