ts-fortress 9.2.0 → 9.2.1

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 (250) hide show
  1. package/dist/array/array-at-least-length.mjs +59 -58
  2. package/dist/array/array-at-least-length.mjs.map +1 -1
  3. package/dist/array/array-at-most-length.mjs +62 -59
  4. package/dist/array/array-at-most-length.mjs.map +1 -1
  5. package/dist/array/array-bounded-length.mjs +66 -67
  6. package/dist/array/array-bounded-length.mjs.map +1 -1
  7. package/dist/array/array-of-length.d.mts.map +1 -1
  8. package/dist/array/array-of-length.mjs +65 -60
  9. package/dist/array/array-of-length.mjs.map +1 -1
  10. package/dist/array/array.d.mts.map +1 -1
  11. package/dist/array/array.mjs +39 -40
  12. package/dist/array/array.mjs.map +1 -1
  13. package/dist/array/non-empty-array.d.mts.map +1 -1
  14. package/dist/array/non-empty-array.mjs +53 -54
  15. package/dist/array/non-empty-array.mjs.map +1 -1
  16. package/dist/array/tuple.d.mts +3 -3
  17. package/dist/array/tuple.d.mts.map +1 -1
  18. package/dist/array/tuple.mjs +69 -61
  19. package/dist/array/tuple.mjs.map +1 -1
  20. package/dist/brand/brand.d.mts.map +1 -1
  21. package/dist/brand/brand.mjs +41 -37
  22. package/dist/brand/brand.mjs.map +1 -1
  23. package/dist/brand/branded-number.d.mts.map +1 -1
  24. package/dist/brand/branded-number.mjs +10 -11
  25. package/dist/brand/branded-number.mjs.map +1 -1
  26. package/dist/brand/branded-string.d.mts.map +1 -1
  27. package/dist/brand/branded-string.mjs +10 -11
  28. package/dist/brand/branded-string.mjs.map +1 -1
  29. package/dist/compose/intersection.d.mts +7 -7
  30. package/dist/compose/intersection.d.mts.map +1 -1
  31. package/dist/compose/intersection.mjs +72 -81
  32. package/dist/compose/intersection.mjs.map +1 -1
  33. package/dist/compose/union.d.mts +6 -6
  34. package/dist/compose/union.d.mts.map +1 -1
  35. package/dist/compose/union.mjs +51 -55
  36. package/dist/compose/union.mjs.map +1 -1
  37. package/dist/enum/enum.mjs +38 -38
  38. package/dist/enum/enum.mjs.map +1 -1
  39. package/dist/enum/int-range.d.mts.map +1 -1
  40. package/dist/enum/int-range.mjs +40 -38
  41. package/dist/enum/int-range.mjs.map +1 -1
  42. package/dist/enum/uint-range.d.mts.map +1 -1
  43. package/dist/enum/uint-range.mjs +40 -38
  44. package/dist/enum/uint-range.mjs.map +1 -1
  45. package/dist/other-types/literal.d.mts.map +1 -1
  46. package/dist/other-types/literal.mjs +3 -7
  47. package/dist/other-types/literal.mjs.map +1 -1
  48. package/dist/other-types/map.d.mts +3 -3
  49. package/dist/other-types/map.d.mts.map +1 -1
  50. package/dist/other-types/map.mjs +72 -70
  51. package/dist/other-types/map.mjs.map +1 -1
  52. package/dist/other-types/recursion.d.mts.map +1 -1
  53. package/dist/other-types/recursion.mjs +61 -206
  54. package/dist/other-types/recursion.mjs.map +1 -1
  55. package/dist/other-types/refine.d.mts.map +1 -1
  56. package/dist/other-types/refine.mjs +20 -19
  57. package/dist/other-types/refine.mjs.map +1 -1
  58. package/dist/other-types/set.d.mts +3 -3
  59. package/dist/other-types/set.d.mts.map +1 -1
  60. package/dist/other-types/set.mjs +51 -50
  61. package/dist/other-types/set.mjs.map +1 -1
  62. package/dist/other-types/template-literal.d.mts.map +1 -1
  63. package/dist/other-types/template-literal.mjs +35 -109
  64. package/dist/other-types/template-literal.mjs.map +1 -1
  65. package/dist/other-types/unknown.d.mts.map +1 -1
  66. package/dist/other-types/unknown.mjs +10 -10
  67. package/dist/other-types/unknown.mjs.map +1 -1
  68. package/dist/predefined/brand/number/finite-number.d.mts.map +1 -1
  69. package/dist/predefined/brand/number/finite-number.mjs +6 -6
  70. package/dist/predefined/brand/number/finite-number.mjs.map +1 -1
  71. package/dist/predefined/brand/number/int.d.mts.map +1 -1
  72. package/dist/predefined/brand/number/int.mjs +6 -6
  73. package/dist/predefined/brand/number/int.mjs.map +1 -1
  74. package/dist/predefined/brand/number/int16.d.mts.map +1 -1
  75. package/dist/predefined/brand/number/int16.mjs +18 -18
  76. package/dist/predefined/brand/number/int16.mjs.map +1 -1
  77. package/dist/predefined/brand/number/int32.d.mts.map +1 -1
  78. package/dist/predefined/brand/number/int32.mjs +14 -14
  79. package/dist/predefined/brand/number/int32.mjs.map +1 -1
  80. package/dist/predefined/brand/number/negative-finite-number.d.mts.map +1 -1
  81. package/dist/predefined/brand/number/negative-finite-number.mjs +6 -6
  82. package/dist/predefined/brand/number/negative-finite-number.mjs.map +1 -1
  83. package/dist/predefined/brand/number/negative-int.d.mts.map +1 -1
  84. package/dist/predefined/brand/number/negative-int.mjs +15 -15
  85. package/dist/predefined/brand/number/negative-int.mjs.map +1 -1
  86. package/dist/predefined/brand/number/negative-safe-int.d.mts.map +1 -1
  87. package/dist/predefined/brand/number/negative-safe-int.mjs +16 -16
  88. package/dist/predefined/brand/number/negative-safe-int.mjs.map +1 -1
  89. package/dist/predefined/brand/number/non-negative-finite-number.d.mts.map +1 -1
  90. package/dist/predefined/brand/number/non-negative-finite-number.mjs +6 -6
  91. package/dist/predefined/brand/number/non-negative-finite-number.mjs.map +1 -1
  92. package/dist/predefined/brand/number/non-positive-finite-number.d.mts.map +1 -1
  93. package/dist/predefined/brand/number/non-positive-finite-number.mjs +6 -6
  94. package/dist/predefined/brand/number/non-positive-finite-number.mjs.map +1 -1
  95. package/dist/predefined/brand/number/non-positive-int.d.mts.map +1 -1
  96. package/dist/predefined/brand/number/non-positive-int.mjs +6 -6
  97. package/dist/predefined/brand/number/non-positive-int.mjs.map +1 -1
  98. package/dist/predefined/brand/number/non-positive-safe-int.d.mts.map +1 -1
  99. package/dist/predefined/brand/number/non-positive-safe-int.mjs +15 -15
  100. package/dist/predefined/brand/number/non-positive-safe-int.mjs.map +1 -1
  101. package/dist/predefined/brand/number/non-zero-finite-number.d.mts.map +1 -1
  102. package/dist/predefined/brand/number/non-zero-finite-number.mjs +6 -6
  103. package/dist/predefined/brand/number/non-zero-finite-number.mjs.map +1 -1
  104. package/dist/predefined/brand/number/non-zero-int.d.mts.map +1 -1
  105. package/dist/predefined/brand/number/non-zero-int.mjs +6 -6
  106. package/dist/predefined/brand/number/non-zero-int.mjs.map +1 -1
  107. package/dist/predefined/brand/number/non-zero-safe-int.d.mts.map +1 -1
  108. package/dist/predefined/brand/number/non-zero-safe-int.mjs +6 -6
  109. package/dist/predefined/brand/number/non-zero-safe-int.mjs.map +1 -1
  110. package/dist/predefined/brand/number/positive-finite-number.d.mts.map +1 -1
  111. package/dist/predefined/brand/number/positive-finite-number.mjs +14 -14
  112. package/dist/predefined/brand/number/positive-finite-number.mjs.map +1 -1
  113. package/dist/predefined/brand/number/positive-int.d.mts.map +1 -1
  114. package/dist/predefined/brand/number/positive-int.mjs +15 -15
  115. package/dist/predefined/brand/number/positive-int.mjs.map +1 -1
  116. package/dist/predefined/brand/number/positive-safe-int.d.mts.map +1 -1
  117. package/dist/predefined/brand/number/positive-safe-int.mjs +16 -16
  118. package/dist/predefined/brand/number/positive-safe-int.mjs.map +1 -1
  119. package/dist/predefined/brand/number/safe-int.d.mts.map +1 -1
  120. package/dist/predefined/brand/number/safe-int.mjs +6 -6
  121. package/dist/predefined/brand/number/safe-int.mjs.map +1 -1
  122. package/dist/predefined/brand/number/safe-uint.d.mts.map +1 -1
  123. package/dist/predefined/brand/number/safe-uint.mjs +15 -15
  124. package/dist/predefined/brand/number/safe-uint.mjs.map +1 -1
  125. package/dist/predefined/brand/number/uint.d.mts.map +1 -1
  126. package/dist/predefined/brand/number/uint.mjs +14 -14
  127. package/dist/predefined/brand/number/uint.mjs.map +1 -1
  128. package/dist/predefined/brand/number/uint16.d.mts.map +1 -1
  129. package/dist/predefined/brand/number/uint16.mjs +18 -18
  130. package/dist/predefined/brand/number/uint16.mjs.map +1 -1
  131. package/dist/predefined/brand/number/uint32.d.mts.map +1 -1
  132. package/dist/predefined/brand/number/uint32.mjs +16 -16
  133. package/dist/predefined/brand/number/uint32.mjs.map +1 -1
  134. package/dist/predefined/brand/string/email.d.mts.map +1 -1
  135. package/dist/predefined/brand/string/email.mjs +11 -13
  136. package/dist/predefined/brand/string/email.mjs.map +1 -1
  137. package/dist/predefined/brand/string/iso-8601.d.mts.map +1 -1
  138. package/dist/predefined/brand/string/iso-8601.mjs +52 -66
  139. package/dist/predefined/brand/string/iso-8601.mjs.map +1 -1
  140. package/dist/predefined/brand/string/json-string.d.mts.map +1 -1
  141. package/dist/predefined/brand/string/json-string.mjs +12 -16
  142. package/dist/predefined/brand/string/json-string.mjs.map +1 -1
  143. package/dist/predefined/brand/string/non-empty-string.mjs +2 -5
  144. package/dist/predefined/brand/string/non-empty-string.mjs.map +1 -1
  145. package/dist/predefined/brand/string/uri.d.mts.map +1 -1
  146. package/dist/predefined/brand/string/uri.mjs +5 -10
  147. package/dist/predefined/brand/string/uri.mjs.map +1 -1
  148. package/dist/predefined/brand/string/uuid.d.mts.map +1 -1
  149. package/dist/predefined/brand/string/uuid.mjs +40 -51
  150. package/dist/predefined/brand/string/uuid.mjs.map +1 -1
  151. package/dist/predefined/int8.d.mts.map +1 -1
  152. package/dist/predefined/int8.mjs +3 -3
  153. package/dist/predefined/int8.mjs.map +1 -1
  154. package/dist/predefined/json.mjs +4 -1
  155. package/dist/predefined/json.mjs.map +1 -1
  156. package/dist/predefined/nullable.d.mts.map +1 -1
  157. package/dist/predefined/nullable.mjs.map +1 -1
  158. package/dist/predefined/uint8.d.mts.map +1 -1
  159. package/dist/predefined/uint8.mjs +3 -3
  160. package/dist/predefined/uint8.mjs.map +1 -1
  161. package/dist/primitives/bigint.mjs +85 -76
  162. package/dist/primitives/bigint.mjs.map +1 -1
  163. package/dist/primitives/boolean.d.mts.map +1 -1
  164. package/dist/primitives/boolean.mjs +1 -1
  165. package/dist/primitives/boolean.mjs.map +1 -1
  166. package/dist/primitives/null.mjs +3 -3
  167. package/dist/primitives/null.mjs.map +1 -1
  168. package/dist/primitives/number.mjs +99 -87
  169. package/dist/primitives/number.mjs.map +1 -1
  170. package/dist/primitives/string.mjs +81 -68
  171. package/dist/primitives/string.mjs.map +1 -1
  172. package/dist/primitives/symbol.d.mts.map +1 -1
  173. package/dist/primitives/symbol.mjs +3 -3
  174. package/dist/primitives/symbol.mjs.map +1 -1
  175. package/dist/primitives/undefined.mjs +3 -3
  176. package/dist/primitives/undefined.mjs.map +1 -1
  177. package/dist/record/at.mjs +30 -32
  178. package/dist/record/at.mjs.map +1 -1
  179. package/dist/record/key-value-record.d.mts +3 -3
  180. package/dist/record/key-value-record.d.mts.map +1 -1
  181. package/dist/record/key-value-record.mjs +77 -75
  182. package/dist/record/key-value-record.mjs.map +1 -1
  183. package/dist/record/keyof.d.mts.map +1 -1
  184. package/dist/record/keyof.mjs +25 -24
  185. package/dist/record/keyof.mjs.map +1 -1
  186. package/dist/record/merge-records.d.mts.map +1 -1
  187. package/dist/record/merge-records.mjs +39 -36
  188. package/dist/record/merge-records.mjs.map +1 -1
  189. package/dist/record/omit.d.mts.map +1 -1
  190. package/dist/record/omit.mjs +15 -14
  191. package/dist/record/omit.mjs.map +1 -1
  192. package/dist/record/optional.d.mts +5 -5
  193. package/dist/record/optional.d.mts.map +1 -1
  194. package/dist/record/optional.mjs +13 -46
  195. package/dist/record/optional.mjs.map +1 -1
  196. package/dist/record/partial.d.mts.map +1 -1
  197. package/dist/record/partial.mjs +24 -22
  198. package/dist/record/partial.mjs.map +1 -1
  199. package/dist/record/pick.d.mts.map +1 -1
  200. package/dist/record/pick.mjs +15 -14
  201. package/dist/record/pick.mjs.map +1 -1
  202. package/dist/record/record.d.mts +1 -1
  203. package/dist/record/record.d.mts.map +1 -1
  204. package/dist/record/record.mjs +121 -130
  205. package/dist/record/record.mjs.map +1 -1
  206. package/dist/record/required.d.mts.map +1 -1
  207. package/dist/record/required.mjs +29 -32
  208. package/dist/record/required.mjs.map +1 -1
  209. package/dist/record/valueof.d.mts.map +1 -1
  210. package/dist/record/valueof.mjs +21 -21
  211. package/dist/record/valueof.mjs.map +1 -1
  212. package/dist/type.d.mts +28 -4
  213. package/dist/type.d.mts.map +1 -1
  214. package/dist/type.mjs +56 -89
  215. package/dist/type.mjs.map +1 -1
  216. package/dist/utils/create-assert-fn.d.mts +1 -1
  217. package/dist/utils/create-assert-fn.d.mts.map +1 -1
  218. package/dist/utils/create-assert-fn.mjs +6 -5
  219. package/dist/utils/create-assert-fn.mjs.map +1 -1
  220. package/dist/utils/create-cast-fn.d.mts +1 -1
  221. package/dist/utils/create-cast-fn.d.mts.map +1 -1
  222. package/dist/utils/create-cast-fn.mjs +5 -6
  223. package/dist/utils/create-cast-fn.mjs.map +1 -1
  224. package/dist/utils/create-is-fn.d.mts +1 -1
  225. package/dist/utils/create-is-fn.d.mts.map +1 -1
  226. package/dist/utils/create-is-fn.mjs.map +1 -1
  227. package/dist/utils/create-primitive-type.d.mts.map +1 -1
  228. package/dist/utils/create-primitive-type.mjs +23 -21
  229. package/dist/utils/create-primitive-type.mjs.map +1 -1
  230. package/dist/utils/create-type.d.mts +3 -3
  231. package/dist/utils/create-type.d.mts.map +1 -1
  232. package/dist/utils/create-type.mjs +18 -12
  233. package/dist/utils/create-type.mjs.map +1 -1
  234. package/dist/utils/to-union-string.d.mts.map +1 -1
  235. package/dist/utils/to-union-string.mjs +3 -3
  236. package/dist/utils/to-union-string.mjs.map +1 -1
  237. package/dist/utils/validation-error.d.mts.map +1 -1
  238. package/dist/utils/validation-error.mjs +76 -92
  239. package/dist/utils/validation-error.mjs.map +1 -1
  240. package/package.json +13 -12
  241. package/src/array/tuple.mts +15 -5
  242. package/src/compose/intersection.mts +10 -10
  243. package/src/compose/union.mts +6 -6
  244. package/src/other-types/map.mts +6 -6
  245. package/src/other-types/set.mts +4 -3
  246. package/src/record/key-value-record.mts +3 -3
  247. package/src/record/optional.mts +5 -5
  248. package/src/record/required.mts +2 -3
  249. package/src/record/valueof.mts +2 -4
  250. package/src/type.mts +30 -4
