UNPKG

3.97 kBTypeScriptView Raw
1// Type definitions for filesize 8.0.3
2// Project: https://github.com/avoidwork/filesize.js, https://filesizejs.com
3// Definitions by: Giedrius Grabauskas <https://github.com/GiedriusGrabauskas>
4// Renaud Chaput <https://github.com/renchap>
5// Roman Nuritdinov <https://github.com/Ky6uk>
6// Sam Hulick <https://github.com/ffxsam>
7// Tomoto S. Washio <https://github.com/tomoto>
8
9declare var fileSize: Filesize.Filesize;
10export = fileSize;
11export as namespace filesize;
12
13declare namespace Filesize {
14 interface SiJedecBits {
15 b?: string;
16 Kb?: string;
17 Mb?: string;
18 Gb?: string;
19 Tb?: string;
20 Pb?: string;
21 Eb?: string;
22 Zb?: string;
23 Yb?: string;
24 }
25
26 interface SiJedecBytes {
27 B?: string;
28 KB?: string;
29 MB?: string;
30 GB?: string;
31 TB?: string;
32 PB?: string;
33 EB?: string;
34 ZB?: string;
35 YB?: string;
36 }
37
38 type SiJedec = SiJedecBits & SiJedecBytes & { [name: string]: string };
39
40 interface Options {
41 /**
42 * Number base, default is 10
43 */
44 base?: number;
45 /**
46 * Enables bit sizes, default is false
47 */
48 bits?: boolean;
49 /**
50 * Specifies the SI suffix via exponent, e.g. 2 is MB for bytes, default is -1
51 */
52 exponent?: number;
53 /**
54 * Enables full form of unit of measure, default is false
55 */
56 fullform?: boolean;
57 /**
58 * Array of full form overrides, default is []
59 */
60 fullforms?: string[];
61 /**
62 * BCP 47 language tag to specify a locale, or true to use default locale, default is ""
63 */
64 locale?: string | boolean;
65 /**
66 * ECMA-402 number format option overrides, default is "{}"
67 */
68 localeOptions?: Intl.NumberFormatOptions;
69 /**
70 * Output of function (array, exponent, object, or string), default is string
71 */
72 output?: "array" | "exponent" | "object" | "string";
73 /**
74 * Decimal place, default is 2
75 */
76 round?: number;
77 /**
78 * Decimal separator character, default is `.`
79 */
80 separator?: string;
81 /**
82 * Character between the result and suffix, default is ` `
83 */
84 spacer?: string;
85 /**
86 * Standard unit of measure, can be iec or jedec, default is iec; can be overruled by base
87 */
88 standard?: "iec" | "jedec";
89 /**
90 * Dictionary of SI/JEDEC symbols to replace for localization, defaults to english if no match is found
91 */
92 symbols?: SiJedec;
93 /**
94 * Enables unix style human readable output, e.g ls -lh, default is false
95 */
96 unix?: boolean;
97 /**
98 * Rounding method, can be round, floor, or ceil, default is round
99 */
100 roundingMethod?: "round" | "floor" | "ceil";
101 }
102
103 // Result type inference from the output option
104 interface ResultTypeMap {
105 array: [number, string];
106 exponent: number;
107 object: {
108 value: number,
109 symbol: string,
110 exponent: number,
111 unit: string,
112 };
113 string: string;
114 }
115 type DefaultOutput<O extends Options> = Exclude<O["output"], keyof ResultTypeMap> extends never ? never : "string"
116 type CanonicalOutput<O extends Options> = Extract<O["output"], keyof ResultTypeMap> | DefaultOutput<O>
117
118 interface Filesize {
119 (bytes: number): string;
120 <O extends Options>(bytes: number, options: O): ResultTypeMap[CanonicalOutput<O>];
121 partial: <O extends Options>(options: O) => ((bytes: number) => ResultTypeMap[CanonicalOutput<O>]);
122 }
123}