@oliversalzburg/js-utils 0.6.0 → 0.7.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/package.json +5 -5
- package/lib/async/async.d.ts +0 -44
- package/lib/async/async.js +0 -76
- package/lib/async/async.js.map +0 -1
- package/lib/async/async.test.d.ts +0 -1
- package/lib/async/async.test.js +0 -26
- package/lib/async/async.test.js.map +0 -1
- package/lib/core.d.ts +0 -43
- package/lib/core.js +0 -2
- package/lib/core.js.map +0 -1
- package/lib/data/array.d.ts +0 -45
- package/lib/data/array.js +0 -70
- package/lib/data/array.js.map +0 -1
- package/lib/data/nil.d.ts +0 -92
- package/lib/data/nil.js +0 -131
- package/lib/data/nil.js.map +0 -1
- package/lib/data/random.d.ts +0 -111
- package/lib/data/random.js +0 -377
- package/lib/data/random.js.map +0 -1
- package/lib/data/string.d.ts +0 -30
- package/lib/data/string.js +0 -52
- package/lib/data/string.js.map +0 -1
- package/lib/data/tree.d.ts +0 -28
- package/lib/data/tree.js +0 -45
- package/lib/data/tree.js.map +0 -1
- package/lib/device/shake.d.ts +0 -79
- package/lib/device/shake.js +0 -135
- package/lib/device/shake.js.map +0 -1
- package/lib/dom/core.d.ts +0 -21
- package/lib/dom/core.js +0 -41
- package/lib/dom/core.js.map +0 -1
- package/lib/errors/AbstractError.d.ts +0 -29
- package/lib/errors/AbstractError.js +0 -59
- package/lib/errors/AbstractError.js.map +0 -1
- package/lib/errors/InternalError.d.ts +0 -19
- package/lib/errors/InternalError.js +0 -38
- package/lib/errors/InternalError.js.map +0 -1
- package/lib/errors/InvalidArgumentError.d.ts +0 -13
- package/lib/errors/InvalidArgumentError.js +0 -22
- package/lib/errors/InvalidArgumentError.js.map +0 -1
- package/lib/errors/InvalidOperationError.d.ts +0 -13
- package/lib/errors/InvalidOperationError.js +0 -22
- package/lib/errors/InvalidOperationError.js.map +0 -1
- package/lib/errors/NotImplementedError.d.ts +0 -12
- package/lib/errors/NotImplementedError.js +0 -21
- package/lib/errors/NotImplementedError.js.map +0 -1
- package/lib/errors/PermissionViolationError.d.ts +0 -13
- package/lib/errors/PermissionViolationError.js +0 -22
- package/lib/errors/PermissionViolationError.js.map +0 -1
- package/lib/errors/ResourceConflictError.d.ts +0 -12
- package/lib/errors/ResourceConflictError.js +0 -21
- package/lib/errors/ResourceConflictError.js.map +0 -1
- package/lib/errors/UnknownError.d.ts +0 -16
- package/lib/errors/UnknownError.js +0 -25
- package/lib/errors/UnknownError.js.map +0 -1
- package/lib/errors/console.d.ts +0 -7
- package/lib/errors/console.js +0 -13
- package/lib/errors/console.js.map +0 -1
- package/lib/errors/error-serializer.d.ts +0 -45
- package/lib/errors/error-serializer.js +0 -71
- package/lib/errors/error-serializer.js.map +0 -1
- package/lib/errors/error-serializer.test.d.ts +0 -1
- package/lib/errors/error-serializer.test.js +0 -109
- package/lib/errors/error-serializer.test.js.map +0 -1
- package/lib/errors/stream.d.ts +0 -7
- package/lib/errors/stream.js +0 -15
- package/lib/errors/stream.js.map +0 -1
- package/lib/errors/tools.d.ts +0 -10
- package/lib/errors/tools.js +0 -13
- package/lib/errors/tools.js.map +0 -1
- package/lib/events/event.d.ts +0 -9
- package/lib/events/event.js +0 -10
- package/lib/events/event.js.map +0 -1
- package/lib/format/bytes.d.ts +0 -118
- package/lib/format/bytes.js +0 -99
- package/lib/format/bytes.js.map +0 -1
- package/lib/format/bytes.test.d.ts +0 -1
- package/lib/format/bytes.test.js +0 -138
- package/lib/format/bytes.test.js.map +0 -1
- package/lib/format/count.d.ts +0 -14
- package/lib/format/count.js +0 -50
- package/lib/format/count.js.map +0 -1
- package/lib/format/count.test.d.ts +0 -1
- package/lib/format/count.test.js +0 -42
- package/lib/format/count.test.js.map +0 -1
- package/lib/format/milliseconds.d.ts +0 -100
- package/lib/format/milliseconds.js +0 -192
- package/lib/format/milliseconds.js.map +0 -1
- package/lib/format/milliseconds.test.d.ts +0 -1
- package/lib/format/milliseconds.test.js +0 -343
- package/lib/format/milliseconds.test.js.map +0 -1
- package/lib/format/string.d.ts +0 -24
- package/lib/format/string.js +0 -30
- package/lib/format/string.js.map +0 -1
- package/lib/format/string.test.d.ts +0 -1
- package/lib/format/string.test.js +0 -17
- package/lib/format/string.test.js.map +0 -1
- package/lib/graphics/canvas-sandbox-mp.d.ts +0 -258
- package/lib/graphics/canvas-sandbox-mp.js +0 -279
- package/lib/graphics/canvas-sandbox-mp.js.map +0 -1
- package/lib/graphics/canvas-sandbox.d.ts +0 -255
- package/lib/graphics/canvas-sandbox.js +0 -361
- package/lib/graphics/canvas-sandbox.js.map +0 -1
- package/lib/graphics/canvas.d.ts +0 -57
- package/lib/graphics/canvas.js +0 -37
- package/lib/graphics/canvas.js.map +0 -1
- package/lib/graphics/canvas2d-headless.d.ts +0 -85
- package/lib/graphics/canvas2d-headless.js +0 -193
- package/lib/graphics/canvas2d-headless.js.map +0 -1
- package/lib/graphics/canvas2d.d.ts +0 -162
- package/lib/graphics/canvas2d.js +0 -328
- package/lib/graphics/canvas2d.js.map +0 -1
- package/lib/graphics/canvas3d.d.ts +0 -41
- package/lib/graphics/canvas3d.js +0 -67
- package/lib/graphics/canvas3d.js.map +0 -1
- package/lib/graphics/color.d.ts +0 -22
- package/lib/graphics/color.js +0 -42
- package/lib/graphics/color.js.map +0 -1
- package/lib/graphics/core.d.ts +0 -89
- package/lib/graphics/core.js +0 -146
- package/lib/graphics/core.js.map +0 -1
- package/lib/graphics/palette-sampler.d.ts +0 -7
- package/lib/graphics/palette-sampler.js +0 -21
- package/lib/graphics/palette-sampler.js.map +0 -1
- package/lib/graphics/palette.d.ts +0 -120
- package/lib/graphics/palette.js +0 -494
- package/lib/graphics/palette.js.map +0 -1
- package/lib/graphics/palette.test.d.ts +0 -1
- package/lib/graphics/palette.test.js +0 -43
- package/lib/graphics/palette.test.js.map +0 -1
- package/lib/graphics/render-loop.d.ts +0 -80
- package/lib/graphics/render-loop.js +0 -120
- package/lib/graphics/render-loop.js.map +0 -1
- package/lib/graphics/shader.d.ts +0 -56
- package/lib/graphics/shader.js +0 -80
- package/lib/graphics/shader.js.map +0 -1
- package/lib/log/log.d.ts +0 -11
- package/lib/log/log.js +0 -2
- package/lib/log/log.js.map +0 -1
- package/lib/log/report.d.ts +0 -57
- package/lib/log/report.js +0 -88
- package/lib/log/report.js.map +0 -1
- package/lib/math/core.d.ts +0 -85
- package/lib/math/core.js +0 -125
- package/lib/math/core.js.map +0 -1
- package/lib/math/easing.d.ts +0 -204
- package/lib/math/easing.js +0 -332
- package/lib/math/easing.js.map +0 -1
- package/lib/math/euler.d.ts +0 -18
- package/lib/math/euler.js +0 -22
- package/lib/math/euler.js.map +0 -1
- package/lib/math/matrix3.d.ts +0 -217
- package/lib/math/matrix3.js +0 -508
- package/lib/math/matrix3.js.map +0 -1
- package/lib/math/quaternion.d.ts +0 -119
- package/lib/math/quaternion.js +0 -270
- package/lib/math/quaternion.js.map +0 -1
- package/lib/math/transformation.d.ts +0 -26
- package/lib/math/transformation.js +0 -31
- package/lib/math/transformation.js.map +0 -1
- package/lib/math/vector2.d.ts +0 -202
- package/lib/math/vector2.js +0 -310
- package/lib/math/vector2.js.map +0 -1
- package/lib/math/vector3.d.ts +0 -293
- package/lib/math/vector3.js +0 -492
- package/lib/math/vector3.js.map +0 -1
- package/lib/math/vector4.d.ts +0 -182
- package/lib/math/vector4.js +0 -302
- package/lib/math/vector4.js.map +0 -1
- package/lib/measurement/performance.d.ts +0 -13
- package/lib/measurement/performance.js +0 -19
- package/lib/measurement/performance.js.map +0 -1
package/lib/format/bytes.test.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { it } from "node:test";
|
|
3
|
-
import { formatBytes } from "./bytes.js";
|
|
4
|
-
it("throws on invalid input", () => {
|
|
5
|
-
assert.throws(() => {
|
|
6
|
-
formatBytes("");
|
|
7
|
-
});
|
|
8
|
-
assert.throws(() => {
|
|
9
|
-
formatBytes("1");
|
|
10
|
-
});
|
|
11
|
-
assert.throws(() => {
|
|
12
|
-
formatBytes(Number.NaN);
|
|
13
|
-
});
|
|
14
|
-
assert.throws(() => {
|
|
15
|
-
formatBytes(true);
|
|
16
|
-
});
|
|
17
|
-
assert.throws(() => {
|
|
18
|
-
formatBytes(Number.POSITIVE_INFINITY);
|
|
19
|
-
});
|
|
20
|
-
assert.throws(() => {
|
|
21
|
-
formatBytes(Number.NEGATIVE_INFINITY);
|
|
22
|
-
});
|
|
23
|
-
assert.throws(() => {
|
|
24
|
-
formatBytes(null);
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
it("converts bytes to human readable strings", () => {
|
|
28
|
-
assert.strictEqual(formatBytes(0), "0 B");
|
|
29
|
-
assert.strictEqual(formatBytes(0.4), "0.4 B");
|
|
30
|
-
assert.strictEqual(formatBytes(0.7), "0.7 B");
|
|
31
|
-
assert.strictEqual(formatBytes(10), "10 B");
|
|
32
|
-
assert.strictEqual(formatBytes(10.1), "10.1 B");
|
|
33
|
-
assert.strictEqual(formatBytes(999), "999 B");
|
|
34
|
-
assert.strictEqual(formatBytes(1001), "1 kB");
|
|
35
|
-
assert.strictEqual(formatBytes(1e16), "10 PB");
|
|
36
|
-
assert.strictEqual(formatBytes(1e30), "1000000 YB");
|
|
37
|
-
});
|
|
38
|
-
it("supports negative number", () => {
|
|
39
|
-
assert.strictEqual(formatBytes(-0.4), "-0.4 B");
|
|
40
|
-
assert.strictEqual(formatBytes(-0.7), "-0.7 B");
|
|
41
|
-
assert.strictEqual(formatBytes(-10.1), "-10.1 B");
|
|
42
|
-
assert.strictEqual(formatBytes(-999), "-999 B");
|
|
43
|
-
assert.strictEqual(formatBytes(-1001), "-1 kB");
|
|
44
|
-
});
|
|
45
|
-
it("locale option", function () {
|
|
46
|
-
assert.strictEqual(formatBytes(-0.4, { locale: "de" }), "-0,4 B");
|
|
47
|
-
assert.strictEqual(formatBytes(0.4, { locale: "de" }), "0,4 B");
|
|
48
|
-
assert.strictEqual(formatBytes(1001, { locale: "de" }), "1 kB");
|
|
49
|
-
assert.strictEqual(formatBytes(10.1, { locale: "de" }), "10,1 B");
|
|
50
|
-
assert.strictEqual(formatBytes(1e30, { locale: "de" }), "1.000.000 YB");
|
|
51
|
-
assert.strictEqual(formatBytes(-0.4, { locale: "en" }), "-0.4 B");
|
|
52
|
-
assert.strictEqual(formatBytes(0.4, { locale: "en" }), "0.4 B");
|
|
53
|
-
assert.strictEqual(formatBytes(1001, { locale: "en" }), "1 kB");
|
|
54
|
-
assert.strictEqual(formatBytes(10.1, { locale: "en" }), "10.1 B");
|
|
55
|
-
assert.strictEqual(formatBytes(1e30, { locale: "en" }), "1,000,000 YB");
|
|
56
|
-
assert.strictEqual(formatBytes(-0.4, { locale: ["unknown", "de", "en"] }), "-0,4 B");
|
|
57
|
-
assert.strictEqual(formatBytes(0.4, { locale: ["unknown", "de", "en"] }), "0,4 B");
|
|
58
|
-
assert.strictEqual(formatBytes(1001, { locale: ["unknown", "de", "en"] }), "1 kB");
|
|
59
|
-
assert.strictEqual(formatBytes(10.1, { locale: ["unknown", "de", "en"] }), "10,1 B");
|
|
60
|
-
assert.strictEqual(formatBytes(1e30, { locale: ["unknown", "de", "en"] }), "1.000.000 YB");
|
|
61
|
-
assert.strictEqual(formatBytes(-0.4, { locale: true }), "-0.4 B");
|
|
62
|
-
assert.strictEqual(formatBytes(0.4, { locale: true }), "0.4 B");
|
|
63
|
-
assert.strictEqual(formatBytes(1001, { locale: true }), "1 kB");
|
|
64
|
-
assert.strictEqual(formatBytes(10.1, { locale: true }), "10.1 B");
|
|
65
|
-
assert.strictEqual(formatBytes(1e30, { locale: true }), "1,000,000 YB");
|
|
66
|
-
assert.strictEqual(formatBytes(-0.4, { locale: false }), "-0.4 B");
|
|
67
|
-
assert.strictEqual(formatBytes(0.4, { locale: false }), "0.4 B");
|
|
68
|
-
assert.strictEqual(formatBytes(1001, { locale: false }), "1 kB");
|
|
69
|
-
assert.strictEqual(formatBytes(10.1, { locale: false }), "10.1 B");
|
|
70
|
-
assert.strictEqual(formatBytes(1e30, { locale: false }), "1000000 YB");
|
|
71
|
-
assert.strictEqual(formatBytes(-0.4, { locale: undefined }), "-0.4 B");
|
|
72
|
-
assert.strictEqual(formatBytes(0.4, { locale: undefined }), "0.4 B");
|
|
73
|
-
assert.strictEqual(formatBytes(1001, { locale: undefined }), "1 kB");
|
|
74
|
-
assert.strictEqual(formatBytes(10.1, { locale: undefined }), "10.1 B");
|
|
75
|
-
assert.strictEqual(formatBytes(1e30, { locale: undefined }), "1000000 YB");
|
|
76
|
-
});
|
|
77
|
-
it("signed option", () => {
|
|
78
|
-
assert.strictEqual(formatBytes(42, { signed: true }), "+42 B");
|
|
79
|
-
assert.strictEqual(formatBytes(-13, { signed: true }), "-13 B");
|
|
80
|
-
assert.strictEqual(formatBytes(0, { signed: true }), " 0 B");
|
|
81
|
-
});
|
|
82
|
-
it("bits option", () => {
|
|
83
|
-
assert.strictEqual(formatBytes(0, { bits: true }), "0 b");
|
|
84
|
-
assert.strictEqual(formatBytes(0.4, { bits: true }), "0.4 b");
|
|
85
|
-
assert.strictEqual(formatBytes(0.7, { bits: true }), "0.7 b");
|
|
86
|
-
assert.strictEqual(formatBytes(10, { bits: true }), "10 b");
|
|
87
|
-
assert.strictEqual(formatBytes(10.1, { bits: true }), "10.1 b");
|
|
88
|
-
assert.strictEqual(formatBytes(999, { bits: true }), "999 b");
|
|
89
|
-
assert.strictEqual(formatBytes(1001, { bits: true }), "1 kbit");
|
|
90
|
-
assert.strictEqual(formatBytes(1001, { bits: true }), "1 kbit");
|
|
91
|
-
assert.strictEqual(formatBytes(1e16, { bits: true }), "10 Pbit");
|
|
92
|
-
assert.strictEqual(formatBytes(1e30, { bits: true }), "1000000 Ybit");
|
|
93
|
-
});
|
|
94
|
-
it("binary option", () => {
|
|
95
|
-
assert.strictEqual(formatBytes(0, { binary: true }), "0 B");
|
|
96
|
-
assert.strictEqual(formatBytes(4, { binary: true }), "4 B");
|
|
97
|
-
assert.strictEqual(formatBytes(10, { binary: true }), "10 B");
|
|
98
|
-
assert.strictEqual(formatBytes(10.1, { binary: true }), "10.1 B");
|
|
99
|
-
assert.strictEqual(formatBytes(999, { binary: true }), "999 B");
|
|
100
|
-
assert.strictEqual(formatBytes(1025, { binary: true }), "1 KiB");
|
|
101
|
-
assert.strictEqual(formatBytes(1001, { binary: true }), "1000 B");
|
|
102
|
-
assert.strictEqual(formatBytes(1e16, { binary: true }), "8.88 PiB");
|
|
103
|
-
assert.strictEqual(formatBytes(1e30, { binary: true }), "827000 YiB");
|
|
104
|
-
});
|
|
105
|
-
it("bits and binary option", () => {
|
|
106
|
-
assert.strictEqual(formatBytes(0, { binary: true, bits: true }), "0 b");
|
|
107
|
-
assert.strictEqual(formatBytes(4, { binary: true, bits: true }), "4 b");
|
|
108
|
-
assert.strictEqual(formatBytes(10, { binary: true, bits: true }), "10 b");
|
|
109
|
-
assert.strictEqual(formatBytes(999, { binary: true, bits: true }), "999 b");
|
|
110
|
-
assert.strictEqual(formatBytes(1025, { binary: true, bits: true }), "1 kibit");
|
|
111
|
-
assert.strictEqual(formatBytes(1e6, { binary: true, bits: true }), "977 kibit");
|
|
112
|
-
});
|
|
113
|
-
it("fractional digits options", () => {
|
|
114
|
-
assert.strictEqual(formatBytes(1900, { maximumFractionDigits: 1 }), "1.9 kB");
|
|
115
|
-
assert.strictEqual(formatBytes(1900, { minimumFractionDigits: 3 }), "1.900 kB");
|
|
116
|
-
assert.strictEqual(formatBytes(1911, { maximumFractionDigits: 1 }), "1.9 kB");
|
|
117
|
-
assert.strictEqual(formatBytes(1111, { maximumFractionDigits: 2 }), "1.11 kB");
|
|
118
|
-
assert.strictEqual(formatBytes(1019, { maximumFractionDigits: 3 }), "1.019 kB");
|
|
119
|
-
assert.strictEqual(formatBytes(1001, { maximumFractionDigits: 3 }), "1.001 kB");
|
|
120
|
-
assert.strictEqual(formatBytes(1000, { maximumFractionDigits: 3, minimumFractionDigits: 1 }), "1.0 kB");
|
|
121
|
-
assert.strictEqual(formatBytes(3942, { maximumFractionDigits: 2, minimumFractionDigits: 1 }), "3.94 kB");
|
|
122
|
-
assert.strictEqual(formatBytes(4001, { binary: true, maximumFractionDigits: 3 }), "3.907 KiB");
|
|
123
|
-
assert.strictEqual(formatBytes(18_717, { binary: true, maximumFractionDigits: 2 }), "18.28 KiB");
|
|
124
|
-
assert.strictEqual(formatBytes(18_717, { binary: true, maximumFractionDigits: 4 }), "18.2783 KiB");
|
|
125
|
-
assert.strictEqual(formatBytes(32_768, { binary: true, maximumFractionDigits: 3, minimumFractionDigits: 2 }), "32.00 KiB");
|
|
126
|
-
assert.strictEqual(formatBytes(65_536, { binary: true, maximumFractionDigits: 3, minimumFractionDigits: 1 }), "64.0 KiB");
|
|
127
|
-
});
|
|
128
|
-
it("space option", () => {
|
|
129
|
-
assert.strictEqual(formatBytes(0), "0 B");
|
|
130
|
-
assert.strictEqual(formatBytes(0, { space: false }), "0B");
|
|
131
|
-
assert.strictEqual(formatBytes(999), "999 B");
|
|
132
|
-
assert.strictEqual(formatBytes(999, { space: false }), "999B");
|
|
133
|
-
assert.strictEqual(formatBytes(-13, { signed: true }), "-13 B");
|
|
134
|
-
assert.strictEqual(formatBytes(-13, { signed: true, space: false }), "-13B");
|
|
135
|
-
assert.strictEqual(formatBytes(42, { signed: true }), "+42 B");
|
|
136
|
-
assert.strictEqual(formatBytes(42, { signed: true, space: false }), "+42B");
|
|
137
|
-
});
|
|
138
|
-
//# sourceMappingURL=bytes.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.test.js","sourceRoot":"","sources":["../../source/format/bytes.test.ts"],"names":[],"mappings":"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"}
|
package/lib/format/count.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert counts to a human readable string: `1234` → `1.234K`.
|
|
3
|
-
* @param count - The count to format.
|
|
4
|
-
* @param locale - The locale to use.
|
|
5
|
-
* @returns The formatted string.
|
|
6
|
-
*/
|
|
7
|
-
export declare const formatCount: (count: number | bigint, locale?: string) => string;
|
|
8
|
-
/**
|
|
9
|
-
* Convert counts from a human readable string back to a number: `1.234K` → `1234`.
|
|
10
|
-
* @param count - The count to parse.
|
|
11
|
-
* @param locale - The locale to use.
|
|
12
|
-
* @returns The number represented by the input string.
|
|
13
|
-
*/
|
|
14
|
-
export declare const parseCount: (count: string, locale?: string) => number;
|
package/lib/format/count.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { mustExist } from "../data/nil.js";
|
|
2
|
-
/**
|
|
3
|
-
* Convert counts to a human readable string: `1234` → `1.234K`.
|
|
4
|
-
* @param count - The count to format.
|
|
5
|
-
* @param locale - The locale to use.
|
|
6
|
-
* @returns The formatted string.
|
|
7
|
-
*/
|
|
8
|
-
export const formatCount = (count, locale) => {
|
|
9
|
-
return new Intl.NumberFormat(locale, {
|
|
10
|
-
compactDisplay: "short",
|
|
11
|
-
maximumFractionDigits: 3,
|
|
12
|
-
notation: "compact",
|
|
13
|
-
}).format(count);
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Convert counts from a human readable string back to a number: `1.234K` → `1234`.
|
|
17
|
-
* @param count - The count to parse.
|
|
18
|
-
* @param locale - The locale to use.
|
|
19
|
-
* @returns The number represented by the input string.
|
|
20
|
-
*/
|
|
21
|
-
export const parseCount = (count, locale) => {
|
|
22
|
-
const format = new Intl.NumberFormat(locale, {
|
|
23
|
-
compactDisplay: "short",
|
|
24
|
-
maximumFractionDigits: 3,
|
|
25
|
-
notation: "compact",
|
|
26
|
-
});
|
|
27
|
-
const parts = format.formatToParts(-12345.6);
|
|
28
|
-
const orders = Array.from({ length: 20 }).map((_, i) => format.formatToParts(Math.pow(10, i)).find(d => d.type === "compact")?.value ?? "");
|
|
29
|
-
const numerals = Array.from({ length: 10 }).map((_, i) => format.format(i));
|
|
30
|
-
const index = new Map(numerals.map((d, i) => [d, i]));
|
|
31
|
-
const minusSign = new RegExp(`[${mustExist(parts.find(d => d.type === "minusSign")).value}]`);
|
|
32
|
-
const decimal = new RegExp(`[${mustExist(parts.find(d => d.type === "decimal")).value}]`);
|
|
33
|
-
const numeral = new RegExp(`[${numerals.join("")}]`, "g");
|
|
34
|
-
const order = new RegExp(`(${[...new Set(orders.filter(o => o !== ""))].join("|")})`, "g");
|
|
35
|
-
const DIRECTION_MARK = /\u061c|\u200e|\u200f/g;
|
|
36
|
-
let multiplier = 1;
|
|
37
|
-
const value = count
|
|
38
|
-
.trim()
|
|
39
|
-
.replace(DIRECTION_MARK, "")
|
|
40
|
-
.replace(decimal, ".")
|
|
41
|
-
.replace(numeral, d => mustExist(index.get(d)).toString())
|
|
42
|
-
.replace(minusSign, "-")
|
|
43
|
-
.replace(order, o => {
|
|
44
|
-
multiplier = Math.pow(10, orders.indexOf(o));
|
|
45
|
-
return "";
|
|
46
|
-
})
|
|
47
|
-
.replace(/[ \u00a0]/g, "");
|
|
48
|
-
return +value * multiplier;
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=count.js.map
|
package/lib/format/count.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../source/format/count.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/format/count.test.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { it } from "node:test";
|
|
3
|
-
import { formatCount, parseCount } from "./count.js";
|
|
4
|
-
it("formats counts as expected", function () {
|
|
5
|
-
assert.strictEqual(formatCount(-1), "-1");
|
|
6
|
-
assert.strictEqual(formatCount(0), "0");
|
|
7
|
-
assert.strictEqual(formatCount(1), "1");
|
|
8
|
-
assert.strictEqual(formatCount(10), "10");
|
|
9
|
-
assert.strictEqual(formatCount(100), "100");
|
|
10
|
-
assert.strictEqual(formatCount(1000), "1K");
|
|
11
|
-
assert.strictEqual(formatCount(1234), "1.234K");
|
|
12
|
-
});
|
|
13
|
-
it("parses counts as expected", function () {
|
|
14
|
-
const testCount = function (count, inputLocale, input) {
|
|
15
|
-
const locales = inputLocale
|
|
16
|
-
? [inputLocale]
|
|
17
|
-
: "af,af-ZA,ar,ar-AE,ar-BH,ar-DZ,ar-EG,ar-IQ,ar-JO,ar-KW,ar-LB,ar-LY,ar-MA,ar-OM,ar-QA,ar-SA,ar-SY,ar-TN,ar-YE,az,az-AZ,az-AZ,be,be-BY,bg,bg-BG,bs-BA,ca,ca-ES,cs,cs-CZ,cy,cy-GB,da,da-DK,de,de-AT,de-CH,de-DE,de-LI,de-LU,dv,dv-MV,el,el-GR,en,en-AU,en-BZ,en-CA,en-CB,en-GB,en-IE,en-JM,en-NZ,en-PH,en-TT,en-US,en-ZA,en-ZW,eo,es,es-AR,es-BO,es-CL,es-CO,es-CR,es-DO,es-EC,es-ES,es-ES,es-GT,es-HN,es-MX,es-NI,es-PA,es-PE,es-PR,es-PY,es-SV,es-UY,es-VE,et,et-EE,eu,eu-ES,fa,fa-IR,fi,fi-FI,fo,fo-FO,fr,fr-BE,fr-CA,fr-CH,fr-FR,fr-LU,fr-MC,gl,gl-ES,gu,gu-IN,he,he-IL,hi,hi-IN,hr,hr-BA,hr-HR,hu,hu-HU,hy,hy-AM,id,id-ID,is,is-IS,it,it-CH,it-IT,ja,ja-JP,ka,ka-GE,kk,kk-KZ,kn,kn-IN,ko,ko-KR,kok,kok-IN,ky,ky-KG,lt,lt-LT,lv,lv-LV,mi,mi-NZ,mk,mk-MK,mn,mn-MN,mr,mr-IN,ms,ms-BN,ms-MY,mt,mt-MT,nb,nb-NO,nl,nl-BE,nl-NL,nn-NO,ns,ns-ZA,pa,pa-IN,pl,pl-PL,ps,ps-AR,pt,pt-BR,pt-PT,qu,qu-BO,qu-EC,qu-PE,ro,ro-RO,ru,ru-RU,sa,sa-IN,se,se-FI,se-FI,se-FI,se-NO,se-NO,se-NO,se-SE,se-SE,se-SE,sk,sk-SK,sl,sl-SI,sq,sq-AL,sr-BA,sr-BA,sr-SP,sr-SP,sv,sv-FI,sv-SE,sw,sw-KE,syr,syr-SY,ta,ta-IN,te,te-IN,th,th-TH,tl,tl-PH,tn,tn-ZA,tr,tr-TR,tt,tt-RU,ts,uk,uk-UA,ur,ur-PK,uz,uz-UZ,uz-UZ,vi,vi-VN,xh,xh-ZA,zh,zh-CN,zh-HK,zh-MO,zh-SG,zh-TW,zu,zu-ZA".split(",");
|
|
18
|
-
locales.forEach(locale => {
|
|
19
|
-
const formatted = input ?? formatCount(count, locale);
|
|
20
|
-
const parsed = parseCount(formatted, locale);
|
|
21
|
-
if (parsed !== count) {
|
|
22
|
-
const parts = new Intl.NumberFormat(locale).formatToParts(count);
|
|
23
|
-
const literal = parts
|
|
24
|
-
.filter(p => p.type !== "literal")
|
|
25
|
-
.map(part => `${part.type}:${part.value
|
|
26
|
-
.split("")
|
|
27
|
-
.map(char => `U+${char.charCodeAt(0).toString(16).padStart(4, "0")}`)
|
|
28
|
-
.join(", ")}`);
|
|
29
|
-
assert.strictEqual(parsed, count, `Failed for locale '${locale}': '${literal.join(", ")}'`);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
testCount(-1, "en-US", "-1");
|
|
34
|
-
testCount(0, "en-US", "0");
|
|
35
|
-
testCount(1, "en-US", "1");
|
|
36
|
-
testCount(10, "en-US", "10");
|
|
37
|
-
testCount(100, "en-US", "100");
|
|
38
|
-
testCount(1000, "en-US", "1K");
|
|
39
|
-
testCount(1234, "en-US", "1.234K");
|
|
40
|
-
testCount(-1234, "en-US", "-1.234K");
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=count.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"count.test.js","sourceRoot":"","sources":["../../source/format/count.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErD,EAAE,CAAC,4BAA4B,EAAE;IAC/B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,2BAA2B,EAAE;IAC9B,MAAM,SAAS,GAAG,UAAU,KAAa,EAAE,WAAoB,EAAE,KAAc;QAC7E,MAAM,OAAO,GAAG,WAAW;YACzB,CAAC,CAAC,CAAC,WAAW,CAAC;YACf,CAAC,CAAC,krCAAkrC,CAAC,KAAK,CACtrC,GAAG,CACJ,CAAC;QAEN,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,SAAS,GAAG,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE7C,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACjE,MAAM,OAAO,GAAG,KAAK;qBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;qBACjC,GAAG,CACF,IAAI,CAAC,EAAE,CACL,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;qBACvB,KAAK,CAAC,EAAE,CAAC;qBACT,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;qBACpE,IAAI,CAAC,IAAI,CAAC,EAAE,CAClB,CAAC;gBACJ,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,sBAAsB,MAAM,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/B,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnC,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This code was derived from https://github.com/sindresorhus/parse-ms/tree/a18636bb609793326a1bd8d541aad49f715f0a40
|
|
3
|
-
* and https://github.com/sindresorhus/pretty-ms/tree/763fe075d8a62aa8d9ee603bfad2f3107c3a9f02.
|
|
4
|
-
* It is available under the MIT license.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Options for the `formatMilliseconds` function.
|
|
8
|
-
*/
|
|
9
|
-
export interface FormatMillisecondsOptions {
|
|
10
|
-
/**
|
|
11
|
-
* Number of digits to appear after the seconds decimal point.
|
|
12
|
-
*/
|
|
13
|
-
secondsDecimalDigits?: number;
|
|
14
|
-
/**
|
|
15
|
-
* Number of digits to appear after the milliseconds decimal point.
|
|
16
|
-
*
|
|
17
|
-
* Useful in combination with [`process.hrtime()`](https://nodejs.org/api/process.html#process_process_hrtime).
|
|
18
|
-
*/
|
|
19
|
-
millisecondsDecimalDigits?: number;
|
|
20
|
-
/**
|
|
21
|
-
* Keep milliseconds on whole seconds: `13s` → `13.0s`.
|
|
22
|
-
*
|
|
23
|
-
* Useful when you are showing a number of seconds spent on an operation and don't want the width of the output to change when hitting a whole number.
|
|
24
|
-
*/
|
|
25
|
-
keepDecimalsOnWholeSeconds?: boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Only show the first unit: `1h 10m` → `1h`.
|
|
28
|
-
*
|
|
29
|
-
* Also ensures that `millisecondsDecimalDigits` and `secondsDecimalDigits` are both set to `0`.
|
|
30
|
-
*/
|
|
31
|
-
compact?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Number of units to show. Setting `compact` to `true` overrides this option.
|
|
34
|
-
*/
|
|
35
|
-
unitCount?: number;
|
|
36
|
-
/**
|
|
37
|
-
* Use full-length units: `5h 1m 45s` → `5 hours 1 minute 45 seconds`.
|
|
38
|
-
*/
|
|
39
|
-
verbose?: boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Show milliseconds separately. This means they won't be included in the decimal part of the seconds.
|
|
42
|
-
*/
|
|
43
|
-
separateMilliseconds?: boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Show microseconds and nanoseconds.
|
|
46
|
-
*/
|
|
47
|
-
formatSubMilliseconds?: boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Display time using colon notation: `5h 1m 45s` → `5:01:45`. Always shows time in at least minutes: `1s` → `0:01`
|
|
50
|
-
*
|
|
51
|
-
* Useful when you want to display time without the time units, similar to a digital watch.
|
|
52
|
-
*
|
|
53
|
-
* Setting `colonNotation` to `true` overrides the following options to `false`:
|
|
54
|
-
* - `compact`
|
|
55
|
-
* - `formatSubMilliseconds`
|
|
56
|
-
* - `separateMilliseconds`
|
|
57
|
-
* - `verbose`
|
|
58
|
-
*/
|
|
59
|
-
colonNotation?: boolean;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`.
|
|
63
|
-
* @param milliseconds - Milliseconds to humanize.
|
|
64
|
-
* @param options - Options for humanizing the milliseconds.
|
|
65
|
-
* @returns The humanized string.
|
|
66
|
-
* @example
|
|
67
|
-
* ```
|
|
68
|
-
* import formatMilliseconds from '@oliversalzburg/js-utils/format/milliseconds.js';
|
|
69
|
-
*
|
|
70
|
-
* formatMilliseconds(1337000000);
|
|
71
|
-
* //=> '15d 11h 23m 20s'
|
|
72
|
-
*
|
|
73
|
-
* formatMilliseconds(1337);
|
|
74
|
-
* //=> '1.3s'
|
|
75
|
-
*
|
|
76
|
-
* formatMilliseconds(133);
|
|
77
|
-
* //=> '133ms'
|
|
78
|
-
*
|
|
79
|
-
* // `compact` option
|
|
80
|
-
* formatMilliseconds(1337, {compact: true});
|
|
81
|
-
* //=> '1s'
|
|
82
|
-
*
|
|
83
|
-
* // `verbose` option
|
|
84
|
-
* formatMilliseconds(1335669000, {verbose: true});
|
|
85
|
-
* //=> '15 days 11 hours 1 minute 9 seconds'
|
|
86
|
-
*
|
|
87
|
-
* // `colonNotation` option
|
|
88
|
-
* formatMilliseconds(95500, {colonNotation: true});
|
|
89
|
-
* //=> '1:35.5'
|
|
90
|
-
*
|
|
91
|
-
* // `formatSubMilliseconds` option
|
|
92
|
-
* formatMilliseconds(100.400080, {formatSubMilliseconds: true})
|
|
93
|
-
* //=> '100ms 400µs 80ns'
|
|
94
|
-
*
|
|
95
|
-
* // Can be useful for time durations
|
|
96
|
-
* formatMilliseconds(new Date(2014, 0, 1, 10, 40) - new Date(2014, 0, 1, 10, 5))
|
|
97
|
-
* //=> '35m'
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
export declare const formatMilliseconds: (milliseconds: number | bigint, options?: Readonly<FormatMillisecondsOptions>) => string;
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This code was derived from https://github.com/sindresorhus/parse-ms/tree/a18636bb609793326a1bd8d541aad49f715f0a40
|
|
3
|
-
* and https://github.com/sindresorhus/pretty-ms/tree/763fe075d8a62aa8d9ee603bfad2f3107c3a9f02.
|
|
4
|
-
* It is available under the MIT license.
|
|
5
|
-
*/
|
|
6
|
-
const toZeroIfInfinity = (value) => (Number.isFinite(value) ? value : 0);
|
|
7
|
-
const parseNumber = (milliseconds) => {
|
|
8
|
-
return {
|
|
9
|
-
days: Math.trunc(milliseconds / 86_400_000),
|
|
10
|
-
hours: Math.trunc((milliseconds / 3_600_000) % 24),
|
|
11
|
-
microseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1000) % 1000),
|
|
12
|
-
milliseconds: Math.trunc(milliseconds % 1000),
|
|
13
|
-
minutes: Math.trunc((milliseconds / 60_000) % 60),
|
|
14
|
-
nanoseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1e6) % 1000),
|
|
15
|
-
seconds: Math.trunc((milliseconds / 1000) % 60),
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
const parseBigint = (milliseconds) => {
|
|
19
|
-
return {
|
|
20
|
-
days: milliseconds / 86400000n,
|
|
21
|
-
hours: (milliseconds / 3600000n) % 24n,
|
|
22
|
-
microseconds: 0n,
|
|
23
|
-
milliseconds: milliseconds % 1000n,
|
|
24
|
-
minutes: (milliseconds / 60000n) % 60n,
|
|
25
|
-
nanoseconds: 0n,
|
|
26
|
-
seconds: (milliseconds / 1000n) % 60n,
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
const parseMilliseconds = (milliseconds) => {
|
|
30
|
-
switch (typeof milliseconds) {
|
|
31
|
-
case "number": {
|
|
32
|
-
if (Number.isFinite(milliseconds)) {
|
|
33
|
-
return parseNumber(milliseconds);
|
|
34
|
-
}
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
case "bigint": {
|
|
38
|
-
return parseBigint(milliseconds);
|
|
39
|
-
}
|
|
40
|
-
// No default
|
|
41
|
-
}
|
|
42
|
-
throw new TypeError("Expected a finite number or bigint");
|
|
43
|
-
};
|
|
44
|
-
const isZero = (value) => value === 0 || value === 0n;
|
|
45
|
-
const pluralize = (word, count) => count === 1 || count === 1n ? word : `${word}s`;
|
|
46
|
-
const SECOND_ROUNDING_EPSILON = 0.000_000_1;
|
|
47
|
-
const ONE_DAY_IN_MILLISECONDS = 24n * 60n * 60n * 1000n;
|
|
48
|
-
/**
|
|
49
|
-
* Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`.
|
|
50
|
-
* @param milliseconds - Milliseconds to humanize.
|
|
51
|
-
* @param options - Options for humanizing the milliseconds.
|
|
52
|
-
* @returns The humanized string.
|
|
53
|
-
* @example
|
|
54
|
-
* ```
|
|
55
|
-
* import formatMilliseconds from '@oliversalzburg/js-utils/format/milliseconds.js';
|
|
56
|
-
*
|
|
57
|
-
* formatMilliseconds(1337000000);
|
|
58
|
-
* //=> '15d 11h 23m 20s'
|
|
59
|
-
*
|
|
60
|
-
* formatMilliseconds(1337);
|
|
61
|
-
* //=> '1.3s'
|
|
62
|
-
*
|
|
63
|
-
* formatMilliseconds(133);
|
|
64
|
-
* //=> '133ms'
|
|
65
|
-
*
|
|
66
|
-
* // `compact` option
|
|
67
|
-
* formatMilliseconds(1337, {compact: true});
|
|
68
|
-
* //=> '1s'
|
|
69
|
-
*
|
|
70
|
-
* // `verbose` option
|
|
71
|
-
* formatMilliseconds(1335669000, {verbose: true});
|
|
72
|
-
* //=> '15 days 11 hours 1 minute 9 seconds'
|
|
73
|
-
*
|
|
74
|
-
* // `colonNotation` option
|
|
75
|
-
* formatMilliseconds(95500, {colonNotation: true});
|
|
76
|
-
* //=> '1:35.5'
|
|
77
|
-
*
|
|
78
|
-
* // `formatSubMilliseconds` option
|
|
79
|
-
* formatMilliseconds(100.400080, {formatSubMilliseconds: true})
|
|
80
|
-
* //=> '100ms 400µs 80ns'
|
|
81
|
-
*
|
|
82
|
-
* // Can be useful for time durations
|
|
83
|
-
* formatMilliseconds(new Date(2014, 0, 1, 10, 40) - new Date(2014, 0, 1, 10, 5))
|
|
84
|
-
* //=> '35m'
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
export const formatMilliseconds = (milliseconds, options = {
|
|
88
|
-
colonNotation: false,
|
|
89
|
-
compact: false,
|
|
90
|
-
formatSubMilliseconds: false,
|
|
91
|
-
keepDecimalsOnWholeSeconds: false,
|
|
92
|
-
millisecondsDecimalDigits: 0,
|
|
93
|
-
secondsDecimalDigits: 1,
|
|
94
|
-
separateMilliseconds: false,
|
|
95
|
-
unitCount: Infinity,
|
|
96
|
-
verbose: false,
|
|
97
|
-
}) => {
|
|
98
|
-
const isBigInt = typeof milliseconds === "bigint";
|
|
99
|
-
if (!isBigInt && !Number.isFinite(milliseconds)) {
|
|
100
|
-
throw new TypeError("Expected a finite number or bigint");
|
|
101
|
-
}
|
|
102
|
-
const optionsAdjusted = { ...options };
|
|
103
|
-
if (optionsAdjusted.colonNotation) {
|
|
104
|
-
optionsAdjusted.compact = false;
|
|
105
|
-
optionsAdjusted.formatSubMilliseconds = false;
|
|
106
|
-
optionsAdjusted.separateMilliseconds = false;
|
|
107
|
-
optionsAdjusted.verbose = false;
|
|
108
|
-
}
|
|
109
|
-
if (optionsAdjusted.compact) {
|
|
110
|
-
optionsAdjusted.unitCount = 1;
|
|
111
|
-
optionsAdjusted.secondsDecimalDigits = 0;
|
|
112
|
-
optionsAdjusted.millisecondsDecimalDigits = 0;
|
|
113
|
-
}
|
|
114
|
-
let result = [];
|
|
115
|
-
const floorDecimals = (value, decimalDigits) => {
|
|
116
|
-
const flooredInterimValue = Math.floor(value * 10 ** decimalDigits + SECOND_ROUNDING_EPSILON);
|
|
117
|
-
const flooredValue = Math.round(flooredInterimValue) / 10 ** decimalDigits;
|
|
118
|
-
return flooredValue.toFixed(decimalDigits);
|
|
119
|
-
};
|
|
120
|
-
const add = (value, long, short, valueString) => {
|
|
121
|
-
if ((result.length === 0 || !optionsAdjusted.colonNotation) &&
|
|
122
|
-
isZero(value) &&
|
|
123
|
-
!(optionsAdjusted.colonNotation && short === "m")) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
valueString ??= String(value);
|
|
127
|
-
if (optionsAdjusted.colonNotation) {
|
|
128
|
-
const wholeDigits = valueString.includes(".")
|
|
129
|
-
? valueString.split(".")[0].length
|
|
130
|
-
: valueString.length;
|
|
131
|
-
const minLength = result.length > 0 ? 2 : 1;
|
|
132
|
-
valueString = "0".repeat(Math.max(0, minLength - wholeDigits)) + valueString;
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
valueString += optionsAdjusted.verbose ? " " + pluralize(long, value) : short;
|
|
136
|
-
}
|
|
137
|
-
result.push(valueString);
|
|
138
|
-
};
|
|
139
|
-
const parsed = parseMilliseconds(milliseconds);
|
|
140
|
-
const days = BigInt(parsed.days);
|
|
141
|
-
add(days / 365n, "year", "y");
|
|
142
|
-
add(days % 365n, "day", "d");
|
|
143
|
-
add(Number(parsed.hours), "hour", "h");
|
|
144
|
-
add(Number(parsed.minutes), "minute", "m");
|
|
145
|
-
if (optionsAdjusted.separateMilliseconds ||
|
|
146
|
-
optionsAdjusted.formatSubMilliseconds ||
|
|
147
|
-
(!optionsAdjusted.colonNotation && milliseconds < 1000)) {
|
|
148
|
-
const seconds = Number(parsed.seconds);
|
|
149
|
-
const milliseconds = Number(parsed.milliseconds);
|
|
150
|
-
const microseconds = Number(parsed.microseconds);
|
|
151
|
-
const nanoseconds = Number(parsed.nanoseconds);
|
|
152
|
-
add(seconds, "second", "s");
|
|
153
|
-
if (optionsAdjusted.formatSubMilliseconds) {
|
|
154
|
-
add(milliseconds, "millisecond", "ms");
|
|
155
|
-
add(microseconds, "microsecond", "µs");
|
|
156
|
-
add(nanoseconds, "nanosecond", "ns");
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
const millisecondsAndBelow = milliseconds + microseconds / 1000 + nanoseconds / 1e6;
|
|
160
|
-
const millisecondsDecimalDigits = typeof optionsAdjusted.millisecondsDecimalDigits === "number"
|
|
161
|
-
? optionsAdjusted.millisecondsDecimalDigits
|
|
162
|
-
: 0;
|
|
163
|
-
const roundedMilliseconds = millisecondsAndBelow >= 1
|
|
164
|
-
? Math.round(millisecondsAndBelow)
|
|
165
|
-
: Math.ceil(millisecondsAndBelow);
|
|
166
|
-
const millisecondsString = millisecondsDecimalDigits
|
|
167
|
-
? millisecondsAndBelow.toFixed(millisecondsDecimalDigits)
|
|
168
|
-
: roundedMilliseconds.toString();
|
|
169
|
-
add(Number.parseFloat(millisecondsString), "millisecond", "ms", millisecondsString);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
const seconds = ((isBigInt ? Number(milliseconds % ONE_DAY_IN_MILLISECONDS) : milliseconds) / 1000) % 60;
|
|
174
|
-
const secondsDecimalDigits = typeof optionsAdjusted.secondsDecimalDigits === "number"
|
|
175
|
-
? optionsAdjusted.secondsDecimalDigits
|
|
176
|
-
: 1;
|
|
177
|
-
const secondsFixed = floorDecimals(seconds, secondsDecimalDigits);
|
|
178
|
-
const secondsString = optionsAdjusted.keepDecimalsOnWholeSeconds
|
|
179
|
-
? secondsFixed
|
|
180
|
-
: secondsFixed.replace(/\.0+$/, "");
|
|
181
|
-
add(Number.parseFloat(secondsString), "second", "s", secondsString);
|
|
182
|
-
}
|
|
183
|
-
if (result.length === 0) {
|
|
184
|
-
return "0" + (optionsAdjusted.verbose ? " milliseconds" : "ms");
|
|
185
|
-
}
|
|
186
|
-
const separator = optionsAdjusted.colonNotation ? ":" : " ";
|
|
187
|
-
if (typeof optionsAdjusted.unitCount === "number") {
|
|
188
|
-
result = result.slice(0, Math.max(optionsAdjusted.unitCount, 1));
|
|
189
|
-
}
|
|
190
|
-
return result.join(separator);
|
|
191
|
-
};
|
|
192
|
-
//# sourceMappingURL=milliseconds.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"milliseconds.js","sourceRoot":"","sources":["../../source/format/milliseconds.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|