@oidoid/void 0.1.7 → 0.1.9

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 (190) hide show
  1. package/dist/public/index.js +6 -6
  2. package/dist/public/index.js.map +3 -3
  3. package/dist/public/void-v0.1.9+20260107.c0d3006.html +115 -0
  4. package/dist/src/demo/ents/clock.test.d.ts +2 -0
  5. package/dist/src/demo/ents/clock.test.d.ts.map +1 -0
  6. package/dist/src/demo/ents/clock.test.js +24 -0
  7. package/dist/src/demo/ents/clock.test.js.map +1 -0
  8. package/dist/src/demo/tsconfig.json +3 -3
  9. package/dist/src/ents/cursor.test.d.ts +2 -0
  10. package/dist/src/ents/cursor.test.d.ts.map +1 -0
  11. package/dist/src/ents/cursor.test.js +92 -0
  12. package/dist/src/ents/cursor.test.js.map +1 -0
  13. package/dist/src/ents/ent-query.test.d.ts +11 -0
  14. package/dist/src/ents/ent-query.test.d.ts.map +1 -0
  15. package/dist/src/ents/ent-query.test.js +63 -0
  16. package/dist/src/ents/ent-query.test.js.map +1 -0
  17. package/dist/src/graphics/atlas-parser.test.d.ts +2 -0
  18. package/dist/src/graphics/atlas-parser.test.d.ts.map +1 -0
  19. package/dist/src/graphics/atlas-parser.test.js +100 -0
  20. package/dist/src/graphics/atlas-parser.test.js.map +1 -0
  21. package/dist/src/graphics/cam.test.d.ts +2 -0
  22. package/dist/src/graphics/cam.test.d.ts.map +1 -0
  23. package/dist/src/graphics/cam.test.js +456 -0
  24. package/dist/src/graphics/cam.test.js.map +1 -0
  25. package/dist/src/graphics/layer.test.d.ts +2 -0
  26. package/dist/src/graphics/layer.test.d.ts.map +1 -0
  27. package/dist/src/graphics/layer.test.js +23 -0
  28. package/dist/src/graphics/layer.test.js.map +1 -0
  29. package/dist/src/graphics/renderer.test.d.ts +2 -0
  30. package/dist/src/graphics/renderer.test.d.ts.map +1 -0
  31. package/dist/src/graphics/renderer.test.js +92 -0
  32. package/dist/src/graphics/renderer.test.js.map +1 -0
  33. package/dist/src/graphics/sprite.d.ts +3 -0
  34. package/dist/src/graphics/sprite.d.ts.map +1 -1
  35. package/dist/src/graphics/sprite.js +13 -2
  36. package/dist/src/graphics/sprite.js.map +1 -1
  37. package/dist/src/graphics/sprite.test.d.ts +2 -0
  38. package/dist/src/graphics/sprite.test.d.ts.map +1 -0
  39. package/dist/src/graphics/sprite.test.js +608 -0
  40. package/dist/src/graphics/sprite.test.js.map +1 -0
  41. package/dist/src/index.d.ts.map +1 -1
  42. package/dist/src/index.js +0 -1
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/input/context-menu.test.d.ts +2 -0
  45. package/dist/src/input/context-menu.test.d.ts.map +1 -0
  46. package/dist/src/input/context-menu.test.js +111 -0
  47. package/dist/src/input/context-menu.test.js.map +1 -0
  48. package/dist/src/input/gamepad.test.d.ts +2 -0
  49. package/dist/src/input/gamepad.test.d.ts.map +1 -0
  50. package/dist/src/input/gamepad.test.js +172 -0
  51. package/dist/src/input/gamepad.test.js.map +1 -0
  52. package/dist/src/input/input.js +10 -10
  53. package/dist/src/input/input.js.map +1 -1
  54. package/dist/src/input/input.test.d.ts +2 -0
  55. package/dist/src/input/input.test.d.ts.map +1 -0
  56. package/dist/src/input/input.test.js +1146 -0
  57. package/dist/src/input/input.test.js.map +1 -0
  58. package/dist/src/input/keyboard.test.d.ts +2 -0
  59. package/dist/src/input/keyboard.test.d.ts.map +1 -0
  60. package/dist/src/input/keyboard.test.js +159 -0
  61. package/dist/src/input/keyboard.test.js.map +1 -0
  62. package/dist/src/input/pointer.test.d.ts +2 -0
  63. package/dist/src/input/pointer.test.d.ts.map +1 -0
  64. package/dist/src/input/pointer.test.js +339 -0
  65. package/dist/src/input/pointer.test.js.map +1 -0
  66. package/dist/src/input/wheel.test.d.ts +2 -0
  67. package/dist/src/input/wheel.test.d.ts.map +1 -0
  68. package/dist/src/input/wheel.test.js +92 -0
  69. package/dist/src/input/wheel.test.js.map +1 -0
  70. package/dist/src/level/level-parser.test.d.ts +20 -0
  71. package/dist/src/level/level-parser.test.d.ts.map +1 -0
  72. package/dist/src/level/level-parser.test.js +340 -0
  73. package/dist/src/level/level-parser.test.js.map +1 -0
  74. package/dist/src/looper.d.ts.map +1 -1
  75. package/dist/src/looper.js +9 -2
  76. package/dist/src/looper.js.map +1 -1
  77. package/dist/src/looper.test.d.ts +2 -0
  78. package/dist/src/looper.test.d.ts.map +1 -0
  79. package/dist/src/looper.test.js +128 -0
  80. package/dist/src/looper.test.js.map +1 -0
  81. package/dist/src/mem/pool.test.d.ts +2 -0
  82. package/dist/src/mem/pool.test.d.ts.map +1 -0
  83. package/dist/src/mem/pool.test.js +120 -0
  84. package/dist/src/mem/pool.test.js.map +1 -0
  85. package/dist/src/random/random.test.d.ts +2 -0
  86. package/dist/src/random/random.test.d.ts.map +1 -0
  87. package/dist/src/random/random.test.js +36 -0
  88. package/dist/src/random/random.test.js.map +1 -0
  89. package/dist/src/storage/local-storage.test.d.ts +2 -0
  90. package/dist/src/storage/local-storage.test.d.ts.map +1 -0
  91. package/dist/src/storage/local-storage.test.js +105 -0
  92. package/dist/src/storage/local-storage.test.js.map +1 -0
  93. package/dist/src/test/assert.d.ts +5 -0
  94. package/dist/src/test/assert.d.ts.map +1 -0
  95. package/dist/src/test/assert.js +6 -0
  96. package/dist/src/test/assert.js.map +1 -0
  97. package/dist/src/test/device-pixel-ratio-mock.d.ts +6 -0
  98. package/dist/src/test/device-pixel-ratio-mock.d.ts.map +1 -0
  99. package/dist/src/test/device-pixel-ratio-mock.js +10 -0
  100. package/dist/src/test/device-pixel-ratio-mock.js.map +1 -0
  101. package/dist/src/test/index.d.ts +5 -0
  102. package/dist/src/test/index.d.ts.map +1 -0
  103. package/dist/src/test/index.js +5 -0
  104. package/dist/src/test/index.js.map +1 -0
  105. package/dist/src/test/navigator-gamepads-mock.d.ts +7 -0
  106. package/dist/src/test/navigator-gamepads-mock.d.ts.map +1 -0
  107. package/dist/src/test/navigator-gamepads-mock.js +14 -0
  108. package/dist/src/test/navigator-gamepads-mock.js.map +1 -0
  109. package/dist/src/test/secure-context-mock.d.ts +6 -0
  110. package/dist/src/test/secure-context-mock.d.ts.map +1 -0
  111. package/dist/src/test/secure-context-mock.js +10 -0
  112. package/dist/src/test/secure-context-mock.js.map +1 -0
  113. package/dist/src/test/test-element.d.ts +2 -0
  114. package/dist/src/test/test-element.d.ts.map +1 -0
  115. package/dist/src/test/test-element.js +8 -0
  116. package/dist/src/test/test-element.js.map +1 -0
  117. package/dist/src/test/test-event.d.ts +17 -0
  118. package/dist/src/test/test-event.d.ts.map +1 -0
  119. package/dist/src/test/test-event.js +26 -0
  120. package/dist/src/test/test-event.js.map +1 -0
  121. package/dist/src/test/tsconfig.json +30 -0
  122. package/dist/src/text/text-layout.test.d.ts +2 -0
  123. package/dist/src/text/text-layout.test.d.ts.map +1 -0
  124. package/dist/src/text/text-layout.test.js +717 -0
  125. package/dist/src/text/text-layout.test.js.map +1 -0
  126. package/dist/src/tsconfig.json +3 -3
  127. package/dist/src/types/geo.d.ts +2 -0
  128. package/dist/src/types/geo.d.ts.map +1 -1
  129. package/dist/src/types/geo.js +11 -0
  130. package/dist/src/types/geo.js.map +1 -1
  131. package/dist/src/types/geo.test.d.ts +2 -0
  132. package/dist/src/types/geo.test.d.ts.map +1 -0
  133. package/dist/src/types/geo.test.js +684 -0
  134. package/dist/src/types/geo.test.js.map +1 -0
  135. package/dist/src/types/time.test.d.ts +2 -0
  136. package/dist/src/types/time.test.d.ts.map +1 -0
  137. package/dist/src/types/time.test.js +27 -0
  138. package/dist/src/types/time.test.js.map +1 -0
  139. package/dist/src/utils/async-util.test.d.ts +2 -0
  140. package/dist/src/utils/async-util.test.d.ts.map +1 -0
  141. package/dist/src/utils/async-util.test.js +55 -0
  142. package/dist/src/utils/async-util.test.js.map +1 -0
  143. package/dist/src/utils/color-util.test.d.ts +2 -0
  144. package/dist/src/utils/color-util.test.d.ts.map +1 -0
  145. package/dist/src/utils/color-util.test.js +20 -0
  146. package/dist/src/utils/color-util.test.js.map +1 -0
  147. package/dist/src/utils/debug.d.ts +1 -0
  148. package/dist/src/utils/debug.d.ts.map +1 -1
  149. package/dist/src/utils/debug.js +1 -0
  150. package/dist/src/utils/debug.js.map +1 -1
  151. package/dist/src/utils/debug.test.d.ts +2 -0
  152. package/dist/src/utils/debug.test.d.ts.map +1 -0
  153. package/dist/src/utils/debug.test.js +61 -0
  154. package/dist/src/utils/debug.test.js.map +1 -0
  155. package/dist/src/utils/delay-interval.test.d.ts +2 -0
  156. package/dist/src/utils/delay-interval.test.d.ts.map +1 -0
  157. package/dist/src/utils/delay-interval.test.js +91 -0
  158. package/dist/src/utils/delay-interval.test.js.map +1 -0
  159. package/dist/src/utils/math.d.ts +1 -0
  160. package/dist/src/utils/math.d.ts.map +1 -1
  161. package/dist/src/utils/math.js +3 -0
  162. package/dist/src/utils/math.js.map +1 -1
  163. package/dist/src/utils/math.test.d.ts +2 -0
  164. package/dist/src/utils/math.test.d.ts.map +1 -0
  165. package/dist/src/utils/math.test.js +10 -0
  166. package/dist/src/utils/math.test.js.map +1 -0
  167. package/dist/src/utils/str-util.test.d.ts +2 -0
  168. package/dist/src/utils/str-util.test.d.ts.map +1 -0
  169. package/dist/src/utils/str-util.test.js +13 -0
  170. package/dist/src/utils/str-util.test.js.map +1 -0
  171. package/dist/tools/atlas-pack/atlas-json-parser.test.d.ts +2 -0
  172. package/dist/tools/atlas-pack/atlas-json-parser.test.d.ts.map +1 -0
  173. package/dist/tools/atlas-pack/atlas-json-parser.test.js +2109 -0
  174. package/dist/tools/atlas-pack/atlas-json-parser.test.js.map +1 -0
  175. package/dist/tools/atlas-pack/atlas.test.aseprite.json +4499 -0
  176. package/dist/tools/bundle/bundle.js +1 -1
  177. package/dist/tools/types/config-file.test.d.ts +2 -0
  178. package/dist/tools/types/config-file.test.d.ts.map +1 -0
  179. package/dist/tools/types/config-file.test.js +68 -0
  180. package/dist/tools/types/config-file.test.js.map +1 -0
  181. package/dist/tools/types/config.test.d.ts +2 -0
  182. package/dist/tools/types/config.test.d.ts.map +1 -0
  183. package/dist/tools/types/config.test.js +125 -0
  184. package/dist/tools/types/config.test.js.map +1 -0
  185. package/dist/tools/utils/argv.test.d.ts +9 -0
  186. package/dist/tools/utils/argv.test.d.ts.map +1 -0
  187. package/dist/tools/utils/argv.test.js +42 -0
  188. package/dist/tools/utils/argv.test.js.map +1 -0
  189. package/package.json +8 -4
  190. package/dist/public/void-v0.1.7+20260106.c6b562a.html +0 -115
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=time.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.test.d.ts","sourceRoot":"","sources":["../../../src/types/time.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { test } from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { dateToTimestamp, millisUntilNext } from "./time.js";
4
+ test('dateToTimestamp()', () => {
5
+ const date = new Date(2001, 0, 2, 3, 4, 5);
6
+ assert(dateToTimestamp(date), '20010102030405');
7
+ });
8
+ for (const [next, millis, delay] of [
9
+ ['Min', 0, 0],
10
+ ['Min', 1, 59_999],
11
+ ['Min', 2, 59_998],
12
+ ['Min', 1000, 59_000],
13
+ ['Min', 1001, 58_999],
14
+ ['Min', 59_999, 1],
15
+ ['Sec', 0, 0],
16
+ ['Sec', 1, 999],
17
+ ['Sec', 2, 998],
18
+ ['Sec', 1000, 0],
19
+ ['Sec', 1001, 999],
20
+ ['Sec', 59_999, 1]
21
+ ])
22
+ test(`millisUntilNext(${millis}, ${next})`, () => {
23
+ const time = new Date();
24
+ time.setSeconds(Math.trunc(millis / 1000), millis % 1000);
25
+ assert(millisUntilNext(time, next), delay);
26
+ });
27
+ //# sourceMappingURL=time.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.test.js","sourceRoot":"","sources":["../../../src/types/time.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,eAAe,EAAe,eAAe,EAAC,MAAM,WAAW,CAAA;AAEvE,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA;AAEF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI;IAClC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;IACrB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;IACrB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAClB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACb,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC;IAClB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;CACV;IACR,IAAI,CAAC,mBAAmB,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;QACzD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAe,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=async-util.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-util.test.d.ts","sourceRoot":"","sources":["../../../src/utils/async-util.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import test from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { debounce, retry, throttle } from "./async-util.js";
4
+ test('throttle()', async () => {
5
+ let out;
6
+ const fn = throttle((v) => {
7
+ out = v;
8
+ }, 5);
9
+ fn(1);
10
+ assert(out, undefined);
11
+ await new Promise(fulfil => setTimeout(fulfil, 0));
12
+ assert(out, 1);
13
+ fn(2);
14
+ await new Promise(fulfil => setTimeout(fulfil, 0));
15
+ assert(out, 1);
16
+ await new Promise(fulfil => setTimeout(fulfil, 5));
17
+ assert(out, 2);
18
+ });
19
+ test('debounce()', async () => {
20
+ const calls = [];
21
+ const fn = debounce((v) => {
22
+ calls.push(v);
23
+ }, 5);
24
+ // multiple rapid calls should coalesce to the last one.
25
+ fn(1);
26
+ fn(2);
27
+ fn(3);
28
+ await new Promise(fulfil => setTimeout(fulfil, 0));
29
+ assert(calls, []);
30
+ await new Promise(fulfil => setTimeout(fulfil, 5));
31
+ assert(calls, [3]);
32
+ // a subsequent call that is canceled should not fire.
33
+ fn(4);
34
+ fn.cancel();
35
+ await new Promise(fulfil => setTimeout(fulfil, 10));
36
+ assert(calls, [3]);
37
+ });
38
+ test('retry retries until success and fails after max retries', async () => {
39
+ let attempts = 0;
40
+ const ok = await retry(async () => {
41
+ attempts++;
42
+ if (attempts < 3)
43
+ throw Error('fail');
44
+ return 'ok';
45
+ }, 5, 1);
46
+ assert(ok, 'ok');
47
+ assert(attempts, 3);
48
+ attempts = 0;
49
+ await assert.rejects(() => retry(async () => {
50
+ attempts++;
51
+ throw Error('fail');
52
+ }, 2, 1));
53
+ assert(attempts, 3);
54
+ });
55
+ //# sourceMappingURL=async-util.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-util.test.js","sourceRoot":"","sources":["../../../src/utils/async-util.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=color-util.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-util.test.d.ts","sourceRoot":"","sources":["../../../src/utils/color-util.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, test } from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { parseComputedColor, rgbaHex } from "./color-util.js";
4
+ describe('parseComputedColor()', () => {
5
+ test('rgb', () => {
6
+ assert(parseComputedColorHex('rgb(18, 52, 86)'), `#123456ff`);
7
+ assert(parseComputedColorHex('rgb(255, 0, 0)'), `#ff0000ff`);
8
+ assert(parseComputedColorHex('rgb(0,0,0)'), `#000000ff`);
9
+ assert(parseComputedColorHex('rgb(12.4, 34.5, 56.6)'), `#0c2339ff`);
10
+ });
11
+ test('a', () => {
12
+ assert(parseComputedColorHex('rgba(255, 0, 0, 0.5)'), `#ff000080`);
13
+ assert(parseComputedColorHex('rgba(0, 255, 0, .25)'), `#00ff0040`);
14
+ assert(parseComputedColorHex('rgba(0, 0, 255, 1)'), `#0000ffff`);
15
+ });
16
+ });
17
+ function parseComputedColorHex(rgba) {
18
+ return rgbaHex(parseComputedColor(rgba));
19
+ }
20
+ //# sourceMappingURL=color-util.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-util.test.js","sourceRoot":"","sources":["../../../src/utils/color-util.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,WAAW,CAAA;AACxC,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,kBAAkB,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAA;AAE3D,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QACf,MAAM,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,CAAA;QAC7D,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,CAAA;QAC5D,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAA;QACxD,MAAM,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;QACb,MAAM,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC,CAAA;QAClE,MAAM,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC,CAAA;QAClE,MAAM,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1C,CAAC"}
@@ -11,6 +11,7 @@ export interface Debug {
11
11
  input?: string;
12
12
  /** debug render invalidations. */
13
13
  invalid?: string;
14
+ looper?: string;
14
15
  mem?: string;
15
16
  render?: 'always' | string;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/utils/debug.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAC3B;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,SAErC,CAAA;AAED,gBAAgB;AAChB,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAgChE"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/utils/debug.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;CAC3B;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,SAErC,CAAA;AAED,gBAAgB;AAChB,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAiChE"}
