@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.
Files changed (172) hide show
  1. package/package.json +5 -5
  2. package/lib/async/async.d.ts +0 -44
  3. package/lib/async/async.js +0 -76
  4. package/lib/async/async.js.map +0 -1
  5. package/lib/async/async.test.d.ts +0 -1
  6. package/lib/async/async.test.js +0 -26
  7. package/lib/async/async.test.js.map +0 -1
  8. package/lib/core.d.ts +0 -43
  9. package/lib/core.js +0 -2
  10. package/lib/core.js.map +0 -1
  11. package/lib/data/array.d.ts +0 -45
  12. package/lib/data/array.js +0 -70
  13. package/lib/data/array.js.map +0 -1
  14. package/lib/data/nil.d.ts +0 -92
  15. package/lib/data/nil.js +0 -131
  16. package/lib/data/nil.js.map +0 -1
  17. package/lib/data/random.d.ts +0 -111
  18. package/lib/data/random.js +0 -377
  19. package/lib/data/random.js.map +0 -1
  20. package/lib/data/string.d.ts +0 -30
  21. package/lib/data/string.js +0 -52
  22. package/lib/data/string.js.map +0 -1
  23. package/lib/data/tree.d.ts +0 -28
  24. package/lib/data/tree.js +0 -45
  25. package/lib/data/tree.js.map +0 -1
  26. package/lib/device/shake.d.ts +0 -79
  27. package/lib/device/shake.js +0 -135
  28. package/lib/device/shake.js.map +0 -1
  29. package/lib/dom/core.d.ts +0 -21
  30. package/lib/dom/core.js +0 -41
  31. package/lib/dom/core.js.map +0 -1
  32. package/lib/errors/AbstractError.d.ts +0 -29
  33. package/lib/errors/AbstractError.js +0 -59
  34. package/lib/errors/AbstractError.js.map +0 -1
  35. package/lib/errors/InternalError.d.ts +0 -19
  36. package/lib/errors/InternalError.js +0 -38
  37. package/lib/errors/InternalError.js.map +0 -1
  38. package/lib/errors/InvalidArgumentError.d.ts +0 -13
  39. package/lib/errors/InvalidArgumentError.js +0 -22
  40. package/lib/errors/InvalidArgumentError.js.map +0 -1
  41. package/lib/errors/InvalidOperationError.d.ts +0 -13
  42. package/lib/errors/InvalidOperationError.js +0 -22
  43. package/lib/errors/InvalidOperationError.js.map +0 -1
  44. package/lib/errors/NotImplementedError.d.ts +0 -12
  45. package/lib/errors/NotImplementedError.js +0 -21
  46. package/lib/errors/NotImplementedError.js.map +0 -1
  47. package/lib/errors/PermissionViolationError.d.ts +0 -13
  48. package/lib/errors/PermissionViolationError.js +0 -22
  49. package/lib/errors/PermissionViolationError.js.map +0 -1
  50. package/lib/errors/ResourceConflictError.d.ts +0 -12
  51. package/lib/errors/ResourceConflictError.js +0 -21
  52. package/lib/errors/ResourceConflictError.js.map +0 -1
  53. package/lib/errors/UnknownError.d.ts +0 -16
  54. package/lib/errors/UnknownError.js +0 -25
  55. package/lib/errors/UnknownError.js.map +0 -1
  56. package/lib/errors/console.d.ts +0 -7
  57. package/lib/errors/console.js +0 -13
  58. package/lib/errors/console.js.map +0 -1
  59. package/lib/errors/error-serializer.d.ts +0 -45
  60. package/lib/errors/error-serializer.js +0 -71
  61. package/lib/errors/error-serializer.js.map +0 -1
  62. package/lib/errors/error-serializer.test.d.ts +0 -1
  63. package/lib/errors/error-serializer.test.js +0 -109
  64. package/lib/errors/error-serializer.test.js.map +0 -1
  65. package/lib/errors/stream.d.ts +0 -7
  66. package/lib/errors/stream.js +0 -15
  67. package/lib/errors/stream.js.map +0 -1
  68. package/lib/errors/tools.d.ts +0 -10
  69. package/lib/errors/tools.js +0 -13
  70. package/lib/errors/tools.js.map +0 -1
  71. package/lib/events/event.d.ts +0 -9
  72. package/lib/events/event.js +0 -10
  73. package/lib/events/event.js.map +0 -1
  74. package/lib/format/bytes.d.ts +0 -118
  75. package/lib/format/bytes.js +0 -99
  76. package/lib/format/bytes.js.map +0 -1
  77. package/lib/format/bytes.test.d.ts +0 -1
  78. package/lib/format/bytes.test.js +0 -138
  79. package/lib/format/bytes.test.js.map +0 -1
  80. package/lib/format/count.d.ts +0 -14
  81. package/lib/format/count.js +0 -50
  82. package/lib/format/count.js.map +0 -1
  83. package/lib/format/count.test.d.ts +0 -1
  84. package/lib/format/count.test.js +0 -42
  85. package/lib/format/count.test.js.map +0 -1
  86. package/lib/format/milliseconds.d.ts +0 -100
  87. package/lib/format/milliseconds.js +0 -192
  88. package/lib/format/milliseconds.js.map +0 -1
  89. package/lib/format/milliseconds.test.d.ts +0 -1
  90. package/lib/format/milliseconds.test.js +0 -343
  91. package/lib/format/milliseconds.test.js.map +0 -1
  92. package/lib/format/string.d.ts +0 -24
  93. package/lib/format/string.js +0 -30
  94. package/lib/format/string.js.map +0 -1
  95. package/lib/format/string.test.d.ts +0 -1
  96. package/lib/format/string.test.js +0 -17
  97. package/lib/format/string.test.js.map +0 -1
  98. package/lib/graphics/canvas-sandbox-mp.d.ts +0 -258
  99. package/lib/graphics/canvas-sandbox-mp.js +0 -279
  100. package/lib/graphics/canvas-sandbox-mp.js.map +0 -1
  101. package/lib/graphics/canvas-sandbox.d.ts +0 -255
  102. package/lib/graphics/canvas-sandbox.js +0 -361
  103. package/lib/graphics/canvas-sandbox.js.map +0 -1
  104. package/lib/graphics/canvas.d.ts +0 -57
  105. package/lib/graphics/canvas.js +0 -37
  106. package/lib/graphics/canvas.js.map +0 -1
  107. package/lib/graphics/canvas2d-headless.d.ts +0 -85
  108. package/lib/graphics/canvas2d-headless.js +0 -193
  109. package/lib/graphics/canvas2d-headless.js.map +0 -1
  110. package/lib/graphics/canvas2d.d.ts +0 -162
  111. package/lib/graphics/canvas2d.js +0 -328
  112. package/lib/graphics/canvas2d.js.map +0 -1
  113. package/lib/graphics/canvas3d.d.ts +0 -41
  114. package/lib/graphics/canvas3d.js +0 -67
  115. package/lib/graphics/canvas3d.js.map +0 -1
  116. package/lib/graphics/color.d.ts +0 -22
  117. package/lib/graphics/color.js +0 -42
  118. package/lib/graphics/color.js.map +0 -1
  119. package/lib/graphics/core.d.ts +0 -89
  120. package/lib/graphics/core.js +0 -146
  121. package/lib/graphics/core.js.map +0 -1
  122. package/lib/graphics/palette-sampler.d.ts +0 -7
  123. package/lib/graphics/palette-sampler.js +0 -21
  124. package/lib/graphics/palette-sampler.js.map +0 -1
  125. package/lib/graphics/palette.d.ts +0 -120
  126. package/lib/graphics/palette.js +0 -494
  127. package/lib/graphics/palette.js.map +0 -1
  128. package/lib/graphics/palette.test.d.ts +0 -1
  129. package/lib/graphics/palette.test.js +0 -43
  130. package/lib/graphics/palette.test.js.map +0 -1
  131. package/lib/graphics/render-loop.d.ts +0 -80
  132. package/lib/graphics/render-loop.js +0 -120
  133. package/lib/graphics/render-loop.js.map +0 -1
  134. package/lib/graphics/shader.d.ts +0 -56
  135. package/lib/graphics/shader.js +0 -80
  136. package/lib/graphics/shader.js.map +0 -1
  137. package/lib/log/log.d.ts +0 -11
  138. package/lib/log/log.js +0 -2
  139. package/lib/log/log.js.map +0 -1
  140. package/lib/log/report.d.ts +0 -57
  141. package/lib/log/report.js +0 -88
  142. package/lib/log/report.js.map +0 -1
  143. package/lib/math/core.d.ts +0 -85
  144. package/lib/math/core.js +0 -125
  145. package/lib/math/core.js.map +0 -1
  146. package/lib/math/easing.d.ts +0 -204
  147. package/lib/math/easing.js +0 -332
  148. package/lib/math/easing.js.map +0 -1
  149. package/lib/math/euler.d.ts +0 -18
  150. package/lib/math/euler.js +0 -22
  151. package/lib/math/euler.js.map +0 -1
  152. package/lib/math/matrix3.d.ts +0 -217
  153. package/lib/math/matrix3.js +0 -508
  154. package/lib/math/matrix3.js.map +0 -1
  155. package/lib/math/quaternion.d.ts +0 -119
  156. package/lib/math/quaternion.js +0 -270
  157. package/lib/math/quaternion.js.map +0 -1
  158. package/lib/math/transformation.d.ts +0 -26
  159. package/lib/math/transformation.js +0 -31
  160. package/lib/math/transformation.js.map +0 -1
  161. package/lib/math/vector2.d.ts +0 -202
  162. package/lib/math/vector2.js +0 -310
  163. package/lib/math/vector2.js.map +0 -1
  164. package/lib/math/vector3.d.ts +0 -293
  165. package/lib/math/vector3.js +0 -492
  166. package/lib/math/vector3.js.map +0 -1
  167. package/lib/math/vector4.d.ts +0 -182
  168. package/lib/math/vector4.js +0 -302
  169. package/lib/math/vector4.js.map +0 -1
  170. package/lib/measurement/performance.d.ts +0 -13
  171. package/lib/measurement/performance.js +0 -19
  172. package/lib/measurement/performance.js.map +0 -1
@@ -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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"}
@@ -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;
@@ -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
@@ -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 {};
@@ -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":"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"}
@@ -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 {};