@oliversalzburg/js-utils 0.5.1-nightly.20251107 → 0.6.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/lib/async/async.test.d.ts +1 -0
  2. package/lib/async/async.test.js +26 -0
  3. package/lib/async/async.test.js.map +1 -0
  4. package/lib/errors/error-serializer.test.d.ts +1 -0
  5. package/lib/errors/error-serializer.test.js +109 -0
  6. package/lib/errors/error-serializer.test.js.map +1 -0
  7. package/lib/format/bytes.test.d.ts +1 -0
  8. package/lib/format/bytes.test.js +138 -0
  9. package/lib/format/bytes.test.js.map +1 -0
  10. package/lib/format/count.test.d.ts +1 -0
  11. package/lib/format/count.test.js +42 -0
  12. package/lib/format/count.test.js.map +1 -0
  13. package/lib/format/milliseconds.test.d.ts +1 -0
  14. package/lib/format/milliseconds.test.js +343 -0
  15. package/lib/format/milliseconds.test.js.map +1 -0
  16. package/lib/format/string.test.d.ts +1 -0
  17. package/lib/format/string.test.js +17 -0
  18. package/lib/format/string.test.js.map +1 -0
  19. package/lib/graphics/palette.test.d.ts +1 -0
  20. package/lib/graphics/palette.test.js +43 -0
  21. package/lib/graphics/palette.test.js.map +1 -0
  22. package/package.json +9 -16
  23. /package/{async → lib/async}/async.d.ts +0 -0
  24. /package/{async → lib/async}/async.js +0 -0
  25. /package/{async → lib/async}/async.js.map +0 -0
  26. /package/{core.d.ts → lib/core.d.ts} +0 -0
  27. /package/{core.js → lib/core.js} +0 -0
  28. /package/{core.js.map → lib/core.js.map} +0 -0
  29. /package/{data → lib/data}/array.d.ts +0 -0
  30. /package/{data → lib/data}/array.js +0 -0
  31. /package/{data → lib/data}/array.js.map +0 -0
  32. /package/{data → lib/data}/nil.d.ts +0 -0
  33. /package/{data → lib/data}/nil.js +0 -0
  34. /package/{data → lib/data}/nil.js.map +0 -0
  35. /package/{data → lib/data}/random.d.ts +0 -0
  36. /package/{data → lib/data}/random.js +0 -0
  37. /package/{data → lib/data}/random.js.map +0 -0
  38. /package/{data → lib/data}/string.d.ts +0 -0
  39. /package/{data → lib/data}/string.js +0 -0
  40. /package/{data → lib/data}/string.js.map +0 -0
  41. /package/{data → lib/data}/tree.d.ts +0 -0
  42. /package/{data → lib/data}/tree.js +0 -0
  43. /package/{data → lib/data}/tree.js.map +0 -0
  44. /package/{device → lib/device}/shake.d.ts +0 -0
  45. /package/{device → lib/device}/shake.js +0 -0
  46. /package/{device → lib/device}/shake.js.map +0 -0
  47. /package/{dom → lib/dom}/core.d.ts +0 -0
  48. /package/{dom → lib/dom}/core.js +0 -0
  49. /package/{dom → lib/dom}/core.js.map +0 -0
  50. /package/{errors → lib/errors}/AbstractError.d.ts +0 -0
  51. /package/{errors → lib/errors}/AbstractError.js +0 -0
  52. /package/{errors → lib/errors}/AbstractError.js.map +0 -0
  53. /package/{errors → lib/errors}/InternalError.d.ts +0 -0
  54. /package/{errors → lib/errors}/InternalError.js +0 -0
  55. /package/{errors → lib/errors}/InternalError.js.map +0 -0
  56. /package/{errors → lib/errors}/InvalidArgumentError.d.ts +0 -0
  57. /package/{errors → lib/errors}/InvalidArgumentError.js +0 -0
  58. /package/{errors → lib/errors}/InvalidArgumentError.js.map +0 -0
  59. /package/{errors → lib/errors}/InvalidOperationError.d.ts +0 -0
  60. /package/{errors → lib/errors}/InvalidOperationError.js +0 -0
  61. /package/{errors → lib/errors}/InvalidOperationError.js.map +0 -0
  62. /package/{errors → lib/errors}/NotImplementedError.d.ts +0 -0
  63. /package/{errors → lib/errors}/NotImplementedError.js +0 -0
  64. /package/{errors → lib/errors}/NotImplementedError.js.map +0 -0
  65. /package/{errors → lib/errors}/PermissionViolationError.d.ts +0 -0
  66. /package/{errors → lib/errors}/PermissionViolationError.js +0 -0
  67. /package/{errors → lib/errors}/PermissionViolationError.js.map +0 -0
  68. /package/{errors → lib/errors}/ResourceConflictError.d.ts +0 -0
  69. /package/{errors → lib/errors}/ResourceConflictError.js +0 -0
  70. /package/{errors → lib/errors}/ResourceConflictError.js.map +0 -0
  71. /package/{errors → lib/errors}/UnknownError.d.ts +0 -0
  72. /package/{errors → lib/errors}/UnknownError.js +0 -0
  73. /package/{errors → lib/errors}/UnknownError.js.map +0 -0
  74. /package/{errors → lib/errors}/console.d.ts +0 -0
  75. /package/{errors → lib/errors}/console.js +0 -0
  76. /package/{errors → lib/errors}/console.js.map +0 -0
  77. /package/{errors → lib/errors}/error-serializer.d.ts +0 -0
  78. /package/{errors → lib/errors}/error-serializer.js +0 -0
  79. /package/{errors → lib/errors}/error-serializer.js.map +0 -0
  80. /package/{errors → lib/errors}/stream.d.ts +0 -0
  81. /package/{errors → lib/errors}/stream.js +0 -0
  82. /package/{errors → lib/errors}/stream.js.map +0 -0
  83. /package/{errors → lib/errors}/tools.d.ts +0 -0
  84. /package/{errors → lib/errors}/tools.js +0 -0
  85. /package/{errors → lib/errors}/tools.js.map +0 -0
  86. /package/{events → lib/events}/event.d.ts +0 -0
  87. /package/{events → lib/events}/event.js +0 -0
  88. /package/{events → lib/events}/event.js.map +0 -0
  89. /package/{format → lib/format}/bytes.d.ts +0 -0
  90. /package/{format → lib/format}/bytes.js +0 -0
  91. /package/{format → lib/format}/bytes.js.map +0 -0
  92. /package/{format → lib/format}/count.d.ts +0 -0
  93. /package/{format → lib/format}/count.js +0 -0
  94. /package/{format → lib/format}/count.js.map +0 -0
  95. /package/{format → lib/format}/milliseconds.d.ts +0 -0
  96. /package/{format → lib/format}/milliseconds.js +0 -0
  97. /package/{format → lib/format}/milliseconds.js.map +0 -0
  98. /package/{format → lib/format}/string.d.ts +0 -0
  99. /package/{format → lib/format}/string.js +0 -0
  100. /package/{format → lib/format}/string.js.map +0 -0
  101. /package/{graphics → lib/graphics}/canvas-sandbox-mp.d.ts +0 -0
  102. /package/{graphics → lib/graphics}/canvas-sandbox-mp.js +0 -0
  103. /package/{graphics → lib/graphics}/canvas-sandbox-mp.js.map +0 -0
  104. /package/{graphics → lib/graphics}/canvas-sandbox.d.ts +0 -0
  105. /package/{graphics → lib/graphics}/canvas-sandbox.js +0 -0
  106. /package/{graphics → lib/graphics}/canvas-sandbox.js.map +0 -0
  107. /package/{graphics → lib/graphics}/canvas.d.ts +0 -0
  108. /package/{graphics → lib/graphics}/canvas.js +0 -0
  109. /package/{graphics → lib/graphics}/canvas.js.map +0 -0
  110. /package/{graphics → lib/graphics}/canvas2d-headless.d.ts +0 -0
  111. /package/{graphics → lib/graphics}/canvas2d-headless.js +0 -0
  112. /package/{graphics → lib/graphics}/canvas2d-headless.js.map +0 -0
  113. /package/{graphics → lib/graphics}/canvas2d.d.ts +0 -0
  114. /package/{graphics → lib/graphics}/canvas2d.js +0 -0
  115. /package/{graphics → lib/graphics}/canvas2d.js.map +0 -0
  116. /package/{graphics → lib/graphics}/canvas3d.d.ts +0 -0
  117. /package/{graphics → lib/graphics}/canvas3d.js +0 -0
  118. /package/{graphics → lib/graphics}/canvas3d.js.map +0 -0
  119. /package/{graphics → lib/graphics}/color.d.ts +0 -0
  120. /package/{graphics → lib/graphics}/color.js +0 -0
  121. /package/{graphics → lib/graphics}/color.js.map +0 -0
  122. /package/{graphics → lib/graphics}/core.d.ts +0 -0
  123. /package/{graphics → lib/graphics}/core.js +0 -0
  124. /package/{graphics → lib/graphics}/core.js.map +0 -0
  125. /package/{graphics → lib/graphics}/palette-sampler.d.ts +0 -0
  126. /package/{graphics → lib/graphics}/palette-sampler.js +0 -0
  127. /package/{graphics → lib/graphics}/palette-sampler.js.map +0 -0
  128. /package/{graphics → lib/graphics}/palette.d.ts +0 -0
  129. /package/{graphics → lib/graphics}/palette.js +0 -0
  130. /package/{graphics → lib/graphics}/palette.js.map +0 -0
  131. /package/{graphics → lib/graphics}/render-loop.d.ts +0 -0
  132. /package/{graphics → lib/graphics}/render-loop.js +0 -0
  133. /package/{graphics → lib/graphics}/render-loop.js.map +0 -0
  134. /package/{graphics → lib/graphics}/shader.d.ts +0 -0
  135. /package/{graphics → lib/graphics}/shader.js +0 -0
  136. /package/{graphics → lib/graphics}/shader.js.map +0 -0
  137. /package/{log → lib/log}/log.d.ts +0 -0
  138. /package/{log → lib/log}/log.js +0 -0
  139. /package/{log → lib/log}/log.js.map +0 -0
  140. /package/{log → lib/log}/report.d.ts +0 -0
  141. /package/{log → lib/log}/report.js +0 -0
  142. /package/{log → lib/log}/report.js.map +0 -0
  143. /package/{math → lib/math}/core.d.ts +0 -0
  144. /package/{math → lib/math}/core.js +0 -0
  145. /package/{math → lib/math}/core.js.map +0 -0
  146. /package/{math → lib/math}/easing.d.ts +0 -0
  147. /package/{math → lib/math}/easing.js +0 -0
  148. /package/{math → lib/math}/easing.js.map +0 -0
  149. /package/{math → lib/math}/euler.d.ts +0 -0
  150. /package/{math → lib/math}/euler.js +0 -0
  151. /package/{math → lib/math}/euler.js.map +0 -0
  152. /package/{math → lib/math}/matrix3.d.ts +0 -0
  153. /package/{math → lib/math}/matrix3.js +0 -0
  154. /package/{math → lib/math}/matrix3.js.map +0 -0
  155. /package/{math → lib/math}/quaternion.d.ts +0 -0
  156. /package/{math → lib/math}/quaternion.js +0 -0
  157. /package/{math → lib/math}/quaternion.js.map +0 -0
  158. /package/{math → lib/math}/transformation.d.ts +0 -0
  159. /package/{math → lib/math}/transformation.js +0 -0
  160. /package/{math → lib/math}/transformation.js.map +0 -0
  161. /package/{math → lib/math}/vector2.d.ts +0 -0
  162. /package/{math → lib/math}/vector2.js +0 -0
  163. /package/{math → lib/math}/vector2.js.map +0 -0
  164. /package/{math → lib/math}/vector3.d.ts +0 -0
  165. /package/{math → lib/math}/vector3.js +0 -0
  166. /package/{math → lib/math}/vector3.js.map +0 -0
  167. /package/{math → lib/math}/vector4.d.ts +0 -0
  168. /package/{math → lib/math}/vector4.js +0 -0
  169. /package/{math → lib/math}/vector4.js.map +0 -0
  170. /package/{measurement → lib/measurement}/performance.d.ts +0 -0
  171. /package/{measurement → lib/measurement}/performance.js +0 -0
  172. /package/{measurement → lib/measurement}/performance.js.map +0 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import assert from "node:assert";
