UNPKG

5.82 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.NumberPredicate = void 0;
4const is_1 = require("@sindresorhus/is");
5const predicate_1 = require("./predicate");
6class NumberPredicate extends predicate_1.Predicate {
7 /**
8 @hidden
9 */
10 constructor(options) {
11 super('number', options);
12 }
13 /**
14 Test a number to be in a specified range.
15
16 @param start - Start of the range.
17 @param end - End of the range.
18 */
19 inRange(start, end) {
20 return this.addValidator({
21 message: (value, label) => `Expected ${label} to be in range [${start}..${end}], got ${value}`,
22 validator: value => is_1.default.inRange(value, [start, end])
23 });
24 }
25 /**
26 Test a number to be greater than the provided value.
27
28 @param number - Minimum value.
29 */
30 greaterThan(number) {
31 return this.addValidator({
32 message: (value, label) => `Expected ${label} to be greater than ${number}, got ${value}`,
33 validator: value => value > number
34 });
35 }
36 /**
37 Test a number to be greater than or equal to the provided value.
38
39 @param number - Minimum value.
40 */
41 greaterThanOrEqual(number) {
42 return this.addValidator({
43 message: (value, label) => `Expected ${label} to be greater than or equal to ${number}, got ${value}`,
44 validator: value => value >= number
45 });
46 }
47 /**
48 Test a number to be less than the provided value.
49
50 @param number - Maximum value.
51 */
52 lessThan(number) {
53 return this.addValidator({
54 message: (value, label) => `Expected ${label} to be less than ${number}, got ${value}`,
55 validator: value => value < number
56 });
57 }
58 /**
59 Test a number to be less than or equal to the provided value.
60
61 @param number - Minimum value.
62 */
63 lessThanOrEqual(number) {
64 return this.addValidator({
65 message: (value, label) => `Expected ${label} to be less than or equal to ${number}, got ${value}`,
66 validator: value => value <= number
67 });
68 }
69 /**
70 Test a number to be equal to a specified number.
71
72 @param expected - Expected value to match.
73 */
74 equal(expected) {
75 return this.addValidator({
76 message: (value, label) => `Expected ${label} to be equal to ${expected}, got ${value}`,
77 validator: value => value === expected
78 });
79 }
80 /**
81 Test if a number is an element of the provided list.
82
83 @param list - List of possible values.
84 */
85 oneOf(list) {
86 return this.addValidator({
87 message: (value, label) => {
88 let printedList = JSON.stringify(list);
89 if (list.length > 10) {
90 const overflow = list.length - 10;
91 printedList = JSON.stringify(list.slice(0, 10)).replace(/]$/, `,…+${overflow} more]`);
92 }
93 return `Expected ${label} to be one of \`${printedList}\`, got ${value}`;
94 },
95 validator: value => list.includes(value)
96 });
97 }
98 /**
99 Test a number to be an integer.
100 */
101 get integer() {
102 return this.addValidator({
103 message: (value, label) => `Expected ${label} to be an integer, got ${value}`,
104 validator: value => is_1.default.integer(value)
105 });
106 }
107 /**
108 Test a number to be finite.
109 */
110 get finite() {
111 return this.addValidator({
112 message: (value, label) => `Expected ${label} to be finite, got ${value}`,
113 validator: value => !is_1.default.infinite(value)
114 });
115 }
116 /**
117 Test a number to be infinite.
118 */
119 get infinite() {
120 return this.addValidator({
121 message: (value, label) => `Expected ${label} to be infinite, got ${value}`,
122 validator: value => is_1.default.infinite(value)
123 });
124 }
125 /**
126 Test a number to be positive.
127 */
128 get positive() {
129 return this.addValidator({
130 message: (value, label) => `Expected ${label} to be positive, got ${value}`,
131 validator: value => value > 0
132 });
133 }
134 /**
135 Test a number to be negative.
136 */
137 get negative() {
138 return this.addValidator({
139 message: (value, label) => `Expected ${label} to be negative, got ${value}`,
140 validator: value => value < 0
141 });
142 }
143 /**
144 Test a number to be an integer or infinite.
145 */
146 get integerOrInfinite() {
147 return this.addValidator({
148 message: (value, label) => `Expected ${label} to be an integer or infinite, got ${value}`,
149 validator: value => is_1.default.integer(value) || is_1.default.infinite(value)
150 });
151 }
152 /**
153 Test a number to be in a valid range for a 8-bit unsigned integer.
154 */
155 get uint8() {
156 return this.integer.inRange(0, 255);
157 }
158 /**
159 Test a number to be in a valid range for a 16-bit unsigned integer.
160 */
161 get uint16() {
162 return this.integer.inRange(0, 65535);
163 }
164 /**
165 Test a number to be in a valid range for a 32-bit unsigned integer.
166 */
167 get uint32() {
168 return this.integer.inRange(0, 4294967295);
169 }
170 /**
171 Test a number to be in a valid range for a 8-bit signed integer.
172 */
173 get int8() {
174 return this.integer.inRange(-128, 127);
175 }
176 /**
177 Test a number to be in a valid range for a 16-bit signed integer.
178 */
179 get int16() {
180 return this.integer.inRange(-32768, 32767);
181 }
182 /**
183 Test a number to be in a valid range for a 32-bit signed integer.
184 */
185 get int32() {
186 return this.integer.inRange(-2147483648, 2147483647);
187 }
188}
189exports.NumberPredicate = NumberPredicate;