@@ -5,66 +5,67 @@ import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  function arrayAtLeastLength(size, elementType, options) {
8
- const typeName = options?.typeName ?? `ArrayAtLeastLen<${size}, ${elementType.typeName}>`;
9
- const getDefaultValue = memoizeFunction(() => options?.defaultValue ??
10
- // An array of `size` elements is the shortest value satisfying the bound.
11
- Arr.create(asUint32(size), elementType.defaultValue));
12
- const validate = (a) => {
13
- if (!Arr.isArray(a)) {
14
- return Result.err([
15
- createPrimitiveValidationError({
16
- actualValue: a,
17
- expectedType: 'array',
18
- typeName,
19
- details: undefined,
20
- }),
21
- ]);
8
+ const typeName = options?.typeName ?? `ArrayAtLeastLen<${size}, ${elementType.typeName}>`;
9
+ const getDefaultValue = memoizeFunction(
10
+ () => options?.defaultValue ?? // An array of `size` elements is the shortest value satisfying the bound.
11
+ Arr.create(asUint32(size), elementType.defaultValue)
12
+ );
13
+ const validate = (a) => {
14
+ if (!Arr.isArray(a)) {
15
+ return Result.err([
16
+ createPrimitiveValidationError({
17
+ actualValue: a,
18
+ expectedType: "array",
19
+ typeName,
20
+ details: void 0
21
+ })
22
+ ]);
23
+ }
24
+ if (a.length < size) {
25
+ return Result.err([
26
+ {
27
+ path: [],
28
+ actualValue: a,
29
+ expectedType: typeName,
30
+ typeName,
31
+ details: {
32
+ kind: "array-min-length",
33
+ minLength: size,
34
+ actualLength: a.length
35
+ }
22
36
  }
23
- if (a.length < size) {
24
- return Result.err([
25
- {
26
- path: [],
27
- actualValue: a,
28
- expectedType: typeName,
29
- typeName,
30
- details: {
31
- kind: 'array-min-length',
32
- minLength: size,
33
- actualLength: a.length,
34
- },
35
- },
36
- ]);
37
+ ]);
38
+ }
39
+ const errors = Arr.generate(function* () {
40
+ for (const [index, el] of a.entries()) {
41
+ const res = elementType.validate(el);
42
+ if (Result.isErr(res)) {
43
+ yield* prependIndexToValidationErrors(res.value, index);
37
44
  }
38
- const errors = Arr.generate(function* () {
39
- for (const [index, el] of a.entries()) {
40
- const res = elementType.validate(el);
41
- if (Result.isErr(res)) {
42
- yield* prependIndexToValidationErrors(res.value, index);
43
- }
44
- }
45
- });
46
- if (Arr.isNonEmpty(errors)) {
47
- return Result.err(errors);
48
- }
49
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
50
- return Result.ok(a);
51
- };
52
- const fill = (a) => Arr.isArray(a)
53
- ? Arr.map(Arr.seq(asUint32(size)), (i) => elementType.fill(a[i]))
54
- : getDefaultValue();
55
- const prune = (a) => a.map((el) => elementType.prune(el));
56
- return {
57
- typeName,
58
- get defaultValue() {
59
- return getDefaultValue();
60
- },
61
- fill,
62
- prune,
63
- validate,
64
- is: createIsFn(validate),
65
- cast: createCastFn(validate),
66
- assertIs: createAssertFn(validate),
67
- };
45
+ }
46
+ });
47
+ if (Arr.isNonEmpty(errors)) {
48
+ return Result.err(errors);
49
+ }
50
+ return Result.ok(a);
51
+ };
52
+ const fill = (a) => Arr.isArray(a) ? Arr.map(
53
+ Arr.seq(asUint32(size)),
54
+ (i) => elementType.fill(a[i])
55
+ ) : getDefaultValue();
56
+ const prune = (a) => a.map((el) => elementType.prune(el));
57
+ return {
58
+ typeName,
59
+ get defaultValue() {
60
+ return getDefaultValue();
61
+ },
62
+ fill,
63
+ prune,
64
+ validate,
65
+ is: createIsFn(validate),
66
+ cast: createCastFn(validate),
67
+ assertIs: createAssertFn(validate)
68
+ };
68
69
  }
69
70
 
70
71
  export { arrayAtLeastLength };
@@ -1 +1 @@
1
- {"version":3,"file":"array-at-least-length.mjs","sources":["../../src/array/array-at-least-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;SAsCgB,kBAAkB,CAChC,IAAY,EACZ,WAAoB,EACpB,OAKC,EAAA;AAID,IAAA,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,gBAAA,EAAmB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,GAAG;IAE1E,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,YAAY;;AAErB,QAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CACvD;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,SAAS,EAAE,IAAI;wBACf,YAAY,EAAE,CAAC,CAAC,MAAM;AACvB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAiB,CAAC;AACrC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,GAAG,CAAC,OAAO,CAAC,CAAC;AACX,UAAE,GAAG,CAAC,GAAG,CACL,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EACvB,CAAC,CAAC,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAa;UAE3C,eAAe,EAAE;IAEvB,MAAM,KAAK,GAAG,CAAC,CAAI,KAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE/D,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,KAAK;QACL,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5B,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC;AACH;;;;"}
1
+ {"version":3,"file":"array-at-least-length.mjs","sources":["../../src/array/array-at-least-length.mts"],"sourcesContent":["import { Arr, asUint32, memoizeFunction, Result } from 'ts-data-forge';\nimport { type ArrayAtLeastLen, type SmallUint } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n createPrimitiveValidationError,\n prependIndexToValidationErrors,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { ArrayAtLeastLen } from 'ts-type-forge';\n\nexport function arrayAtLeastLength<A, N extends SmallUint>(\n size: N,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: ArrayAtLeastLen<N, A>;\n }>\n >,\n): Type<ArrayAtLeastLen<N, A>>;\n\n// For sizes outside `SmallUint` the exact length cannot be encoded in the type,\n// so the result length is left unconstrained (`readonly A[]`).\nexport function arrayAtLeastLength<A>(\n size: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: readonly A[];\n }>\n >,\n): Type<readonly A[]>;\n\nexport function arrayAtLeastLength<A>(\n size: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: readonly A[];\n }>\n >,\n): Type<readonly A[]> {\n type T = readonly A[];\n\n const typeName =\n options?.typeName ?? `ArrayAtLeastLen<${size}, ${elementType.typeName}>`;\n\n const getDefaultValue = memoizeFunction(\n (): T =>\n options?.defaultValue ??\n // An array of `size` elements is the shortest value satisfying the bound.\n Arr.create(asUint32(size), elementType.defaultValue),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!Arr.isArray(a)) {\n return Result.err([\n createPrimitiveValidationError({\n actualValue: a,\n expectedType: 'array',\n typeName,\n details: undefined,\n }),\n ]);\n }\n\n if (a.length < size) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeName,\n typeName,\n details: {\n kind: 'array-min-length',\n minLength: size,\n actualLength: a.length,\n },\n } satisfies ValidationError,\n ]);\n }\n\n const errors: readonly ValidationError[] = Arr.generate(function* () {\n for (const [index, el] of a.entries()) {\n const res = elementType.validate(el);\n\n if (Result.isErr(res)) {\n yield* prependIndexToValidationErrors(res.value, index);\n }\n }\n });\n\n if (Arr.isNonEmpty(errors)) {\n return Result.err(errors);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as unknown as T);\n };\n\n const fill: Type<T>['fill'] = (a) =>\n Arr.isArray(a)\n ? Arr.map(\n Arr.seq(asUint32(size)),\n (i) => elementType.fill(a[i]) satisfies A,\n )\n : getDefaultValue();\n\n const prune = (a: T): T => a.map((el) => elementType.prune(el));\n\n return {\n typeName,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune,\n validate,\n is: createIsFn(validate),\n cast: createCastFn(validate),\n assertIs: createAssertFn(validate),\n };\n}\n"],"names":[],"mappings":";;;;;;AAsCO,SAAS,kBAAA,CACd,IAAA,EACA,WAAA,EACA,OAAA,EAMoB;AAGpB,EAAA,MAAM,WACJ,OAAA,EAAS,QAAA,IAAY,mBAAmB,IAAI,CAAA,EAAA,EAAK,YAAY,QAAQ,CAAA,CAAA,CAAA;AAEvE,EAAA,MAAM,eAAA,GAAkB,eAAA;AAAA,IACtB,MACE,OAAA,EAAS,YAAA;AAAA,IAET,IAAI,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,EAAG,YAAY,YAAY;AAAA,GACvD;AAEA,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KAAM;AAC3C,IAAA,IAAI,CAAC,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,EAAG;AACnB,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB,8BAAA,CAA+B;AAAA,UAC7B,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,OAAA;AAAA,UACd,QAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV;AAAA,OACF,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAA,CAAE,SAAS,IAAA,EAAM;AACnB,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB;AAAA,UACE,MAAM,EAAC;AAAA,UACP,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,QAAA;AAAA,UACd,QAAA;AAAA,UACA,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,kBAAA;AAAA,YACN,SAAA,EAAW,IAAA;AAAA,YACX,cAAc,CAAA,CAAE;AAAA;AAClB;AACF,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,MAAA,GAAqC,GAAA,CAAI,QAAA,CAAS,aAAa;AACnE,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,EAAE,CAAA,IAAK,CAAA,CAAE,SAAQ,EAAG;AACrC,QAAA,MAAM,GAAA,GAAM,WAAA,CAAY,QAAA,CAAS,EAAE,CAAA;AAEnC,QAAA,IAAI,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,EAAG;AACrB,UAAA,OAAO,8BAAA,CAA+B,GAAA,CAAI,KAAA,EAAO,KAAK,CAAA;AAAA,QACxD;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAI,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AAC1B,MAAA,OAAO,MAAA,CAAO,IAAI,MAAM,CAAA;AAAA,IAC1B;AAGA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAiB,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,OAAwB,CAAC,CAAA,KAC7B,IAAI,OAAA,CAAQ,CAAC,IACT,GAAA,CAAI,GAAA;AAAA,IACF,GAAA,CAAI,GAAA,CAAI,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,IACtB,CAAC,CAAA,KAAM,WAAA,CAAY,IAAA,CAAK,CAAA,CAAE,CAAC,CAAC;AAAA,MAE9B,eAAA,EAAgB;AAEtB,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAY,CAAA,CAAE,GAAA,CAAI,CAAC,EAAA,KAAO,WAAA,CAAY,KAAA,CAAM,EAAE,CAAC,CAAA;AAE9D,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,IAAI,YAAA,GAAe;AACjB,MAAA,OAAO,eAAA,EAAgB;AAAA,IACzB,CAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA,EAAI,WAAW,QAAQ,CAAA;AAAA,IACvB,IAAA,EAAM,aAAa,QAAQ,CAAA;AAAA,IAC3B,QAAA,EAAU,eAAe,QAAQ;AAAA,GACnC;AACF;;;;"}
@@ -5,67 +5,70 @@ import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  function arrayAtMostLength(size, elementType, options) {
8
- const typeName = options?.typeName ?? `ArrayAtMostLen<${size}, ${elementType.typeName}>`;
9
- const getDefaultValue = memoizeFunction(() => options?.defaultValue ??
10
- // The empty array is the shortest value satisfying `length <= size`.
11
- Arr.create(0, elementType.defaultValue));
12
- const validate = (a) => {
13
- if (!Arr.isArray(a)) {
14
- return Result.err([
15
- createPrimitiveValidationError({
16
- actualValue: a,
17
- expectedType: 'array',
18
- typeName,
19
- details: undefined,
20
- }),
21
- ]);
8
+ const typeName = options?.typeName ?? `ArrayAtMostLen<${size}, ${elementType.typeName}>`;
9
+ const getDefaultValue = memoizeFunction(
10
+ () => options?.defaultValue ?? // The empty array is the shortest value satisfying `length <= size`.
11
+ Arr.create(0, elementType.defaultValue)
12
+ );
13
+ const validate = (a) => {
14
+ if (!Arr.isArray(a)) {
15
+ return Result.err([
16
+ createPrimitiveValidationError({
17
+ actualValue: a,
18
+ expectedType: "array",
19
+ typeName,
20
+ details: void 0
21
+ })
22
+ ]);
23
+ }
24
+ if (a.length > size) {
25
+ return Result.err([
26
+ {
27
+ path: [],
28
+ actualValue: a,
29
+ expectedType: typeName,
30
+ typeName,
31
+ details: {
32
+ kind: "array-max-length",
33
+ maxLength: size,
34
+ actualLength: a.length
35
+ }
22
36
  }
23
- if (a.length > size) {
24
- return Result.err([
25
- {
26
- path: [],
27
- actualValue: a,
28
- expectedType: typeName,
29
- typeName,
30
- details: {
31
- kind: 'array-max-length',
32
- maxLength: size,
33
- actualLength: a.length,
34
- },
35
- },
36
- ]);
37
+ ]);
38
+ }
39
+ const errors = Arr.generate(function* () {
40
+ for (const [index, el] of a.entries()) {
41
+ const res = elementType.validate(el);
42
+ if (Result.isErr(res)) {
43
+ yield* prependIndexToValidationErrors(res.value, index);
37
44
  }
38
- const errors = Arr.generate(function* () {
39
- for (const [index, el] of a.entries()) {
40
- const res = elementType.validate(el);
41
- if (Result.isErr(res)) {
42
- yield* prependIndexToValidationErrors(res.value, index);
43
- }
44
- }
45
- });
46
- if (Arr.isNonEmpty(errors)) {
47
- return Result.err(errors);
48
- }
49
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
50
- return Result.ok(a);
51
- };
52
- const fill = (a) => Arr.isArray(a)
53
- ? // Keep the input but trim down to at most `size` elements.
54
- Arr.map(Arr.take(a, asUint32(size)), (el) => elementType.fill(el))
55
- : getDefaultValue();
56
- const prune = (a) => a.map((el) => elementType.prune(el));
57
- return {
58
- typeName,
59
- get defaultValue() {
60
- return getDefaultValue();
61
- },
62
- fill,
63
- prune,
64
- validate,
65
- is: createIsFn(validate),
66
- cast: createCastFn(validate),
67
- assertIs: createAssertFn(validate),
68
- };
45
+ }
46
+ });
47
+ if (Arr.isNonEmpty(errors)) {
48
+ return Result.err(errors);
49
+ }
50
+ return Result.ok(a);
51
+ };
52
+ const fill = (a) => Arr.isArray(a) ? (
53
+ // Keep the input but trim down to at most `size` elements.
54
+ Arr.map(
55
+ Arr.take(a, asUint32(size)),
56
+ (el) => elementType.fill(el)
57
+ )
58
+ ) : getDefaultValue();
59
+ const prune = (a) => a.map((el) => elementType.prune(el));
60
+ return {
61
+ typeName,
62
+ get defaultValue() {
63
+ return getDefaultValue();
64
+ },
65
+ fill,
66
+ prune,
67
+ validate,
68
+ is: createIsFn(validate),
69
+ cast: createCastFn(validate),
70
+ assertIs: createAssertFn(validate)
71
+ };
69
72
  }
70
73
 
71
74
  export { arrayAtMostLength };
@@ -1 +1 @@
1
- {"version":3,"file":"array-at-most-length.mjs","sources":["../../src/array/array-at-most-length.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;SAsCgB,iBAAiB,CAC/B,IAAY,EACZ,WAAoB,EACpB,OAKC,EAAA;AAID,IAAA,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ,IAAI,CAAA,eAAA,EAAkB,IAAI,CAAA,EAAA,EAAK,WAAW,CAAC,QAAQ,GAAG;IAEzE,MAAM,eAAe,GAAG,eAAe,CACrC,MACE,OAAO,EAAE,YAAY;;QAErB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAC1C;AAED,IAAA,MAAM,QAAQ,GAAwB,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA,8BAA8B,CAAC;AAC7B,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,OAAO;oBACrB,QAAQ;AACR,oBAAA,OAAO,EAAE,SAAS;iBACnB,CAAC;AACH,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE;YACnB,OAAO,MAAM,CAAC,GAAG,CAAC;AAChB,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,WAAW,EAAE,CAAC;AACd,oBAAA,YAAY,EAAE,QAAQ;oBACtB,QAAQ;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,SAAS,EAAE,IAAI;wBACf,YAAY,EAAE,CAAC,CAAC,MAAM;AACvB,qBAAA;AACwB,iBAAA;AAC5B,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM,MAAM,GAA+B,GAAG,CAAC,QAAQ,CAAC,aAAS;AAC/D,YAAA,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrC,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;AAEpC,gBAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,8BAA8B,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBACzD;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;;AAGA,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,CAAiB,CAAC;AACrC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAoB,CAAC,CAAC,KAC9B,GAAG,CAAC,OAAO,CAAC,CAAC;AACX;YACE,GAAG,CAAC,GAAG,CACL,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAC3B,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE,CAAa;UAE1C,eAAe,EAAE;IAEvB,MAAM,KAAK,GAAG,CAAC,CAAI,KAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE/D,OAAO;QACL,QAAQ;AACR,QAAA,IAAI,YAAY,GAAA;YACd,OAAO,eAAe,EAAE;QAC1B,CAAC;QACD,IAAI;QACJ,KAAK;QACL,QAAQ;AACR,QAAA,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5B,QAAA,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC;AACH;;;;"}
1
+ {"version":3,"file":"array-at-most-length.mjs","sources":["../../src/array/array-at-most-length.mts"],"sourcesContent":["import { Arr, asUint32, memoizeFunction, Result } from 'ts-data-forge';\nimport { type ArrayAtMostLen, type SmallUint } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n createPrimitiveValidationError,\n prependIndexToValidationErrors,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { ArrayAtMostLen } from 'ts-type-forge';\n\nexport function arrayAtMostLength<A, N extends SmallUint>(\n size: N,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: ArrayAtMostLen<N, A>;\n }>\n >,\n): Type<ArrayAtMostLen<N, A>>;\n\n// For sizes outside `SmallUint` the exact length cannot be encoded in the type,\n// so the result length is left unconstrained (`readonly A[]`).\nexport function arrayAtMostLength<A>(\n size: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: readonly A[];\n }>\n >,\n): Type<readonly A[]>;\n\nexport function arrayAtMostLength<A>(\n size: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: readonly A[];\n }>\n >,\n): Type<readonly A[]> {\n type T = readonly A[];\n\n const typeName =\n options?.typeName ?? `ArrayAtMostLen<${size}, ${elementType.typeName}>`;\n\n const getDefaultValue = memoizeFunction(\n (): T =>\n options?.defaultValue ??\n // The empty array is the shortest value satisfying `length <= size`.\n Arr.create(0, elementType.defaultValue),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!Arr.isArray(a)) {\n return Result.err([\n createPrimitiveValidationError({\n actualValue: a,\n expectedType: 'array',\n typeName,\n details: undefined,\n }),\n ]);\n }\n\n if (a.length > size) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeName,\n typeName,\n details: {\n kind: 'array-max-length',\n maxLength: size,\n actualLength: a.length,\n },\n } satisfies ValidationError,\n ]);\n }\n\n const errors: readonly ValidationError[] = Arr.generate(function* () {\n for (const [index, el] of a.entries()) {\n const res = elementType.validate(el);\n\n if (Result.isErr(res)) {\n yield* prependIndexToValidationErrors(res.value, index);\n }\n }\n });\n\n if (Arr.isNonEmpty(errors)) {\n return Result.err(errors);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as unknown as T);\n };\n\n const fill: Type<T>['fill'] = (a) =>\n Arr.isArray(a)\n ? // Keep the input but trim down to at most `size` elements.\n Arr.map(\n Arr.take(a, asUint32(size)),\n (el) => elementType.fill(el) satisfies A,\n )\n : getDefaultValue();\n\n const prune = (a: T): T => a.map((el) => elementType.prune(el));\n\n return {\n typeName,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune,\n validate,\n is: createIsFn(validate),\n cast: createCastFn(validate),\n assertIs: createAssertFn(validate),\n };\n}\n"],"names":[],"mappings":";;;;;;AAsCO,SAAS,iBAAA,CACd,IAAA,EACA,WAAA,EACA,OAAA,EAMoB;AAGpB,EAAA,MAAM,WACJ,OAAA,EAAS,QAAA,IAAY,kBAAkB,IAAI,CAAA,EAAA,EAAK,YAAY,QAAQ,CAAA,CAAA,CAAA;AAEtE,EAAA,MAAM,eAAA,GAAkB,eAAA;AAAA,IACtB,MACE,OAAA,EAAS,YAAA;AAAA,IAET,GAAA,CAAI,MAAA,CAAO,CAAA,EAAG,WAAA,CAAY,YAAY;AAAA,GAC1C;AAEA,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KAAM;AAC3C,IAAA,IAAI,CAAC,GAAA,CAAI,OAAA,CAAQ,CAAC,CAAA,EAAG;AACnB,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB,8BAAA,CAA+B;AAAA,UAC7B,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,OAAA;AAAA,UACd,QAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV;AAAA,OACF,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAA,CAAE,SAAS,IAAA,EAAM;AACnB,MAAA,OAAO,OAAO,GAAA,CAAI;AAAA,QAChB;AAAA,UACE,MAAM,EAAC;AAAA,UACP,WAAA,EAAa,CAAA;AAAA,UACb,YAAA,EAAc,QAAA;AAAA,UACd,QAAA;AAAA,UACA,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,kBAAA;AAAA,YACN,SAAA,EAAW,IAAA;AAAA,YACX,cAAc,CAAA,CAAE;AAAA;AAClB;AACF,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,MAAA,GAAqC,GAAA,CAAI,QAAA,CAAS,aAAa;AACnE,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,EAAE,CAAA,IAAK,CAAA,CAAE,SAAQ,EAAG;AACrC,QAAA,MAAM,GAAA,GAAM,WAAA,CAAY,QAAA,CAAS,EAAE,CAAA;AAEnC,QAAA,IAAI,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,EAAG;AACrB,UAAA,OAAO,8BAAA,CAA+B,GAAA,CAAI,KAAA,EAAO,KAAK,CAAA;AAAA,QACxD;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAI,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AAC1B,MAAA,OAAO,MAAA,CAAO,IAAI,MAAM,CAAA;AAAA,IAC1B;AAGA,IAAA,OAAO,MAAA,CAAO,GAAG,CAAiB,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,MAAM,IAAA,GAAwB,CAAC,CAAA,KAC7B,GAAA,CAAI,QAAQ,CAAC,CAAA;AAAA;AAAA,IAET,GAAA,CAAI,GAAA;AAAA,MACF,GAAA,CAAI,IAAA,CAAK,CAAA,EAAG,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,MAC1B,CAAC,EAAA,KAAO,WAAA,CAAY,IAAA,CAAK,EAAE;AAAA;AAC7B,MACA,eAAA,EAAgB;AAEtB,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAY,CAAA,CAAE,GAAA,CAAI,CAAC,EAAA,KAAO,WAAA,CAAY,KAAA,CAAM,EAAE,CAAC,CAAA;AAE9D,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,IAAI,YAAA,GAAe;AACjB,MAAA,OAAO,eAAA,EAAgB;AAAA,IACzB,CAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA,EAAI,WAAW,QAAQ,CAAA;AAAA,IACvB,IAAA,EAAM,aAAa,QAAQ,CAAA;AAAA,IAC3B,QAAA,EAAU,eAAe,QAAQ;AAAA,GACnC;AACF;;;;"}
@@ -5,75 +5,74 @@ import { createIsFn } from '../utils/create-is-fn.mjs';
5
5
  import { createPrimitiveValidationError, prependIndexToValidationErrors } from '../utils/validation-error.mjs';
6
6
 
7
7
  function arrayBoundedLength(min, max, elementType, options) {
8
- const typeName = options?.typeName ??
9
- `ArrayBoundedLen<${min}, ${max}, ${elementType.typeName}>`;
10
- const getDefaultValue = memoizeFunction(() => options?.defaultValue ??
11
- // An array of the minimum length is the shortest value within the range.
12
- Arr.create(asUint32(min), elementType.defaultValue));
13
- const validate = (a) => {
14
- if (!Arr.isArray(a)) {
15
- return Result.err([
16
- createPrimitiveValidationError({
17
- actualValue: a,
18
- expectedType: 'array',
19
- typeName,
20
- details: undefined,
21
- }),
22
- ]);
8
+ const typeName = options?.typeName ?? `ArrayBoundedLen<${min}, ${max}, ${elementType.typeName}>`;
9
+ const getDefaultValue = memoizeFunction(
10
+ () => options?.defaultValue ?? // An array of the minimum length is the shortest value within the range.
11
+ Arr.create(asUint32(min), elementType.defaultValue)
12
+ );
13
+ const validate = (a) => {
14
+ if (!Arr.isArray(a)) {
15
+ return Result.err([
16
+ createPrimitiveValidationError({
17
+ actualValue: a,
18
+ expectedType: "array",
19
+ typeName,
20
+ details: void 0
21
+ })
22
+ ]);
23
+ }
24
+ if (a.length < min || max < a.length) {
25
+ return Result.err([
26
+ {
27
+ path: [],
28
+ actualValue: a,
29
+ expectedType: typeName,
30
+ typeName,
31
+ details: {
32
+ kind: "array-range-length",
33
+ minLength: min,
34
+ maxLength: max,
35
+ actualLength: a.length
36
+ }
23
37
  }
24
- if (a.length < min || max < a.length) {
25
- return Result.err([
26
- {
27
- path: [],
28
- actualValue: a,
29
- expectedType: typeName,
30
- typeName,
31
- details: {
32
- kind: 'array-range-length',
33
- minLength: min,
34
- maxLength: max,
35
- actualLength: a.length,
36
- },
37
- },
38
- ]);
38
+ ]);
39
+ }
40
+ const errors = Arr.generate(function* () {
41
+ for (const [index, el] of a.entries()) {
42
+ const res = elementType.validate(el);
43
+ if (Result.isErr(res)) {
44
+ yield* prependIndexToValidationErrors(res.value, index);
39
45
  }
40
- const errors = Arr.generate(function* () {
41
- for (const [index, el] of a.entries()) {
42
- const res = elementType.validate(el);
43
- if (Result.isErr(res)) {
44
- yield* prependIndexToValidationErrors(res.value, index);
45
- }
46
- }
47
- });
48
- if (Arr.isNonEmpty(errors)) {
49
- return Result.err(errors);
50
- }
51
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion
52
- return Result.ok(a);
53
- };
54
- const fill = (a) => {
55
- if (!Arr.isArray(a)) {
56
- return getDefaultValue();
57
- }
58
- // Trim down to at most `max`, then pad up to at least `min`.
59
- const capped = Arr.take(a, asUint32(max));
60
- return capped.length >= min
61
- ? Arr.map(capped, (el) => elementType.fill(el))
62
- : Arr.map(Arr.seq(asUint32(min)), (i) => elementType.fill(capped[i]));
63
- };
64
- const prune = (a) => a.map((el) => elementType.prune(el));
65
- return {
66
- typeName,
67
- get defaultValue() {
68
- return getDefaultValue();
69
- },
70
- fill,
71
- prune,
72
- validate,
73
- is: createIsFn(validate),
74
- cast: createCastFn(validate),
75
- assertIs: createAssertFn(validate),
76
- };
46
+ }
47
+ });
48
+ if (Arr.isNonEmpty(errors)) {
49
+ return Result.err(errors);
50
+ }
51
+ return Result.ok(a);
52
+ };
53
+ const fill = (a) => {
54
+ if (!Arr.isArray(a)) {
55
+ return getDefaultValue();
56
+ }
57
+ const capped = Arr.take(a, asUint32(max));
58
+ return capped.length >= min ? Arr.map(capped, (el) => elementType.fill(el)) : Arr.map(
59
+ Arr.seq(asUint32(min)),
60
+ (i) => elementType.fill(capped[i])
61
+ );
62
+ };
63
+ const prune = (a) => a.map((el) => elementType.prune(el));
64
+ return {
65
+ typeName,
66
+ get defaultValue() {
67
+ return getDefaultValue();
68
+ },
69
+ fill,
70
+ prune,
71
+ validate,
72
+ is: createIsFn(validate),
73
+ cast: createCastFn(validate),
74
+ assertIs: createAssertFn(validate)
75
+ };
77
76
  }
78
77
 
79
78
  export { arrayBoundedLength };
@@ -1 +1 @@
1
- {"version":3,"file":"array-bounded-length.mjs","sources":["../../src/array/array-bounded-length.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array-bounded-length.mjs","sources":["../../src/array/array-bounded-length.mts"],"sourcesContent":["import { Arr, asUint32, memoizeFunction, Result } from 'ts-data-forge';\nimport {\n type ArrayAtLeastLen,\n type ArrayAtMostLen,\n type ArrayBoundedLen,\n type SmallUint,\n} from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport {\n createAssertFn,\n createCastFn,\n createIsFn,\n createPrimitiveValidationError,\n prependIndexToValidationErrors,\n type ValidationError,\n} from '../utils/index.mjs';\n\nexport type { ArrayBoundedLen } from 'ts-type-forge';\n\nexport function arrayBoundedLength<\n A,\n Min extends SmallUint,\n Max extends SmallUint,\n>(\n min: Min,\n max: Max,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: ArrayBoundedLen<Min, Max, A>;\n }>\n >,\n): Type<ArrayBoundedLen<Min, Max, A>>;\n\n// Only the lower bound is in `SmallUint`, so the upper bound is dropped from the\n// result type and only the \"at least `min`\" guarantee is kept.\nexport function arrayBoundedLength<A, Min extends SmallUint>(\n min: Min,\n max: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: ArrayAtLeastLen<Min, A>;\n }>\n >,\n): Type<ArrayAtLeastLen<Min, A>>;\n\n// Only the upper bound is in `SmallUint`, so the lower bound is dropped from the\n// result type and only the \"at most `max`\" guarantee is kept.\nexport function arrayBoundedLength<A, Max extends SmallUint>(\n min: number,\n max: Max,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: ArrayAtMostLen<Max, A>;\n }>\n >,\n): Type<ArrayAtMostLen<Max, A>>;\n\n// Neither bound is in `SmallUint`, so the result length is left unconstrained.\nexport function arrayBoundedLength<A>(\n min: number,\n max: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: readonly A[];\n }>\n >,\n): Type<readonly A[]>;\n\nexport function arrayBoundedLength<A>(\n min: number,\n max: number,\n elementType: Type<A>,\n options?: Partial<\n Readonly<{\n typeName: string;\n defaultValue: readonly A[];\n }>\n >,\n): Type<readonly A[]> {\n type T = readonly A[];\n\n const typeName =\n options?.typeName ??\n `ArrayBoundedLen<${min}, ${max}, ${elementType.typeName}>`;\n\n const getDefaultValue = memoizeFunction(\n (): T =>\n options?.defaultValue ??\n // An array of the minimum length is the shortest value within the range.\n Arr.create(asUint32(min), elementType.defaultValue),\n );\n\n const validate: Type<T>['validate'] = (a) => {\n if (!Arr.isArray(a)) {\n return Result.err([\n createPrimitiveValidationError({\n actualValue: a,\n expectedType: 'array',\n typeName,\n details: undefined,\n }),\n ]);\n }\n\n if (a.length < min || max < a.length) {\n return Result.err([\n {\n path: [],\n actualValue: a,\n expectedType: typeName,\n typeName,\n details: {\n kind: 'array-range-length',\n minLength: min,\n maxLength: max,\n actualLength: a.length,\n },\n } satisfies ValidationError,\n ]);\n }\n\n const errors: readonly ValidationError[] = Arr.generate(function* () {\n for (const [index, el] of a.entries()) {\n const res = elementType.validate(el);\n\n if (Result.isErr(res)) {\n yield* prependIndexToValidationErrors(res.value, index);\n }\n }\n });\n\n if (Arr.isNonEmpty(errors)) {\n return Result.err(errors);\n }\n\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n return Result.ok(a as unknown as T);\n };\n\n const fill: Type<T>['fill'] = (a) => {\n if (!Arr.isArray(a)) {\n return getDefaultValue();\n }\n\n // Trim down to at most `max`, then pad up to at least `min`.\n const capped = Arr.take(a, asUint32(max));\n\n return capped.length >= min\n ? Arr.map(capped, (el) => elementType.fill(el) satisfies A)\n : Arr.map(\n Arr.seq(asUint32(min)),\n (i) => elementType.fill(capped[i]) satisfies A,\n );\n };\n\n const prune = (a: T): T => a.map((el) => elementType.prune(el));\n\n return {\n typeName,\n get defaultValue() {\n return getDefaultValue();\n },\n fill,\n prune,\n validate,\n is: createIsFn(validate),\n cast: createCastFn(validate),\n assertIs: createAssertFn(validate),\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"array-of-length.d.mts","sourceRoot":"","sources":["../../src/array/array-of-length.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,EAClD,MAAM,CAAC,EACP,aAAa,IAAI,CAAC,CAAC,CAAC,EACpB,UAAU,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC,CACH,KACA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAoF1B,CAAC"}
1
+ {"version":3,"file":"array-of-length.d.mts","sourceRoot":"","sources":["../../src/array/array-of-length.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAUxC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,CAAC,SAAS,SAAS,QAC5C,CAAC,eACM,IAAI,CAAC,CAAC,CAAC,YACV,OAAO,CACf,QAAQ,CAAC;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC,CACH,KACA,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAoF1B,CAAC"}