@atlantjs/arch 13.3.0 → 14.0.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.
- package/@tool-box/utils/datatypes/boolean-utils.d.ts +7 -0
- package/@tool-box/utils/datatypes/boolean-utils.js +146 -4
- package/@tool-box/utils/datatypes/string-utils.d.ts +32 -4
- package/@tool-box/utils/datatypes/string-utils.js +303 -14
- package/@tool-box/utils/ducts/common.d.ts +49 -0
- package/@tool-box/utils/ducts/common.js +36 -3
- package/@tool-box/utils/ducts/optional-type.d.ts +85 -0
- package/@tool-box/utils/ducts/optional-type.js +79 -0
- package/@tool-box/utils/ducts/return-type.d.ts +17 -17
- package/@tool-box/utils/ducts/return-type.js +14 -4
- package/@tool-box/utils/http-provider/http-provider.d.ts +6 -0
- package/@tool-box/utils/http-provider/http-provider.js +43 -14
- package/@tool-box/utils/map/map.abstract.d.ts +39 -0
- package/@tool-box/utils/map/map.abstract.js +70 -6
- package/@tool-box/utils/random/random.d.ts +168 -0
- package/@tool-box/utils/random/random.js +235 -0
- package/@tool-box/utils/type-guard/guardian.d.ts +450 -7
- package/@tool-box/utils/type-guard/guardian.js +539 -35
- package/objects/@common/edges/cron-expression.edge.d.ts +30 -2
- package/objects/@common/edges/cron-expression.edge.js +77 -5
- package/objects/@common/edges/email.edge.d.ts +39 -1
- package/objects/@common/edges/email.edge.js +80 -2
- package/objects/@common/edges/ulid.sketch.edge.d.ts +48 -1
- package/objects/@common/edges/ulid.sketch.edge.js +75 -4
- package/objects/@common/edges/url.edge.d.ts +182 -0
- package/objects/@common/edges/url.edge.js +249 -0
- package/objects/@common/edges/username.edge.d.ts +9 -0
- package/objects/@common/edges/username.edge.js +34 -0
- package/objects/@common/edges/uuid.sketch.edge.d.ts +97 -1
- package/objects/@common/edges/uuid.sketch.edge.js +127 -6
- package/objects/amount/amount-value.edge.d.ts +39 -0
- package/objects/amount/amount-value.edge.js +69 -0
- package/objects/amount/amount.edge.d.ts +378 -2
- package/objects/amount/amount.edge.js +493 -4
- package/objects/datetime/edges/datetime.edge.d.ts +422 -4
- package/objects/datetime/edges/datetime.edge.js +538 -33
- package/objects/password/password.edge.d.ts +90 -0
- package/objects/password/password.edge.js +140 -6
- package/objects/primitives/boolean.edge.sketch.d.ts +105 -3
- package/objects/primitives/boolean.edge.sketch.js +132 -6
- package/objects/primitives/number.edge.sketch.d.ts +236 -0
- package/objects/primitives/number.edge.sketch.js +310 -24
- package/objects/primitives/string.edge.sketch.d.ts +148 -0
- package/objects/primitives/string.edge.sketch.js +191 -7
- package/objects/schedule/schedule.edge.d.ts +194 -0
- package/objects/schedule/schedule.edge.js +269 -2
- package/objects/time/time.edge.d.ts +285 -2
- package/objects/time/time.edge.js +385 -6
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,13 +1,249 @@
|
|
|
1
1
|
export declare abstract class NumberEdgeSketch {
|
|
2
2
|
private value;
|
|
3
3
|
constructor(value: number);
|
|
4
|
+
/**
|
|
5
|
+
* Retorna o valor numérico interno.
|
|
6
|
+
* @returns Número interno do edge
|
|
7
|
+
* @example
|
|
8
|
+
* new MyNumberEdge(42).toNumber() // 42
|
|
9
|
+
*/
|
|
4
10
|
toNumber(): number;
|
|
11
|
+
/**
|
|
12
|
+
* Retorna o valor como string.
|
|
13
|
+
* @returns String representando o número
|
|
14
|
+
* @example
|
|
15
|
+
* new MyNumberEdge(42).toString() // "42"
|
|
16
|
+
*/
|
|
17
|
+
toString(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Retorna o valor absoluto do número.
|
|
20
|
+
* @returns Valor absoluto (sempre positivo)
|
|
21
|
+
* @example
|
|
22
|
+
* new MyNumberEdge(-5).toAbsolute() // 5
|
|
23
|
+
* new MyNumberEdge(5).toAbsolute() // 5
|
|
24
|
+
*/
|
|
25
|
+
toAbsolute(): number;
|
|
26
|
+
/**
|
|
27
|
+
* Retorna o número fixado com casas decimais.
|
|
28
|
+
* @param decimalPlaces - Número de casas decimais (padrão: 2)
|
|
29
|
+
* @returns String com o número formatado
|
|
30
|
+
* @example
|
|
31
|
+
* new MyNumberEdge(3.14159).toFixed(2) // "3.14"
|
|
32
|
+
* new MyNumberEdge(3).toFixed(2) // "3.00"
|
|
33
|
+
*/
|
|
34
|
+
toFixed(decimalPlaces?: number): string;
|
|
35
|
+
/**
|
|
36
|
+
* Verifica se este valor é igual a outro.
|
|
37
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
38
|
+
* @returns true se os valores são iguais, false caso contrário
|
|
39
|
+
* @example
|
|
40
|
+
* new MyNumberEdge(5).isEqual(5) // true
|
|
41
|
+
* new MyNumberEdge(5).isEqual(6) // false
|
|
42
|
+
*/
|
|
5
43
|
isEqual(value: number | NumberEdgeSketch): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Verifica se este valor é diferente de outro.
|
|
46
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
47
|
+
* @returns true se os valores são diferentes, false caso contrário
|
|
48
|
+
* @example
|
|
49
|
+
* new MyNumberEdge(5).isDifferent(6) // true
|
|
50
|
+
* new MyNumberEdge(5).isDifferent(5) // false
|
|
51
|
+
*/
|
|
6
52
|
isDifferent(value: number | NumberEdgeSketch): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Verifica se este valor é maior que outro.
|
|
55
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
56
|
+
* @returns true se this > value, false caso contrário
|
|
57
|
+
* @example
|
|
58
|
+
* new MyNumberEdge(10).isBiggerThan(5) // true
|
|
59
|
+
* new MyNumberEdge(3).isBiggerThan(5) // false
|
|
60
|
+
*/
|
|
7
61
|
isBiggerThan(value: number | NumberEdgeSketch): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Verifica se este valor é menor que outro.
|
|
64
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
65
|
+
* @returns true se this < value, false caso contrário
|
|
66
|
+
* @example
|
|
67
|
+
* new MyNumberEdge(3).isSmallerThan(5) // true
|
|
68
|
+
* new MyNumberEdge(10).isSmallerThan(5) // false
|
|
69
|
+
*/
|
|
8
70
|
isSmallerThan(value: number | NumberEdgeSketch): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Verifica se este valor é maior ou igual a outro.
|
|
73
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
74
|
+
* @returns true se this >= value, false caso contrário
|
|
75
|
+
* @example
|
|
76
|
+
* new MyNumberEdge(5).isEqualOrBiggerThan(5) // true
|
|
77
|
+
* new MyNumberEdge(6).isEqualOrBiggerThan(5) // true
|
|
78
|
+
* new MyNumberEdge(4).isEqualOrBiggerThan(5) // false
|
|
79
|
+
*/
|
|
9
80
|
isEqualOrBiggerThan(value: number | NumberEdgeSketch): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Verifica se este valor é menor ou igual a outro.
|
|
83
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
84
|
+
* @returns true se this <= value, false caso contrário
|
|
85
|
+
* @example
|
|
86
|
+
* new MyNumberEdge(5).isEqualOrSmallerThan(5) // true
|
|
87
|
+
* new MyNumberEdge(4).isEqualOrSmallerThan(5) // true
|
|
88
|
+
* new MyNumberEdge(6).isEqualOrSmallerThan(5) // false
|
|
89
|
+
*/
|
|
10
90
|
isEqualOrSmallerThan(value: number | NumberEdgeSketch): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Verifica se este valor está entre dois limites (inclusivo).
|
|
93
|
+
* @param min - Limite mínimo
|
|
94
|
+
* @param max - Limite máximo
|
|
95
|
+
* @returns true se min <= this <= max, false caso contrário
|
|
96
|
+
* @example
|
|
97
|
+
* new MyNumberEdge(5).isBetween(1, 10) // true
|
|
98
|
+
* new MyNumberEdge(15).isBetween(1, 10) // false
|
|
99
|
+
*/
|
|
11
100
|
isBetween(min: number | NumberEdgeSketch, max: number | NumberEdgeSketch): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Verifica se o número é positivo (maior que zero).
|
|
103
|
+
* @returns true se o número é positivo, false caso contrário
|
|
104
|
+
* @example
|
|
105
|
+
* new MyNumberEdge(5).isPositive() // true
|
|
106
|
+
* new MyNumberEdge(-5).isPositive() // false
|
|
107
|
+
* new MyNumberEdge(0).isPositive() // false
|
|
108
|
+
*/
|
|
109
|
+
isPositive(): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Verifica se o número é negativo (menor que zero).
|
|
112
|
+
* @returns true se o número é negativo, false caso contrário
|
|
113
|
+
* @example
|
|
114
|
+
* new MyNumberEdge(-5).isNegative() // true
|
|
115
|
+
* new MyNumberEdge(5).isNegative() // false
|
|
116
|
+
* new MyNumberEdge(0).isNegative() // false
|
|
117
|
+
*/
|
|
118
|
+
isNegative(): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Verifica se o número é zero.
|
|
121
|
+
* @returns true se o número é zero, false caso contrário
|
|
122
|
+
* @example
|
|
123
|
+
* new MyNumberEdge(0).isZero() // true
|
|
124
|
+
* new MyNumberEdge(1).isZero() // false
|
|
125
|
+
*/
|
|
126
|
+
isZero(): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Verifica se o número é inteiro (sem casas decimais).
|
|
129
|
+
* @returns true se o número é inteiro, false caso contrário
|
|
130
|
+
* @example
|
|
131
|
+
* new MyNumberEdge(5).isInteger() // true
|
|
132
|
+
* new MyNumberEdge(5.5).isInteger() // false
|
|
133
|
+
*/
|
|
134
|
+
isInteger(): boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Verifica se o número é float (possui casas decimais).
|
|
137
|
+
* @returns true se o número é float, false caso contrário
|
|
138
|
+
* @example
|
|
139
|
+
* new MyNumberEdge(5.5).isFloat() // true
|
|
140
|
+
* new MyNumberEdge(5).isFloat() // false
|
|
141
|
+
*/
|
|
142
|
+
isFloat(): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Verifica se o número é par.
|
|
145
|
+
* @returns true se o número é par, false caso contrário
|
|
146
|
+
* @example
|
|
147
|
+
* new MyNumberEdge(4).isEven() // true
|
|
148
|
+
* new MyNumberEdge(5).isEven() // false
|
|
149
|
+
*/
|
|
150
|
+
isEven(): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Verifica se o número é ímpar.
|
|
153
|
+
* @returns true se o número é ímpar, false caso contrário
|
|
154
|
+
* @example
|
|
155
|
+
* new MyNumberEdge(5).isOdd() // true
|
|
156
|
+
* new MyNumberEdge(4).isOdd() // false
|
|
157
|
+
*/
|
|
158
|
+
isOdd(): boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Soma este valor com outro e retorna o resultado.
|
|
161
|
+
* @param value - Número ou NumberEdgeSketch a somar
|
|
162
|
+
* @returns Resultado da soma
|
|
163
|
+
* @example
|
|
164
|
+
* new MyNumberEdge(5).add(3) // 8
|
|
165
|
+
*/
|
|
166
|
+
add(value: number | NumberEdgeSketch): number;
|
|
167
|
+
/**
|
|
168
|
+
* Subtrai outro valor deste e retorna o resultado.
|
|
169
|
+
* @param value - Número ou NumberEdgeSketch a subtrair
|
|
170
|
+
* @returns Resultado da subtração
|
|
171
|
+
* @example
|
|
172
|
+
* new MyNumberEdge(10).subtract(3) // 7
|
|
173
|
+
*/
|
|
174
|
+
subtract(value: number | NumberEdgeSketch): number;
|
|
175
|
+
/**
|
|
176
|
+
* Multiplica este valor por outro e retorna o resultado.
|
|
177
|
+
* @param value - Número ou NumberEdgeSketch a multiplicar
|
|
178
|
+
* @returns Resultado da multiplicação
|
|
179
|
+
* @example
|
|
180
|
+
* new MyNumberEdge(5).multiply(3) // 15
|
|
181
|
+
*/
|
|
182
|
+
multiply(value: number | NumberEdgeSketch): number;
|
|
183
|
+
/**
|
|
184
|
+
* Divide este valor por outro e retorna o resultado.
|
|
185
|
+
* @param value - Número ou NumberEdgeSketch divisor
|
|
186
|
+
* @returns Resultado da divisão
|
|
187
|
+
* @throws {Error} Se o divisor for zero
|
|
188
|
+
* @example
|
|
189
|
+
* new MyNumberEdge(10).divide(2) // 5
|
|
190
|
+
*/
|
|
191
|
+
divide(value: number | NumberEdgeSketch): number;
|
|
192
|
+
/**
|
|
193
|
+
* Retorna o resto da divisão deste valor por outro.
|
|
194
|
+
* @param value - Número ou NumberEdgeSketch divisor
|
|
195
|
+
* @returns Resto da divisão
|
|
196
|
+
* @throws {Error} Se o divisor for zero
|
|
197
|
+
* @example
|
|
198
|
+
* new MyNumberEdge(10).modulo(3) // 1
|
|
199
|
+
*/
|
|
200
|
+
modulo(value: number | NumberEdgeSketch): number;
|
|
201
|
+
/**
|
|
202
|
+
* Eleva este valor à potência de outro.
|
|
203
|
+
* @param exponent - Expoente da potenciação
|
|
204
|
+
* @returns Resultado da potenciação
|
|
205
|
+
* @throws {TypeError} Se o expoente não for finito
|
|
206
|
+
* @example
|
|
207
|
+
* new MyNumberEdge(2).power(8) // 256
|
|
208
|
+
* new MyNumberEdge(5).power(2) // 25
|
|
209
|
+
*/
|
|
210
|
+
power(exponent: number): number;
|
|
211
|
+
/**
|
|
212
|
+
* Retorna a raiz quadrada do número.
|
|
213
|
+
* @returns Raiz quadrada do valor
|
|
214
|
+
* @throws {Error} Se o número for negativo
|
|
215
|
+
* @example
|
|
216
|
+
* new MyNumberEdge(9).sqrt() // 3
|
|
217
|
+
* new MyNumberEdge(16).sqrt() // 4
|
|
218
|
+
*/
|
|
219
|
+
sqrt(): number;
|
|
220
|
+
/**
|
|
221
|
+
* Arredonda o número para o inteiro mais próximo.
|
|
222
|
+
* @returns Número arredondado
|
|
223
|
+
* @example
|
|
224
|
+
* new MyNumberEdge(4.5).round() // 5
|
|
225
|
+
* new MyNumberEdge(4.4).round() // 4
|
|
226
|
+
*/
|
|
227
|
+
round(): number;
|
|
228
|
+
/**
|
|
229
|
+
* Arredonda o número para baixo (floor).
|
|
230
|
+
* @returns Maior inteiro menor ou igual ao número
|
|
231
|
+
* @example
|
|
232
|
+
* new MyNumberEdge(4.9).floor() // 4
|
|
233
|
+
* new MyNumberEdge(-4.1).floor() // -5
|
|
234
|
+
*/
|
|
235
|
+
floor(): number;
|
|
236
|
+
/**
|
|
237
|
+
* Arredonda o número para cima (ceil).
|
|
238
|
+
* @returns Menor inteiro maior ou igual ao número
|
|
239
|
+
* @example
|
|
240
|
+
* new MyNumberEdge(4.1).ceil() // 5
|
|
241
|
+
* new MyNumberEdge(-4.9).ceil() // -4
|
|
242
|
+
*/
|
|
243
|
+
ceil(): number;
|
|
244
|
+
/**
|
|
245
|
+
* Valida se o valor fornecido no construtor é um número válido.
|
|
246
|
+
* @throws {TypeError} Se o valor for NaN
|
|
247
|
+
*/
|
|
12
248
|
private validate;
|
|
13
249
|
}
|
|
@@ -7,50 +7,336 @@ class NumberEdgeSketch {
|
|
|
7
7
|
this.value = value;
|
|
8
8
|
this.validate(value);
|
|
9
9
|
}
|
|
10
|
+
// ==================== Getters ====================
|
|
11
|
+
/**
|
|
12
|
+
* Retorna o valor numérico interno.
|
|
13
|
+
* @returns Número interno do edge
|
|
14
|
+
* @example
|
|
15
|
+
* new MyNumberEdge(42).toNumber() // 42
|
|
16
|
+
*/
|
|
10
17
|
toNumber() {
|
|
11
18
|
return this.value;
|
|
12
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Retorna o valor como string.
|
|
22
|
+
* @returns String representando o número
|
|
23
|
+
* @example
|
|
24
|
+
* new MyNumberEdge(42).toString() // "42"
|
|
25
|
+
*/
|
|
26
|
+
toString() {
|
|
27
|
+
return String(this.value);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Retorna o valor absoluto do número.
|
|
31
|
+
* @returns Valor absoluto (sempre positivo)
|
|
32
|
+
* @example
|
|
33
|
+
* new MyNumberEdge(-5).toAbsolute() // 5
|
|
34
|
+
* new MyNumberEdge(5).toAbsolute() // 5
|
|
35
|
+
*/
|
|
36
|
+
toAbsolute() {
|
|
37
|
+
return Math.abs(this.value);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Retorna o número fixado com casas decimais.
|
|
41
|
+
* @param decimalPlaces - Número de casas decimais (padrão: 2)
|
|
42
|
+
* @returns String com o número formatado
|
|
43
|
+
* @example
|
|
44
|
+
* new MyNumberEdge(3.14159).toFixed(2) // "3.14"
|
|
45
|
+
* new MyNumberEdge(3).toFixed(2) // "3.00"
|
|
46
|
+
*/
|
|
47
|
+
toFixed(decimalPlaces = 2) {
|
|
48
|
+
return this.value.toFixed(decimalPlaces);
|
|
49
|
+
}
|
|
50
|
+
// ==================== Comparações ====================
|
|
51
|
+
/**
|
|
52
|
+
* Verifica se este valor é igual a outro.
|
|
53
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
54
|
+
* @returns true se os valores são iguais, false caso contrário
|
|
55
|
+
* @example
|
|
56
|
+
* new MyNumberEdge(5).isEqual(5) // true
|
|
57
|
+
* new MyNumberEdge(5).isEqual(6) // false
|
|
58
|
+
*/
|
|
13
59
|
isEqual(value) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
return this.value === value;
|
|
60
|
+
const comparand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
61
|
+
return this.value === comparand;
|
|
18
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Verifica se este valor é diferente de outro.
|
|
65
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
66
|
+
* @returns true se os valores são diferentes, false caso contrário
|
|
67
|
+
* @example
|
|
68
|
+
* new MyNumberEdge(5).isDifferent(6) // true
|
|
69
|
+
* new MyNumberEdge(5).isDifferent(5) // false
|
|
70
|
+
*/
|
|
19
71
|
isDifferent(value) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
return this.value !== value;
|
|
72
|
+
const comparand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
73
|
+
return this.value !== comparand;
|
|
24
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Verifica se este valor é maior que outro.
|
|
77
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
78
|
+
* @returns true se this > value, false caso contrário
|
|
79
|
+
* @example
|
|
80
|
+
* new MyNumberEdge(10).isBiggerThan(5) // true
|
|
81
|
+
* new MyNumberEdge(3).isBiggerThan(5) // false
|
|
82
|
+
*/
|
|
25
83
|
isBiggerThan(value) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
return this.value > value;
|
|
84
|
+
const comparand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
85
|
+
return this.value > comparand; // 🐛 fix: estava value.toNumber() > this.value (invertido)
|
|
30
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Verifica se este valor é menor que outro.
|
|
89
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
90
|
+
* @returns true se this < value, false caso contrário
|
|
91
|
+
* @example
|
|
92
|
+
* new MyNumberEdge(3).isSmallerThan(5) // true
|
|
93
|
+
* new MyNumberEdge(10).isSmallerThan(5) // false
|
|
94
|
+
*/
|
|
31
95
|
isSmallerThan(value) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
return this.value < value;
|
|
96
|
+
const comparand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
97
|
+
return this.value < comparand; // 🐛 fix: estava value.toNumber() < this.value (invertido)
|
|
36
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Verifica se este valor é maior ou igual a outro.
|
|
101
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
102
|
+
* @returns true se this >= value, false caso contrário
|
|
103
|
+
* @example
|
|
104
|
+
* new MyNumberEdge(5).isEqualOrBiggerThan(5) // true
|
|
105
|
+
* new MyNumberEdge(6).isEqualOrBiggerThan(5) // true
|
|
106
|
+
* new MyNumberEdge(4).isEqualOrBiggerThan(5) // false
|
|
107
|
+
*/
|
|
37
108
|
isEqualOrBiggerThan(value) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
return this.value >= value;
|
|
109
|
+
const comparand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
110
|
+
return this.value >= comparand; // 🐛 fix: estava value.toNumber() >= this.value (invertido)
|
|
42
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Verifica se este valor é menor ou igual a outro.
|
|
114
|
+
* @param value - Número ou NumberEdgeSketch para comparação
|
|
115
|
+
* @returns true se this <= value, false caso contrário
|
|
116
|
+
* @example
|
|
117
|
+
* new MyNumberEdge(5).isEqualOrSmallerThan(5) // true
|
|
118
|
+
* new MyNumberEdge(4).isEqualOrSmallerThan(5) // true
|
|
119
|
+
* new MyNumberEdge(6).isEqualOrSmallerThan(5) // false
|
|
120
|
+
*/
|
|
43
121
|
isEqualOrSmallerThan(value) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
return this.value <= value;
|
|
122
|
+
const comparand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
123
|
+
return this.value <= comparand; // 🐛 fix: estava value.toNumber() <= this.value (invertido)
|
|
48
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Verifica se este valor está entre dois limites (inclusivo).
|
|
127
|
+
* @param min - Limite mínimo
|
|
128
|
+
* @param max - Limite máximo
|
|
129
|
+
* @returns true se min <= this <= max, false caso contrário
|
|
130
|
+
* @example
|
|
131
|
+
* new MyNumberEdge(5).isBetween(1, 10) // true
|
|
132
|
+
* new MyNumberEdge(15).isBetween(1, 10) // false
|
|
133
|
+
*/
|
|
49
134
|
isBetween(min, max) {
|
|
50
135
|
const minimus = min instanceof NumberEdgeSketch ? min.toNumber() : min;
|
|
51
136
|
const maximus = max instanceof NumberEdgeSketch ? max.toNumber() : max;
|
|
52
137
|
return guardian_1._.isBetween(this.value, minimus, maximus);
|
|
53
138
|
}
|
|
139
|
+
// ==================== Verificações ====================
|
|
140
|
+
/**
|
|
141
|
+
* Verifica se o número é positivo (maior que zero).
|
|
142
|
+
* @returns true se o número é positivo, false caso contrário
|
|
143
|
+
* @example
|
|
144
|
+
* new MyNumberEdge(5).isPositive() // true
|
|
145
|
+
* new MyNumberEdge(-5).isPositive() // false
|
|
146
|
+
* new MyNumberEdge(0).isPositive() // false
|
|
147
|
+
*/
|
|
148
|
+
isPositive() {
|
|
149
|
+
return this.value > 0;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Verifica se o número é negativo (menor que zero).
|
|
153
|
+
* @returns true se o número é negativo, false caso contrário
|
|
154
|
+
* @example
|
|
155
|
+
* new MyNumberEdge(-5).isNegative() // true
|
|
156
|
+
* new MyNumberEdge(5).isNegative() // false
|
|
157
|
+
* new MyNumberEdge(0).isNegative() // false
|
|
158
|
+
*/
|
|
159
|
+
isNegative() {
|
|
160
|
+
return this.value < 0;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Verifica se o número é zero.
|
|
164
|
+
* @returns true se o número é zero, false caso contrário
|
|
165
|
+
* @example
|
|
166
|
+
* new MyNumberEdge(0).isZero() // true
|
|
167
|
+
* new MyNumberEdge(1).isZero() // false
|
|
168
|
+
*/
|
|
169
|
+
isZero() {
|
|
170
|
+
return this.value === 0;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Verifica se o número é inteiro (sem casas decimais).
|
|
174
|
+
* @returns true se o número é inteiro, false caso contrário
|
|
175
|
+
* @example
|
|
176
|
+
* new MyNumberEdge(5).isInteger() // true
|
|
177
|
+
* new MyNumberEdge(5.5).isInteger() // false
|
|
178
|
+
*/
|
|
179
|
+
isInteger() {
|
|
180
|
+
return Number.isInteger(this.value);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Verifica se o número é float (possui casas decimais).
|
|
184
|
+
* @returns true se o número é float, false caso contrário
|
|
185
|
+
* @example
|
|
186
|
+
* new MyNumberEdge(5.5).isFloat() // true
|
|
187
|
+
* new MyNumberEdge(5).isFloat() // false
|
|
188
|
+
*/
|
|
189
|
+
isFloat() {
|
|
190
|
+
return !Number.isInteger(this.value);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Verifica se o número é par.
|
|
194
|
+
* @returns true se o número é par, false caso contrário
|
|
195
|
+
* @example
|
|
196
|
+
* new MyNumberEdge(4).isEven() // true
|
|
197
|
+
* new MyNumberEdge(5).isEven() // false
|
|
198
|
+
*/
|
|
199
|
+
isEven() {
|
|
200
|
+
return this.value % 2 === 0;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Verifica se o número é ímpar.
|
|
204
|
+
* @returns true se o número é ímpar, false caso contrário
|
|
205
|
+
* @example
|
|
206
|
+
* new MyNumberEdge(5).isOdd() // true
|
|
207
|
+
* new MyNumberEdge(4).isOdd() // false
|
|
208
|
+
*/
|
|
209
|
+
isOdd() {
|
|
210
|
+
return this.value % 2 !== 0;
|
|
211
|
+
}
|
|
212
|
+
// ==================== Operações Aritméticas ====================
|
|
213
|
+
/**
|
|
214
|
+
* Soma este valor com outro e retorna o resultado.
|
|
215
|
+
* @param value - Número ou NumberEdgeSketch a somar
|
|
216
|
+
* @returns Resultado da soma
|
|
217
|
+
* @example
|
|
218
|
+
* new MyNumberEdge(5).add(3) // 8
|
|
219
|
+
*/
|
|
220
|
+
add(value) {
|
|
221
|
+
const operand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
222
|
+
return this.value + operand;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Subtrai outro valor deste e retorna o resultado.
|
|
226
|
+
* @param value - Número ou NumberEdgeSketch a subtrair
|
|
227
|
+
* @returns Resultado da subtração
|
|
228
|
+
* @example
|
|
229
|
+
* new MyNumberEdge(10).subtract(3) // 7
|
|
230
|
+
*/
|
|
231
|
+
subtract(value) {
|
|
232
|
+
const operand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
233
|
+
return this.value - operand;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Multiplica este valor por outro e retorna o resultado.
|
|
237
|
+
* @param value - Número ou NumberEdgeSketch a multiplicar
|
|
238
|
+
* @returns Resultado da multiplicação
|
|
239
|
+
* @example
|
|
240
|
+
* new MyNumberEdge(5).multiply(3) // 15
|
|
241
|
+
*/
|
|
242
|
+
multiply(value) {
|
|
243
|
+
const operand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
244
|
+
return this.value * operand;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Divide este valor por outro e retorna o resultado.
|
|
248
|
+
* @param value - Número ou NumberEdgeSketch divisor
|
|
249
|
+
* @returns Resultado da divisão
|
|
250
|
+
* @throws {Error} Se o divisor for zero
|
|
251
|
+
* @example
|
|
252
|
+
* new MyNumberEdge(10).divide(2) // 5
|
|
253
|
+
*/
|
|
254
|
+
divide(value) {
|
|
255
|
+
const operand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
256
|
+
if (operand === 0) {
|
|
257
|
+
throw new Error(`${this.constructor.name}: division by zero is not allowed.`);
|
|
258
|
+
}
|
|
259
|
+
return this.value / operand;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Retorna o resto da divisão deste valor por outro.
|
|
263
|
+
* @param value - Número ou NumberEdgeSketch divisor
|
|
264
|
+
* @returns Resto da divisão
|
|
265
|
+
* @throws {Error} Se o divisor for zero
|
|
266
|
+
* @example
|
|
267
|
+
* new MyNumberEdge(10).modulo(3) // 1
|
|
268
|
+
*/
|
|
269
|
+
modulo(value) {
|
|
270
|
+
const operand = value instanceof NumberEdgeSketch ? value.toNumber() : value;
|
|
271
|
+
if (operand === 0) {
|
|
272
|
+
throw new Error(`${this.constructor.name}: modulo by zero is not allowed.`);
|
|
273
|
+
}
|
|
274
|
+
return this.value % operand;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Eleva este valor à potência de outro.
|
|
278
|
+
* @param exponent - Expoente da potenciação
|
|
279
|
+
* @returns Resultado da potenciação
|
|
280
|
+
* @throws {TypeError} Se o expoente não for finito
|
|
281
|
+
* @example
|
|
282
|
+
* new MyNumberEdge(2).power(8) // 256
|
|
283
|
+
* new MyNumberEdge(5).power(2) // 25
|
|
284
|
+
*/
|
|
285
|
+
power(exponent) {
|
|
286
|
+
if (!Number.isFinite(exponent)) {
|
|
287
|
+
throw new TypeError(`${this.constructor.name}: exponent should be a finite number.`);
|
|
288
|
+
}
|
|
289
|
+
return this.value ** exponent;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Retorna a raiz quadrada do número.
|
|
293
|
+
* @returns Raiz quadrada do valor
|
|
294
|
+
* @throws {Error} Se o número for negativo
|
|
295
|
+
* @example
|
|
296
|
+
* new MyNumberEdge(9).sqrt() // 3
|
|
297
|
+
* new MyNumberEdge(16).sqrt() // 4
|
|
298
|
+
*/
|
|
299
|
+
sqrt() {
|
|
300
|
+
if (this.value < 0) {
|
|
301
|
+
throw new Error(`${this.constructor.name}: cannot calculate sqrt of a negative number.`);
|
|
302
|
+
}
|
|
303
|
+
return Math.sqrt(this.value);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Arredonda o número para o inteiro mais próximo.
|
|
307
|
+
* @returns Número arredondado
|
|
308
|
+
* @example
|
|
309
|
+
* new MyNumberEdge(4.5).round() // 5
|
|
310
|
+
* new MyNumberEdge(4.4).round() // 4
|
|
311
|
+
*/
|
|
312
|
+
round() {
|
|
313
|
+
return Math.round(this.value);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Arredonda o número para baixo (floor).
|
|
317
|
+
* @returns Maior inteiro menor ou igual ao número
|
|
318
|
+
* @example
|
|
319
|
+
* new MyNumberEdge(4.9).floor() // 4
|
|
320
|
+
* new MyNumberEdge(-4.1).floor() // -5
|
|
321
|
+
*/
|
|
322
|
+
floor() {
|
|
323
|
+
return Math.floor(this.value);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Arredonda o número para cima (ceil).
|
|
327
|
+
* @returns Menor inteiro maior ou igual ao número
|
|
328
|
+
* @example
|
|
329
|
+
* new MyNumberEdge(4.1).ceil() // 5
|
|
330
|
+
* new MyNumberEdge(-4.9).ceil() // -4
|
|
331
|
+
*/
|
|
332
|
+
ceil() {
|
|
333
|
+
return Math.ceil(this.value);
|
|
334
|
+
}
|
|
335
|
+
// ==================== Privados ====================
|
|
336
|
+
/**
|
|
337
|
+
* Valida se o valor fornecido no construtor é um número válido.
|
|
338
|
+
* @throws {TypeError} Se o valor for NaN
|
|
339
|
+
*/
|
|
54
340
|
validate(value) {
|
|
55
341
|
if (Number.isNaN(value)) {
|
|
56
342
|
throw new TypeError(`${this.constructor.name} should be valid.`);
|