1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.NumberPredicate = void 0;
|
4 | const is_1 = require("@sindresorhus/is");
|
5 | const predicate_1 = require("./predicate");
|
6 | class NumberPredicate extends predicate_1.Predicate {
|
7 | |
8 |
|
9 |
|
10 | constructor(options) {
|
11 | super('number', options);
|
12 | }
|
13 | |
14 |
|
15 |
|
16 |
|
17 |
|
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 |
|
27 |
|
28 |
|
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 |
|
38 |
|
39 |
|
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 |
|
49 |
|
50 |
|
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 |
|
60 |
|
61 |
|
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 |
|
71 |
|
72 |
|
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 |
|
82 |
|
83 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
154 |
|
155 | get uint8() {
|
156 | return this.integer.inRange(0, 255);
|
157 | }
|
158 | |
159 |
|
160 |
|
161 | get uint16() {
|
162 | return this.integer.inRange(0, 65535);
|
163 | }
|
164 | |
165 |
|
166 |
|
167 | get uint32() {
|
168 | return this.integer.inRange(0, 4294967295);
|
169 | }
|
170 | |
171 |
|
172 |
|
173 | get int8() {
|
174 | return this.integer.inRange(-128, 127);
|
175 | }
|
176 | |
177 |
|
178 |
|
179 | get int16() {
|
180 | return this.integer.inRange(-32768, 32767);
|
181 | }
|
182 | |
183 |
|
184 |
|
185 | get int32() {
|
186 | return this.integer.inRange(-2147483648, 2147483647);
|
187 | }
|
188 | }
|
189 | exports.NumberPredicate = NumberPredicate;
|