Refactor: Implement SmartCube renderer, improve UI styling, and fix gaps

This commit is contained in:
2026-02-22 04:35:59 +00:00
parent 57abfd6b80
commit b5ddc21662
4168 changed files with 763782 additions and 1008 deletions

46
node_modules/@gkucmierz/utils/spec/memoize.spec.mjs generated vendored Normal file
View File

@@ -0,0 +1,46 @@
import {
memoize,
} from '../src/memoize.mjs';
describe('memoize', () => {
it('called once', () => {
let cnt = 0;
const add = memoize((a, b) => {
++cnt;
return a + b;
});
expect(add(1, 2)).toBe(3);
expect(cnt).toBe(1);
expect(add(1, 2)).toBe(3);
expect(cnt).toBe(1);
expect(add(2, 1)).toBe(3);
expect(cnt).toBe(2);
});
it('variable args length', () => {
const fn = memoize((...args) => args.length);
expect(fn()).toBe(0);
expect(fn(1)).toBe(1);
expect(fn(1, 2)).toBe(2);
expect(fn(1, 2, 3)).toBe(3);
});
it('different empty object arrays', () => {
let cnt = 0;
const fn = memoize(() => ++cnt);
const emptyArr = [];
fn(emptyArr);
expect(cnt).toBe(1);
fn(emptyArr);
expect(cnt).toBe(1);
fn([]);
expect(cnt).toBe(2);
fn([]);
expect(cnt).toBe(3);
});
});