ts-data-forge 14.7.1 → 14.9.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 (287) hide show
  1. package/README.md +22 -34
  2. package/dist/array/impl/array-utils-creation.d.mts +3 -3
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-element-access.d.mts +2 -2
  6. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  7. package/dist/array/impl/array-utils-element-access.mjs +1 -1
  8. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  9. package/dist/array/impl/array-utils-iterators.d.mts +1 -1
  10. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -1
  11. package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts +1 -1
  12. package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts.map +1 -1
  13. package/dist/array/impl/array-utils-length-bounded-array-guard.d.mts +9 -9
  14. package/dist/array/impl/array-utils-length-bounded-array-guard.d.mts.map +1 -1
  15. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +1 -1
  16. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -1
  17. package/dist/array/impl/array-utils-length-bounded-tuple-cast.d.mts +2 -2
  18. package/dist/array/impl/array-utils-length-bounded-tuple-cast.d.mts.map +1 -1
  19. package/dist/array/impl/array-utils-length-bounded-tuple-guard.d.mts +3 -3
  20. package/dist/array/impl/array-utils-length-bounded-tuple-guard.d.mts.map +1 -1
  21. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +1 -1
  22. package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-modification.d.mts +2 -2
  24. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  25. package/dist/array/impl/array-utils-reducing-value.d.mts +2 -2
  26. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  27. package/dist/array/impl/array-utils-reducing-value.mjs +3 -4
  28. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  29. package/dist/array/impl/array-utils-search.d.mts +1 -1
  30. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  31. package/dist/array/impl/array-utils-set-op.d.mts +1 -1
  32. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  33. package/dist/array/impl/array-utils-size.d.mts +2 -2
  34. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  35. package/dist/array/impl/array-utils-slice-clamped.d.mts +1 -1
  36. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  37. package/dist/array/impl/array-utils-slicing.d.mts +2 -2
  38. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  39. package/dist/array/impl/array-utils-transformation.d.mts +2 -2
  40. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  41. package/dist/array/impl/array-utils-transformation.mjs +6 -3
  42. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  43. package/dist/array/impl/array-utils-validation.d.mts +2 -2
  44. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  45. package/dist/collections/imap-mapped.d.mts +2 -2
  46. package/dist/collections/imap-mapped.d.mts.map +1 -1
  47. package/dist/collections/imap-mapped.mjs +10 -7
  48. package/dist/collections/imap-mapped.mjs.map +1 -1
  49. package/dist/collections/imap.d.mts +2 -2
  50. package/dist/collections/imap.d.mts.map +1 -1
  51. package/dist/collections/imap.mjs +10 -7
  52. package/dist/collections/imap.mjs.map +1 -1
  53. package/dist/collections/iset-mapped.d.mts +2 -2
  54. package/dist/collections/iset-mapped.d.mts.map +1 -1
  55. package/dist/collections/iset-mapped.mjs +6 -3
  56. package/dist/collections/iset-mapped.mjs.map +1 -1
  57. package/dist/collections/iset.d.mts +2 -2
  58. package/dist/collections/iset.d.mts.map +1 -1
  59. package/dist/collections/iset.mjs +5 -5
  60. package/dist/collections/iset.mjs.map +1 -1
  61. package/dist/collections/queue.d.mts +1 -1
  62. package/dist/collections/queue.d.mts.map +1 -1
  63. package/dist/collections/stack.d.mts +1 -1
  64. package/dist/collections/stack.d.mts.map +1 -1
  65. package/dist/functional/index.d.mts +2 -2
  66. package/dist/functional/index.d.mts.map +1 -1
  67. package/dist/functional/index.mjs +1 -1
  68. package/dist/functional/index.mjs.map +1 -1
  69. package/dist/guard/is-non-empty-string.d.mts +1 -1
  70. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  71. package/dist/guard/is-primitive.d.mts +1 -1
  72. package/dist/guard/is-primitive.d.mts.map +1 -1
  73. package/dist/guard/is-type.d.mts +1 -1
  74. package/dist/guard/is-type.d.mts.map +1 -1
  75. package/dist/iterator/range.d.mts +5 -4
  76. package/dist/iterator/range.d.mts.map +1 -1
  77. package/dist/iterator/range.mjs.map +1 -1
  78. package/dist/json/json.d.mts +29 -32
  79. package/dist/json/json.d.mts.map +1 -1
  80. package/dist/json/json.mjs +1 -4
  81. package/dist/json/json.mjs.map +1 -1
  82. package/dist/number/branded-types/finite-number.d.mts +1 -1
  83. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  84. package/dist/number/branded-types/int.d.mts +2 -2
  85. package/dist/number/branded-types/int.d.mts.map +1 -1
  86. package/dist/number/branded-types/int16.d.mts +1 -1
  87. package/dist/number/branded-types/int16.d.mts.map +1 -1
  88. package/dist/number/branded-types/int32.d.mts +1 -1
  89. package/dist/number/branded-types/int32.d.mts.map +1 -1
  90. package/dist/number/branded-types/negative-finite-number.d.mts +1 -1
  91. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  92. package/dist/number/branded-types/negative-int.d.mts +1 -1
  93. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  94. package/dist/number/branded-types/negative-safe-int.d.mts +1 -1
  95. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  96. package/dist/number/branded-types/non-negative-finite-number.d.mts +1 -1
  97. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  98. package/dist/number/branded-types/non-negative-int16.d.mts +1 -1
  99. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  100. package/dist/number/branded-types/non-negative-int32.d.mts +1 -1
  101. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  102. package/dist/number/branded-types/non-positive-finite-number.d.mts +1 -1
  103. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  104. package/dist/number/branded-types/non-positive-int.d.mts +1 -1
  105. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  106. package/dist/number/branded-types/non-positive-safe-int.d.mts +1 -1
  107. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  108. package/dist/number/branded-types/non-zero-finite-number.d.mts +1 -1
  109. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  110. package/dist/number/branded-types/non-zero-int.d.mts +1 -1
  111. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  112. package/dist/number/branded-types/non-zero-int16.d.mts +1 -1
  113. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  114. package/dist/number/branded-types/non-zero-int32.d.mts +1 -1
  115. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  116. package/dist/number/branded-types/non-zero-safe-int.d.mts +1 -1
  117. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  118. package/dist/number/branded-types/non-zero-uint16.d.mts +1 -1
  119. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  120. package/dist/number/branded-types/non-zero-uint32.d.mts +1 -1
  121. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  122. package/dist/number/branded-types/positive-finite-number.d.mts +1 -1
  123. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  124. package/dist/number/branded-types/positive-int.d.mts +2 -2
  125. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  126. package/dist/number/branded-types/positive-int16.d.mts +1 -1
  127. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  128. package/dist/number/branded-types/positive-int32.d.mts +1 -1
  129. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  130. package/dist/number/branded-types/positive-safe-int.d.mts +2 -2
  131. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  132. package/dist/number/branded-types/positive-uint16.d.mts +1 -1
  133. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  134. package/dist/number/branded-types/positive-uint32.d.mts +1 -1
  135. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  136. package/dist/number/branded-types/safe-int.d.mts +2 -2
  137. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  138. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  139. package/dist/number/branded-types/safe-uint.d.mts +1 -1
  140. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  141. package/dist/number/branded-types/uint.d.mts +2 -2
  142. package/dist/number/branded-types/uint.d.mts.map +1 -1
  143. package/dist/number/branded-types/uint16.d.mts +1 -1
  144. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  145. package/dist/number/branded-types/uint32.d.mts +1 -1
  146. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  147. package/dist/number/enum/int8.d.mts +1 -1
  148. package/dist/number/enum/int8.d.mts.map +1 -1
  149. package/dist/number/enum/uint8.d.mts +1 -1
  150. package/dist/number/enum/uint8.d.mts.map +1 -1
  151. package/dist/number/num-arithmetic-types.d.mts +1 -1
  152. package/dist/number/num-arithmetic-types.d.mts.map +1 -1
  153. package/dist/number/num.d.mts +3 -3
  154. package/dist/number/num.d.mts.map +1 -1
  155. package/dist/number/refined-number-utils.d.mts +2 -2
  156. package/dist/number/refined-number-utils.d.mts.map +1 -1
  157. package/dist/number/refined-number-utils.mjs +6 -4
  158. package/dist/number/refined-number-utils.mjs.map +1 -1
  159. package/dist/object/object.d.mts +5 -8
  160. package/dist/object/object.d.mts.map +1 -1
  161. package/dist/object/object.mjs +16 -13
  162. package/dist/object/object.mjs.map +1 -1
  163. package/dist/others/cast-mutable.d.mts +1 -1
  164. package/dist/others/cast-mutable.d.mts.map +1 -1
  165. package/dist/others/cast-readonly.d.mts +1 -1
  166. package/dist/others/cast-readonly.d.mts.map +1 -1
  167. package/dist/others/debounce-function.d.mts.map +1 -1
  168. package/dist/others/debounce-function.mjs +1 -5
  169. package/dist/others/debounce-function.mjs.map +1 -1
  170. package/dist/others/memoize-function.d.mts +1 -1
  171. package/dist/others/memoize-function.d.mts.map +1 -1
  172. package/dist/string/str.d.mts +26 -18
  173. package/dist/string/str.d.mts.map +1 -1
  174. package/dist/string/str.mjs +9 -1
  175. package/dist/string/str.mjs.map +1 -1
  176. package/dist/types.d.mts +1 -1
  177. package/dist/types.d.mts.map +1 -1
  178. package/package.json +32 -31
  179. package/src/array/impl/array-utils-creation.mts +24 -22
  180. package/src/array/impl/array-utils-creation.test.mts +25 -22
  181. package/src/array/impl/array-utils-element-access.mts +7 -7
  182. package/src/array/impl/array-utils-element-access.test.mts +2 -2
  183. package/src/array/impl/array-utils-iterators.mts +1 -1
  184. package/src/array/impl/array-utils-iterators.test.mts +1 -1
  185. package/src/array/impl/array-utils-length-bounded-array-cast.mts +7 -7
  186. package/src/array/impl/array-utils-length-bounded-array-cast.test.mts +6 -6
  187. package/src/array/impl/array-utils-length-bounded-array-guard.mts +15 -15
  188. package/src/array/impl/array-utils-length-bounded-array-guard.test.mts +66 -54
  189. package/src/array/impl/array-utils-length-bounded-tuple-cast.mts +6 -6
  190. package/src/array/impl/array-utils-length-bounded-tuple-cast.test.mts +10 -10
  191. package/src/array/impl/array-utils-length-bounded-tuple-guard.mts +8 -8
  192. package/src/array/impl/array-utils-length-bounded-tuple-guard.test.mts +38 -28
  193. package/src/array/impl/array-utils-length-constraint-preservation.test.mts +14 -14
  194. package/src/array/impl/array-utils-modification.mts +12 -12
  195. package/src/array/impl/array-utils-modification.test.mts +7 -7
  196. package/src/array/impl/array-utils-overload-type-error.test.mts +1 -1
  197. package/src/array/impl/array-utils-reducing-value.mts +9 -11
  198. package/src/array/impl/array-utils-reducing-value.test.mts +2 -2
  199. package/src/array/impl/array-utils-search.mts +4 -4
  200. package/src/array/impl/array-utils-search.test.mts +25 -17
  201. package/src/array/impl/array-utils-set-op.mts +1 -1
  202. package/src/array/impl/array-utils-shape-invariants.test.mts +8 -8
  203. package/src/array/impl/array-utils-size.mts +5 -5
  204. package/src/array/impl/array-utils-slice-clamped.mts +2 -2
  205. package/src/array/impl/array-utils-slicing.mts +8 -8
  206. package/src/array/impl/array-utils-slicing.test.mts +1 -1
  207. package/src/array/impl/array-utils-transformation.mts +26 -24
  208. package/src/array/impl/array-utils-transformation.test.mts +12 -10
  209. package/src/array/impl/array-utils-validation.mts +7 -7
  210. package/src/array/impl/array-utils-validation.test.mts +39 -39
  211. package/src/array/impl/array.test.mts +1 -1
  212. package/src/collections/imap-mapped.mts +15 -9
  213. package/src/collections/imap-mapped.test.mts +1 -1
  214. package/src/collections/imap.mts +15 -9
  215. package/src/collections/imap.test.mts +7 -5
  216. package/src/collections/iset-mapped.mts +14 -8
  217. package/src/collections/iset.mts +12 -10
  218. package/src/collections/iset.test.mts +14 -12
  219. package/src/collections/queue.mts +1 -1
  220. package/src/collections/stack.mts +1 -1
  221. package/src/collections/stack.test.mts +8 -6
  222. package/src/functional/index.mts +5 -0
  223. package/src/guard/is-error.test.mts +6 -4
  224. package/src/guard/is-non-empty-string.mts +1 -1
  225. package/src/guard/is-non-empty-string.test.mts +15 -11
  226. package/src/guard/is-primitive.mts +1 -1
  227. package/src/guard/is-type.mts +1 -1
  228. package/src/guard/is-type.test.mts +87 -59
  229. package/src/iterator/range.mts +5 -9
  230. package/src/iterator/range.test.mts +29 -0
  231. package/src/json/json.mts +32 -35
  232. package/src/json/json.test.mts +106 -89
  233. package/src/number/branded-types/finite-number.mts +4 -4
  234. package/src/number/branded-types/int.mts +2 -2
  235. package/src/number/branded-types/int16.mts +1 -1
  236. package/src/number/branded-types/int32.mts +1 -1
  237. package/src/number/branded-types/negative-finite-number.mts +1 -1
  238. package/src/number/branded-types/negative-finite-number.test.mts +4 -4
  239. package/src/number/branded-types/negative-int.mts +3 -3
  240. package/src/number/branded-types/negative-int.test.mts +1 -1
  241. package/src/number/branded-types/negative-safe-int.mts +3 -3
  242. package/src/number/branded-types/negative-safe-int.test.mts +1 -1
  243. package/src/number/branded-types/non-negative-finite-number.mts +3 -3
  244. package/src/number/branded-types/non-negative-int16.mts +1 -1
  245. package/src/number/branded-types/non-negative-int32.mts +1 -1
  246. package/src/number/branded-types/non-positive-finite-number.mts +1 -1
  247. package/src/number/branded-types/non-positive-int.mts +1 -1
  248. package/src/number/branded-types/non-positive-safe-int.mts +1 -1
  249. package/src/number/branded-types/non-zero-finite-number.mts +5 -5
  250. package/src/number/branded-types/non-zero-int.mts +1 -1
  251. package/src/number/branded-types/non-zero-int16.mts +1 -1
  252. package/src/number/branded-types/non-zero-int32.mts +1 -1
  253. package/src/number/branded-types/non-zero-safe-int.mts +4 -4
  254. package/src/number/branded-types/non-zero-uint16.mts +1 -1
  255. package/src/number/branded-types/non-zero-uint32.mts +1 -1
  256. package/src/number/branded-types/positive-finite-number.mts +4 -4
  257. package/src/number/branded-types/positive-int.mts +2 -2
  258. package/src/number/branded-types/positive-int16.mts +1 -1
  259. package/src/number/branded-types/positive-int32.mts +1 -1
  260. package/src/number/branded-types/positive-safe-int.mts +4 -4
  261. package/src/number/branded-types/positive-uint16.mts +1 -1
  262. package/src/number/branded-types/positive-uint32.mts +1 -1
  263. package/src/number/branded-types/safe-int.mts +2 -5
  264. package/src/number/branded-types/safe-uint.mts +1 -1
  265. package/src/number/branded-types/uint.mts +2 -2
  266. package/src/number/branded-types/uint16.mts +1 -1
  267. package/src/number/branded-types/uint32.mts +1 -1
  268. package/src/number/enum/int8.mts +5 -5
  269. package/src/number/enum/uint8.mts +4 -4
  270. package/src/number/num-arithmetic-types.mts +27 -27
  271. package/src/number/num-arithmetic-types.test.mts +21 -21
  272. package/src/number/num-arithmetic.test.mts +6 -6
  273. package/src/number/num.mts +24 -24
  274. package/src/number/num.test.mts +1 -1
  275. package/src/number/refined-number-utils.mts +25 -21
  276. package/src/object/object.mts +46 -34
  277. package/src/object/object.test.mts +5 -5
  278. package/src/others/cast-mutable.mts +1 -1
  279. package/src/others/cast-readonly.mts +1 -1
  280. package/src/others/debounce-function.mts +1 -5
  281. package/src/others/debounce-function.test.mts +3 -0
  282. package/src/others/fast-deep-equal.test.mts +1 -1
  283. package/src/others/map-nullable.test.mts +1 -1
  284. package/src/others/memoize-function.mts +1 -1
  285. package/src/string/str.mts +33 -25
  286. package/src/string/str.test.mts +48 -38
  287. package/src/types.mts +14 -14
