@visulima/humanizer 1.2.2 → 2.0.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/README.md +66 -65
- package/dist/index.js +1 -0
- package/dist/language/af.js +1 -0
- package/dist/language/am.js +1 -0
- package/dist/language/ar.js +1 -0
- package/dist/language/bg.js +1 -0
- package/dist/language/bn.js +1 -0
- package/dist/language/ca.js +1 -0
- package/dist/language/ckb.js +1 -0
- package/dist/language/cs.js +1 -0
- package/dist/language/cy.js +1 -0
- package/dist/language/da.js +1 -0
- package/dist/language/de.js +1 -0
- package/dist/language/el.js +1 -0
- package/dist/language/en.js +1 -0
- package/dist/language/eo.js +1 -0
- package/dist/language/es.js +1 -0
- package/dist/language/et.js +1 -0
- package/dist/language/eu.js +1 -0
- package/dist/language/fa.js +1 -0
- package/dist/language/fi.js +1 -0
- package/dist/language/fo.js +1 -0
- package/dist/language/fr.js +1 -0
- package/dist/language/he.js +1 -0
- package/dist/language/hi.js +1 -0
- package/dist/language/hr.js +1 -0
- package/dist/language/hu.js +1 -0
- package/dist/language/id.js +1 -0
- package/dist/language/is.js +1 -0
- package/dist/language/it.js +1 -0
- package/dist/language/ja.js +1 -0
- package/dist/language/km.js +1 -0
- package/dist/language/kn.js +1 -0
- package/dist/language/ko.js +1 -0
- package/dist/language/ku.js +1 -0
- package/dist/language/lo.js +1 -0
- package/dist/language/lt.js +1 -0
- package/dist/language/lv.js +1 -0
- package/dist/language/mk.js +1 -0
- package/dist/language/mn.js +1 -0
- package/dist/language/mr.js +1 -0
- package/dist/language/ms.js +1 -0
- package/dist/language/nl.js +1 -0
- package/dist/language/no.js +1 -0
- package/dist/language/pl.js +1 -0
- package/dist/language/pt.js +1 -0
- package/dist/language/ro.js +1 -0
- package/dist/language/ru.js +1 -0
- package/dist/language/sk.js +1 -0
- package/dist/language/sl.js +1 -0
- package/dist/language/sq.js +1 -0
- package/dist/language/sr.js +1 -0
- package/dist/language/{af.d.cts → sr_Latn.d.ts} +1 -1
- package/dist/language/sr_Latn.js +1 -0
- package/dist/language/sv.js +1 -0
- package/dist/language/sw.js +1 -0
- package/dist/language/ta.js +1 -0
- package/dist/language/te.js +1 -0
- package/dist/language/th.js +1 -0
- package/dist/language/tr.js +1 -0
- package/dist/language/uk.js +1 -0
- package/dist/language/ur.js +1 -0
- package/dist/language/util/create-duration-language.d.ts +1 -1
- package/dist/language/util/create-duration-language.js +1 -0
- package/dist/language/util/duration/get-czech-or-slovak-form.d.ts +1 -1
- package/dist/language/util/duration/get-czech-or-slovak-form.js +1 -0
- package/dist/language/util/duration/get-slavic-form.d.ts +1 -1
- package/dist/language/util/duration/get-slavic-form.js +1 -0
- package/dist/language/util/validate-duration-language.d.ts +1 -1
- package/dist/language/util/validate-duration-language.js +1 -0
- package/dist/language/uz.js +1 -0
- package/dist/language/uz_CYR.js +1 -0
- package/dist/language/vi.js +1 -0
- package/dist/language/zh_CN.js +1 -0
- package/dist/language/zh_TW.js +1 -0
- package/dist/packem_shared/duration-B8tBhwXw.js +1 -0
- package/dist/packem_shared/formatBytes-Da87aeh8.js +1 -0
- package/dist/packem_shared/parseDuration-Bo02kq8G.js +1 -0
- package/package.json +6 -32
- package/dist/index.cjs +0 -14
- package/dist/index.d.cts +0 -126
- package/dist/index.d.mts +0 -126
- package/dist/index.mjs +0 -3
- package/dist/language/af.cjs +0 -45
- package/dist/language/af.d.mts +0 -5
- package/dist/language/af.mjs +0 -41
- package/dist/language/am.cjs +0 -37
- package/dist/language/am.d.cts +0 -5
- package/dist/language/am.d.mts +0 -5
- package/dist/language/am.mjs +0 -33
- package/dist/language/ar.cjs +0 -59
- package/dist/language/ar.d.cts +0 -24
- package/dist/language/ar.d.mts +0 -24
- package/dist/language/ar.mjs +0 -55
- package/dist/language/bg.cjs +0 -46
- package/dist/language/bg.d.cts +0 -5
- package/dist/language/bg.d.mts +0 -5
- package/dist/language/bg.mjs +0 -42
- package/dist/language/bn.cjs +0 -37
- package/dist/language/bn.d.cts +0 -5
- package/dist/language/bn.d.mts +0 -5
- package/dist/language/bn.mjs +0 -33
- package/dist/language/ca.cjs +0 -45
- package/dist/language/ca.d.cts +0 -5
- package/dist/language/ca.d.mts +0 -5
- package/dist/language/ca.mjs +0 -41
- package/dist/language/ckb.cjs +0 -37
- package/dist/language/ckb.d.cts +0 -5
- package/dist/language/ckb.d.mts +0 -5
- package/dist/language/ckb.mjs +0 -33
- package/dist/language/cs.cjs +0 -57
- package/dist/language/cs.d.cts +0 -5
- package/dist/language/cs.d.mts +0 -5
- package/dist/language/cs.mjs +0 -53
- package/dist/language/cy.cjs +0 -59
- package/dist/language/cy.d.cts +0 -5
- package/dist/language/cy.d.mts +0 -5
- package/dist/language/cy.mjs +0 -55
- package/dist/language/da.cjs +0 -49
- package/dist/language/da.d.cts +0 -5
- package/dist/language/da.d.mts +0 -5
- package/dist/language/da.mjs +0 -45
- package/dist/language/de.cjs +0 -51
- package/dist/language/de.d.cts +0 -5
- package/dist/language/de.d.mts +0 -5
- package/dist/language/de.mjs +0 -47
- package/dist/language/el.cjs +0 -57
- package/dist/language/el.d.cts +0 -5
- package/dist/language/el.d.mts +0 -5
- package/dist/language/el.mjs +0 -53
- package/dist/language/en.cjs +0 -62
- package/dist/language/en.d.cts +0 -6
- package/dist/language/en.d.mts +0 -6
- package/dist/language/en.mjs +0 -57
- package/dist/language/eo.cjs +0 -51
- package/dist/language/eo.d.cts +0 -5
- package/dist/language/eo.d.mts +0 -5
- package/dist/language/eo.mjs +0 -47
- package/dist/language/es.cjs +0 -50
- package/dist/language/es.d.cts +0 -5
- package/dist/language/es.d.mts +0 -5
- package/dist/language/es.mjs +0 -46
- package/dist/language/et.cjs +0 -51
- package/dist/language/et.d.cts +0 -5
- package/dist/language/et.d.mts +0 -5
- package/dist/language/et.mjs +0 -47
- package/dist/language/eu.cjs +0 -45
- package/dist/language/eu.d.cts +0 -5
- package/dist/language/eu.d.mts +0 -5
- package/dist/language/eu.mjs +0 -41
- package/dist/language/fa.cjs +0 -42
- package/dist/language/fa.d.cts +0 -5
- package/dist/language/fa.d.mts +0 -5
- package/dist/language/fa.mjs +0 -38
- package/dist/language/fi.cjs +0 -59
- package/dist/language/fi.d.cts +0 -5
- package/dist/language/fi.d.mts +0 -5
- package/dist/language/fi.mjs +0 -55
- package/dist/language/fo.cjs +0 -52
- package/dist/language/fo.d.cts +0 -5
- package/dist/language/fo.d.mts +0 -5
- package/dist/language/fo.mjs +0 -48
- package/dist/language/fr.cjs +0 -56
- package/dist/language/fr.d.cts +0 -5
- package/dist/language/fr.d.mts +0 -5
- package/dist/language/fr.mjs +0 -52
- package/dist/language/he.cjs +0 -56
- package/dist/language/he.d.cts +0 -5
- package/dist/language/he.d.mts +0 -5
- package/dist/language/he.mjs +0 -52
- package/dist/language/hi.cjs +0 -59
- package/dist/language/hi.d.cts +0 -5
- package/dist/language/hi.d.mts +0 -5
- package/dist/language/hi.mjs +0 -55
- package/dist/language/hr.cjs +0 -114
- package/dist/language/hr.d.cts +0 -5
- package/dist/language/hr.d.mts +0 -5
- package/dist/language/hr.mjs +0 -110
- package/dist/language/hu.cjs +0 -55
- package/dist/language/hu.d.cts +0 -5
- package/dist/language/hu.d.mts +0 -5
- package/dist/language/hu.mjs +0 -51
- package/dist/language/id.cjs +0 -54
- package/dist/language/id.d.cts +0 -5
- package/dist/language/id.d.mts +0 -5
- package/dist/language/id.mjs +0 -50
- package/dist/language/is.cjs +0 -56
- package/dist/language/is.d.cts +0 -5
- package/dist/language/is.d.mts +0 -5
- package/dist/language/is.mjs +0 -52
- package/dist/language/it.cjs +0 -55
- package/dist/language/it.d.cts +0 -5
- package/dist/language/it.d.mts +0 -5
- package/dist/language/it.mjs +0 -51
- package/dist/language/ja.cjs +0 -51
- package/dist/language/ja.d.cts +0 -5
- package/dist/language/ja.d.mts +0 -5
- package/dist/language/ja.mjs +0 -47
- package/dist/language/km.cjs +0 -61
- package/dist/language/km.d.cts +0 -5
- package/dist/language/km.d.mts +0 -5
- package/dist/language/km.mjs +0 -57
- package/dist/language/kn.cjs +0 -54
- package/dist/language/kn.d.cts +0 -5
- package/dist/language/kn.d.mts +0 -5
- package/dist/language/kn.mjs +0 -50
- package/dist/language/ko.cjs +0 -46
- package/dist/language/ko.d.cts +0 -5
- package/dist/language/ko.d.mts +0 -5
- package/dist/language/ko.mjs +0 -42
- package/dist/language/ku.cjs +0 -58
- package/dist/language/ku.d.cts +0 -5
- package/dist/language/ku.d.mts +0 -5
- package/dist/language/ku.mjs +0 -54
- package/dist/language/lo.cjs +0 -62
- package/dist/language/lo.d.cts +0 -5
- package/dist/language/lo.d.mts +0 -5
- package/dist/language/lo.mjs +0 -58
- package/dist/language/lt.cjs +0 -75
- package/dist/language/lt.d.cts +0 -5
- package/dist/language/lt.d.mts +0 -5
- package/dist/language/lt.mjs +0 -71
- package/dist/language/lv.cjs +0 -61
- package/dist/language/lv.d.cts +0 -5
- package/dist/language/lv.d.mts +0 -5
- package/dist/language/lv.mjs +0 -57
- package/dist/language/mk.cjs +0 -59
- package/dist/language/mk.d.cts +0 -5
- package/dist/language/mk.d.mts +0 -5
- package/dist/language/mk.mjs +0 -55
- package/dist/language/mn.cjs +0 -50
- package/dist/language/mn.d.cts +0 -5
- package/dist/language/mn.d.mts +0 -5
- package/dist/language/mn.mjs +0 -46
- package/dist/language/mr.cjs +0 -47
- package/dist/language/mr.d.cts +0 -5
- package/dist/language/mr.d.mts +0 -5
- package/dist/language/mr.mjs +0 -43
- package/dist/language/ms.cjs +0 -53
- package/dist/language/ms.d.cts +0 -5
- package/dist/language/ms.d.mts +0 -5
- package/dist/language/ms.mjs +0 -49
- package/dist/language/nl.cjs +0 -54
- package/dist/language/nl.d.cts +0 -5
- package/dist/language/nl.d.mts +0 -5
- package/dist/language/nl.mjs +0 -50
- package/dist/language/no.cjs +0 -51
- package/dist/language/no.d.cts +0 -5
- package/dist/language/no.d.mts +0 -5
- package/dist/language/no.mjs +0 -47
- package/dist/language/pl.cjs +0 -79
- package/dist/language/pl.d.cts +0 -5
- package/dist/language/pl.d.mts +0 -5
- package/dist/language/pl.mjs +0 -75
- package/dist/language/pt.cjs +0 -54
- package/dist/language/pt.d.cts +0 -5
- package/dist/language/pt.d.mts +0 -5
- package/dist/language/pt.mjs +0 -50
- package/dist/language/ro.cjs +0 -57
- package/dist/language/ro.d.cts +0 -5
- package/dist/language/ro.d.mts +0 -5
- package/dist/language/ro.mjs +0 -53
- package/dist/language/ru.cjs +0 -63
- package/dist/language/ru.d.cts +0 -5
- package/dist/language/ru.d.mts +0 -5
- package/dist/language/ru.mjs +0 -59
- package/dist/language/sk.cjs +0 -68
- package/dist/language/sk.d.cts +0 -5
- package/dist/language/sk.d.mts +0 -5
- package/dist/language/sk.mjs +0 -64
- package/dist/language/sl.cjs +0 -142
- package/dist/language/sl.d.cts +0 -5
- package/dist/language/sl.d.mts +0 -5
- package/dist/language/sl.mjs +0 -138
- package/dist/language/sq.cjs +0 -55
- package/dist/language/sq.d.cts +0 -5
- package/dist/language/sq.d.mts +0 -5
- package/dist/language/sq.mjs +0 -51
- package/dist/language/sr.cjs +0 -87
- package/dist/language/sr.d.cts +0 -5
- package/dist/language/sr.d.mts +0 -5
- package/dist/language/sr.mjs +0 -83
- package/dist/language/sv.cjs +0 -53
- package/dist/language/sv.d.cts +0 -5
- package/dist/language/sv.d.mts +0 -5
- package/dist/language/sv.mjs +0 -49
- package/dist/language/sw.cjs +0 -55
- package/dist/language/sw.d.cts +0 -24
- package/dist/language/sw.d.mts +0 -24
- package/dist/language/sw.mjs +0 -51
- package/dist/language/ta.cjs +0 -58
- package/dist/language/ta.d.cts +0 -5
- package/dist/language/ta.d.mts +0 -5
- package/dist/language/ta.mjs +0 -54
- package/dist/language/te.cjs +0 -54
- package/dist/language/te.d.cts +0 -5
- package/dist/language/te.d.mts +0 -5
- package/dist/language/te.mjs +0 -50
- package/dist/language/th.cjs +0 -48
- package/dist/language/th.d.cts +0 -5
- package/dist/language/th.d.mts +0 -5
- package/dist/language/th.mjs +0 -44
- package/dist/language/tr.cjs +0 -46
- package/dist/language/tr.d.cts +0 -5
- package/dist/language/tr.d.mts +0 -5
- package/dist/language/tr.mjs +0 -42
- package/dist/language/uk.cjs +0 -65
- package/dist/language/uk.d.cts +0 -5
- package/dist/language/uk.d.mts +0 -5
- package/dist/language/uk.mjs +0 -61
- package/dist/language/ur.cjs +0 -61
- package/dist/language/ur.d.cts +0 -5
- package/dist/language/ur.d.mts +0 -5
- package/dist/language/ur.mjs +0 -57
- package/dist/language/util/create-duration-language.cjs +0 -37
- package/dist/language/util/create-duration-language.d.cts +0 -5
- package/dist/language/util/create-duration-language.d.mts +0 -5
- package/dist/language/util/create-duration-language.mjs +0 -35
- package/dist/language/util/duration/get-czech-or-slovak-form.cjs +0 -18
- package/dist/language/util/duration/get-czech-or-slovak-form.d.cts +0 -3
- package/dist/language/util/duration/get-czech-or-slovak-form.d.mts +0 -3
- package/dist/language/util/duration/get-czech-or-slovak-form.mjs +0 -16
- package/dist/language/util/duration/get-slavic-form.cjs +0 -21
- package/dist/language/util/duration/get-slavic-form.d.cts +0 -3
- package/dist/language/util/duration/get-slavic-form.d.mts +0 -3
- package/dist/language/util/duration/get-slavic-form.mjs +0 -19
- package/dist/language/util/validate-duration-language.cjs +0 -40
- package/dist/language/util/validate-duration-language.d.cts +0 -5
- package/dist/language/util/validate-duration-language.d.mts +0 -5
- package/dist/language/util/validate-duration-language.mjs +0 -38
- package/dist/language/uz.cjs +0 -47
- package/dist/language/uz.d.cts +0 -5
- package/dist/language/uz.d.mts +0 -5
- package/dist/language/uz.mjs +0 -43
- package/dist/language/uz_CYR.cjs +0 -47
- package/dist/language/uz_CYR.d.cts +0 -5
- package/dist/language/uz_CYR.d.mts +0 -5
- package/dist/language/uz_CYR.mjs +0 -43
- package/dist/language/vi.cjs +0 -38
- package/dist/language/vi.d.cts +0 -5
- package/dist/language/vi.d.mts +0 -5
- package/dist/language/vi.mjs +0 -34
- package/dist/language/zh_CN.cjs +0 -43
- package/dist/language/zh_CN.d.cts +0 -5
- package/dist/language/zh_CN.d.mts +0 -5
- package/dist/language/zh_CN.mjs +0 -39
- package/dist/language/zh_TW.cjs +0 -43
- package/dist/language/zh_TW.d.cts +0 -5
- package/dist/language/zh_TW.d.mts +0 -5
- package/dist/language/zh_TW.mjs +0 -39
- package/dist/packem_shared/duration-DYSJZCH0.cjs +0 -218
- package/dist/packem_shared/duration-jUX98xbn.mjs +0 -216
- package/dist/packem_shared/parseBytes-0lZhif0J.cjs +0 -248
- package/dist/packem_shared/parseBytes-CAElABGr.mjs +0 -243
- package/dist/packem_shared/parseDuration-Bp1J3FbZ.cjs +0 -115
- package/dist/packem_shared/parseDuration-N_JLGPIB.mjs +0 -113
- package/dist/packem_shared/types-H2jJHSlI.d.cts +0 -72
- package/dist/packem_shared/types-H2jJHSlI.d.mts +0 -72
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const language_en = require('../language/en.cjs');
|
|
4
|
-
const language_util_validateDurationLanguage = require('../language/util/validate-duration-language.cjs');
|
|
5
|
-
|
|
6
|
-
var __defProp = Object.defineProperty;
|
|
7
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
-
const toFixed = /* @__PURE__ */ __name((number_, fixed) => {
|
|
9
|
-
fixed = fixed || -1;
|
|
10
|
-
const matches = new RegExp(`^-?\\d+(?:.\\d{0,${String(fixed)}})?`).exec(number_.toString());
|
|
11
|
-
if (matches === null) {
|
|
12
|
-
return number_;
|
|
13
|
-
}
|
|
14
|
-
return Number.parseFloat(matches[0]);
|
|
15
|
-
}, "toFixed");
|
|
16
|
-
const renderPiece = /* @__PURE__ */ __name(({ unitCount, unitName }, language, options) => {
|
|
17
|
-
let { spacer } = options;
|
|
18
|
-
const { maxDecimalPoints } = options;
|
|
19
|
-
let decimal = ".";
|
|
20
|
-
if (options.decimal !== void 0) {
|
|
21
|
-
decimal = options.decimal;
|
|
22
|
-
} else if (language.decimal !== void 0) {
|
|
23
|
-
decimal = language.decimal;
|
|
24
|
-
}
|
|
25
|
-
let digitReplacements;
|
|
26
|
-
if ("digitReplacements" in options) {
|
|
27
|
-
digitReplacements = options.digitReplacements;
|
|
28
|
-
} else if ("_digitReplacements" in language) {
|
|
29
|
-
digitReplacements = language._digitReplacements;
|
|
30
|
-
}
|
|
31
|
-
let formattedCount;
|
|
32
|
-
let normalizedUnitCount = unitCount;
|
|
33
|
-
if (maxDecimalPoints !== void 0) {
|
|
34
|
-
normalizedUnitCount = toFixed(unitCount, maxDecimalPoints);
|
|
35
|
-
}
|
|
36
|
-
const countString = normalizedUnitCount.toString();
|
|
37
|
-
if (!language._hideCountIf2 || unitCount !== 2) {
|
|
38
|
-
if (digitReplacements) {
|
|
39
|
-
formattedCount = "";
|
|
40
|
-
for (const char of countString) {
|
|
41
|
-
formattedCount += char === "." ? decimal : digitReplacements[char];
|
|
42
|
-
}
|
|
43
|
-
} else {
|
|
44
|
-
formattedCount = countString.replace(".", decimal);
|
|
45
|
-
}
|
|
46
|
-
} else {
|
|
47
|
-
formattedCount = "";
|
|
48
|
-
}
|
|
49
|
-
const languageWord = language[unitName];
|
|
50
|
-
let word = languageWord;
|
|
51
|
-
if (typeof languageWord === "function") {
|
|
52
|
-
word = languageWord(unitCount);
|
|
53
|
-
}
|
|
54
|
-
if (language._hideCountIf2 && unitCount === 2) {
|
|
55
|
-
spacer = "";
|
|
56
|
-
}
|
|
57
|
-
if (language._numberFirst) {
|
|
58
|
-
return word + spacer + formattedCount;
|
|
59
|
-
}
|
|
60
|
-
return formattedCount + spacer + word;
|
|
61
|
-
}, "renderPiece");
|
|
62
|
-
const getPieces = /* @__PURE__ */ __name((ms, options) => {
|
|
63
|
-
const { units } = options;
|
|
64
|
-
if (units.length === 0) {
|
|
65
|
-
return [];
|
|
66
|
-
}
|
|
67
|
-
const { unitMeasures } = options;
|
|
68
|
-
const largest = options.largest ?? Number.POSITIVE_INFINITY;
|
|
69
|
-
const unitCounts = {};
|
|
70
|
-
let unitName;
|
|
71
|
-
let index;
|
|
72
|
-
let unitCount;
|
|
73
|
-
let msRemaining = ms;
|
|
74
|
-
for (index = 0; index < units.length; index++) {
|
|
75
|
-
unitName = units[index];
|
|
76
|
-
const unitMs = unitMeasures[unitName];
|
|
77
|
-
const isLast = index === units.length - 1;
|
|
78
|
-
unitCount = isLast ? msRemaining / unitMs : Math.floor(msRemaining / unitMs);
|
|
79
|
-
unitCounts[unitName] = unitCount;
|
|
80
|
-
msRemaining -= unitCount * unitMs;
|
|
81
|
-
}
|
|
82
|
-
if (options.round) {
|
|
83
|
-
let unitsRemainingBeforeRound = largest;
|
|
84
|
-
for (index = 0; index < units.length; index++) {
|
|
85
|
-
unitName = units[index];
|
|
86
|
-
unitCount = unitCounts[unitName];
|
|
87
|
-
if (unitCount === 0) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
unitsRemainingBeforeRound--;
|
|
91
|
-
if (unitsRemainingBeforeRound === 0) {
|
|
92
|
-
for (let index_ = index + 1; index_ < units.length; index_++) {
|
|
93
|
-
const smallerUnitName = units[index_];
|
|
94
|
-
const smallerUnitCount = unitCounts[smallerUnitName];
|
|
95
|
-
unitCounts[unitName] += smallerUnitCount * unitMeasures[smallerUnitName] / unitMeasures[unitName];
|
|
96
|
-
unitCounts[smallerUnitName] = 0;
|
|
97
|
-
}
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
for (index = units.length - 1; index >= 0; index--) {
|
|
102
|
-
unitName = units[index];
|
|
103
|
-
unitCount = unitCounts[unitName];
|
|
104
|
-
if (unitCount === 0) {
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
const rounded = Math.round(unitCount);
|
|
108
|
-
unitCounts[unitName] = rounded;
|
|
109
|
-
if (index === 0) {
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
const previousUnitName = units[index - 1];
|
|
113
|
-
const previousUnitMs = unitMeasures[previousUnitName];
|
|
114
|
-
const amountOfPreviousUnit = Math.floor(rounded * unitMeasures[unitName] / previousUnitMs);
|
|
115
|
-
if (amountOfPreviousUnit) {
|
|
116
|
-
unitCounts[previousUnitName] += amountOfPreviousUnit;
|
|
117
|
-
unitCounts[unitName] = 0;
|
|
118
|
-
} else {
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
const result = [];
|
|
124
|
-
for (index = 0; index < units.length && result.length < largest; index++) {
|
|
125
|
-
unitName = units[index];
|
|
126
|
-
unitCount = unitCounts[unitName];
|
|
127
|
-
if (unitCount && !options.round && result.length === largest - 1) {
|
|
128
|
-
let index_;
|
|
129
|
-
let remainder = 0;
|
|
130
|
-
for (index_ = index + 1, units.length; index_ < units.length; index_++) {
|
|
131
|
-
const remainderUnitName = units[index_];
|
|
132
|
-
remainder += unitCounts[remainderUnitName] * (options.unitMeasures[remainderUnitName] / options.unitMeasures[unitName]);
|
|
133
|
-
}
|
|
134
|
-
unitCount += remainder;
|
|
135
|
-
if (options.maxDecimalPoints !== void 0) {
|
|
136
|
-
unitCount = toFixed(unitCount, options.maxDecimalPoints);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
if (unitCount) {
|
|
140
|
-
result.push({ unitCount, unitName });
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
return result;
|
|
144
|
-
}, "getPieces");
|
|
145
|
-
const formatPieces = /* @__PURE__ */ __name((pieces, options, ms) => {
|
|
146
|
-
const { language, units } = options;
|
|
147
|
-
if (pieces.length === 0) {
|
|
148
|
-
const smallestUnitName = units.at(-1);
|
|
149
|
-
return renderPiece({ unitCount: 0, unitName: smallestUnitName }, language, options);
|
|
150
|
-
}
|
|
151
|
-
const { conjunction, serialComma } = options;
|
|
152
|
-
let delimiter = ", ";
|
|
153
|
-
if (options.delimiter !== void 0) {
|
|
154
|
-
delimiter = options.delimiter;
|
|
155
|
-
} else if (language.delimiter !== void 0) {
|
|
156
|
-
delimiter = language.delimiter;
|
|
157
|
-
}
|
|
158
|
-
let adverb = "";
|
|
159
|
-
if (options.timeAdverb && ms !== 0) {
|
|
160
|
-
adverb = language.future ?? "";
|
|
161
|
-
if (ms < 0) {
|
|
162
|
-
adverb = language.past ?? "";
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
const renderedPieces = [];
|
|
166
|
-
for (const piece_ of pieces) {
|
|
167
|
-
const piece = piece_;
|
|
168
|
-
renderedPieces.push(renderPiece(piece, language, options));
|
|
169
|
-
}
|
|
170
|
-
let result;
|
|
171
|
-
if (!conjunction || pieces.length === 1) {
|
|
172
|
-
result = renderedPieces.join(delimiter);
|
|
173
|
-
} else if (pieces.length === 2) {
|
|
174
|
-
result = renderedPieces.join(conjunction);
|
|
175
|
-
} else {
|
|
176
|
-
result = renderedPieces.slice(0, -1).join(delimiter) + (serialComma ? "," : "") + conjunction + renderedPieces.at(-1);
|
|
177
|
-
}
|
|
178
|
-
if (adverb) {
|
|
179
|
-
result = adverb.replace("%s", result);
|
|
180
|
-
}
|
|
181
|
-
return result;
|
|
182
|
-
}, "formatPieces");
|
|
183
|
-
const duration = /* @__PURE__ */ __name((milliseconds, options) => {
|
|
184
|
-
if (Number.isNaN(milliseconds)) {
|
|
185
|
-
throw new TypeError("Expected a valid number");
|
|
186
|
-
}
|
|
187
|
-
if (typeof milliseconds !== "number") {
|
|
188
|
-
throw new TypeError("Expected a number for milliseconds input");
|
|
189
|
-
}
|
|
190
|
-
const config = {
|
|
191
|
-
conjunction: "",
|
|
192
|
-
language: language_en.durationLanguage,
|
|
193
|
-
round: false,
|
|
194
|
-
serialComma: true,
|
|
195
|
-
spacer: " ",
|
|
196
|
-
timeAdverb: false,
|
|
197
|
-
unitMeasures: {
|
|
198
|
-
d: 864e5,
|
|
199
|
-
h: 36e5,
|
|
200
|
-
m: 6e4,
|
|
201
|
-
mo: 2629746e3,
|
|
202
|
-
// 365.2425 / 12 = 30.436875 days
|
|
203
|
-
ms: 1,
|
|
204
|
-
s: 1e3,
|
|
205
|
-
w: 6048e5,
|
|
206
|
-
y: 31556952e3
|
|
207
|
-
// 365 + 1/4 - 1/100 + 1/400 (actual leap day rules) = 365.2425 days
|
|
208
|
-
},
|
|
209
|
-
units: ["w", "d", "h", "m", "s"],
|
|
210
|
-
...options
|
|
211
|
-
};
|
|
212
|
-
language_util_validateDurationLanguage(config.language);
|
|
213
|
-
const absTime = Math.abs(milliseconds);
|
|
214
|
-
const pieces = getPieces(absTime, config);
|
|
215
|
-
return formatPieces(pieces, config, milliseconds);
|
|
216
|
-
}, "duration");
|
|
217
|
-
|
|
218
|
-
module.exports = duration;
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { durationLanguage } from '../language/en.mjs';
|
|
2
|
-
import validateDurationLanguage from '../language/util/validate-duration-language.mjs';
|
|
3
|
-
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
-
const toFixed = /* @__PURE__ */ __name((number_, fixed) => {
|
|
7
|
-
fixed = fixed || -1;
|
|
8
|
-
const matches = new RegExp(`^-?\\d+(?:.\\d{0,${String(fixed)}})?`).exec(number_.toString());
|
|
9
|
-
if (matches === null) {
|
|
10
|
-
return number_;
|
|
11
|
-
}
|
|
12
|
-
return Number.parseFloat(matches[0]);
|
|
13
|
-
}, "toFixed");
|
|
14
|
-
const renderPiece = /* @__PURE__ */ __name(({ unitCount, unitName }, language, options) => {
|
|
15
|
-
let { spacer } = options;
|
|
16
|
-
const { maxDecimalPoints } = options;
|
|
17
|
-
let decimal = ".";
|
|
18
|
-
if (options.decimal !== void 0) {
|
|
19
|
-
decimal = options.decimal;
|
|
20
|
-
} else if (language.decimal !== void 0) {
|
|
21
|
-
decimal = language.decimal;
|
|
22
|
-
}
|
|
23
|
-
let digitReplacements;
|
|
24
|
-
if ("digitReplacements" in options) {
|
|
25
|
-
digitReplacements = options.digitReplacements;
|
|
26
|
-
} else if ("_digitReplacements" in language) {
|
|
27
|
-
digitReplacements = language._digitReplacements;
|
|
28
|
-
}
|
|
29
|
-
let formattedCount;
|
|
30
|
-
let normalizedUnitCount = unitCount;
|
|
31
|
-
if (maxDecimalPoints !== void 0) {
|
|
32
|
-
normalizedUnitCount = toFixed(unitCount, maxDecimalPoints);
|
|
33
|
-
}
|
|
34
|
-
const countString = normalizedUnitCount.toString();
|
|
35
|
-
if (!language._hideCountIf2 || unitCount !== 2) {
|
|
36
|
-
if (digitReplacements) {
|
|
37
|
-
formattedCount = "";
|
|
38
|
-
for (const char of countString) {
|
|
39
|
-
formattedCount += char === "." ? decimal : digitReplacements[char];
|
|
40
|
-
}
|
|
41
|
-
} else {
|
|
42
|
-
formattedCount = countString.replace(".", decimal);
|
|
43
|
-
}
|
|
44
|
-
} else {
|
|
45
|
-
formattedCount = "";
|
|
46
|
-
}
|
|
47
|
-
const languageWord = language[unitName];
|
|
48
|
-
let word = languageWord;
|
|
49
|
-
if (typeof languageWord === "function") {
|
|
50
|
-
word = languageWord(unitCount);
|
|
51
|
-
}
|
|
52
|
-
if (language._hideCountIf2 && unitCount === 2) {
|
|
53
|
-
spacer = "";
|
|
54
|
-
}
|
|
55
|
-
if (language._numberFirst) {
|
|
56
|
-
return word + spacer + formattedCount;
|
|
57
|
-
}
|
|
58
|
-
return formattedCount + spacer + word;
|
|
59
|
-
}, "renderPiece");
|
|
60
|
-
const getPieces = /* @__PURE__ */ __name((ms, options) => {
|
|
61
|
-
const { units } = options;
|
|
62
|
-
if (units.length === 0) {
|
|
63
|
-
return [];
|
|
64
|
-
}
|
|
65
|
-
const { unitMeasures } = options;
|
|
66
|
-
const largest = options.largest ?? Number.POSITIVE_INFINITY;
|
|
67
|
-
const unitCounts = {};
|
|
68
|
-
let unitName;
|
|
69
|
-
let index;
|
|
70
|
-
let unitCount;
|
|
71
|
-
let msRemaining = ms;
|
|
72
|
-
for (index = 0; index < units.length; index++) {
|
|
73
|
-
unitName = units[index];
|
|
74
|
-
const unitMs = unitMeasures[unitName];
|
|
75
|
-
const isLast = index === units.length - 1;
|
|
76
|
-
unitCount = isLast ? msRemaining / unitMs : Math.floor(msRemaining / unitMs);
|
|
77
|
-
unitCounts[unitName] = unitCount;
|
|
78
|
-
msRemaining -= unitCount * unitMs;
|
|
79
|
-
}
|
|
80
|
-
if (options.round) {
|
|
81
|
-
let unitsRemainingBeforeRound = largest;
|
|
82
|
-
for (index = 0; index < units.length; index++) {
|
|
83
|
-
unitName = units[index];
|
|
84
|
-
unitCount = unitCounts[unitName];
|
|
85
|
-
if (unitCount === 0) {
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
unitsRemainingBeforeRound--;
|
|
89
|
-
if (unitsRemainingBeforeRound === 0) {
|
|
90
|
-
for (let index_ = index + 1; index_ < units.length; index_++) {
|
|
91
|
-
const smallerUnitName = units[index_];
|
|
92
|
-
const smallerUnitCount = unitCounts[smallerUnitName];
|
|
93
|
-
unitCounts[unitName] += smallerUnitCount * unitMeasures[smallerUnitName] / unitMeasures[unitName];
|
|
94
|
-
unitCounts[smallerUnitName] = 0;
|
|
95
|
-
}
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
for (index = units.length - 1; index >= 0; index--) {
|
|
100
|
-
unitName = units[index];
|
|
101
|
-
unitCount = unitCounts[unitName];
|
|
102
|
-
if (unitCount === 0) {
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
const rounded = Math.round(unitCount);
|
|
106
|
-
unitCounts[unitName] = rounded;
|
|
107
|
-
if (index === 0) {
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
const previousUnitName = units[index - 1];
|
|
111
|
-
const previousUnitMs = unitMeasures[previousUnitName];
|
|
112
|
-
const amountOfPreviousUnit = Math.floor(rounded * unitMeasures[unitName] / previousUnitMs);
|
|
113
|
-
if (amountOfPreviousUnit) {
|
|
114
|
-
unitCounts[previousUnitName] += amountOfPreviousUnit;
|
|
115
|
-
unitCounts[unitName] = 0;
|
|
116
|
-
} else {
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
const result = [];
|
|
122
|
-
for (index = 0; index < units.length && result.length < largest; index++) {
|
|
123
|
-
unitName = units[index];
|
|
124
|
-
unitCount = unitCounts[unitName];
|
|
125
|
-
if (unitCount && !options.round && result.length === largest - 1) {
|
|
126
|
-
let index_;
|
|
127
|
-
let remainder = 0;
|
|
128
|
-
for (index_ = index + 1, units.length; index_ < units.length; index_++) {
|
|
129
|
-
const remainderUnitName = units[index_];
|
|
130
|
-
remainder += unitCounts[remainderUnitName] * (options.unitMeasures[remainderUnitName] / options.unitMeasures[unitName]);
|
|
131
|
-
}
|
|
132
|
-
unitCount += remainder;
|
|
133
|
-
if (options.maxDecimalPoints !== void 0) {
|
|
134
|
-
unitCount = toFixed(unitCount, options.maxDecimalPoints);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (unitCount) {
|
|
138
|
-
result.push({ unitCount, unitName });
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return result;
|
|
142
|
-
}, "getPieces");
|
|
143
|
-
const formatPieces = /* @__PURE__ */ __name((pieces, options, ms) => {
|
|
144
|
-
const { language, units } = options;
|
|
145
|
-
if (pieces.length === 0) {
|
|
146
|
-
const smallestUnitName = units.at(-1);
|
|
147
|
-
return renderPiece({ unitCount: 0, unitName: smallestUnitName }, language, options);
|
|
148
|
-
}
|
|
149
|
-
const { conjunction, serialComma } = options;
|
|
150
|
-
let delimiter = ", ";
|
|
151
|
-
if (options.delimiter !== void 0) {
|
|
152
|
-
delimiter = options.delimiter;
|
|
153
|
-
} else if (language.delimiter !== void 0) {
|
|
154
|
-
delimiter = language.delimiter;
|
|
155
|
-
}
|
|
156
|
-
let adverb = "";
|
|
157
|
-
if (options.timeAdverb && ms !== 0) {
|
|
158
|
-
adverb = language.future ?? "";
|
|
159
|
-
if (ms < 0) {
|
|
160
|
-
adverb = language.past ?? "";
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
const renderedPieces = [];
|
|
164
|
-
for (const piece_ of pieces) {
|
|
165
|
-
const piece = piece_;
|
|
166
|
-
renderedPieces.push(renderPiece(piece, language, options));
|
|
167
|
-
}
|
|
168
|
-
let result;
|
|
169
|
-
if (!conjunction || pieces.length === 1) {
|
|
170
|
-
result = renderedPieces.join(delimiter);
|
|
171
|
-
} else if (pieces.length === 2) {
|
|
172
|
-
result = renderedPieces.join(conjunction);
|
|
173
|
-
} else {
|
|
174
|
-
result = renderedPieces.slice(0, -1).join(delimiter) + (serialComma ? "," : "") + conjunction + renderedPieces.at(-1);
|
|
175
|
-
}
|
|
176
|
-
if (adverb) {
|
|
177
|
-
result = adverb.replace("%s", result);
|
|
178
|
-
}
|
|
179
|
-
return result;
|
|
180
|
-
}, "formatPieces");
|
|
181
|
-
const duration = /* @__PURE__ */ __name((milliseconds, options) => {
|
|
182
|
-
if (Number.isNaN(milliseconds)) {
|
|
183
|
-
throw new TypeError("Expected a valid number");
|
|
184
|
-
}
|
|
185
|
-
if (typeof milliseconds !== "number") {
|
|
186
|
-
throw new TypeError("Expected a number for milliseconds input");
|
|
187
|
-
}
|
|
188
|
-
const config = {
|
|
189
|
-
conjunction: "",
|
|
190
|
-
language: durationLanguage,
|
|
191
|
-
round: false,
|
|
192
|
-
serialComma: true,
|
|
193
|
-
spacer: " ",
|
|
194
|
-
timeAdverb: false,
|
|
195
|
-
unitMeasures: {
|
|
196
|
-
d: 864e5,
|
|
197
|
-
h: 36e5,
|
|
198
|
-
m: 6e4,
|
|
199
|
-
mo: 2629746e3,
|
|
200
|
-
// 365.2425 / 12 = 30.436875 days
|
|
201
|
-
ms: 1,
|
|
202
|
-
s: 1e3,
|
|
203
|
-
w: 6048e5,
|
|
204
|
-
y: 31556952e3
|
|
205
|
-
// 365 + 1/4 - 1/100 + 1/400 (actual leap day rules) = 365.2425 days
|
|
206
|
-
},
|
|
207
|
-
units: ["w", "d", "h", "m", "s"],
|
|
208
|
-
...options
|
|
209
|
-
};
|
|
210
|
-
validateDurationLanguage(config.language);
|
|
211
|
-
const absTime = Math.abs(milliseconds);
|
|
212
|
-
const pieces = getPieces(absTime, config);
|
|
213
|
-
return formatPieces(pieces, config, milliseconds);
|
|
214
|
-
}, "duration");
|
|
215
|
-
|
|
216
|
-
export { duration as default };
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
-
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
const BYTE_SIZES = {
|
|
8
|
-
iec: [
|
|
9
|
-
{
|
|
10
|
-
long: "Bytes",
|
|
11
|
-
short: "B"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
long: "Kibibytes",
|
|
15
|
-
short: "KiB"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
long: "Mebibytes",
|
|
19
|
-
short: "MiB"
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
long: "Gibibytes",
|
|
23
|
-
short: "GiB"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
long: "Tebibytes",
|
|
27
|
-
short: "TiB"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
long: "Pebibytes",
|
|
31
|
-
short: "PiB"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
long: "Exbibytes",
|
|
35
|
-
short: "EiB"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
long: "Zebibytes",
|
|
39
|
-
short: "ZiB"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
long: "Yobibytes",
|
|
43
|
-
short: "YiB"
|
|
44
|
-
}
|
|
45
|
-
],
|
|
46
|
-
iec_octet: [
|
|
47
|
-
{
|
|
48
|
-
long: "Octets",
|
|
49
|
-
short: "o"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
long: "Kibioctets",
|
|
53
|
-
short: "Kio"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
long: "Mebioctets",
|
|
57
|
-
short: "Mio"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
long: "Gibioctets",
|
|
61
|
-
short: "Gio"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
long: "Tebioctets",
|
|
65
|
-
short: "Tio"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
long: "Pebioctets",
|
|
69
|
-
short: "Pio"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
long: "Exbioctets",
|
|
73
|
-
short: "Eio"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
long: "Zebioctets",
|
|
77
|
-
short: "Zio"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
long: "Yobioctets",
|
|
81
|
-
short: "Yio"
|
|
82
|
-
}
|
|
83
|
-
],
|
|
84
|
-
metric: [
|
|
85
|
-
{
|
|
86
|
-
long: "Bytes",
|
|
87
|
-
short: "Bytes"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
long: "Kilobytes",
|
|
91
|
-
short: "KB"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
long: "Megabytes",
|
|
95
|
-
short: "MB"
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
long: "Gigabytes",
|
|
99
|
-
short: "GB"
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
long: "Terabytes",
|
|
103
|
-
short: "TB"
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
long: "Petabytes",
|
|
107
|
-
short: "PB"
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
long: "Exabytes",
|
|
111
|
-
short: "EB"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
long: "Zettabytes",
|
|
115
|
-
short: "ZB"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
long: "Yottabytes",
|
|
119
|
-
short: "YB"
|
|
120
|
-
}
|
|
121
|
-
],
|
|
122
|
-
metric_octet: [
|
|
123
|
-
{
|
|
124
|
-
long: "Octets",
|
|
125
|
-
short: "o"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
long: "Kilo-octets",
|
|
129
|
-
short: "ko"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
long: "Mega-octets",
|
|
133
|
-
short: "Mo"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
long: "Giga-octets",
|
|
137
|
-
short: "Go"
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
long: "Tera-octets",
|
|
141
|
-
short: "To"
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
long: "Peta-octets",
|
|
145
|
-
short: "Po"
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
long: "Exa-octets",
|
|
149
|
-
short: "Eo"
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
long: "Zetta-octets",
|
|
153
|
-
short: "Zo"
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
long: "Yotta-octets",
|
|
157
|
-
short: "Yo"
|
|
158
|
-
}
|
|
159
|
-
]
|
|
160
|
-
};
|
|
161
|
-
const parseLocalizedNumber = /* @__PURE__ */ __name((stringNumber, locale) => {
|
|
162
|
-
const thousandSeparator = new Intl.NumberFormat(locale).format(11111).replaceAll(new RegExp("\\p{Number}", "gu"), "");
|
|
163
|
-
const decimalSeparator = new Intl.NumberFormat(locale).format(1.1).replaceAll(new RegExp("\\p{Number}", "gu"), "");
|
|
164
|
-
return Number.parseFloat(stringNumber.replaceAll(new RegExp(`\\${thousandSeparator}`, "g"), "").replace(new RegExp(`\\${decimalSeparator}`), "."));
|
|
165
|
-
}, "parseLocalizedNumber");
|
|
166
|
-
const fromBase = /* @__PURE__ */ __name((base) => {
|
|
167
|
-
if (base === 2) {
|
|
168
|
-
return 1024;
|
|
169
|
-
}
|
|
170
|
-
if (base === 10) {
|
|
171
|
-
return 1e3;
|
|
172
|
-
}
|
|
173
|
-
throw new TypeError(`Unsupported base.`);
|
|
174
|
-
}, "fromBase");
|
|
175
|
-
const parseBytes = /* @__PURE__ */ __name((value, options) => {
|
|
176
|
-
const config = {
|
|
177
|
-
base: 2,
|
|
178
|
-
locale: "en-US",
|
|
179
|
-
units: "metric",
|
|
180
|
-
...options
|
|
181
|
-
};
|
|
182
|
-
if (typeof value !== "string" || value.length === 0) {
|
|
183
|
-
throw new TypeError("Value is not a string or is empty.");
|
|
184
|
-
}
|
|
185
|
-
if (value.length > 100) {
|
|
186
|
-
throw new TypeError("Value exceeds the maximum length of 100 characters.");
|
|
187
|
-
}
|
|
188
|
-
const match = (
|
|
189
|
-
// eslint-disable-next-line regexp/no-super-linear-backtracking,regexp/no-unused-capturing-group,regexp/no-misleading-capturing-group,security/detect-unsafe-regex
|
|
190
|
-
/^(?<value>-?(?:\d+(([.,])\d+)*)?[.,]?\d+) *(?<type>bytes?|b|kb|kib|mb|mib|gb|gib|tb|tib|pb|pib|eb|eib|zb|zib|yb|yib|(kilo|kibi|mega|mebi|giga|gibi|tera|tebi|peta|pebi|exa|exbi|zetta|zebi|yotta|yobi)?bytes)?$/i.exec(
|
|
191
|
-
value
|
|
192
|
-
)
|
|
193
|
-
);
|
|
194
|
-
const groups = match?.groups;
|
|
195
|
-
if (!groups) {
|
|
196
|
-
return Number.NaN;
|
|
197
|
-
}
|
|
198
|
-
const localizedNumber = parseLocalizedNumber(groups.value, config.locale);
|
|
199
|
-
const type = (groups.type ?? "Bytes").toUpperCase().replace(/^KIBI/, "KILO").replace(/^MIBI/, "MEGA").replace(/^GIBI/, "GIGA").replace(/^TEBI/, "TERA").replace(/^PEBI/, "PETA").replace(/^EXBI/, "EXA").replace(/^ZEBI/, "ZETTA").replace(/^YIBI/, "YOTTA").replace(/^(.)IB$/, "$1B");
|
|
200
|
-
const level = BYTE_SIZES[config.units].findIndex((unit) => unit.short[0].toUpperCase() === type[0]);
|
|
201
|
-
const base = fromBase(config.base);
|
|
202
|
-
return localizedNumber * base ** level;
|
|
203
|
-
}, "parseBytes");
|
|
204
|
-
const formatBytes = /* @__PURE__ */ __name((bytes, options) => {
|
|
205
|
-
if (typeof bytes !== "number" || !Number.isFinite(bytes)) {
|
|
206
|
-
throw new TypeError("Bytesize is not a number.");
|
|
207
|
-
}
|
|
208
|
-
const {
|
|
209
|
-
base: givenBase,
|
|
210
|
-
decimals,
|
|
211
|
-
locale,
|
|
212
|
-
long,
|
|
213
|
-
unit: requestedUnit,
|
|
214
|
-
units,
|
|
215
|
-
...l10nOptions
|
|
216
|
-
} = {
|
|
217
|
-
base: 2,
|
|
218
|
-
decimals: 0,
|
|
219
|
-
locale: "en-US",
|
|
220
|
-
long: false,
|
|
221
|
-
units: "metric",
|
|
222
|
-
...options
|
|
223
|
-
};
|
|
224
|
-
const base = fromBase(givenBase);
|
|
225
|
-
const absoluteBytes = Math.abs(bytes);
|
|
226
|
-
const space = options?.space ?? true ? " " : "";
|
|
227
|
-
const referenceTable = BYTE_SIZES[units];
|
|
228
|
-
const requestedUnitIndex = referenceTable.findIndex((unit2) => unit2.short === requestedUnit);
|
|
229
|
-
if (bytes === 0) {
|
|
230
|
-
const level2 = Math.min(0, Math.max(requestedUnitIndex, referenceTable.length - 1));
|
|
231
|
-
return "0" + space + referenceTable[level2][long ? "long" : "short"];
|
|
232
|
-
}
|
|
233
|
-
const level = requestedUnitIndex >= 0 ? requestedUnitIndex : Math.min(Math.floor(Math.log(absoluteBytes) / Math.log(base)), referenceTable.length - 1);
|
|
234
|
-
const unit = referenceTable[level][long ? "long" : "short"];
|
|
235
|
-
const value = bytes / base ** level;
|
|
236
|
-
const fractionDigits = decimals < 0 ? void 0 : decimals;
|
|
237
|
-
const formattedValue = new Intl.NumberFormat(locale, {
|
|
238
|
-
// @ts-expect-error - should be overridden by the options
|
|
239
|
-
maximumFractionDigits: fractionDigits,
|
|
240
|
-
// @ts-expect-error - should be overridden by the options
|
|
241
|
-
minimumFractionDigits: fractionDigits,
|
|
242
|
-
...l10nOptions
|
|
243
|
-
}).format(value);
|
|
244
|
-
return formattedValue + space + unit;
|
|
245
|
-
}, "formatBytes");
|
|
246
|
-
|
|
247
|
-
exports.formatBytes = formatBytes;
|
|
248
|
-
exports.parseBytes = parseBytes;
|