@ix-xs/node-comfort 1.2.0 → 2.1.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/CHANGELOG.md +340 -0
- package/README.md +137 -548
- package/index.js +80 -35
- package/package.json +161 -33
- package/src/Arr.js +1050 -418
- package/src/Async.js +817 -0
- package/src/Cache.js +433 -0
- package/src/Checker.js +1202 -539
- package/src/Cli.js +1293 -0
- package/src/Color.js +556 -0
- package/src/Crypto.js +1082 -0
- package/src/Emitter.js +356 -0
- package/src/Env.js +689 -0
- package/src/FS.js +1626 -894
- package/src/Func.js +823 -356
- package/src/Http.js +700 -0
- package/src/Id.js +568 -200
- package/src/Logger.js +963 -378
- package/src/Num.js +965 -360
- package/src/Obj.js +1077 -379
- package/src/SQLite.js +1629 -1005
- package/src/Schema.js +2101 -0
- package/src/Str.js +1209 -432
- package/src/Sys.js +654 -0
- package/src/Time.js +1533 -440
- package/src/Utils.js +342 -325
- package/src/errors.js +335 -0
- package/src/internal/shared.js +415 -0
- package/types/index.d.ts +735 -526
- package/types/src/Arr.d.ts +533 -145
- package/types/src/Arr.d.ts.map +1 -1
- package/types/src/Async.d.ts +372 -0
- package/types/src/Async.d.ts.map +1 -0
- package/types/src/Cache.d.ts +221 -0
- package/types/src/Cache.d.ts.map +1 -0
- package/types/src/Checker.d.ts +651 -232
- package/types/src/Checker.d.ts.map +1 -1
- package/types/src/Cli.d.ts +664 -0
- package/types/src/Cli.d.ts.map +1 -0
- package/types/src/Color.d.ts +300 -0
- package/types/src/Color.d.ts.map +1 -0
- package/types/src/Crypto.d.ts +620 -0
- package/types/src/Crypto.d.ts.map +1 -0
- package/types/src/Emitter.d.ts +189 -0
- package/types/src/Emitter.d.ts.map +1 -0
- package/types/src/Env.d.ts +412 -0
- package/types/src/Env.d.ts.map +1 -0
- package/types/src/FS.d.ts +717 -238
- package/types/src/FS.d.ts.map +1 -1
- package/types/src/Func.d.ts +508 -135
- package/types/src/Func.d.ts.map +1 -1
- package/types/src/Http.d.ts +444 -0
- package/types/src/Http.d.ts.map +1 -0
- package/types/src/Id.d.ts +199 -66
- package/types/src/Id.d.ts.map +1 -1
- package/types/src/Logger.d.ts +414 -46
- package/types/src/Logger.d.ts.map +1 -1
- package/types/src/Num.d.ts +514 -137
- package/types/src/Num.d.ts.map +1 -1
- package/types/src/Obj.d.ts +453 -104
- package/types/src/Obj.d.ts.map +1 -1
- package/types/src/SQLite.d.ts +754 -308
- package/types/src/SQLite.d.ts.map +1 -1
- package/types/src/Schema.d.ts +1189 -0
- package/types/src/Schema.d.ts.map +1 -0
- package/types/src/Str.d.ts +617 -166
- package/types/src/Str.d.ts.map +1 -1
- package/types/src/Sys.d.ts +314 -0
- package/types/src/Sys.d.ts.map +1 -0
- package/types/src/Time.d.ts +759 -204
- package/types/src/Time.d.ts.map +1 -1
- package/types/src/Utils.d.ts +158 -102
- package/types/src/Utils.d.ts.map +1 -1
- package/types/src/errors.d.ts +316 -0
- package/types/src/errors.d.ts.map +1 -0
- package/types/src/internal/shared.d.ts +123 -0
- package/types/src/internal/shared.d.ts.map +1 -0
- package/types/index.d.ts.map +0 -1
package/types/src/Num.d.ts
CHANGED
|
@@ -1,242 +1,619 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Options for `formatBytes()`.
|
|
3
|
+
*/
|
|
4
|
+
export type FormatBytesOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Maximum decimals. Defaults to `1`.
|
|
7
|
+
*/
|
|
8
|
+
decimals?: number | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* 1 KB is 1024 bytes when `true`, 1000 when `false`. Defaults to `true`.
|
|
11
|
+
*/
|
|
12
|
+
binary?: boolean | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Use `KiB`, `MiB`, `GiB` labels.
|
|
15
|
+
*/
|
|
16
|
+
iec?: boolean | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Formats the number for a language, like `"fr"` for `"1,5 KB"`.
|
|
19
|
+
*/
|
|
20
|
+
locale?: string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Your own labels from bytes up, like `["o", "Ko", "Mo", "Go", "To"]`.
|
|
23
|
+
*/
|
|
24
|
+
units?: string[] | undefined;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Options for `parseBytes()`.
|
|
28
|
+
*/
|
|
29
|
+
export type ParseBytesOptions = {
|
|
30
|
+
/**
|
|
31
|
+
* 1 KB is 1024 bytes when `true`, 1000 when `false`. `KiB` units are always 1024. Defaults to `true`.
|
|
32
|
+
*/
|
|
33
|
+
binary?: boolean | undefined;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Options for `format()`.
|
|
37
|
+
*/
|
|
38
|
+
export type FormatNumberOptions = {
|
|
39
|
+
/**
|
|
40
|
+
* Language, like `"fr"` or `"en-US"`. Defaults to the one set with `setLocale()`, or `"en"`.
|
|
41
|
+
*/
|
|
42
|
+
locale?: string | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Exact number of decimals.
|
|
45
|
+
*/
|
|
46
|
+
decimals?: number | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Minimum decimals.
|
|
49
|
+
*/
|
|
50
|
+
minDecimals?: number | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Maximum decimals. Defaults to `3`.
|
|
53
|
+
*/
|
|
54
|
+
maxDecimals?: number | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Short notation like `1.2K` or `3.4M`.
|
|
57
|
+
*/
|
|
58
|
+
compact?: boolean | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* `"percent"` multiplies by 100 and adds `%`.
|
|
61
|
+
*/
|
|
62
|
+
style?: "percent" | "decimal" | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Any `Intl` unit: `"kilometer"`, `"celsius"`, `"megabyte"`...
|
|
65
|
+
*/
|
|
66
|
+
unit?: string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* How the unit is written. Defaults to `"short"`.
|
|
69
|
+
*/
|
|
70
|
+
unitDisplay?: "long" | "short" | "narrow" | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* When to show the sign. `"exceptZero"` gives `+5`.
|
|
73
|
+
*/
|
|
74
|
+
signDisplay?: "auto" | "always" | "never" | "exceptZero" | undefined;
|
|
75
|
+
/**
|
|
76
|
+
* Thousands separators. Defaults to `true`.
|
|
77
|
+
*/
|
|
78
|
+
grouping?: boolean | undefined;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Options for `currency()`.
|
|
82
|
+
*/
|
|
83
|
+
export type CurrencyOptions = {
|
|
84
|
+
/**
|
|
85
|
+
* Language. Defaults to the one set with `setLocale()`, or `"en"`.
|
|
86
|
+
*/
|
|
87
|
+
locale?: string | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Defaults to the currency's usual decimals (2 for EUR, 0 for JPY).
|
|
90
|
+
*/
|
|
91
|
+
decimals?: number | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* `€`, `€`, `EUR` or `euros`. Defaults to `"symbol"`.
|
|
94
|
+
*/
|
|
95
|
+
display?: "symbol" | "name" | "code" | "narrowSymbol" | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Show negative amounts in parentheses, like `($5.00)`.
|
|
98
|
+
*/
|
|
99
|
+
accounting?: boolean | undefined;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Options for `ordinal()`.
|
|
103
|
+
*/
|
|
104
|
+
export type OrdinalOptions = {
|
|
105
|
+
/**
|
|
106
|
+
* Built in: `en`, `fr`, `es`, `it`, `pt`, `de`, `nl`. Defaults to the one set with `setLocale()`, or `"en"`.
|
|
107
|
+
*/
|
|
108
|
+
locale?: string | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* Your own suffixes, for other languages.
|
|
111
|
+
*/
|
|
112
|
+
suffixes?: Partial<Record<Intl.LDMLPluralRule, string>> | undefined;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Options for `variance()` and `stdDev()`.
|
|
116
|
+
*/
|
|
117
|
+
export type VarianceOptions = {
|
|
118
|
+
/**
|
|
119
|
+
* Sample statistic (divides by n - 1) instead of population.
|
|
120
|
+
*/
|
|
121
|
+
sample?: boolean | undefined;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Sets the default language of `format`, `currency`, `ordinal` and
|
|
125
|
+
* `formatBytes`.
|
|
3
126
|
*
|
|
4
127
|
* @example
|
|
5
|
-
*
|
|
6
|
-
*
|
|
128
|
+
* num.setLocale("fr");
|
|
129
|
+
* num.currency(1234.5, "EUR"); // "1 234,50 €"
|
|
7
130
|
*
|
|
8
|
-
* @param {
|
|
9
|
-
* @
|
|
10
|
-
|
|
11
|
-
|
|
131
|
+
* @param {string} locale Like `"fr"`, `"en-GB"` or `"pt-BR"`.
|
|
132
|
+
* @returns {typeof import("./Num")} The module, so calls chain.
|
|
133
|
+
*/
|
|
134
|
+
export function setLocale(locale: string): typeof import("./Num");
|
|
135
|
+
/**
|
|
136
|
+
* The current default language.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* num.getLocale(); // "en"
|
|
140
|
+
*
|
|
141
|
+
* @returns {string}
|
|
142
|
+
*/
|
|
143
|
+
export function getLocale(): string;
|
|
144
|
+
/**
|
|
145
|
+
* Keeps a number between `min` and `max`.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* num.clamp(150, 0, 100); // 100
|
|
149
|
+
* num.clamp(-5, 0, 100); // 0
|
|
150
|
+
*
|
|
151
|
+
* @param {number} value
|
|
152
|
+
* @param {number} min
|
|
153
|
+
* @param {number} max
|
|
154
|
+
* @returns {number}
|
|
12
155
|
*/
|
|
13
156
|
export function clamp(value: number, min: number, max: number): number;
|
|
14
157
|
/**
|
|
15
|
-
*
|
|
158
|
+
* Is the number between `min` and `max`, both included?
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* num.inRange(10, 0, 10); // true
|
|
16
162
|
*
|
|
17
|
-
* @param {number} value
|
|
18
|
-
* @param {number} min
|
|
19
|
-
* @param {number} max
|
|
20
|
-
* @returns {boolean}
|
|
163
|
+
* @param {number} value
|
|
164
|
+
* @param {number} min
|
|
165
|
+
* @param {number} max
|
|
166
|
+
* @returns {boolean}
|
|
21
167
|
*/
|
|
22
168
|
export function inRange(value: number, min: number, max: number): boolean;
|
|
23
169
|
/**
|
|
24
|
-
*
|
|
170
|
+
* Wraps a number around a range, like an angle or a carousel index.
|
|
171
|
+
* `max` is excluded.
|
|
25
172
|
*
|
|
26
173
|
* @example
|
|
27
|
-
*
|
|
174
|
+
* num.wrap(370, 0, 360); // 10
|
|
175
|
+
* num.wrap(-1, 0, 5); // 4
|
|
28
176
|
*
|
|
29
|
-
* @param {number} value
|
|
30
|
-
* @param {number}
|
|
31
|
-
* @
|
|
177
|
+
* @param {number} value
|
|
178
|
+
* @param {number} min
|
|
179
|
+
* @param {number} max
|
|
180
|
+
* @returns {number}
|
|
181
|
+
*/
|
|
182
|
+
export function wrap(value: number, min: number, max: number): number;
|
|
183
|
+
/**
|
|
184
|
+
* Rounds to `decimals` places without floating-point surprises:
|
|
185
|
+
* `Math.round(1.005 * 100) / 100` gives `1`, this gives `1.01`. Halves round
|
|
186
|
+
* away from zero, like in a spreadsheet.
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* num.round(1.005, 2); // 1.01
|
|
190
|
+
* num.round(1234, -2); // 1200
|
|
191
|
+
* num.round(-2.5); // -3
|
|
192
|
+
*
|
|
193
|
+
* @param {number} value
|
|
194
|
+
* @param {number} [decimals=0] Negative values round to tens, hundreds...
|
|
195
|
+
* @returns {number}
|
|
32
196
|
*/
|
|
33
197
|
export function round(value: number, decimals?: number): number;
|
|
34
198
|
/**
|
|
35
|
-
* Rounds
|
|
199
|
+
* Rounds down to `decimals` places.
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* num.floor(1.789, 2); // 1.78
|
|
36
203
|
*
|
|
37
|
-
* @param {number} value
|
|
38
|
-
* @param {number} [decimals=0]
|
|
39
|
-
* @returns {number}
|
|
204
|
+
* @param {number} value
|
|
205
|
+
* @param {number} [decimals=0]
|
|
206
|
+
* @returns {number}
|
|
40
207
|
*/
|
|
41
208
|
export function floor(value: number, decimals?: number): number;
|
|
42
209
|
/**
|
|
43
|
-
* Rounds
|
|
210
|
+
* Rounds up to `decimals` places.
|
|
44
211
|
*
|
|
45
|
-
* @
|
|
46
|
-
*
|
|
47
|
-
*
|
|
212
|
+
* @example
|
|
213
|
+
* num.ceil(1.231, 2); // 1.24
|
|
214
|
+
*
|
|
215
|
+
* @param {number} value
|
|
216
|
+
* @param {number} [decimals=0]
|
|
217
|
+
* @returns {number}
|
|
48
218
|
*/
|
|
49
219
|
export function ceil(value: number, decimals?: number): number;
|
|
50
220
|
/**
|
|
51
|
-
*
|
|
221
|
+
* Rounds to the nearest multiple of `step`.
|
|
52
222
|
*
|
|
53
223
|
* @example
|
|
54
|
-
*
|
|
224
|
+
* num.snap(17, 5); // 15
|
|
225
|
+
* num.snap(0.37, 0.25); // 0.25
|
|
55
226
|
*
|
|
56
|
-
* @param {number}
|
|
57
|
-
* @param {number}
|
|
58
|
-
* @
|
|
59
|
-
* @returns {number} The interpolated value.
|
|
227
|
+
* @param {number} value
|
|
228
|
+
* @param {number} step
|
|
229
|
+
* @returns {number}
|
|
60
230
|
*/
|
|
61
|
-
export function
|
|
231
|
+
export function snap(value: number, step: number): number;
|
|
232
|
+
/**
|
|
233
|
+
* Are two numbers equal within a small tolerance? The right way to compare
|
|
234
|
+
* float results, since `0.1 + 0.2 === 0.3` is `false`.
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* num.approxEqual(0.1 + 0.2, 0.3); // true
|
|
238
|
+
*
|
|
239
|
+
* @param {number} a
|
|
240
|
+
* @param {number} b
|
|
241
|
+
* @param {number} [epsilon=Number.EPSILON * 16] Allowed difference, relative to the size of the numbers.
|
|
242
|
+
* @returns {boolean}
|
|
243
|
+
*/
|
|
244
|
+
export function approxEqual(a: number, b: number, epsilon?: number): boolean;
|
|
62
245
|
/**
|
|
63
|
-
*
|
|
246
|
+
* The value at ratio `t` between `start` and `end`.
|
|
64
247
|
*
|
|
65
248
|
* @example
|
|
66
|
-
*
|
|
249
|
+
* num.lerp(0, 100, 0.25); // 25
|
|
67
250
|
*
|
|
68
|
-
* @param {number}
|
|
69
|
-
* @param {number}
|
|
70
|
-
* @param {number}
|
|
71
|
-
* @
|
|
72
|
-
|
|
73
|
-
|
|
251
|
+
* @param {number} start
|
|
252
|
+
* @param {number} end
|
|
253
|
+
* @param {number} t Usually between 0 and 1.
|
|
254
|
+
* @returns {number}
|
|
255
|
+
*/
|
|
256
|
+
export function lerp(start: number, end: number, t: number): number;
|
|
257
|
+
/**
|
|
258
|
+
* Moves a number from one range to another, keeping its relative position.
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* num.mapRange(5, 0, 10, 0, 100); // 50
|
|
262
|
+
* num.mapRange(75, 0, 100, 1, 0); // 0.25
|
|
263
|
+
*
|
|
264
|
+
* @param {number} value
|
|
265
|
+
* @param {number} inMin
|
|
266
|
+
* @param {number} inMax
|
|
267
|
+
* @param {number} outMin
|
|
268
|
+
* @param {number} outMax
|
|
269
|
+
* @returns {number}
|
|
74
270
|
*/
|
|
75
271
|
export function mapRange(value: number, inMin: number, inMax: number, outMin: number, outMax: number): number;
|
|
76
272
|
/**
|
|
77
|
-
*
|
|
273
|
+
* A random float from `min` (included) to `max` (excluded). Not for
|
|
274
|
+
* security: it uses `Math.random`.
|
|
78
275
|
*
|
|
79
|
-
*
|
|
276
|
+
* @example
|
|
277
|
+
* num.random(10, 20); // 13.84...
|
|
80
278
|
*
|
|
81
|
-
* @param {number} [min=0]
|
|
82
|
-
* @param {number} [max=1]
|
|
83
|
-
* @returns {number}
|
|
279
|
+
* @param {number} [min=0]
|
|
280
|
+
* @param {number} [max=1]
|
|
281
|
+
* @returns {number}
|
|
84
282
|
*/
|
|
85
283
|
export function random(min?: number, max?: number): number;
|
|
86
284
|
/**
|
|
87
|
-
*
|
|
285
|
+
* A random integer from `min` to `max`, both included. Not for security.
|
|
88
286
|
*
|
|
89
287
|
* @example
|
|
90
|
-
*
|
|
288
|
+
* num.randomInt(1, 6); // a dice roll
|
|
91
289
|
*
|
|
92
|
-
* @param {number} min
|
|
93
|
-
* @param {number} max
|
|
94
|
-
* @returns {number}
|
|
290
|
+
* @param {number} min
|
|
291
|
+
* @param {number} max
|
|
292
|
+
* @returns {number}
|
|
95
293
|
*/
|
|
96
294
|
export function randomInt(min: number, max: number): number;
|
|
97
295
|
/**
|
|
98
|
-
*
|
|
296
|
+
* Adds up numbers, without the drift of a naive loop.
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* num.sum([1, 2, 3]); // 6
|
|
300
|
+
* num.sum([0.1, 0.2, 0.3]); // 0.6, where a plain loop gives 0.6000000000000001
|
|
99
301
|
*
|
|
100
|
-
* @param {number
|
|
101
|
-
* @returns {number}
|
|
302
|
+
* @param {Iterable<number>} values
|
|
303
|
+
* @returns {number}
|
|
102
304
|
*/
|
|
103
|
-
export function sum(values: number
|
|
305
|
+
export function sum(values: Iterable<number>): number;
|
|
104
306
|
/**
|
|
105
|
-
*
|
|
307
|
+
* Multiplies numbers. An empty list gives `1`.
|
|
106
308
|
*
|
|
107
|
-
* @
|
|
108
|
-
*
|
|
309
|
+
* @example
|
|
310
|
+
* num.product([2, 3, 4]); // 24
|
|
311
|
+
*
|
|
312
|
+
* @param {Iterable<number>} values
|
|
313
|
+
* @returns {number}
|
|
109
314
|
*/
|
|
110
|
-
export function
|
|
315
|
+
export function product(values: Iterable<number>): number;
|
|
111
316
|
/**
|
|
112
|
-
*
|
|
317
|
+
* The mean, or `0` for an empty list.
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* num.average([2, 4, 9]); // 5
|
|
113
321
|
*
|
|
114
|
-
* @param {number
|
|
115
|
-
* @returns {number}
|
|
322
|
+
* @param {Iterable<number>} values
|
|
323
|
+
* @returns {number}
|
|
116
324
|
*/
|
|
117
|
-
export function
|
|
325
|
+
export function average(values: Iterable<number>): number;
|
|
118
326
|
/**
|
|
119
|
-
*
|
|
327
|
+
* The middle value once sorted, or `0` for an empty list.
|
|
120
328
|
*
|
|
121
|
-
* @
|
|
122
|
-
*
|
|
329
|
+
* @example
|
|
330
|
+
* num.median([3, 1, 2]); // 2
|
|
331
|
+
* num.median([1, 2, 3, 4]); // 2.5
|
|
332
|
+
*
|
|
333
|
+
* @param {Iterable<number>} values
|
|
334
|
+
* @returns {number}
|
|
123
335
|
*/
|
|
124
|
-
export function
|
|
336
|
+
export function median(values: Iterable<number>): number;
|
|
125
337
|
/**
|
|
126
|
-
*
|
|
338
|
+
* The most frequent values.
|
|
339
|
+
*
|
|
340
|
+
* @example
|
|
341
|
+
* num.mode([1, 1, 2, 2, 3]); // [1, 2]
|
|
127
342
|
*
|
|
128
|
-
* @param {number
|
|
129
|
-
* @returns {number
|
|
343
|
+
* @param {Iterable<number>} values
|
|
344
|
+
* @returns {number[]}
|
|
130
345
|
*/
|
|
131
|
-
export function
|
|
346
|
+
export function mode(values: Iterable<number>): number[];
|
|
132
347
|
/**
|
|
133
|
-
*
|
|
348
|
+
* The variance: the average squared distance from the mean.
|
|
134
349
|
*
|
|
135
350
|
* @example
|
|
136
|
-
*
|
|
351
|
+
* num.variance([2, 4, 4, 4, 5, 5, 7, 9]); // 4
|
|
137
352
|
*
|
|
138
|
-
* @param {number}
|
|
139
|
-
* @param {
|
|
140
|
-
* @
|
|
141
|
-
* @returns {number} The percentage.
|
|
353
|
+
* @param {Iterable<number>} values
|
|
354
|
+
* @param {VarianceOptions} [options]
|
|
355
|
+
* @returns {number}
|
|
142
356
|
*/
|
|
143
|
-
export function
|
|
357
|
+
export function variance(values: Iterable<number>, options?: VarianceOptions): number;
|
|
144
358
|
/**
|
|
145
|
-
*
|
|
359
|
+
* The standard deviation.
|
|
146
360
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
361
|
+
* @example
|
|
362
|
+
* num.stdDev([2, 4, 4, 4, 5, 5, 7, 9]); // 2
|
|
363
|
+
*
|
|
364
|
+
* @param {Iterable<number>} values
|
|
365
|
+
* @param {VarianceOptions} [options]
|
|
366
|
+
* @returns {number}
|
|
367
|
+
*/
|
|
368
|
+
export function stdDev(values: Iterable<number>, options?: VarianceOptions): number;
|
|
369
|
+
/**
|
|
370
|
+
* The value under which `p` percent of the values fall, interpolated like
|
|
371
|
+
* Excel's `PERCENTILE.INC`.
|
|
150
372
|
*
|
|
151
373
|
* @example
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
* nodeComfort.num.formatBytes(1000, { binary: false }); // "1 KB"
|
|
155
|
-
* nodeComfort.num.formatBytes(1024, { iec: true }); // "1 KiB"
|
|
374
|
+
* num.percentile([1, 2, 3, 4, 5], 90); // 4.6
|
|
375
|
+
* num.percentile(responseTimes, 95); // p95 latency
|
|
156
376
|
*
|
|
157
|
-
* @param {number}
|
|
158
|
-
* @param {
|
|
159
|
-
* @returns {
|
|
377
|
+
* @param {Iterable<number>} values
|
|
378
|
+
* @param {number} p From 0 to 100.
|
|
379
|
+
* @returns {number} `NaN` for an empty list.
|
|
160
380
|
*/
|
|
161
|
-
export function
|
|
162
|
-
decimals?: number;
|
|
163
|
-
binary?: boolean;
|
|
164
|
-
iec?: boolean;
|
|
165
|
-
}): string;
|
|
381
|
+
export function percentile(values: Iterable<number>, p: number): number;
|
|
166
382
|
/**
|
|
167
|
-
*
|
|
383
|
+
* The smallest number. Unlike `Math.min(...array)`, huge arrays are fine.
|
|
384
|
+
* Like `Math.min`, a `NaN` in the list gives `NaN`.
|
|
385
|
+
*
|
|
386
|
+
* @param {Iterable<number>} values
|
|
387
|
+
* @returns {number | undefined} `undefined` for an empty list.
|
|
388
|
+
*/
|
|
389
|
+
export function min(values: Iterable<number>): number | undefined;
|
|
390
|
+
/**
|
|
391
|
+
* The largest number. Unlike `Math.max(...array)`, huge arrays are fine.
|
|
392
|
+
* Like `Math.max`, a `NaN` in the list gives `NaN`.
|
|
393
|
+
*
|
|
394
|
+
* @param {Iterable<number>} values
|
|
395
|
+
* @returns {number | undefined} `undefined` for an empty list.
|
|
396
|
+
*/
|
|
397
|
+
export function max(values: Iterable<number>): number | undefined;
|
|
398
|
+
/**
|
|
399
|
+
* What percentage `value` is of `total`. Returns `0` when `total` is `0`.
|
|
168
400
|
*
|
|
169
401
|
* @example
|
|
170
|
-
*
|
|
171
|
-
*
|
|
402
|
+
* num.percent(25, 200); // 12.5
|
|
403
|
+
* num.percent(1, 3, 1); // 33.3
|
|
172
404
|
*
|
|
173
|
-
* @param {number} value
|
|
174
|
-
* @param {number}
|
|
175
|
-
* @
|
|
405
|
+
* @param {number} value
|
|
406
|
+
* @param {number} total
|
|
407
|
+
* @param {number} [decimals=2]
|
|
408
|
+
* @returns {number}
|
|
176
409
|
*/
|
|
177
|
-
export function
|
|
410
|
+
export function percent(value: number, total: number, decimals?: number): number;
|
|
411
|
+
/**
|
|
412
|
+
* How much a value changed, in percent. Going from `0` to anything else is
|
|
413
|
+
* an infinite change.
|
|
414
|
+
*
|
|
415
|
+
* @example
|
|
416
|
+
* num.percentChange(80, 100); // 25
|
|
417
|
+
* num.percentChange(100, 80); // -20
|
|
418
|
+
*
|
|
419
|
+
* @param {number} from
|
|
420
|
+
* @param {number} to
|
|
421
|
+
* @param {number} [decimals=2]
|
|
422
|
+
* @returns {number}
|
|
423
|
+
*/
|
|
424
|
+
export function percentChange(from: number, to: number, decimals?: number): number;
|
|
178
425
|
/**
|
|
179
|
-
*
|
|
426
|
+
* Greatest common divisor.
|
|
180
427
|
*
|
|
181
428
|
* @example
|
|
182
|
-
*
|
|
183
|
-
* nodeComfort.num.thousands(1234.5, " "); // "1 234.5"
|
|
429
|
+
* num.gcd(12, 18, 27); // 3
|
|
184
430
|
*
|
|
185
|
-
* @param {number}
|
|
186
|
-
* @
|
|
187
|
-
* @returns {string} The formatted number.
|
|
431
|
+
* @param {...number} values
|
|
432
|
+
* @returns {number}
|
|
188
433
|
*/
|
|
189
|
-
export function
|
|
434
|
+
export function gcd(...values: number[]): number;
|
|
190
435
|
/**
|
|
191
|
-
*
|
|
436
|
+
* Least common multiple.
|
|
192
437
|
*
|
|
193
438
|
* @example
|
|
194
|
-
*
|
|
195
|
-
* nodeComfort.num.ordinal(22); // "22nd"
|
|
439
|
+
* num.lcm(2, 3, 4); // 12
|
|
196
440
|
*
|
|
197
|
-
* @param {number}
|
|
198
|
-
* @returns {
|
|
441
|
+
* @param {...number} values
|
|
442
|
+
* @returns {number}
|
|
199
443
|
*/
|
|
200
|
-
export function
|
|
444
|
+
export function lcm(...values: number[]): number;
|
|
201
445
|
/**
|
|
202
|
-
*
|
|
446
|
+
* Is it a prime number?
|
|
203
447
|
*
|
|
204
448
|
* @example
|
|
205
|
-
*
|
|
206
|
-
*
|
|
449
|
+
* num.isPrime(7); // true
|
|
450
|
+
* num.isPrime(1); // false
|
|
207
451
|
*
|
|
208
|
-
* @param {
|
|
209
|
-
* @
|
|
210
|
-
* @returns {number} The parsed number or the fallback.
|
|
452
|
+
* @param {number} value
|
|
453
|
+
* @returns {boolean}
|
|
211
454
|
*/
|
|
212
|
-
export function
|
|
455
|
+
export function isPrime(value: number): boolean;
|
|
213
456
|
/**
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
457
|
+
* `n!`. Pass `true` to get an exact bigint, since numbers lose precision
|
|
458
|
+
* past 18!.
|
|
459
|
+
*
|
|
460
|
+
* @example
|
|
461
|
+
* num.factorial(5); // 120
|
|
462
|
+
* num.factorial(25, true); // 15511210043330985984000000n
|
|
463
|
+
*
|
|
464
|
+
* @param {number} n
|
|
465
|
+
* @param {boolean} [asBigInt=false]
|
|
466
|
+
* @returns {number | bigint}
|
|
467
|
+
* @throws {RangeError} If `n` is negative or not an integer.
|
|
468
|
+
*/
|
|
469
|
+
export function factorial(n: number, asBigInt?: boolean): number | bigint;
|
|
470
|
+
/**
|
|
471
|
+
* Is it even?
|
|
472
|
+
*
|
|
473
|
+
* @param {number} value
|
|
474
|
+
* @returns {boolean}
|
|
217
475
|
*/
|
|
218
476
|
export function isEven(value: number): boolean;
|
|
219
477
|
/**
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* @
|
|
478
|
+
* Is it odd? Negative numbers work too.
|
|
479
|
+
*
|
|
480
|
+
* @param {number} value
|
|
481
|
+
* @returns {boolean}
|
|
223
482
|
*/
|
|
224
483
|
export function isOdd(value: number): boolean;
|
|
225
484
|
/**
|
|
226
|
-
*
|
|
485
|
+
* Numbers from `start` up to `end` (excluded). With one argument, counts
|
|
486
|
+
* from 0. Goes down when `end` is smaller.
|
|
227
487
|
*
|
|
228
|
-
*
|
|
488
|
+
* @example
|
|
489
|
+
* num.range(4); // [0, 1, 2, 3]
|
|
490
|
+
* num.range(0, 10, 2); // [0, 2, 4, 6, 8]
|
|
491
|
+
* num.range(5, 0); // [5, 4, 3, 2, 1]
|
|
492
|
+
*
|
|
493
|
+
* @param {number} start
|
|
494
|
+
* @param {number} [end]
|
|
495
|
+
* @param {number} [step] Defaults to `1`, or `-1` when counting down.
|
|
496
|
+
* @returns {number[]}
|
|
497
|
+
*/
|
|
498
|
+
export function range(start: number, end?: number, step?: number): number[];
|
|
499
|
+
/**
|
|
500
|
+
* Reads a number from anything, ignoring trailing text like units.
|
|
229
501
|
*
|
|
230
502
|
* @example
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
* nodeComfort.num.range(5, 0); // [5, 4, 3, 2, 1]
|
|
503
|
+
* num.parse("42px"); // 42
|
|
504
|
+
* num.parse(" -3.5 kg"); // -3.5
|
|
505
|
+
* num.parse("nope", 0); // 0
|
|
235
506
|
*
|
|
236
|
-
* @param {
|
|
237
|
-
* @param {number} [
|
|
238
|
-
* @
|
|
239
|
-
* @returns {number[]} The generated range.
|
|
507
|
+
* @param {unknown} value
|
|
508
|
+
* @param {number} [fallback=NaN] Returned when there's no number to read.
|
|
509
|
+
* @returns {number}
|
|
240
510
|
*/
|
|
241
|
-
export function
|
|
511
|
+
export function parse(value: unknown, fallback?: number): number;
|
|
512
|
+
/**
|
|
513
|
+
* Turns a size like `"10 MB"` into bytes. The opposite of `formatBytes()`.
|
|
514
|
+
*
|
|
515
|
+
* @example
|
|
516
|
+
* num.parseBytes("1.5 KB"); // 1536
|
|
517
|
+
* num.parseBytes("2 GiB"); // 2147483648
|
|
518
|
+
* num.parseBytes("1 KB", { binary: false }); // 1000
|
|
519
|
+
*
|
|
520
|
+
* @param {string | number} value A size like `"512kb"` or `"1.5G"`, or a number of bytes.
|
|
521
|
+
* @param {ParseBytesOptions} [options]
|
|
522
|
+
* @returns {number} Bytes, or `NaN` if it can't be read.
|
|
523
|
+
*/
|
|
524
|
+
export function parseBytes(value: string | number, options?: ParseBytesOptions): number;
|
|
525
|
+
/**
|
|
526
|
+
* Formats a byte count as a readable size.
|
|
527
|
+
*
|
|
528
|
+
* @example
|
|
529
|
+
* num.formatBytes(1536); // "1.5 KB"
|
|
530
|
+
* num.formatBytes(1000, { binary: false }); // "1 KB"
|
|
531
|
+
* num.formatBytes(1536, { locale: "fr", units: ["o", "Ko", "Mo", "Go"] }); // "1,5 Ko"
|
|
532
|
+
*
|
|
533
|
+
* @param {number} bytes
|
|
534
|
+
* @param {FormatBytesOptions} [options]
|
|
535
|
+
* @returns {string}
|
|
536
|
+
*/
|
|
537
|
+
export function formatBytes(bytes: number, options?: FormatBytesOptions): string;
|
|
538
|
+
/**
|
|
539
|
+
* Formats a number for display, with `Intl.NumberFormat` doing the work:
|
|
540
|
+
* separators, decimals, compact notation, percentages, units.
|
|
541
|
+
*
|
|
542
|
+
* @example
|
|
543
|
+
* num.format(1234567.891); // "1,234,567.891"
|
|
544
|
+
* num.format(1234567.891, { locale: "fr" }); // "1 234 567,891"
|
|
545
|
+
* num.format(0.256, { style: "percent" }); // "26%"
|
|
546
|
+
* num.format(1500, { compact: true }); // "1.5K"
|
|
547
|
+
* num.format(3.5, { unit: "kilometer" }); // "3.5 km"
|
|
548
|
+
*
|
|
549
|
+
* @param {number | bigint} value
|
|
550
|
+
* @param {FormatNumberOptions} [options]
|
|
551
|
+
* @returns {string}
|
|
552
|
+
*/
|
|
553
|
+
export function format(value: number | bigint, options?: FormatNumberOptions): string;
|
|
554
|
+
/**
|
|
555
|
+
* Formats an amount of money.
|
|
556
|
+
*
|
|
557
|
+
* @example
|
|
558
|
+
* num.currency(1234.5, "USD"); // "$1,234.50"
|
|
559
|
+
* num.currency(1234.5, "EUR", { locale: "fr" }); // "1 234,50 €"
|
|
560
|
+
* num.currency(-5, "USD", { accounting: true }); // "($5.00)"
|
|
561
|
+
*
|
|
562
|
+
* @param {number | bigint} value
|
|
563
|
+
* @param {string} code A currency code like `"EUR"`, `"USD"` or `"JPY"`.
|
|
564
|
+
* @param {CurrencyOptions} [options]
|
|
565
|
+
* @returns {string}
|
|
566
|
+
*/
|
|
567
|
+
export function currency(value: number | bigint, code: string, options?: CurrencyOptions): string;
|
|
568
|
+
/**
|
|
569
|
+
* Shortens big numbers with `K`, `M`, `B` or `T`. For other languages, use
|
|
570
|
+
* `format(value, { compact: true, locale })`.
|
|
571
|
+
*
|
|
572
|
+
* @example
|
|
573
|
+
* num.abbreviate(1500); // "1.5K"
|
|
574
|
+
* num.abbreviate(2_400_000); // "2.4M"
|
|
575
|
+
*
|
|
576
|
+
* @param {number} value
|
|
577
|
+
* @param {number} [decimals=1]
|
|
578
|
+
* @returns {string}
|
|
579
|
+
*/
|
|
580
|
+
export function abbreviate(value: number, decimals?: number): string;
|
|
581
|
+
/**
|
|
582
|
+
* Adds thousands separators, leaving decimals alone.
|
|
583
|
+
*
|
|
584
|
+
* @example
|
|
585
|
+
* num.thousands(1234567.89, " "); // "1 234 567.89"
|
|
586
|
+
*
|
|
587
|
+
* @param {number | string} value
|
|
588
|
+
* @param {string} [separator=","]
|
|
589
|
+
* @returns {string}
|
|
590
|
+
*/
|
|
591
|
+
export function thousands(value: number | string, separator?: string): string;
|
|
592
|
+
/**
|
|
593
|
+
* Pads the integer part with zeros (or another character).
|
|
594
|
+
*
|
|
595
|
+
* @example
|
|
596
|
+
* num.pad(7, 3); // "007"
|
|
597
|
+
* num.pad(-7, 3); // "-007"
|
|
598
|
+
* num.pad(3.5, 2); // "03.5"
|
|
599
|
+
*
|
|
600
|
+
* @param {number} value
|
|
601
|
+
* @param {number} length Digits wanted before the decimal point.
|
|
602
|
+
* @param {string} [char="0"]
|
|
603
|
+
* @returns {string}
|
|
604
|
+
*/
|
|
605
|
+
export function pad(value: number, length: number, char?: string): string;
|
|
606
|
+
/**
|
|
607
|
+
* Adds the ordinal suffix: 1st, 2nd, 3rd... in several languages.
|
|
608
|
+
*
|
|
609
|
+
* @example
|
|
610
|
+
* num.ordinal(22); // "22nd"
|
|
611
|
+
* num.ordinal(1, { locale: "fr" }); // "1er"
|
|
612
|
+
* num.ordinal(3, { locale: "de" }); // "3."
|
|
613
|
+
*
|
|
614
|
+
* @param {number} value
|
|
615
|
+
* @param {OrdinalOptions} [options]
|
|
616
|
+
* @returns {string}
|
|
617
|
+
*/
|
|
618
|
+
export function ordinal(value: number, options?: OrdinalOptions): string;
|
|
242
619
|
//# sourceMappingURL=Num.d.ts.map
|