@@ -17,6 +17,7 @@ export function Debug(url) {
17
17
  const voidKeyset = {
18
18
  cam: '',
19
19
  input: '',
20
+ looper: '',
20
21
  mem: '',
21
22
  render: ''
22
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/utils/debug.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,KAAK,GAAgC,KAAK,CACrD,UAAU,CAAC,QAAQ,EAAE,IAAI,CAC1B,CAAA;AAED,gBAAgB;AAChB,MAAM,UAAU,KAAK,CAAC,GAAuB;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CACrC,EAAE,CAAC,CAAC,CAAC,CAAA;IACN,IAAI,GAAG,IAAI,IAAI;QAAE,OAAM;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAC5B,GAAG;SACA,KAAK,CAAC,GAAG,CAAC,CAAC,kBAAkB;SAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB;SAChC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;KAChD,CAAA;IAED,MAAM,MAAM,GAA0B,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;IAE/D,MAAM,UAAU,GAAqC;QACnD,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;KACX,CAAA;IAED,OAAO,IAAI,KAAK,CAAwB,MAAM,EAAE;QAC9C,GAAG,CAAC,MAAM,EAAE,CAAC;YACX,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,CAAsB,CAAC,CAAA;YAChE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YACnB,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,MAAM,IAAI,GAAG,CAAC;gBAC5D,OAAO,MAAM,CAAA;QACjB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/utils/debug.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,KAAK,GAAgC,KAAK,CACrD,UAAU,CAAC,QAAQ,EAAE,IAAI,CAC1B,CAAA;AAED,gBAAgB;AAChB,MAAM,UAAU,KAAK,CAAC,GAAuB;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAM;IAChB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CACrC,EAAE,CAAC,CAAC,CAAC,CAAA;IACN,IAAI,GAAG,IAAI,IAAI;QAAE,OAAM;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAC5B,GAAG;SACA,KAAK,CAAC,GAAG,CAAC,CAAC,kBAAkB;SAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB;SAChC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;KAChD,CAAA;IAED,MAAM,MAAM,GAA0B,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,IAAI,GAAG;QAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAA;IAE/D,MAAM,UAAU,GAAqC;QACnD,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;KACX,CAAA;IAED,OAAO,IAAI,KAAK,CAAwB,MAAM,EAAE;QAC9C,GAAG,CAAC,MAAM,EAAE,CAAC;YACX,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,CAAsB,CAAC,CAAA;YAChE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;YACnB,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,MAAM,IAAI,GAAG,CAAC;gBAC5D,OAAO,MAAM,CAAA;QACjB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=debug.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.test.d.ts","sourceRoot":"","sources":["../../../src/utils/debug.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { test } from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { Debug } from "./debug.js";
4
+ test('one param', () => {
5
+ const url = 'https://oidoid.com/?debug=render';
6
+ assert(Debug(url), { render: 'true' });
7
+ });
8
+ test('debug and params are case-insensitive', () => {
9
+ const url = 'https://oidoid.com/?Debug=Render=foo';
10
+ assert(Debug(url), { render: 'foo' });
11
+ });
12
+ test('multiple vals', () => {
13
+ const url = 'https://oidoid.com/?debug=cam,input=bar,render=Foo';
14
+ assert(Debug(url), { cam: 'true', input: 'bar', render: 'Foo' });
15
+ });
16
+ test('multiple vals and params', () => {
17
+ const url = 'https://oidoid.com/?abc=1&debug=cam,input=foo,unknown0=Bar,Unknown1,render=baz,&def';
18
+ const debug = Debug(url);
19
+ assert(debug, {
20
+ cam: 'true',
21
+ input: 'foo',
22
+ unknown0: 'Bar',
23
+ unknown1: 'true',
24
+ render: 'baz'
25
+ });
26
+ assert(debug.Unknown1, 'true');
27
+ assert(debug.unknown2, undefined);
28
+ });
29
+ test('no vals', () => {
30
+ const url = 'https://oidoid.com/?debug';
31
+ const debug = Debug(url);
32
+ assert(debug?.cam, 'true');
33
+ assert(debug?.input, 'true');
34
+ assert(debug?.render, 'true');
35
+ assert(debug.unknown, 'true');
36
+ });
37
+ test('all', () => {
38
+ const url = 'https://oidoid.com/?debug=all,abc=def';
39
+ const debug = Debug(url);
40
+ assert(debug?.cam, 'true');
41
+ assert(debug?.input, 'true');
42
+ assert(debug?.mem, 'true');
43
+ assert(debug?.render, 'true');
44
+ assert(debug.unknown, 'true');
45
+ assert(debug.abc, 'def');
46
+ });
47
+ test('void', () => {
48
+ const url = 'https://oidoid.com/?debug=nativescale,void,render=always';
49
+ const debug = Debug(url);
50
+ assert(debug?.cam, 'true');
51
+ assert(debug?.input, 'true');
52
+ assert(debug?.mem, 'true');
53
+ assert(debug?.render, 'always');
54
+ assert(debug.nativeScale, 'true');
55
+ assert(debug.unknown, undefined);
56
+ });
57
+ test('no params', () => {
58
+ const url = 'https://oidoid.com/';
59
+ assert(Debug(url), undefined);
60
+ });
61
+ //# sourceMappingURL=debug.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.test.js","sourceRoot":"","sources":["../../../src/utils/debug.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=delay-interval.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delay-interval.test.d.ts","sourceRoot":"","sources":["../../../src/utils/delay-interval.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { mock, test } from 'node:test';
54
+ import { assert } from "../test/assert.js";
55
+ import { DelayInterval } from "./delay-interval.js";
56
+ test('register()', () => {
57
+ const env_1 = { stack: [], error: void 0, hasError: false };
58
+ try {
59
+ const timers = __addDisposableResource(env_1, mockTimers(), false);
60
+ let calls = 0;
61
+ const interval = __addDisposableResource(env_1, new DelayInterval(() => 5, 10, () => calls++).register('add'), false);
62
+ assert(calls, 0);
63
+ timers.tick(2);
64
+ assert(calls, 0);
65
+ timers.tick(3);
66
+ assert(calls, 1);
67
+ timers.tick(4);
68
+ assert(calls, 1);
69
+ timers.tick(6);
70
+ assert(calls, 2);
71
+ timers.tick(10);
72
+ assert(calls, 3);
73
+ interval.register('remove');
74
+ timers.tick(20);
75
+ assert(calls, 3);
76
+ }
77
+ catch (e_1) {
78
+ env_1.error = e_1;
79
+ env_1.hasError = true;
80
+ }
81
+ finally {
82
+ __disposeResources(env_1);
83
+ }
84
+ });
85
+ function mockTimers() {
86
+ mock.timers.enable({ apis: ['setTimeout', 'setInterval'] });
87
+ return Object.assign(mock.timers, {
88
+ [Symbol.dispose]: () => mock.timers.reset()
89
+ });
90
+ }
91
+ //# sourceMappingURL=delay-interval.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delay-interval.test.js","sourceRoot":"","sources":["../../../src/utils/delay-interval.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAkB,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAA;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AAExC,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAA;AAEjD,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;;;QACtB,MAAM,MAAM,kCAAG,UAAU,EAAE,QAAA,CAAA;QAE3B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,QAAQ,kCAAG,IAAI,aAAa,CAChC,GAAG,EAAE,CAAC,CAAW,EACjB,EAAY,EACZ,GAAG,EAAE,CAAC,KAAK,EAAE,CACd,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAA,CAAA;QAEjB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACd,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACf,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEhB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAE3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACf,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;;;;;;;;;CACjB,CAAC,CAAA;AAEF,SAAS,UAAU;IACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,EAAC,CAAC,CAAA;IACzD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;QAChC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;KAC5C,CAAC,CAAA;AACJ,CAAC"}
@@ -4,4 +4,5 @@ export declare function closeTo(lhs: number, rhs: number, tolerance: number): bo
4
4
  export declare function lerp(start: number, end: number, ratio: number): number;
5
5
  /** returns positive modulo. */
6
6
  export declare function mod(dividend: number, divisor: number): number;
7
+ export declare function snap(v: number, mod: number): number;
7
8
  //# sourceMappingURL=math.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"AACA,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5E;AAGD,8CAA8C;AAC9C,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAGD,+BAA+B;AAC/B,wBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"AACA,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5E;AAGD,8CAA8C;AAC9C,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAGD,+BAA+B;AAC/B,wBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -15,4 +15,7 @@ export function lerp(start, end, ratio) {
15
15
  export function mod(dividend, divisor) {
16
16
  return ((dividend % divisor) + divisor) % divisor;
17
17
  }
18
+ export function snap(v, mod) {
19
+ return Math.round(v / mod) * mod;
20
+ }
18
21
  //# sourceMappingURL=math.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,SAAiB;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,SAAS,CAAA;AACzC,CAAC;AAED,qBAAqB;AACrB,8CAA8C;AAC9C,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa;IAC5D,OAAO,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,CAAA;AACtC,CAAC;AAED,mCAAmC;AACnC,+BAA+B;AAC/B,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,OAAe;IACnD,OAAO,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAA;AACnD,CAAC"}
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,SAAiB;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,SAAS,CAAA;AACzC,CAAC;AAED,qBAAqB;AACrB,8CAA8C;AAC9C,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,GAAW,EAAE,KAAa;IAC5D,OAAO,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,CAAA;AACtC,CAAC;AAED,mCAAmC;AACnC,+BAA+B;AAC/B,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,OAAe;IACnD,OAAO,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAS,EAAE,GAAW;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAClC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=math.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.test.d.ts","sourceRoot":"","sources":["../../../src/utils/math.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import test from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { clamp } from "./math.js";
4
+ test('clamp()', () => {
5
+ assert(clamp(1, 2, 3), 2);
6
+ assert(clamp(2, 2, 3), 2);
7
+ assert(clamp(3, 2, 3), 3);
8
+ assert(clamp(4, 2, 3), 3);
9
+ });
10
+ //# sourceMappingURL=math.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.test.js","sourceRoot":"","sources":["../../../src/utils/math.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAA;AAE/B,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACzB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACzB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACzB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC3B,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=str-util.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"str-util.test.d.ts","sourceRoot":"","sources":["../../../src/utils/str-util.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import test from 'node:test';
2
+ import { assert } from "../test/assert.js";
3
+ import { uncapitalize } from "./str-util.js";
4
+ for (const [input, expected] of [
5
+ ['', ''],
6
+ ['A', 'a'],
7
+ ['a', 'a'],
8
+ ['Hello', 'hello'],
9
+ ['Σigma', 'σigma']
10
+ ]) {
11
+ test(`uncapitalize(${input})`, () => assert(uncapitalize(input), expected));
12
+ }
13
+ //# sourceMappingURL=str-util.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"str-util.test.js","sourceRoot":"","sources":["../../../src/utils/str-util.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAA;AAE1C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI;IAC9B,CAAC,EAAE,EAAE,EAAE,CAAC;IACR,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;CACV,EAAE,CAAC;IACX,IAAI,CAAC,gBAAgB,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=atlas-json-parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlas-json-parser.test.d.ts","sourceRoot":"","sources":["../../../tools/atlas-pack/atlas-json-parser.test.ts"],"names":[],"mappings":""}