ts-fortress 2.7.0 → 2.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.
- package/dist/branded/brand.d.mts +3 -2
- package/dist/branded/brand.d.mts.map +1 -1
- package/dist/branded/brand.mjs +8 -7
- package/dist/branded/brand.mjs.map +1 -1
- package/dist/branded/number/finite-number.d.mts.map +1 -1
- package/dist/branded/number/finite-number.mjs +1 -0
- package/dist/branded/number/finite-number.mjs.map +1 -1
- package/dist/branded/number/int.d.mts.map +1 -1
- package/dist/branded/number/int.mjs +1 -0
- package/dist/branded/number/int.mjs.map +1 -1
- package/dist/branded/number/int16.d.mts.map +1 -1
- package/dist/branded/number/int16.mjs +1 -0
- package/dist/branded/number/int16.mjs.map +1 -1
- package/dist/branded/number/int32.d.mts.map +1 -1
- package/dist/branded/number/int32.mjs +1 -0
- package/dist/branded/number/int32.mjs.map +1 -1
- package/dist/branded/number/non-negative-finite-number.d.mts.map +1 -1
- package/dist/branded/number/non-negative-finite-number.mjs +1 -0
- package/dist/branded/number/non-negative-finite-number.mjs.map +1 -1
- package/dist/branded/number/non-zero-finite-number.d.mts.map +1 -1
- package/dist/branded/number/non-zero-finite-number.mjs +1 -0
- package/dist/branded/number/non-zero-finite-number.mjs.map +1 -1
- package/dist/branded/number/non-zero-int.d.mts.map +1 -1
- package/dist/branded/number/non-zero-int.mjs +1 -0
- package/dist/branded/number/non-zero-int.mjs.map +1 -1
- package/dist/branded/number/non-zero-safe-int.d.mts.map +1 -1
- package/dist/branded/number/non-zero-safe-int.mjs +1 -0
- package/dist/branded/number/non-zero-safe-int.mjs.map +1 -1
- package/dist/branded/number/positive-finite-number.d.mts.map +1 -1
- package/dist/branded/number/positive-finite-number.mjs +1 -0
- package/dist/branded/number/positive-finite-number.mjs.map +1 -1
- package/dist/branded/number/positive-int.d.mts.map +1 -1
- package/dist/branded/number/positive-int.mjs +1 -0
- package/dist/branded/number/positive-int.mjs.map +1 -1
- package/dist/branded/number/positive-safe-int.d.mts.map +1 -1
- package/dist/branded/number/positive-safe-int.mjs +1 -0
- package/dist/branded/number/positive-safe-int.mjs.map +1 -1
- package/dist/branded/number/safe-int.d.mts.map +1 -1
- package/dist/branded/number/safe-int.mjs +1 -0
- package/dist/branded/number/safe-int.mjs.map +1 -1
- package/dist/branded/number/safe-uint.d.mts.map +1 -1
- package/dist/branded/number/safe-uint.mjs +1 -0
- package/dist/branded/number/safe-uint.mjs.map +1 -1
- package/dist/branded/number/uint.d.mts.map +1 -1
- package/dist/branded/number/uint.mjs +1 -0
- package/dist/branded/number/uint.mjs.map +1 -1
- package/dist/branded/number/uint16.d.mts.map +1 -1
- package/dist/branded/number/uint16.mjs +1 -0
- package/dist/branded/number/uint16.mjs.map +1 -1
- package/dist/branded/number/uint32.d.mts.map +1 -1
- package/dist/branded/number/uint32.mjs +1 -0
- package/dist/branded/number/uint32.mjs.map +1 -1
- package/dist/entry-point.mjs +1 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/other-types/index.d.mts +1 -0
- package/dist/other-types/index.d.mts.map +1 -1
- package/dist/other-types/index.mjs +1 -0
- package/dist/other-types/index.mjs.map +1 -1
- package/dist/other-types/literal.d.mts +3 -0
- package/dist/other-types/literal.d.mts.map +1 -0
- package/dist/other-types/literal.mjs +15 -0
- package/dist/other-types/literal.mjs.map +1 -0
- package/dist/primitives/bigint.d.mts +1 -0
- package/dist/primitives/bigint.d.mts.map +1 -1
- package/dist/primitives/bigint.mjs +1 -0
- package/dist/primitives/bigint.mjs.map +1 -1
- package/dist/primitives/boolean.d.mts +1 -0
- package/dist/primitives/boolean.d.mts.map +1 -1
- package/dist/primitives/boolean.mjs +1 -0
- package/dist/primitives/boolean.mjs.map +1 -1
- package/dist/primitives/number.d.mts +1 -0
- package/dist/primitives/number.d.mts.map +1 -1
- package/dist/primitives/number.mjs +1 -0
- package/dist/primitives/number.mjs.map +1 -1
- package/dist/primitives/string.d.mts +1 -0
- package/dist/primitives/string.d.mts.map +1 -1
- package/dist/primitives/string.mjs +1 -0
- package/dist/primitives/string.mjs.map +1 -1
- package/package.json +1 -1
- package/src/array/tuple.test.mts +6 -6
- package/src/branded/brand.mts +16 -20
- package/src/branded/number/finite-number.mts +1 -0
- package/src/branded/number/finite-number.test.mts +4 -5
- package/src/branded/number/int.mts +1 -0
- package/src/branded/number/int.test.mts +5 -6
- package/src/branded/number/int16.mts +1 -0
- package/src/branded/number/int16.test.mts +4 -6
- package/src/branded/number/int32.mts +1 -0
- package/src/branded/number/int32.test.mts +4 -6
- package/src/branded/number/non-negative-finite-number.mts +1 -0
- package/src/branded/number/non-negative-finite-number.test.mts +4 -6
- package/src/branded/number/non-zero-finite-number.mts +1 -0
- package/src/branded/number/non-zero-finite-number.test.mts +4 -5
- package/src/branded/number/non-zero-int.mts +1 -0
- package/src/branded/number/non-zero-int.test.mts +4 -5
- package/src/branded/number/non-zero-safe-int.mts +1 -0
- package/src/branded/number/non-zero-safe-int.test.mts +4 -5
- package/src/branded/number/positive-finite-number.mts +1 -0
- package/src/branded/number/positive-finite-number.test.mts +4 -6
- package/src/branded/number/positive-int.mts +1 -0
- package/src/branded/number/positive-int.test.mts +5 -7
- package/src/branded/number/positive-safe-int.mts +1 -0
- package/src/branded/number/positive-safe-int.test.mts +4 -6
- package/src/branded/number/safe-int.mts +1 -0
- package/src/branded/number/safe-int.test.mts +4 -5
- package/src/branded/number/safe-uint.mts +1 -0
- package/src/branded/number/safe-uint.test.mts +4 -6
- package/src/branded/number/uint.mts +1 -0
- package/src/branded/number/uint.test.mts +5 -7
- package/src/branded/number/uint16.mts +1 -0
- package/src/branded/number/uint16.test.mts +4 -6
- package/src/branded/number/uint32.mts +1 -0
- package/src/branded/number/uint32.test.mts +4 -6
- package/src/branded/simple-branded-number.test.mts +2 -2
- package/src/branded/simple-branded-string.test.mts +4 -4
- package/src/compose/union.test.mts +8 -12
- package/src/other-types/index.mts +1 -0
- package/src/other-types/literal.mts +18 -0
- package/src/other-types/literal.test.mts +635 -0
- package/src/primitives/bigint.mts +1 -0
- package/src/primitives/bigint.test.mts +1 -137
- package/src/primitives/boolean.mts +1 -0
- package/src/primitives/boolean.test.mts +1 -220
- package/src/primitives/number.mts +1 -0
- package/src/primitives/number.test.mts +1 -116
- package/src/primitives/string.mts +1 -0
- package/src/primitives/string.test.mts +1 -160
|
@@ -2,6 +2,7 @@ import { isString } from 'ts-data-forge';
|
|
|
2
2
|
import { createPrimitiveType } from '../utils/create-primitive-type.mjs';
|
|
3
3
|
|
|
4
4
|
const string = (defaultValue = '') => createPrimitiveType({ typeName: 'string', defaultValue, is: isString });
|
|
5
|
+
/** @deprecated Use `literal` instead. */
|
|
5
6
|
const stringLiteral = (literal) => createPrimitiveType({
|
|
6
7
|
typeName: `stringLiteral("${literal}")`,
|
|
7
8
|
defaultValue: literal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.mjs","sources":["../../src/primitives/string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIO,MAAM,MAAM,GAAG,CAAC,eAAuB,EAAE,KAC9C,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"string.mjs","sources":["../../src/primitives/string.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIO,MAAM,MAAM,GAAG,CAAC,eAAuB,EAAE,KAC9C,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE;AAExE;AACO,MAAM,aAAa,GAAG,CAAmB,OAAU,KACxD,mBAAmB,CAAC;IAClB,QAAQ,EAAE,CAAA,eAAA,EAAkB,OAAO,CAAA,EAAA,CAAI;AACvC,IAAA,YAAY,EAAE,OAAO;IACrB,EAAE,EAAE,CAAC,KAAc,KAAiB,KAAK,KAAK,OAAO;AACtD,CAAA;;;;"}
|
package/package.json
CHANGED
package/src/array/tuple.test.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { expectType, Result } from 'ts-data-forge';
|
|
2
|
-
import {
|
|
2
|
+
import { literal } from '../other-types/index.mjs';
|
|
3
|
+
import { number } from '../primitives/index.mjs';
|
|
3
4
|
import { record } from '../record/index.mjs';
|
|
4
5
|
import { type TypeOf } from '../type.mjs';
|
|
5
6
|
import {
|
|
@@ -12,14 +13,13 @@ describe('tuple', () => {
|
|
|
12
13
|
describe('arg patterns', () => {
|
|
13
14
|
test('without explicit default value', () => {
|
|
14
15
|
expect(
|
|
15
|
-
tuple([
|
|
16
|
-
.defaultValue,
|
|
16
|
+
tuple([literal(1), literal(2), literal(3)]).defaultValue,
|
|
17
17
|
).toStrictEqual([1, 2, 3]);
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
test('with explicit default value', () => {
|
|
21
21
|
expect(
|
|
22
|
-
tuple([
|
|
22
|
+
tuple([literal(1), literal(2), literal(3)], {
|
|
23
23
|
typeName: 'tpl',
|
|
24
24
|
}).typeName,
|
|
25
25
|
).toBe('tpl');
|
|
@@ -28,8 +28,8 @@ describe('tuple', () => {
|
|
|
28
28
|
|
|
29
29
|
const targetType = tuple([
|
|
30
30
|
record({ x: number(0), y: number(0) }),
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
literal(3),
|
|
32
|
+
literal('2'),
|
|
33
33
|
]);
|
|
34
34
|
|
|
35
35
|
type TargetType = TypeOf<typeof targetType>;
|
package/src/branded/brand.mts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { pipe, Result } from 'ts-data-forge';
|
|
2
2
|
import { type Type } from '../type.mjs';
|
|
3
|
-
import {
|
|
4
|
-
createType,
|
|
5
|
-
type ValidationError,
|
|
6
|
-
type ValidationErrorWithMessage,
|
|
7
|
-
} from '../utils/index.mjs';
|
|
3
|
+
import { createType, type ValidationError } from '../utils/index.mjs';
|
|
8
4
|
|
|
9
5
|
type ArrayToUnion<A extends readonly unknown[]> = A extends readonly []
|
|
10
6
|
? never
|
|
@@ -17,31 +13,35 @@ export const brand = <
|
|
|
17
13
|
>({
|
|
18
14
|
codec,
|
|
19
15
|
is,
|
|
16
|
+
defaultValue,
|
|
17
|
+
typeName,
|
|
20
18
|
brandKeys,
|
|
21
19
|
brandFalseKeys,
|
|
22
|
-
defaultValue,
|
|
23
20
|
}: Readonly<{
|
|
24
21
|
codec: Type<A>;
|
|
25
22
|
is: (
|
|
26
23
|
a: A,
|
|
27
24
|
) => a is Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>;
|
|
28
|
-
brandKeys: BrandTrueKeys;
|
|
29
|
-
brandFalseKeys?: BrandFalseKeys;
|
|
30
25
|
defaultValue: Brand<
|
|
31
26
|
A,
|
|
32
27
|
ArrayToUnion<BrandTrueKeys>,
|
|
33
28
|
ArrayToUnion<BrandFalseKeys>
|
|
34
29
|
>;
|
|
30
|
+
typeName?: string;
|
|
31
|
+
brandKeys: BrandTrueKeys;
|
|
32
|
+
brandFalseKeys?: BrandFalseKeys;
|
|
35
33
|
}>): Type<
|
|
36
34
|
Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>
|
|
37
35
|
> => {
|
|
38
36
|
type T = Brand<A, ArrayToUnion<BrandTrueKeys>, ArrayToUnion<BrandFalseKeys>>;
|
|
39
37
|
|
|
40
38
|
const brandKeysStr = [
|
|
41
|
-
...brandKeys,
|
|
42
|
-
...(brandFalseKeys?.map((s) => `not(${s})`) ?? []),
|
|
39
|
+
...brandKeys.map((s) => `"${s}"`),
|
|
40
|
+
...(brandFalseKeys?.map((s) => `not("${s}")`) ?? []),
|
|
43
41
|
].join(' & ');
|
|
44
42
|
|
|
43
|
+
const typeNameFilled = typeName ?? brandKeysStr;
|
|
44
|
+
|
|
45
45
|
const validate: Type<T>['validate'] = (a) =>
|
|
46
46
|
pipe(a)
|
|
47
47
|
.map(codec.validate)
|
|
@@ -55,23 +55,19 @@ export const brand = <
|
|
|
55
55
|
{
|
|
56
56
|
path: [],
|
|
57
57
|
actualValue: v.value,
|
|
58
|
-
expectedType:
|
|
58
|
+
expectedType: typeNameFilled,
|
|
59
59
|
typeName: brandKeysStr,
|
|
60
|
-
message:
|
|
61
|
-
|
|
60
|
+
message:
|
|
61
|
+
typeName === undefined
|
|
62
|
+
? `The value must satisfy the constraint corresponding to the brand keys: <${brandKeysStr}>`
|
|
63
|
+
: undefined,
|
|
64
|
+
} satisfies ValidationError,
|
|
62
65
|
]),
|
|
63
66
|
).value;
|
|
64
67
|
|
|
65
|
-
const fill: Type<T>['fill'] = (a) =>
|
|
66
|
-
Result.unwrapOkOr(
|
|
67
|
-
validate(a) satisfies Result<T, unknown>,
|
|
68
|
-
defaultValue satisfies T,
|
|
69
|
-
) satisfies T;
|
|
70
|
-
|
|
71
68
|
return createType({
|
|
72
69
|
typeName: brandKeysStr,
|
|
73
70
|
defaultValue,
|
|
74
71
|
validate,
|
|
75
|
-
fill,
|
|
76
72
|
});
|
|
77
73
|
};
|
|
@@ -90,10 +90,9 @@ describe('finiteNumber', () => {
|
|
|
90
90
|
{
|
|
91
91
|
path: [],
|
|
92
92
|
actualValue: Number.POSITIVE_INFINITY,
|
|
93
|
-
expectedType: '
|
|
94
|
-
typeName: 'Finite & not(NaNValue)',
|
|
95
|
-
message:
|
|
96
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & not(NaNValue)>',
|
|
93
|
+
expectedType: 'FiniteNumber',
|
|
94
|
+
typeName: '"Finite" & not("NaNValue")',
|
|
95
|
+
message: undefined,
|
|
97
96
|
},
|
|
98
97
|
]);
|
|
99
98
|
}
|
|
@@ -139,7 +138,7 @@ describe('finiteNumber', () => {
|
|
|
139
138
|
targetType.assertIs;
|
|
140
139
|
expect(() => {
|
|
141
140
|
assertIs(x);
|
|
142
|
-
}).toThrow('
|
|
141
|
+
}).toThrow('Expected <FiniteNumber>');
|
|
143
142
|
});
|
|
144
143
|
});
|
|
145
144
|
|
|
@@ -69,15 +69,14 @@ describe('int', () => {
|
|
|
69
69
|
{
|
|
70
70
|
path: [],
|
|
71
71
|
actualValue: 42.5,
|
|
72
|
-
expectedType: '
|
|
73
|
-
typeName: 'Finite & Int & not(NaNValue)',
|
|
74
|
-
message:
|
|
75
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & not(NaNValue)>',
|
|
72
|
+
expectedType: 'Int',
|
|
73
|
+
typeName: '"Finite" & "Int" & not("NaNValue")',
|
|
74
|
+
message: undefined,
|
|
76
75
|
},
|
|
77
76
|
]);
|
|
78
77
|
|
|
79
78
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
80
|
-
'
|
|
79
|
+
'Expected <Int>, got <number> type value `42.5`.',
|
|
81
80
|
]);
|
|
82
81
|
}
|
|
83
82
|
});
|
|
@@ -131,7 +130,7 @@ describe('int', () => {
|
|
|
131
130
|
targetType.assertIs;
|
|
132
131
|
expect(() => {
|
|
133
132
|
assertIs(x);
|
|
134
|
-
}).toThrow('
|
|
133
|
+
}).toThrow('Expected <Int>');
|
|
135
134
|
});
|
|
136
135
|
});
|
|
137
136
|
|
|
@@ -79,16 +79,14 @@ describe('int16', () => {
|
|
|
79
79
|
{
|
|
80
80
|
path: [],
|
|
81
81
|
actualValue: 50000,
|
|
82
|
-
expectedType:
|
|
83
|
-
'Finite & Int & SafeInt & > -2^32 & >= -2^31 & < 2^32 & < 2^31 & < 2^15 & < 2^16 & > -2^16 & >= -2^15 & not(NaNValue)',
|
|
82
|
+
expectedType: 'Int16',
|
|
84
83
|
typeName:
|
|
85
|
-
'Finite & Int & SafeInt & > -2^32 & >= -2^31 & < 2^32 & < 2^31 & < 2^15 & < 2^16 & > -2^16 & >= -2^15 & not(NaNValue)',
|
|
86
|
-
message:
|
|
87
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & > -2^32 & >= -2^31 & < 2^32 & < 2^31 & < 2^15 & < 2^16 & > -2^16 & >= -2^15 & not(NaNValue)>',
|
|
84
|
+
'"Finite" & "Int" & "SafeInt" & "> -2^32" & ">= -2^31" & "< 2^32" & "< 2^31" & "< 2^15" & "< 2^16" & "> -2^16" & ">= -2^15" & not("NaNValue")',
|
|
85
|
+
message: undefined,
|
|
88
86
|
},
|
|
89
87
|
]);
|
|
90
88
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
91
|
-
'
|
|
89
|
+
'Expected <Int16>, got <number> type value `50000`.',
|
|
92
90
|
]);
|
|
93
91
|
}
|
|
94
92
|
});
|
|
@@ -73,16 +73,14 @@ describe('int32', () => {
|
|
|
73
73
|
{
|
|
74
74
|
path: [],
|
|
75
75
|
actualValue: 3000000000,
|
|
76
|
-
expectedType:
|
|
77
|
-
'Finite & Int & SafeInt & > -2^32 & >= -2^31 & < 2^32 & < 2^31 & not(NaNValue)',
|
|
76
|
+
expectedType: 'Int32',
|
|
78
77
|
typeName:
|
|
79
|
-
'Finite & Int & SafeInt & > -2^32 & >= -2^31 & < 2^32 & < 2^31 & not(NaNValue)',
|
|
80
|
-
message:
|
|
81
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & > -2^32 & >= -2^31 & < 2^32 & < 2^31 & not(NaNValue)>',
|
|
78
|
+
'"Finite" & "Int" & "SafeInt" & "> -2^32" & ">= -2^31" & "< 2^32" & "< 2^31" & not("NaNValue")',
|
|
79
|
+
message: undefined,
|
|
82
80
|
},
|
|
83
81
|
]);
|
|
84
82
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
85
|
-
'
|
|
83
|
+
'Expected <Int32>, got <number> type value `3000000000`.',
|
|
86
84
|
]);
|
|
87
85
|
}
|
|
88
86
|
});
|
|
@@ -90,16 +90,14 @@ describe('nonNegativeFiniteNumber', () => {
|
|
|
90
90
|
{
|
|
91
91
|
path: [],
|
|
92
92
|
actualValue: -5.5,
|
|
93
|
-
expectedType:
|
|
94
|
-
'>=0 & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & Finite & not(NaNValue)',
|
|
93
|
+
expectedType: 'NonNegativeFiniteNumber',
|
|
95
94
|
typeName:
|
|
96
|
-
'>=0 & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & Finite & not(NaNValue)',
|
|
97
|
-
message:
|
|
98
|
-
'The value must satisfy the constraint corresponding to the brand keys: <>=0 & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & Finite & not(NaNValue)>',
|
|
95
|
+
'">=0" & "> -2^16" & "> -2^32" & ">= -2^15" & ">= -2^31" & "Finite" & not("NaNValue")',
|
|
96
|
+
message: undefined,
|
|
99
97
|
},
|
|
100
98
|
]);
|
|
101
99
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
102
|
-
'
|
|
100
|
+
'Expected <NonNegativeFiniteNumber>, got <number> type value `-5.5`.',
|
|
103
101
|
]);
|
|
104
102
|
}
|
|
105
103
|
});
|
|
@@ -86,14 +86,13 @@ describe('nonZeroFiniteNumber', () => {
|
|
|
86
86
|
{
|
|
87
87
|
path: [],
|
|
88
88
|
actualValue: 0,
|
|
89
|
-
expectedType: '
|
|
90
|
-
typeName: '!=0 & Finite & not(NaNValue)',
|
|
91
|
-
message:
|
|
92
|
-
'The value must satisfy the constraint corresponding to the brand keys: <!=0 & Finite & not(NaNValue)>',
|
|
89
|
+
expectedType: 'NonZeroFiniteNumber',
|
|
90
|
+
typeName: '"!=0" & "Finite" & not("NaNValue")',
|
|
91
|
+
message: undefined,
|
|
93
92
|
},
|
|
94
93
|
]);
|
|
95
94
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
96
|
-
'
|
|
95
|
+
'Expected <NonZeroFiniteNumber>, got <number> type value `0`.',
|
|
97
96
|
]);
|
|
98
97
|
}
|
|
99
98
|
});
|
|
@@ -79,14 +79,13 @@ describe('nonZeroInt', () => {
|
|
|
79
79
|
{
|
|
80
80
|
path: [],
|
|
81
81
|
actualValue: 0,
|
|
82
|
-
expectedType: '
|
|
83
|
-
typeName: 'Finite & Int & !=0 & not(NaNValue)',
|
|
84
|
-
message:
|
|
85
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & !=0 & not(NaNValue)>',
|
|
82
|
+
expectedType: 'NonZeroInt',
|
|
83
|
+
typeName: '"Finite" & "Int" & "!=0" & not("NaNValue")',
|
|
84
|
+
message: undefined,
|
|
86
85
|
},
|
|
87
86
|
]);
|
|
88
87
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
89
|
-
'
|
|
88
|
+
'Expected <NonZeroInt>, got <number> type value `0`.',
|
|
90
89
|
]);
|
|
91
90
|
}
|
|
92
91
|
});
|
|
@@ -86,14 +86,13 @@ describe('nonZeroSafeInt', () => {
|
|
|
86
86
|
{
|
|
87
87
|
path: [],
|
|
88
88
|
actualValue: 0,
|
|
89
|
-
expectedType: '
|
|
90
|
-
typeName: 'Finite & Int & SafeInt & !=0 & not(NaNValue)',
|
|
91
|
-
message:
|
|
92
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & !=0 & not(NaNValue)>',
|
|
89
|
+
expectedType: 'NonZeroSafeInt',
|
|
90
|
+
typeName: '"Finite" & "Int" & "SafeInt" & "!=0" & not("NaNValue")',
|
|
91
|
+
message: undefined,
|
|
93
92
|
},
|
|
94
93
|
]);
|
|
95
94
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
96
|
-
'
|
|
95
|
+
'Expected <NonZeroSafeInt>, got <number> type value `0`.',
|
|
97
96
|
]);
|
|
98
97
|
}
|
|
99
98
|
});
|
|
@@ -86,16 +86,14 @@ describe('positiveFiniteNumber', () => {
|
|
|
86
86
|
{
|
|
87
87
|
path: [],
|
|
88
88
|
actualValue: 0,
|
|
89
|
-
expectedType:
|
|
90
|
-
'>=0 & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & Finite & !=0 & not(NaNValue)',
|
|
89
|
+
expectedType: 'PositiveFiniteNumber',
|
|
91
90
|
typeName:
|
|
92
|
-
'>=0 & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & Finite & !=0 & not(NaNValue)',
|
|
93
|
-
message:
|
|
94
|
-
'The value must satisfy the constraint corresponding to the brand keys: <>=0 & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & Finite & !=0 & not(NaNValue)>',
|
|
91
|
+
'">=0" & "> -2^16" & "> -2^32" & ">= -2^15" & ">= -2^31" & "Finite" & "!=0" & not("NaNValue")',
|
|
92
|
+
message: undefined,
|
|
95
93
|
},
|
|
96
94
|
]);
|
|
97
95
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
98
|
-
'
|
|
96
|
+
'Expected <PositiveFiniteNumber>, got <number> type value `0`.',
|
|
99
97
|
]);
|
|
100
98
|
}
|
|
101
99
|
});
|
|
@@ -96,16 +96,14 @@ describe('positiveInt', () => {
|
|
|
96
96
|
{
|
|
97
97
|
path: [],
|
|
98
98
|
actualValue: -5,
|
|
99
|
-
expectedType:
|
|
100
|
-
'Finite & Int & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & !=0 & not(NaNValue)',
|
|
99
|
+
expectedType: 'PositiveInt',
|
|
101
100
|
typeName:
|
|
102
|
-
'Finite & Int & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & !=0 & not(NaNValue)',
|
|
103
|
-
message:
|
|
104
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & !=0 & not(NaNValue)>',
|
|
101
|
+
'"Finite" & "Int" & "> -2^32" & ">= -2^31" & "> -2^16" & ">= -2^15" & ">=0" & "!=0" & not("NaNValue")',
|
|
102
|
+
message: undefined,
|
|
105
103
|
},
|
|
106
104
|
]);
|
|
107
105
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
108
|
-
'
|
|
106
|
+
'Expected <PositiveInt>, got <number> type value `-5`.',
|
|
109
107
|
]);
|
|
110
108
|
}
|
|
111
109
|
});
|
|
@@ -149,7 +147,7 @@ describe('positiveInt', () => {
|
|
|
149
147
|
targetType.assertIs;
|
|
150
148
|
expect(() => {
|
|
151
149
|
assertIs(x);
|
|
152
|
-
}).toThrow('
|
|
150
|
+
}).toThrow('Expected <PositiveInt>');
|
|
153
151
|
});
|
|
154
152
|
});
|
|
155
153
|
|
|
@@ -90,16 +90,14 @@ describe('positiveSafeInt', () => {
|
|
|
90
90
|
{
|
|
91
91
|
path: [],
|
|
92
92
|
actualValue: 0,
|
|
93
|
-
expectedType:
|
|
94
|
-
'Finite & Int & SafeInt & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & !=0 & not(NaNValue)',
|
|
93
|
+
expectedType: 'PositiveSafeInt',
|
|
95
94
|
typeName:
|
|
96
|
-
'Finite & Int & SafeInt & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & !=0 & not(NaNValue)',
|
|
97
|
-
message:
|
|
98
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & !=0 & not(NaNValue)>',
|
|
95
|
+
'"Finite" & "Int" & "SafeInt" & "> -2^32" & ">= -2^31" & "> -2^16" & ">= -2^15" & ">=0" & "!=0" & not("NaNValue")',
|
|
96
|
+
message: undefined,
|
|
99
97
|
},
|
|
100
98
|
]);
|
|
101
99
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
102
|
-
'
|
|
100
|
+
'Expected <PositiveSafeInt>, got <number> type value `0`.',
|
|
103
101
|
]);
|
|
104
102
|
}
|
|
105
103
|
});
|
|
@@ -78,15 +78,14 @@ describe('safeInt', () => {
|
|
|
78
78
|
{
|
|
79
79
|
path: [],
|
|
80
80
|
actualValue: Number.MAX_SAFE_INTEGER + 1,
|
|
81
|
-
expectedType: '
|
|
82
|
-
typeName: 'Finite & Int & SafeInt & not(NaNValue)',
|
|
83
|
-
message:
|
|
84
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & not(NaNValue)>',
|
|
81
|
+
expectedType: 'SafeInt',
|
|
82
|
+
typeName: '"Finite" & "Int" & "SafeInt" & not("NaNValue")',
|
|
83
|
+
message: undefined,
|
|
85
84
|
},
|
|
86
85
|
]);
|
|
87
86
|
|
|
88
87
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
89
|
-
'
|
|
88
|
+
'Expected <SafeInt>, got <number> type value `9007199254740992`.',
|
|
90
89
|
]);
|
|
91
90
|
}
|
|
92
91
|
});
|
|
@@ -85,16 +85,14 @@ describe('safeUint', () => {
|
|
|
85
85
|
{
|
|
86
86
|
path: [],
|
|
87
87
|
actualValue: -5,
|
|
88
|
-
expectedType:
|
|
89
|
-
'Finite & Int & SafeInt & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & >=0 & not(NaNValue)',
|
|
88
|
+
expectedType: 'SafeUint',
|
|
90
89
|
typeName:
|
|
91
|
-
'Finite & Int & SafeInt & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & >=0 & not(NaNValue)',
|
|
92
|
-
message:
|
|
93
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & >=0 & not(NaNValue)>',
|
|
90
|
+
'"Finite" & "Int" & "SafeInt" & "> -2^16" & "> -2^32" & ">= -2^15" & ">= -2^31" & ">=0" & not("NaNValue")',
|
|
91
|
+
message: undefined,
|
|
94
92
|
},
|
|
95
93
|
]);
|
|
96
94
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
97
|
-
'
|
|
95
|
+
'Expected <SafeUint>, got <number> type value `-5`.',
|
|
98
96
|
]);
|
|
99
97
|
}
|
|
100
98
|
});
|
|
@@ -91,16 +91,14 @@ describe('uint', () => {
|
|
|
91
91
|
{
|
|
92
92
|
path: [],
|
|
93
93
|
actualValue: -5,
|
|
94
|
-
expectedType:
|
|
95
|
-
'Finite & Int & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & not(NaNValue)',
|
|
94
|
+
expectedType: 'Uint',
|
|
96
95
|
typeName:
|
|
97
|
-
'Finite & Int & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & not(NaNValue)',
|
|
98
|
-
message:
|
|
99
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & > -2^32 & >= -2^31 & > -2^16 & >= -2^15 & >=0 & not(NaNValue)>',
|
|
96
|
+
'"Finite" & "Int" & "> -2^32" & ">= -2^31" & "> -2^16" & ">= -2^15" & ">=0" & not("NaNValue")',
|
|
97
|
+
message: undefined,
|
|
100
98
|
},
|
|
101
99
|
]);
|
|
102
100
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
103
|
-
'
|
|
101
|
+
'Expected <Uint>, got <number> type value `-5`.',
|
|
104
102
|
]);
|
|
105
103
|
}
|
|
106
104
|
});
|
|
@@ -144,7 +142,7 @@ describe('uint', () => {
|
|
|
144
142
|
targetType.assertIs;
|
|
145
143
|
expect(() => {
|
|
146
144
|
assertIs(x);
|
|
147
|
-
}).toThrow('
|
|
145
|
+
}).toThrow('Expected <Uint>');
|
|
148
146
|
});
|
|
149
147
|
});
|
|
150
148
|
|
|
@@ -85,16 +85,14 @@ describe('uint16', () => {
|
|
|
85
85
|
{
|
|
86
86
|
path: [],
|
|
87
87
|
actualValue: -5,
|
|
88
|
-
expectedType:
|
|
89
|
-
'Finite & Int & SafeInt & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & >=0 & < 2^32 & < 2^16 & < 2^31 & not(NaNValue)',
|
|
88
|
+
expectedType: 'Uint16',
|
|
90
89
|
typeName:
|
|
91
|
-
'Finite & Int & SafeInt & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & >=0 & < 2^32 & < 2^16 & < 2^31 & not(NaNValue)',
|
|
92
|
-
message:
|
|
93
|
-
'The value must satisfy the constraint corresponding to the brand keys: <Finite & Int & SafeInt & > -2^16 & > -2^32 & >= -2^15 & >= -2^31 & >=0 & < 2^32 & < 2^16 & < 2^31 & not(NaNValue)>',
|
|
90
|
+
'"Finite" & "Int" & "SafeInt" & "> -2^16" & "> -2^32" & ">= -2^15" & ">= -2^31" & ">=0" & "< 2^32" & "< 2^16" & "< 2^31" & not("NaNValue")',
|
|
91
|
+
message: undefined,
|
|
94
92
|
},
|
|
95
93
|
]);
|
|
96
94
|
expect(validationErrorsToMessages(result.value)).toStrictEqual([
|
|
97
|
-
'
|
|
95
|
+
'Expected <Uint16>, got <number> type value `-5`.',
|
|
98
96
|
]);
|
|
99
97
|
}
|
|
100
98
|
});
|