ts-fortress 7.2.0 → 7.3.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.
@@ -1,6 +1,7 @@
1
+ import { type Brand, type IsNever } from 'ts-type-forge';
1
2
  import { type Type } from '../type.mjs';
2
3
  export declare function number(defaultValue?: number): Type<number>;
3
- export declare function number<N extends number, const C extends Constraints>(defaultValue: N & DefaultValueType<N, C>, constraints: C): Type<number>;
4
+ export declare function number<N extends number, const C extends Constraints>(defaultValue: N & DefaultValueType<N, C>, constraints: C): Type<ConstraintsToResultType<C>>;
4
5
  type Constraints = Partial<Readonly<{
5
6
  gt: number;
6
7
  gte: number;
@@ -8,30 +9,79 @@ type Constraints = Partial<Readonly<{
8
9
  lt: number;
9
10
  lte: number;
10
11
  max: number;
11
- negative: boolean;
12
- nonNegative: boolean;
13
- positive: boolean;
14
- nonPositive: boolean;
15
12
  multipleOf: number;
16
13
  step: number;
14
+ finite: true;
15
+ int: true;
16
+ nonzero: true;
17
+ negative: true;
18
+ nonNegative: true;
19
+ positive: true;
20
+ nonPositive: true;
17
21
  }>>;
18
- type DefaultValueType<N extends number, R extends Constraints> = DefaultValueWhenNegativeIsOn<N, R> & DefaultValueWhenNonNegativeIsOn<N, R> & DefaultValueWhenPositiveIsOn<N, R> & DefaultValueWhenNonPositiveIsOn<N, R>;
19
- type DefaultValueWhenNegativeIsOn<N extends number, R extends Constraints> = R extends Readonly<{
22
+ type DefaultValueType<N extends number, C extends Constraints> = DefaultValueWhenNonZeroIsOn<N, C> & DefaultValueWhenNegativeIsOn<N, C> & DefaultValueWhenNonNegativeIsOn<N, C> & DefaultValueWhenPositiveIsOn<N, C> & DefaultValueWhenNonPositiveIsOn<N, C>;
23
+ type ConstraintsToResultType<C extends Constraints> = ConstraintsToResultHelperType<ConstraintsToResultBrandKeys<C>>;
24
+ type ConstraintsToResultHelperType<R extends Readonly<{
25
+ brandKeys: string;
26
+ brandFalseKeys: string;
27
+ }>> = IsNever<R> extends true ? number : Brand<number, R['brandKeys'], R['brandFalseKeys']>;
28
+ type ConstraintsToResultBrandKeys<C extends Constraints> = (C extends Readonly<{
29
+ int: true;
30
+ }> ? Readonly<{
31
+ brandKeys: 'Int' | 'Finite';
32
+ brandFalseKeys: 'NaNValue';
33
+ }> : never) | (C extends Readonly<{
34
+ finite: true;
35
+ }> ? Readonly<{
36
+ brandKeys: 'Finite';
37
+ brandFalseKeys: 'NaNValue';
38
+ }> : never) | (C extends Readonly<{
39
+ nonzero: true;
40
+ }> ? Readonly<{
41
+ brandKeys: '!=0';
42
+ brandFalseKeys: 'NaNValue';
43
+ }> : never) | (C extends Readonly<{
44
+ negative: true;
45
+ }> ? Readonly<{
46
+ brandKeys: '!=0' | '< 2^15' | '< 2^16' | '< 2^31' | '< 2^32';
47
+ brandFalseKeys: '>=0' | 'NaNValue';
48
+ }> : never) | (C extends Readonly<{
49
+ positive: true;
50
+ }> ? Readonly<{
51
+ brandKeys: '>=0' | '!=0' | '> -2^16' | '> -2^32' | '>= -2^15' | '>= -2^31';
52
+ brandFalseKeys: 'NaNValue';
53
+ }> : never) | (C extends Readonly<{
54
+ nonNegative: true;
55
+ }> ? Readonly<{
56
+ brandKeys: '>=0' | '> -2^16' | '> -2^32' | '>= -2^15' | '>= -2^31';
57
+ brandFalseKeys: 'NaNValue';
58
+ }> : never) | (C extends Readonly<{
59
+ nonPositive: true;
60
+ }> ? Readonly<{
61
+ brandKeys: '< 2^15' | '< 2^16' | '< 2^31' | '< 2^32';
62
+ brandFalseKeys: '>=0' | 'NaNValue';
63
+ }> : never);
64
+ type DefaultValueWhenNonZeroIsOn<N extends number, C extends Constraints> = C extends Readonly<{
65
+ nonzero: true;
66
+ }> ? NonZeroNumber<N> : number;
67
+ type DefaultValueWhenNegativeIsOn<N extends number, C extends Constraints> = C extends Readonly<{
20
68
  negative: true;
21
69
  }> ? NegativeNumber<N> : number;
22
- type DefaultValueWhenNonNegativeIsOn<N extends number, R extends Constraints> = R extends Readonly<{
70
+ type DefaultValueWhenNonNegativeIsOn<N extends number, C extends Constraints> = C extends Readonly<{
23
71
  nonNegative: true;
24
72
  }> ? NonNegativeNumber<N> : number;
25
- type DefaultValueWhenPositiveIsOn<N extends number, R extends Constraints> = R extends Readonly<{
73
+ type DefaultValueWhenPositiveIsOn<N extends number, C extends Constraints> = C extends Readonly<{
26
74
  positive: true;
27
75
  }> ? PositiveNumber<N> : number;
28
- type DefaultValueWhenNonPositiveIsOn<N extends number, R extends Constraints> = R extends Readonly<{
76
+ type DefaultValueWhenNonPositiveIsOn<N extends number, C extends Constraints> = C extends Readonly<{
29
77
  nonPositive: true;
30
78
  }> ? NonPositiveNumber<N> : number;
79
+ type NonZeroNumber<N extends number> = number extends N ? number : IsNonZero<N> extends true ? N : never;
31
80
  type NegativeNumber<N extends number> = number extends N ? number : IsNegative<N> extends true ? N : never;
32
81
  type NonNegativeNumber<N extends number> = number extends N ? number : IsNonNegative<N> extends true ? N : never;
33
82
  type PositiveNumber<N extends number> = number extends N ? number : IsPositive<N> extends true ? N : never;
34
83
  type NonPositiveNumber<N extends number> = number extends N ? number : IsNonPositive<N> extends true ? N : never;
84
+ type IsNonZero<N extends number> = N extends 0 ? false : true;
35
85
  type IsNegative<N extends number> = `${N}` extends `-${string}` ? true : false;
36
86
  type IsNonNegative<N extends number> = IsNegative<N> extends true ? false : true;
37
87
  type IsPositive<N extends number> = N extends 0 ? false : IsNonNegative<N>;
@@ -1 +1 @@
1
- {"version":3,"file":"number.d.mts","sourceRoot":"","sources":["../../src/primitives/number.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.d.mts","sourceRoot":"","sources":["../../src/primitives/number.mts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Arr, isNumber } from 'ts-data-forge';
1
+ import { Arr, Result, isNumber, Int } from 'ts-data-forge';
2
2
  import { createPrimitiveType } from '../utils/create-primitive-type.mjs';
3
3
  import '@sindresorhus/is';
4
4
  import { refine } from '../other-types/refine.mjs';
@@ -14,91 +14,68 @@ function number(defaultValue = 0, constraints) {
14
14
  Arr.isArrayOfLength(Object.keys(constraints), 0)) {
15
15
  return baseType;
16
16
  }
17
- if (constraints.gt !== undefined && !(defaultValue > constraints.gt)) {
18
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint gt = ${constraints.gt}`);
17
+ const constraintsPredicate = createConstraintsPredicate(constraints);
18
+ const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);
19
+ if (Result.isErr(defaultValueConstraintsCheck)) {
20
+ throw new Error(defaultValueConstraintsCheck.value);
19
21
  }
20
- if (constraints.gte !== undefined && !(defaultValue >= constraints.gte)) {
21
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint gte = ${constraints.gte}`);
22
- }
23
- if (constraints.min !== undefined && !(defaultValue >= constraints.min)) {
24
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint min = ${constraints.min}`);
25
- }
26
- if (constraints.lt !== undefined && !(defaultValue < constraints.lt)) {
27
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint lt = ${constraints.lt}`);
28
- }
29
- if (constraints.lte !== undefined && !(defaultValue <= constraints.lte)) {
30
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint lte = ${constraints.lte}`);
31
- }
32
- if (constraints.max !== undefined && !(defaultValue <= constraints.max)) {
33
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint max = ${constraints.max}`);
34
- }
35
- if (constraints.positive === true && !(defaultValue > 0)) {
36
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint positive = true`);
37
- }
38
- if (constraints.nonNegative === true && !(defaultValue >= 0)) {
39
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint nonNegative = true`);
40
- }
41
- if (constraints.negative === true && !(defaultValue < 0)) {
42
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint negative = true`);
43
- }
44
- if (constraints.nonPositive === true && !(defaultValue <= 0)) {
45
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint nonPositive = true`);
46
- }
47
- if (constraints.multipleOf !== undefined &&
48
- defaultValue % constraints.multipleOf !== 0) {
49
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint multipleOf = ${constraints.multipleOf}`);
50
- }
51
- if (constraints.step !== undefined && defaultValue % constraints.step !== 0) {
52
- throw new Error(`defaultValue ${defaultValue} for number does not satisfy the constraint step = ${constraints.step}`);
53
- }
54
- const satisfiesConstraints = createConstraintsPredicate(constraints);
55
22
  return refine({
56
23
  baseType,
57
24
  defaultValue,
58
- is: (value) => satisfiesConstraints(value),
25
+ is: (value) => Result.isOk(constraintsPredicate(value)),
59
26
  typeName: 'number',
60
27
  });
61
28
  }
62
29
  const createConstraintsPredicate = (constraints) => (value) => {
63
- if (constraints.gt !== undefined && !(value > constraints.gt)) {
64
- return false;
30
+ const { gt, gte, lt, lte, min, max, multipleOf, step, finite, int, nonzero, positive, nonNegative, negative, nonPositive, ..._rest } = constraints;
31
+ if (gt !== undefined && !(value > gt)) {
32
+ return Result.err(errorMessage(value, 'gt', gt));
33
+ }
34
+ if (gte !== undefined && !(value >= gte)) {
35
+ return Result.err(errorMessage(value, 'gte', gte));
36
+ }
37
+ if (min !== undefined && !(value >= min)) {
38
+ return Result.err(errorMessage(value, 'min', min));
39
+ }
40
+ if (lt !== undefined && !(value < lt)) {
41
+ return Result.err(errorMessage(value, 'lt', lt));
65
42
  }
66
- if (constraints.gte !== undefined && !(value >= constraints.gte)) {
67
- return false;
43
+ if (lte !== undefined && !(value <= lte)) {
44
+ return Result.err(errorMessage(value, 'lte', lte));
68
45
  }
69
- if (constraints.min !== undefined && !(value >= constraints.min)) {
70
- return false;
46
+ if (max !== undefined && !(value <= max)) {
47
+ return Result.err(errorMessage(value, 'max', max));
71
48
  }
72
- if (constraints.lt !== undefined && !(value < constraints.lt)) {
73
- return false;
49
+ if (multipleOf !== undefined && value % multipleOf !== 0) {
50
+ return Result.err(errorMessage(value, 'multipleOf', multipleOf));
74
51
  }
75
- if (constraints.lte !== undefined && !(value <= constraints.lte)) {
76
- return false;
52
+ if (step !== undefined && value % step !== 0) {
53
+ return Result.err(errorMessage(value, 'step', step));
77
54
  }
78
- if (constraints.max !== undefined && !(value <= constraints.max)) {
79
- return false;
55
+ if (nonzero === true && !(value !== 0)) {
56
+ return Result.err(errorMessage(value, 'nonzero', true));
80
57
  }
81
- if (constraints.positive === true && !(value > 0)) {
82
- return false;
58
+ if (positive === true && !(value > 0)) {
59
+ return Result.err(errorMessage(value, 'positive', true));
83
60
  }
84
- if (constraints.nonNegative === true && !(value >= 0)) {
85
- return false;
61
+ if (nonNegative === true && !(value >= 0)) {
62
+ return Result.err(errorMessage(value, 'nonNegative', true));
86
63
  }
87
- if (constraints.negative === true && !(value < 0)) {
88
- return false;
64
+ if (negative === true && !(value < 0)) {
65
+ return Result.err(errorMessage(value, 'negative', true));
89
66
  }
90
- if (constraints.nonPositive === true && !(value <= 0)) {
91
- return false;
67
+ if (nonPositive === true && !(value <= 0)) {
68
+ return Result.err(errorMessage(value, 'nonPositive', true));
92
69
  }
93
- if (constraints.multipleOf !== undefined &&
94
- value % constraints.multipleOf !== 0) {
95
- return false;
70
+ if (int === true && !Int.is(value)) {
71
+ return Result.err(errorMessage(value, 'int', true));
96
72
  }
97
- if (constraints.step !== undefined && value % constraints.step !== 0) {
98
- return false;
73
+ if (finite === true && !Number.isFinite(value)) {
74
+ return Result.err(errorMessage(value, 'finite', true));
99
75
  }
100
- return true;
76
+ return Result.ok(true);
101
77
  };
78
+ const errorMessage = (value, constraintName, constraintValue) => `defaultValue [${value}] for number does not satisfy the constraint ${constraintName} = ${constraintValue}`;
102
79
 
103
80
  export { number };
104
81
  //# sourceMappingURL=number.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.mjs","sources":["../../src/primitives/number.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.mjs","sources":["../../src/primitives/number.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type DeepReadonly } from 'ts-type-forge';
1
+ import { type NonEmptyString } from 'ts-type-forge';
2
2
  import { type Type } from '../type.mjs';
3
3
  export declare function string(defaultValue?: string): Type<string>;
4
4
  export declare function string<S extends string, const C extends Constraints>(defaultValue: S & DefaultValueType<S, C>, constraints: C): Type<ConstraintsResultType<C>>;
@@ -6,42 +6,45 @@ type Constraints = Partial<Readonly<{
6
6
  startsWith: string;
7
7
  endsWith: string;
8
8
  includes: string;
9
- uppercase: boolean;
10
- lowercase: boolean;
11
- nonempty: boolean;
9
+ uppercase: true;
10
+ lowercase: true;
11
+ nonempty: true;
12
12
  minLength: number;
13
13
  maxLength: number;
14
- regex: DeepReadonly<RegExp>;
14
+ regex: RegExp;
15
15
  }>>;
16
- type DefaultValueType<S extends string, R extends Constraints> = DefaultValueWhenStartsWithIsOn<R> & DefaultValueWhenEndsWithIsOn<R> & DefaultValueWhenIncludesIsOn<R> & DefaultValueWhenUppercaseIsOn<S, R> & DefaultValueWhenLowercaseIsOn<S, R> & DefaultValueWhenNonemptyIsOn<S, R> & DefaultValueWhenMinLengthIsOn<S, R> & DefaultValueWhenMaxLengthIsOn<S, R>;
17
- type ConstraintsResultType<R extends Constraints> = DefaultValueWhenStartsWithIsOn<R> & DefaultValueWhenEndsWithIsOn<R> & DefaultValueWhenIncludesIsOn<R>;
18
- type DefaultValueWhenStartsWithIsOn<R extends Constraints> = R extends Readonly<{
16
+ type DefaultValueType<S extends string, C extends Constraints> = DefaultValueWhenStartsWithIsOn<C> & DefaultValueWhenEndsWithIsOn<C> & DefaultValueWhenIncludesIsOn<C> & DefaultValueWhenUppercaseIsOn<S, C> & DefaultValueWhenLowercaseIsOn<S, C> & DefaultValueWhenNonemptyIsOn<S, C> & DefaultValueWhenMinLengthIsOn<S, C> & DefaultValueWhenMaxLengthIsOn<S, C>;
17
+ type ConstraintsResultType<C extends Constraints> = DefaultValueWhenStartsWithIsOn<C> & DefaultValueWhenEndsWithIsOn<C> & DefaultValueWhenIncludesIsOn<C> & ConstraintsResultTypeWhenNonemptyIsOn<C>;
18
+ type DefaultValueWhenStartsWithIsOn<C extends Constraints> = C extends Readonly<{
19
19
  startsWith: infer S extends string;
20
20
  }> ? `${S}${string}` : string;
21
- type DefaultValueWhenEndsWithIsOn<R extends Constraints> = R extends Readonly<{
21
+ type DefaultValueWhenEndsWithIsOn<C extends Constraints> = C extends Readonly<{
22
22
  endsWith: infer E extends string;
23
23
  }> ? `${string}${E}` : string;
24
- type DefaultValueWhenIncludesIsOn<R extends Constraints> = R extends Readonly<{
24
+ type DefaultValueWhenIncludesIsOn<C extends Constraints> = C extends Readonly<{
25
25
  includes: infer M extends string;
26
26
  }> ? `${string}${M}${string}` : string;
27
- type DefaultValueWhenUppercaseIsOn<S extends string, R extends Constraints> = R extends Readonly<{
27
+ type DefaultValueWhenUppercaseIsOn<S extends string, C extends Constraints> = C extends Readonly<{
28
28
  uppercase: true;
29
29
  }> ? CastUppercase<S> : string;
30
- type DefaultValueWhenLowercaseIsOn<S extends string, R extends Constraints> = R extends Readonly<{
30
+ type DefaultValueWhenLowercaseIsOn<S extends string, C extends Constraints> = C extends Readonly<{
31
31
  lowercase: true;
32
32
  }> ? CastLowercase<S> : string;
33
33
  type CastLowercase<S extends string> = S extends Lowercase<S> ? S : never;
34
34
  type CastUppercase<S extends string> = S extends Uppercase<S> ? S : never;
35
- type DefaultValueWhenNonemptyIsOn<S extends string, R extends Constraints> = R extends Readonly<{
35
+ type DefaultValueWhenNonemptyIsOn<S extends string, C extends Constraints> = C extends Readonly<{
36
+ nonempty: true;
37
+ }> ? RejectEmptyString<S> : string;
38
+ type RejectEmptyString<S extends string> = S extends '' ? never : S;
39
+ type ConstraintsResultTypeWhenNonemptyIsOn<C extends Constraints> = C extends Readonly<{
36
40
  nonempty: true;
37
- }> ? NonEmptyString<S> : string;
38
- type DefaultValueWhenMinLengthIsOn<S extends string, R extends Constraints> = R extends Readonly<{
41
+ }> ? NonEmptyString : string;
42
+ type DefaultValueWhenMinLengthIsOn<S extends string, C extends Constraints> = C extends Readonly<{
39
43
  minLength: infer M extends number;
40
44
  }> ? StringWithMinLength<S, M> : string;
41
- type DefaultValueWhenMaxLengthIsOn<S extends string, R extends Constraints> = R extends Readonly<{
45
+ type DefaultValueWhenMaxLengthIsOn<S extends string, C extends Constraints> = C extends Readonly<{
42
46
  maxLength: infer M extends number;
43
47
  }> ? StringWithMaxLength<S, M> : string;
44
- type NonEmptyString<S extends string> = string extends S ? string : S extends '' ? never : S;
45
48
  type StringWithMinLength<S extends string, N extends number> = HasLengthAtLeast<S, N> extends true ? S : never;
46
49
  type StringWithMaxLength<S extends string, N extends number> = HasLengthAtMost<S, N> extends true ? S : never;
47
50
  type HasLengthAtLeast<S extends string, N extends number, Acc extends readonly unknown[] = readonly []> = string extends S ? true : IsNegative<N> extends true ? true : Acc['length'] extends N ? true : S extends '' ? false : S extends `${infer _}${infer Rest}` ? HasLengthAtLeast<Rest, N, readonly [...Acc, unknown]> : false;
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.mts","sourceRoot":"","sources":["../../src/primitives/string.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string.d.mts","sourceRoot":"","sources":["../../src/primitives/string.mts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { isString, Arr } from 'ts-data-forge';
1
+ import { isRegExp } from '@sindresorhus/is';
2
+ import { isString, Arr, Result } from 'ts-data-forge';
2
3
  import { createPrimitiveType } from '../utils/create-primitive-type.mjs';
3
- import '@sindresorhus/is';
4
4
  import { refine } from '../other-types/refine.mjs';
5
5
  import '../other-types/unknown.mjs';
6
6
 
@@ -14,84 +14,50 @@ function string(defaultValue = '', constraints) {
14
14
  Arr.isArrayOfLength(Object.keys(constraints), 0)) {
15
15
  return baseType;
16
16
  }
17
- if (constraints.startsWith !== undefined &&
18
- !defaultValue.startsWith(constraints.startsWith)) {
19
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint startsWith = ${constraints.startsWith}`);
17
+ const constraintsPredicate = createConstraintsPredicate(constraints);
18
+ const defaultValueConstraintsCheck = constraintsPredicate(defaultValue);
19
+ if (Result.isErr(defaultValueConstraintsCheck)) {
20
+ throw new Error(defaultValueConstraintsCheck.value);
20
21
  }
21
- if (constraints.endsWith !== undefined &&
22
- !defaultValue.endsWith(constraints.endsWith)) {
23
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint endsWith = ${constraints.endsWith}`);
24
- }
25
- if (constraints.includes !== undefined &&
26
- !defaultValue.includes(constraints.includes)) {
27
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint includes = ${constraints.includes}`);
28
- }
29
- if (constraints.uppercase === true &&
30
- defaultValue !== defaultValue.toUpperCase()) {
31
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint uppercase = true`);
32
- }
33
- if (constraints.lowercase === true &&
34
- defaultValue !== defaultValue.toLowerCase()) {
35
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint lowercase = true`);
36
- }
37
- if (constraints.nonempty === true && defaultValue === '') {
38
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint nonempty = true`);
39
- }
40
- if (constraints.minLength !== undefined &&
41
- defaultValue.length < constraints.minLength) {
42
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint minLength = ${constraints.minLength}`);
43
- }
44
- if (constraints.maxLength !== undefined &&
45
- defaultValue.length > constraints.maxLength) {
46
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint maxLength = ${constraints.maxLength}`);
47
- }
48
- if (constraints.regex !== undefined &&
49
- !constraints.regex.test(defaultValue)) {
50
- throw new Error(`defaultValue "${defaultValue}" for string does not satisfy the constraint regex = ${constraints.regex.source}`);
51
- }
52
- const satisfiesConstraints = createConstraintsPredicate(constraints);
53
22
  return refine({
54
23
  baseType,
55
24
  defaultValue,
56
- is: (value) => satisfiesConstraints(value),
25
+ is: (value) => Result.isOk(constraintsPredicate(value)),
57
26
  typeName: 'string',
58
27
  });
59
28
  }
60
29
  const createConstraintsPredicate = (constraints) => (value) => {
61
- if (constraints.startsWith !== undefined &&
62
- !value.startsWith(constraints.startsWith)) {
63
- return false;
30
+ const { includes, startsWith, endsWith, uppercase, lowercase, nonempty, minLength, maxLength, regex, ..._rest } = constraints;
31
+ if (startsWith !== undefined && !value.startsWith(startsWith)) {
32
+ return Result.err(errorMessage(value, 'startsWith', startsWith));
64
33
  }
65
- if (constraints.endsWith !== undefined &&
66
- !value.endsWith(constraints.endsWith)) {
67
- return false;
34
+ if (endsWith !== undefined && !value.endsWith(endsWith)) {
35
+ return Result.err(errorMessage(value, 'endsWith', endsWith));
68
36
  }
69
- if (constraints.includes !== undefined &&
70
- !value.includes(constraints.includes)) {
71
- return false;
37
+ if (includes !== undefined && !value.includes(includes)) {
38
+ return Result.err(errorMessage(value, 'includes', includes));
72
39
  }
73
- if (constraints.uppercase === true && value !== value.toUpperCase()) {
74
- return false;
40
+ if (uppercase === true && value !== value.toUpperCase()) {
41
+ return Result.err(errorMessage(value, 'uppercase', true));
75
42
  }
76
- if (constraints.lowercase === true && value !== value.toLowerCase()) {
77
- return false;
43
+ if (lowercase === true && value !== value.toLowerCase()) {
44
+ return Result.err(errorMessage(value, 'lowercase', true));
78
45
  }
79
- if (constraints.nonempty === true && value.length === 0) {
80
- return false;
46
+ if (nonempty === true && value.length === 0) {
47
+ return Result.err(errorMessage(value, 'nonempty', true));
81
48
  }
82
- if (constraints.minLength !== undefined &&
83
- value.length < constraints.minLength) {
84
- return false;
49
+ if (minLength !== undefined && value.length < minLength) {
50
+ return Result.err(errorMessage(value, 'minLength', minLength));
85
51
  }
86
- if (constraints.maxLength !== undefined &&
87
- value.length > constraints.maxLength) {
88
- return false;
52
+ if (maxLength !== undefined && value.length > maxLength) {
53
+ return Result.err(errorMessage(value, 'maxLength', maxLength));
89
54
  }
90
- if (constraints.regex !== undefined && !constraints.regex.test(value)) {
91
- return false;
55
+ if (regex !== undefined && !regex.test(value)) {
56
+ return Result.err(errorMessage(value, 'regex', regex));
92
57
  }
93
- return true;
58
+ return Result.ok(true);
94
59
  };
60
+ const errorMessage = (value, constraintName, constraintValue) => `defaultValue "${value}" for string does not satisfy the constraint ${constraintName} = ${isRegExp(constraintValue) ? constraintValue.source : constraintValue}`;
95
61
 
96
62
  export { string };
97
63
  //# sourceMappingURL=string.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.mjs","sources":["../../src/primitives/string.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string.mjs","sources":["../../src/primitives/string.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-fortress",
3
- "version": "7.2.0",
3
+ "version": "7.3.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -75,7 +75,7 @@
75
75
  "z:vitest:node": "pnpm run z:vitest --project='Node.js'"
76
76
  },
77
77
  "dependencies": {
78
- "@sindresorhus/is": "^8.0.0",
78
+ "@sindresorhus/is": "^8.1.0",
79
79
  "ts-data-forge": "^6.11.0",
80
80
  "ts-type-forge": "^3.2.0"
81
81
  },
@@ -89,39 +89,39 @@
89
89
  "@semantic-release/git": "10.0.1",
90
90
  "@semantic-release/github": "12.0.8",
91
91
  "@semantic-release/npm": "13.1.5",
92
- "@semantic-release/release-notes-generator": "14.1.0",
93
- "@types/node": "25.9.1",
94
- "@vitest/browser-playwright": "4.1.5",
95
- "@vitest/coverage-v8": "4.1.5",
96
- "@vitest/ui": "4.1.5",
92
+ "@semantic-release/release-notes-generator": "14.1.1",
93
+ "@types/node": "26.0.0",
94
+ "@vitest/browser-playwright": "4.1.9",
95
+ "@vitest/coverage-v8": "4.1.9",
96
+ "@vitest/ui": "4.1.9",
97
97
  "conventional-changelog-conventionalcommits": "9.3.1",
98
- "cspell": "10.0.0",
98
+ "cspell": "10.0.1",
99
99
  "dedent": "1.7.2",
100
100
  "eslint": "9.39.4",
101
- "eslint-config-typed": "4.9.8",
101
+ "eslint-config-typed": "4.10.0",
102
102
  "fast-glob": "3.3.3",
103
103
  "fp-ts": "2.16.11",
104
104
  "github-settings-as-code": "1.2.9",
105
105
  "io-ts": "2.2.22",
106
106
  "jiti": "2.7.0",
107
- "markdownlint": "0.40.0",
107
+ "markdownlint": "0.41.0",
108
108
  "markdownlint-cli2": "0.22.1",
109
- "npm-run-all2": "8.0.4",
110
- "playwright": "1.59.1",
111
- "prettier": "3.8.3",
109
+ "npm-run-all2": "9.0.2",
110
+ "playwright": "1.61.0",
111
+ "prettier": "3.8.4",
112
112
  "prettier-plugin-organize-imports": "4.3.0",
113
113
  "prettier-plugin-packagejson": "3.0.2",
114
- "rollup": "4.60.4",
115
- "semantic-release": "25.0.3",
116
- "ts-codemod-lib": "2.1.7",
117
- "ts-repo-utils": "10.0.3",
114
+ "rollup": "4.62.0",
115
+ "semantic-release": "25.0.5",
116
+ "ts-codemod-lib": "2.2.0",
117
+ "ts-repo-utils": "10.1.2",
118
118
  "tslib": "2.8.1",
119
- "tsx": "4.21.0",
119
+ "tsx": "4.22.4",
120
120
  "typedoc": "0.28.19",
121
121
  "typedoc-github-theme": "0.4.0",
122
122
  "typescript": "5.9.3",
123
123
  "vite": "8.0.16",
124
- "vitest": "4.1.5",
124
+ "vitest": "4.1.9",
125
125
  "zod": "4.4.3"
126
126
  },
127
127
  "packageManager": "pnpm@10.34.4",