2
+ import { it } from "node:test";
3
+ import { prepareAsyncContext, sleep } from "./async.js";
4
+ it("executes trivial callback", async () => {
5
+ let executed = false;
6
+ const callback = prepareAsyncContext(async () => {
7
+ await sleep(1);
8
+ executed = true;
9
+ });
10
+ callback();
11
+ await sleep(100);
12
+ assert.strictEqual(executed, true);
13
+ });
14
+ it("passes parameters to callback", async () => {
15
+ let executed = false;
16
+ const callback = prepareAsyncContext(async (event, eventId) => {
17
+ assert.strictEqual(event.name, "call");
18
+ assert.strictEqual(eventId, 42);
19
+ await sleep(1);
20
+ executed = true;
21
+ });
22
+ callback({ name: "call" }, 42);
23
+ await sleep(100);
24
+ assert.strictEqual(executed, true);
25
+ });
26
+ //# sourceMappingURL=async.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.test.js","sourceRoot":"","sources":["../../source/async/async.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,IAAI,EAAE;QAC9C,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QACf,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,QAAQ,EAAE,CAAC;IAEX,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;IAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAA6B,EAAE,OAAe,EAAE,EAAE;QAC5F,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QACf,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAE/B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,109 @@
1
+ import assert from "node:assert";
2
+ import { it } from "node:test";
3
+ import { errorToJSON, errorToRecord, errorToSimpleSerializable, isError, unknownToError, } from "./error-serializer.js";
4
+ import { InternalError } from "./InternalError.js";
5
+ import { InvalidArgumentError } from "./InvalidArgumentError.js";
6
+ function generateDefaultError() {
7
+ try {
8
+ throw new Error("oops");
9
+ }
10
+ catch (error) {
11
+ return error;
12
+ }
13
+ }
14
+ it("unknown to Error: AbstractError", () => {
15
+ const subjectError = new InvalidArgumentError("oops");
16
+ const serialized = unknownToError(subjectError);
17
+ assert.strictEqual(serialized.code, "ERR_OS_INVALID_ARGUMENT");
18
+ assert.strictEqual(serialized.message, "oops");
19
+ assert.strictEqual(serialized.name, "InvalidArgumentError");
20
+ assert.strictEqual(typeof serialized.stack, "string");
21
+ });
22
+ it("unknown to Error: Error", () => {
23
+ const subjectError = new Error("oops");
24
+ const serialized = unknownToError(subjectError);
25
+ assert.strictEqual(serialized.code, "ERR_OS_INTERNAL");
26
+ assert.strictEqual(serialized.message, "oops");
27
+ assert.strictEqual(serialized.name, "InternalError");
28
+ assert.strictEqual(typeof serialized.stack, "string");
29
+ });
30
+ it("unknown to Error: string", () => {
31
+ const subjectError = "oops";
32
+ const serialized = unknownToError(subjectError);
33
+ assert.strictEqual(serialized.code, "ERR_OS_UNKNOWN");
34
+ assert.strictEqual(serialized.message, "oops");
35
+ assert.strictEqual(serialized.name, "UnknownError");
36
+ assert.strictEqual(typeof serialized.stack, "string");
37
+ });
38
+ it("unknown to Error: null", () => {
39
+ const subjectError = null;
40
+ const serialized = unknownToError(subjectError);
41
+ assert.strictEqual(serialized.code, "ERR_OS_UNKNOWN");
42
+ assert.strictEqual(serialized.message, "null");
43
+ assert.strictEqual(serialized.name, "UnknownError");
44
+ assert.strictEqual(typeof serialized.stack, "string");
45
+ });
46
+ it("serializes an error to JSON", () => {
47
+ const subjectError = new Error("oops");
48
+ const plain = JSON.stringify(subjectError);
49
+ const serialized = errorToJSON(subjectError);
50
+ // We assert.strictEqual more properties to have been serialized into the string.
51
+ assert.notStrictEqual(serialized, plain);
52
+ assert.strictEqual(plain.length < serialized.length, true);
53
+ });
54
+ it("serializes an error to a record: Error", () => {
55
+ const subjectError = new Error("oops");
56
+ const serialized = errorToRecord(subjectError);
57
+ assert.strictEqual(isError(subjectError), true);
58
+ assert.strictEqual(isError(serialized), false);
59
+ assert.strictEqual(serialized.message, "oops");
60
+ assert.strictEqual(typeof serialized.stack, "string");
61
+ });
62
+ it("serializes an error to a record: Default Error", () => {
63
+ const subjectError = generateDefaultError();
64
+ const serialized = errorToRecord(subjectError);
65
+ assert.strictEqual(isError(subjectError), true);
66
+ assert.strictEqual(isError(serialized), false);
67
+ assert.strictEqual(serialized.code, undefined);
68
+ assert.strictEqual(serialized.message, "oops");
69
+ assert.strictEqual(serialized.name, undefined);
70
+ assert.strictEqual(typeof serialized.stack, "string");
71
+ });
72
+ it("serializes an error to a record: Node Error", async function () {
73
+ let error;
74
+ try {
75
+ assert(false, "oops");
76
+ }
77
+ catch (thrownError) {
78
+ error = thrownError;
79
+ }
80
+ const subjectError = error;
81
+ const serialized = errorToRecord(subjectError);
82
+ assert.strictEqual(isError(subjectError), true);
83
+ assert.strictEqual(isError(serialized), false);
84
+ assert.strictEqual(serialized.code, "ERR_ASSERTION");
85
+ assert.strictEqual(serialized.message, "oops");
86
+ assert.strictEqual(serialized.name, "AssertionError");
87
+ assert.strictEqual(typeof serialized.stack, "string");
88
+ });
89
+ it("serializes an error to a simple object for persistence: Error", () => {
90
+ const subjectError = InternalError.fromError(new Error("oops"));
91
+ const serialized = errorToSimpleSerializable(subjectError);
92
+ assert.strictEqual(isError(subjectError), true);
93
+ assert.strictEqual(isError(serialized), false);
94
+ assert.strictEqual(serialized.code, "ERR_OS_INTERNAL");
95
+ assert.strictEqual(serialized.message, "oops");
96
+ assert.strictEqual(serialized.name, "InternalError");
97
+ assert.strictEqual(typeof serialized.stack, "string");
98
+ });
99
+ it("serializes an error to a simple object for persistence: Node Error", () => {
100
+ const subjectError = InternalError.fromError(generateDefaultError());
101
+ const serialized = errorToSimpleSerializable(subjectError);
102
+ assert.strictEqual(isError(subjectError), true);
103
+ assert.strictEqual(isError(serialized), false);
104
+ assert.strictEqual(serialized.code, "ERR_OS_INTERNAL");
105
+ assert.strictEqual(serialized.message, "oops");
106
+ assert.strictEqual(serialized.name, "InternalError");
107
+ assert.strictEqual(typeof serialized.stack, "string");
108
+ });
109
+ //# sourceMappingURL=error-serializer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-serializer.test.js","sourceRoot":"","sources":["../../source/errors/error-serializer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,138 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.test.js","sourceRoot":"","sources":["../../source/format/bytes.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
1
+ export {};