@@ -1,10 +1,10 @@
1
- import {
2
- type BoundedLengthString,
3
- type FixedLengthString,
4
- type MaxLengthString,
5
- type MinLengthString,
6
- type NonEmptyString,
7
- type SupportedLength,
1
+ import type {
2
+ BoundedLengthString,
3
+ FixedLengthString,
4
+ MaxLengthString,
5
+ MinLengthString,
6
+ NonEmptyString,
7
+ SupportedLength,
8
8
  } from 'ts-type-forge';
9
9
 
10
10
  /**
@@ -37,11 +37,13 @@ export namespace Str {
37
37
  *
38
38
  * assert.isFalse(Str.isMinLengthString(12, 'short'));
39
39
  *
40
- * if (Str.isMinLengthString(12, input)) {
41
- * const nonEmpty: NonEmptyString = input; // OK (12 >= 1)
42
- *
43
- * assert.isTrue(nonEmpty.length >= 12);
40
+ * if (!Str.isMinLengthString(12, input)) {
41
+ * return;
44
42
  * }
43
+ *
44
+ * const nonEmpty: NonEmptyString = input; // OK (12 >= 1)
45
+ *
46
+ * assert.isTrue(nonEmpty.length >= 12);
45
47
  * ```
46
48
  *
47
49
  * @template MinLength - The minimum number of characters (inclusive).
@@ -79,11 +81,13 @@ export namespace Str {
79
81
  *
80
82
  * assert.isFalse(Str.isMaxLengthString(3, input));
81
83
  *
82
- * if (Str.isMaxLengthString(32, input)) {
83
- * const relaxed: MaxLengthString<64> = input; // OK (32 <= 64)
84
- *
85
- * assert.isTrue(relaxed.length <= 32);
84
+ * if (!Str.isMaxLengthString(32, input)) {
85
+ * return;
86
86
  * }
87
+ *
88
+ * const relaxed: MaxLengthString<64> = input; // OK (32 <= 64)
89
+ *
90
+ * assert.isTrue(relaxed.length <= 32);
87
91
  * ```
88
92
  *
89
93
  * @template MaxLength - The maximum number of characters (inclusive).
@@ -122,11 +126,13 @@ export namespace Str {
122
126
  *
123
127
  * assert.isFalse(Str.isBoundedLengthString(8, 16, 'user'));
124
128
  *
125
- * if (Str.isBoundedLengthString(8, 16, input)) {
126
- * const userId: BoundedLengthString<1, 255> = input; // OK ([8, 16] ⊆ [1, 255])
127
- *
128
- * assert.isTrue(userId.length >= 8 && userId.length <= 16);
129
+ * if (!Str.isBoundedLengthString(8, 16, input)) {
130
+ * return;
129
131
  * }
132
+ *
133
+ * const userId: BoundedLengthString<1, 255> = input; // OK ([8, 16] ⊆ [1, 255])
134
+ *
135
+ * assert.isTrue(8 <= userId.length && userId.length <= 16);
130
136
  * ```
131
137
  *
132
138
  * @template MinLength - The minimum number of characters (inclusive).
@@ -148,7 +154,7 @@ export namespace Str {
148
154
  maxLength: MaxLength,
149
155
  s: S,
150
156
  ): s is BoundedLengthString<MinLength, MaxLength> & S =>
151
- s.length >= minLength && s.length <= maxLength;
157
+ minLength <= s.length && s.length <= maxLength;
152
158
 
153
159
  /**
154
160
  * Type guard that checks if a string has exactly `length` characters.
@@ -171,11 +177,13 @@ export namespace Str {
171
177
  *
172
178
  * assert.isFalse(Str.isFixedLengthString(3, input));
173
179
  *
174
- * if (Str.isFixedLengthString(2, input)) {
175
- * const atMost5: MaxLengthString<5> = input; // OK (2 <= 5)
176
- *
177
- * assert.isTrue(atMost5.length === 2);
180
+ * if (!Str.isFixedLengthString(2, input)) {
181
+ * return;
178
182
  * }
183
+ *
184
+ * const atMost5: MaxLengthString<5> = input; // OK (2 <= 5)
185
+ *
186
+ * assert.isTrue(atMost5.length === 2);
179
187
  * ```
180
188
  *
181
189
  * @template Length - The exact number of characters.
@@ -361,7 +369,7 @@ export namespace Str {
361
369
  *
362
370
  * const relaxed: BoundedLengthString<1, 255> = userId; // OK ([8, 16] ⊆ [1, 255])
363
371
  *
364
- * assert.isTrue(relaxed.length >= 8 && relaxed.length <= 16);
372
+ * assert.isTrue(8 <= relaxed.length && relaxed.length <= 16);
365
373
  *
366
374
  * // curried version
367
375
  * const asUserId = Str.asBoundedLengthString(8, 16);
@@ -1,9 +1,9 @@
1
- import {
2
- type BoundedLengthString,
3
- type FixedLengthString,
4
- type MaxLengthString,
5
- type MinLengthString,
6
- type NonEmptyString,
1
+ import type {
2
+ BoundedLengthString,
3
+ FixedLengthString,
4
+ MaxLengthString,
5
+ MinLengthString,
6
+ NonEmptyString,
7
7
  } from 'ts-type-forge';
8
8
  import { expectType } from '../expect-type.mjs';
9
9
  import { Str } from './str.mjs';
@@ -34,25 +34,29 @@ describe(Str.isMinLengthString, () => {
34
34
  test('should act as a type guard', () => {
35
35
  const value: string = 'very-secret-password';
36
36
 
37
- if (Str.isMinLengthString(12, value)) {
38
- expectType<typeof value, MinLengthString<12>>('<=');
37
+ if (!Str.isMinLengthString(12, value)) {
38
+ return;
39
+ }
39
40
 
40
- expectType<typeof value, NonEmptyString>('<='); // 12 >= 1
41
+ expectType<typeof value, MinLengthString<12>>('<=');
41
42
 
42
- expectType<typeof value, MinLengthString<16>>('!<=');
43
+ expectType<typeof value, NonEmptyString>('<='); // 12 >= 1
43
44
 
44
- expect(value.length).toBeGreaterThanOrEqual(12);
45
- }
45
+ expectType<typeof value, MinLengthString<16>>('!<=');
46
+
47
+ expect(value.length).toBeGreaterThanOrEqual(12);
46
48
  });
47
49
 
48
50
  test('should preserve literal string types', () => {
49
51
  const literal = 'hello';
50
52
 
51
- if (Str.isMinLengthString(3, literal)) {
52
- expectType<typeof literal, 'hello'>('<=');
53
-
54
- expectType<typeof literal, MinLengthString<3>>('<=');
53
+ if (!Str.isMinLengthString(3, literal)) {
54
+ return;
55
55
  }
56
+
57
+ expectType<typeof literal, 'hello'>('<=');
58
+
59
+ expectType<typeof literal, MinLengthString<3>>('<=');
56
60
  });
57
61
  });
58
62
 
@@ -80,15 +84,17 @@ describe(Str.isMaxLengthString, () => {
80
84
  test('should act as a type guard', () => {
81
85
  const value: string = 'noshiro';
82
86
 
83
- if (Str.isMaxLengthString(32, value)) {
84
- expectType<typeof value, MaxLengthString<32>>('<=');
87
+ if (!Str.isMaxLengthString(32, value)) {
88
+ return;
89
+ }
85
90
 
86
- expectType<typeof value, MaxLengthString<64>>('<='); // 32 <= 64
91
+ expectType<typeof value, MaxLengthString<32>>('<=');
87
92
 
88
- expectType<typeof value, MaxLengthString<16>>('!<=');
93
+ expectType<typeof value, MaxLengthString<64>>('<='); // 32 <= 64
89
94
 
90
- expect(value.length).toBeLessThanOrEqual(32);
91
- }
95
+ expectType<typeof value, MaxLengthString<16>>('!<=');
96
+
97
+ expect(value.length).toBeLessThanOrEqual(32);
92
98
  });
93
99
  });
94
100
 
@@ -112,19 +118,21 @@ describe(Str.isBoundedLengthString, () => {
112
118
  test('should act as a type guard', () => {
113
119
  const value: string = 'user-12345678';
114
120
 
115
- if (Str.isBoundedLengthString(8, 16, value)) {
116
- expectType<typeof value, BoundedLengthString<8, 16>>('<=');
121
+ if (!Str.isBoundedLengthString(8, 16, value)) {
122
+ return;
123
+ }
124
+
125
+ expectType<typeof value, BoundedLengthString<8, 16>>('<=');
117
126
 
118
- expectType<typeof value, BoundedLengthString<1, 255>>('<='); // [8, 16] ⊆ [1, 255]
127
+ expectType<typeof value, BoundedLengthString<1, 255>>('<='); // [8, 16] ⊆ [1, 255]
119
128
 
120
- expectType<typeof value, MinLengthString<8>>('<=');
129
+ expectType<typeof value, MinLengthString<8>>('<=');
121
130
 
122
- expectType<typeof value, MaxLengthString<16>>('<=');
131
+ expectType<typeof value, MaxLengthString<16>>('<=');
123
132
 
124
- expectType<typeof value, NonEmptyString>('<='); // 8 >= 1
133
+ expectType<typeof value, NonEmptyString>('<='); // 8 >= 1
125
134
 
126
- expectType<typeof value, BoundedLengthString<10, 16>>('!<=');
127
- }
135
+ expectType<typeof value, BoundedLengthString<10, 16>>('!<=');
128
136
  });
129
137
  });
130
138
 
@@ -148,19 +156,21 @@ describe(Str.isFixedLengthString, () => {
148
156
  test('should act as a type guard', () => {
149
157
  const value: string = 'JP';
150
158
 
151
- if (Str.isFixedLengthString(2, value)) {
152
- expectType<typeof value, FixedLengthString<2>>('<=');
159
+ if (!Str.isFixedLengthString(2, value)) {
160
+ return;
161
+ }
153
162
 
154
- expectType<typeof value, BoundedLengthString<2, 2>>('<=');
163
+ expectType<typeof value, FixedLengthString<2>>('<=');
155
164
 
156
- expectType<typeof value, MaxLengthString<5>>('<='); // 2 <= 5
165
+ expectType<typeof value, BoundedLengthString<2, 2>>('<=');
157
166
 
158
- expectType<typeof value, MinLengthString<1>>('<='); // 2 >= 1
167
+ expectType<typeof value, MaxLengthString<5>>('<='); // 2 <= 5
159
168
 
160
- expectType<typeof value, NonEmptyString>('<=');
169
+ expectType<typeof value, MinLengthString<1>>('<='); // 2 >= 1
161
170
 
162
- expectType<typeof value, FixedLengthString<3>>('!<=');
163
- }
171
+ expectType<typeof value, NonEmptyString>('<=');
172
+
173
+ expectType<typeof value, FixedLengthString<3>>('!<=');
164
174
  });
165
175
  });
166
176
 
package/src/types.mts CHANGED
@@ -1,17 +1,17 @@
1
- import {
2
- type IndexOfTuple,
3
- type IntersectBrand,
4
- type IsFixedLengthList,
5
- type NegativeIndexOfTuple,
6
- type NegativeInt32,
7
- type NormalizeBrandUnion,
8
- type PositiveInt,
9
- type PositiveNumber,
10
- type Primitive,
11
- type SafeInt,
12
- type SafeUint,
13
- type Uint32,
14
- type WithSmallInt,
1
+ import type {
2
+ IndexOfTuple,
3
+ IntersectBrand,
4
+ IsFixedLengthList,
5
+ NegativeIndexOfTuple,
6
+ NegativeInt32,
7
+ NormalizeBrandUnion,
8
+ PositiveInt,
9
+ PositiveNumber,
10
+ Primitive,
11
+ SafeInt,
12
+ SafeUint,
13
+ Uint32,
14
+ WithSmallInt,
15
15
  } from 'ts-type-forge';
16
16
 
17
17
  export type SmallPositiveInt = WithSmallInt<PositiveInt>;