@cubingcenter/scrambler 0.6.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -4
- package/dist/core/api.d.ts.map +1 -1
- package/dist/core/api.js +10 -2
- package/dist/puzzles/cube2/solver/browser-loader.d.ts +4 -7
- package/dist/puzzles/cube2/solver/browser-loader.d.ts.map +1 -1
- package/dist/puzzles/cube2/solver/browser-loader.js +42 -14
- package/dist/puzzles/cube2/solver/generated-assets.d.ts.map +1 -1
- package/dist/puzzles/cube2/solver/generated-assets.js +8 -3
- package/dist/puzzles/cube2/solver/search.d.ts.map +1 -1
- package/dist/puzzles/cube2/solver/search.js +3 -3
- package/dist/puzzles/cube2/solver/tables.d.ts +6 -0
- package/dist/puzzles/cube2/solver/tables.d.ts.map +1 -1
- package/dist/puzzles/cube2/solver/tables.js +16 -2
- package/dist/puzzles/cube3/index.d.ts +1 -0
- package/dist/puzzles/cube3/index.d.ts.map +1 -1
- package/dist/puzzles/cube3/moves.d.ts.map +1 -1
- package/dist/puzzles/cube3/moves.js +104 -18
- package/dist/puzzles/cube3/scrambler.d.ts +16 -1
- package/dist/puzzles/cube3/scrambler.d.ts.map +1 -1
- package/dist/puzzles/cube3/scrambler.js +1 -1
- package/dist/puzzles/cube3/solver/browser-loader.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/browser-loader.js +48 -22
- package/dist/puzzles/cube3/solver/generated-assets.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/generated-assets.js +9 -3
- package/dist/puzzles/cube3/solver/index.d.ts +5 -3
- package/dist/puzzles/cube3/solver/index.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/index.js +2 -1
- package/dist/puzzles/cube3/solver/node-loader.js +9 -2
- package/dist/puzzles/cube3/solver/phase1.d.ts +37 -0
- package/dist/puzzles/cube3/solver/phase1.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/phase1.js +156 -15
- package/dist/puzzles/cube3/solver/phase2.d.ts +75 -0
- package/dist/puzzles/cube3/solver/phase2.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/phase2.js +279 -68
- package/dist/puzzles/cube3/solver/search-utils.d.ts +1 -1
- package/dist/puzzles/cube3/solver/search-utils.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/symmetry.d.ts +24 -0
- package/dist/puzzles/cube3/solver/symmetry.d.ts.map +1 -0
- package/dist/puzzles/cube3/solver/symmetry.js +74 -0
- package/dist/puzzles/cube3/solver/tables.d.ts +6 -1
- package/dist/puzzles/cube3/solver/tables.d.ts.map +1 -1
- package/dist/puzzles/cube3/solver/tables.js +14 -12
- package/dist/puzzles/cube3/validation.d.ts.map +1 -1
- package/dist/puzzles/cube3/validation.js +15 -7
- package/dist/puzzles/cube4/browser-worker-pool.d.ts +82 -0
- package/dist/puzzles/cube4/browser-worker-pool.d.ts.map +1 -0
- package/dist/puzzles/cube4/browser-worker-pool.js +205 -0
- package/dist/puzzles/cube4/browser-worker.d.ts +2 -0
- package/dist/puzzles/cube4/browser-worker.d.ts.map +1 -0
- package/dist/puzzles/cube4/browser-worker.js +31 -0
- package/dist/puzzles/cube4/index.d.ts +10 -2
- package/dist/puzzles/cube4/index.d.ts.map +1 -1
- package/dist/puzzles/cube4/index.js +6 -2
- package/dist/puzzles/cube4/moves.d.ts +5 -0
- package/dist/puzzles/cube4/moves.d.ts.map +1 -1
- package/dist/puzzles/cube4/moves.js +212 -11
- package/dist/puzzles/cube4/reduction/browser-loader.d.ts +29 -1
- package/dist/puzzles/cube4/reduction/browser-loader.d.ts.map +1 -1
- package/dist/puzzles/cube4/reduction/browser-loader.js +227 -32
- package/dist/puzzles/cube4/reduction/center2.d.ts +44 -3
- package/dist/puzzles/cube4/reduction/center2.d.ts.map +1 -1
- package/dist/puzzles/cube4/reduction/center2.js +152 -10
- package/dist/puzzles/cube4/reduction/edge3.d.ts +4 -0
- package/dist/puzzles/cube4/reduction/edge3.d.ts.map +1 -1
- package/dist/puzzles/cube4/reduction/edge3.js +23 -3
- package/dist/puzzles/cube4/reduction/finish3.d.ts +53 -0
- package/dist/puzzles/cube4/reduction/finish3.d.ts.map +1 -0
- package/dist/puzzles/cube4/reduction/finish3.js +393 -0
- package/dist/puzzles/cube4/reduction/generated/c3_pair_dist.bin +1 -0
- package/dist/puzzles/cube4/reduction/generated/center2-manifest.json +36 -0
- package/dist/puzzles/cube4/reduction/generated/center2-pruning-wide.bin +1 -0
- package/dist/puzzles/cube4/reduction/generated/hc-distances.bin +1 -0
- package/dist/puzzles/cube4/reduction/generated/hc-manifest.json +44 -0
- package/dist/puzzles/cube4/reduction/generated/hc-move.bin +0 -0
- package/dist/puzzles/cube4/reduction/hc-pdb.d.ts +52 -0
- package/dist/puzzles/cube4/reduction/hc-pdb.d.ts.map +1 -0
- package/dist/puzzles/cube4/reduction/hc-pdb.js +220 -0
- package/dist/puzzles/cube4/reduction/node-loader.d.ts +15 -1
- package/dist/puzzles/cube4/reduction/node-loader.d.ts.map +1 -1
- package/dist/puzzles/cube4/reduction/node-loader.js +199 -25
- package/dist/puzzles/cube4/reduction/pair-transversal.d.ts +28 -0
- package/dist/puzzles/cube4/reduction/pair-transversal.d.ts.map +1 -0
- package/dist/puzzles/cube4/reduction/pair-transversal.js +107 -0
- package/dist/puzzles/cube4/reduction/pairing-coordinate.js +5 -5
- package/dist/puzzles/cube4/reduction/phase3-search.d.ts +116 -7
- package/dist/puzzles/cube4/reduction/phase3-search.d.ts.map +1 -1
- package/dist/puzzles/cube4/reduction/phase3-search.js +458 -32
- package/dist/puzzles/cube4/reduction/rotation-fix.d.ts +28 -0
- package/dist/puzzles/cube4/reduction/rotation-fix.d.ts.map +1 -0
- package/dist/puzzles/cube4/reduction/rotation-fix.js +212 -0
- package/dist/puzzles/cube4/reduction/solve.d.ts +172 -2
- package/dist/puzzles/cube4/reduction/solve.d.ts.map +1 -1
- package/dist/puzzles/cube4/reduction/solve.js +1201 -180
- package/dist/puzzles/cube4/scramble-cache.d.ts +93 -0
- package/dist/puzzles/cube4/scramble-cache.d.ts.map +1 -0
- package/dist/puzzles/cube4/scramble-cache.js +150 -0
- package/dist/puzzles/cube4/scrambler.d.ts +201 -6
- package/dist/puzzles/cube4/scrambler.d.ts.map +1 -1
- package/dist/puzzles/cube4/scrambler.js +414 -176
- package/dist/puzzles/cube4/state.d.ts.map +1 -1
- package/dist/puzzles/cube4/state.js +4 -1
- package/dist/puzzles/cube4/worker-pool.d.ts +139 -0
- package/dist/puzzles/cube4/worker-pool.d.ts.map +1 -0
- package/dist/puzzles/cube4/worker-pool.js +405 -0
- package/dist/puzzles/cube4/worker-protocol.d.ts +58 -0
- package/dist/puzzles/cube4/worker-protocol.d.ts.map +1 -0
- package/dist/puzzles/cube4/worker-protocol.js +58 -0
- package/dist/puzzles/cube4/worker.d.ts +26 -0
- package/dist/puzzles/cube4/worker.d.ts.map +1 -0
- package/dist/puzzles/cube4/worker.js +49 -0
- package/dist/puzzles/pyraminx/solver/browser-loader.d.ts +4 -8
- package/dist/puzzles/pyraminx/solver/browser-loader.d.ts.map +1 -1
- package/dist/puzzles/pyraminx/solver/browser-loader.js +44 -15
- package/dist/puzzles/pyraminx/solver/generated-assets.d.ts.map +1 -1
- package/dist/puzzles/pyraminx/solver/generated-assets.js +8 -3
- package/dist/puzzles/pyraminx/solver/search.d.ts.map +1 -1
- package/dist/puzzles/pyraminx/solver/search.js +3 -6
- package/dist/puzzles/pyraminx/solver/tables.d.ts +6 -0
- package/dist/puzzles/pyraminx/solver/tables.d.ts.map +1 -1
- package/dist/puzzles/pyraminx/solver/tables.js +17 -0
- package/dist/puzzles/shared/compressed-fetch.d.ts +37 -1
- package/dist/puzzles/shared/compressed-fetch.d.ts.map +1 -1
- package/dist/puzzles/shared/compressed-fetch.js +226 -31
- package/dist/puzzles/shared/load-once.d.ts +16 -0
- package/dist/puzzles/shared/load-once.d.ts.map +1 -0
- package/dist/puzzles/shared/load-once.js +11 -0
- package/dist/puzzles/skewb/solver/browser-loader.d.ts +4 -11
- package/dist/puzzles/skewb/solver/browser-loader.d.ts.map +1 -1
- package/dist/puzzles/skewb/solver/browser-loader.js +44 -16
- package/dist/puzzles/skewb/solver/generated-assets.d.ts.map +1 -1
- package/dist/puzzles/skewb/solver/generated-assets.js +8 -3
- package/dist/puzzles/skewb/solver/search.js +3 -3
- package/dist/puzzles/skewb/solver/tables.d.ts +6 -0
- package/dist/puzzles/skewb/solver/tables.d.ts.map +1 -1
- package/dist/puzzles/skewb/solver/tables.js +17 -0
- package/dist/puzzles/sq1/solver/browser-loader.d.ts.map +1 -1
- package/dist/puzzles/sq1/solver/browser-loader.js +58 -26
- package/dist-cjs/core/api.js +10 -2
- package/dist-cjs/puzzles/cube2/solver/browser-loader.js +42 -14
- package/dist-cjs/puzzles/cube2/solver/generated-assets.js +8 -3
- package/dist-cjs/puzzles/cube2/solver/search.js +2 -2
- package/dist-cjs/puzzles/cube2/solver/tables.js +17 -3
- package/dist-cjs/puzzles/cube3/moves.js +104 -18
- package/dist-cjs/puzzles/cube3/scrambler.js +1 -1
- package/dist-cjs/puzzles/cube3/solver/browser-loader.js +48 -22
- package/dist-cjs/puzzles/cube3/solver/generated-assets.js +9 -3
- package/dist-cjs/puzzles/cube3/solver/index.js +8 -1
- package/dist-cjs/puzzles/cube3/solver/node-loader.js +9 -2
- package/dist-cjs/puzzles/cube3/solver/phase1.js +157 -15
- package/dist-cjs/puzzles/cube3/solver/phase2.js +276 -65
- package/dist-cjs/puzzles/cube3/solver/symmetry.js +80 -0
- package/dist-cjs/puzzles/cube3/solver/tables.js +14 -12
- package/dist-cjs/puzzles/cube3/validation.js +15 -7
- package/dist-cjs/puzzles/cube4/browser-worker-pool.js +211 -0
- package/dist-cjs/puzzles/cube4/index.js +23 -1
- package/dist-cjs/puzzles/cube4/moves.js +213 -11
- package/dist-cjs/puzzles/cube4/reduction/browser-loader.js +227 -32
- package/dist-cjs/puzzles/cube4/reduction/center2.js +155 -10
- package/dist-cjs/puzzles/cube4/reduction/edge3.js +24 -3
- package/dist-cjs/puzzles/cube4/reduction/finish3.js +398 -0
- package/dist-cjs/puzzles/cube4/reduction/generated/c3_pair_dist.bin +1 -0
- package/dist-cjs/puzzles/cube4/reduction/generated/center2-manifest.json +36 -0
- package/dist-cjs/puzzles/cube4/reduction/generated/center2-pruning-wide.bin +1 -0
- package/dist-cjs/puzzles/cube4/reduction/generated/hc-distances.bin +1 -0
- package/dist-cjs/puzzles/cube4/reduction/generated/hc-manifest.json +44 -0
- package/dist-cjs/puzzles/cube4/reduction/generated/hc-move.bin +0 -0
- package/dist-cjs/puzzles/cube4/reduction/hc-pdb.js +232 -0
- package/dist-cjs/puzzles/cube4/reduction/node-loader.js +200 -25
- package/dist-cjs/puzzles/cube4/reduction/pair-transversal.js +112 -0
- package/dist-cjs/puzzles/cube4/reduction/pairing-coordinate.js +5 -5
- package/dist-cjs/puzzles/cube4/reduction/phase3-search.js +460 -33
- package/dist-cjs/puzzles/cube4/reduction/rotation-fix.js +216 -0
- package/dist-cjs/puzzles/cube4/reduction/solve.js +1203 -172
- package/dist-cjs/puzzles/cube4/scramble-cache.js +156 -0
- package/dist-cjs/puzzles/cube4/scrambler.js +416 -174
- package/dist-cjs/puzzles/cube4/state.js +4 -1
- package/dist-cjs/puzzles/cube4/worker-pool.js +447 -0
- package/dist-cjs/puzzles/cube4/worker-protocol.js +62 -0
- package/dist-cjs/puzzles/pyraminx/solver/browser-loader.js +44 -15
- package/dist-cjs/puzzles/pyraminx/solver/generated-assets.js +8 -3
- package/dist-cjs/puzzles/pyraminx/solver/search.js +2 -5
- package/dist-cjs/puzzles/pyraminx/solver/tables.js +18 -1
- package/dist-cjs/puzzles/shared/compressed-fetch.js +229 -31
- package/dist-cjs/puzzles/shared/load-once.js +14 -0
- package/dist-cjs/puzzles/skewb/solver/browser-loader.js +44 -16
- package/dist-cjs/puzzles/skewb/solver/generated-assets.js +8 -3
- package/dist-cjs/puzzles/skewb/solver/search.js +2 -2
- package/dist-cjs/puzzles/skewb/solver/tables.js +18 -1
- package/dist-cjs/puzzles/sq1/solver/browser-loader.js +58 -26
- package/docs/development.md +19 -7
- package/package.json +17 -7
package/docs/development.md
CHANGED
|
@@ -9,25 +9,37 @@ pnpm test
|
|
|
9
9
|
pnpm build
|
|
10
10
|
pnpm package:check
|
|
11
11
|
pnpm verify
|
|
12
|
+
pnpm verify:scrambles
|
|
13
|
+
node --import tsx scripts/uniformity-444.ts --n=500
|
|
12
14
|
```
|
|
13
15
|
|
|
14
16
|
- `pnpm lint`: TypeScript type check without emitting files.
|
|
15
|
-
- `pnpm test`: Node test runner with `tsx`.
|
|
17
|
+
- `pnpm test`: Node test runner with `tsx`. Targeted suites exist per puzzle (`pnpm test:cube2`, `test:cube3`, `test:cube4`, …) and the runner also accepts file arguments (`pnpm test test/cube4.test.ts`).
|
|
16
18
|
- `pnpm build`: ESM build, CJS build, CJS package marker, generated asset copy.
|
|
17
19
|
- `pnpm package:check`: local package and consumption checks.
|
|
18
|
-
- `pnpm verify`: full local verification for normal development.
|
|
20
|
+
- `pnpm verify`: full local verification for normal development — lint, tests, build, **all** solver-table checksum checks (cube2/cube3/pyraminx/skewb/sq1 and the 4x4 `cube4:{center1,center2,center3,edge3,hc}:tables:check`), then the package checks.
|
|
21
|
+
- `pnpm verify:scrambles [--count N] [events...]`: consistency harness. Generates scrambles with `skipValidation: true` and replays them **independently** — the target is re-sampled from the seed by the puzzle's own sampler (never derived from the emitted scramble, so the check cannot be tautological) and the solution must reach a state where the real `isSolved` predicate holds. Any mismatch exits 1. Events: `222 333 pymx skwb fto 444` (444 defaults to 25 generations).
|
|
22
|
+
- `node --import tsx scripts/uniformity-444.ts [--n=500] [--concurrency=4] [--threshold=…]`: χ² uniformity bench for the 4x4 pipeline over the state it **reaches** (`apply(solved, moves)`), on a fixed deterministic seed corpus: center colors per slot, wing/corner pieces per slot, twist, corner×wing parity quadrants, and joint (parity × center class / twist) bins. Prints a χ²/p-value table and exits 1 if any family falls below the threshold. P-values are reference values of a fixed corpus, not classical significance — see the interpretation notes in the script header. The lightweight companion runs inside `pnpm test` (`test/cube4-uniformity.test.ts`: direct sampler N=20,000 + full pipeline N=40 with structural checks).
|
|
19
23
|
|
|
20
|
-
##
|
|
24
|
+
## Seeded generation
|
|
25
|
+
|
|
26
|
+
`{ seed }` makes generation reproducible: the seed fully determines the sampled target state (a seeded PRNG in `src/random/`), and the scramblers emit a scramble for exactly that state — for `444` the replay is validated against the sample on every generation. With the same seed **and** the same options the output is deterministic: search budgets are node counters, not wall deadlines (the only wall-clock code in the 4x4 path is a pair of hang guards that never bound an observed solve). Batch APIs and the CLI derive per-item seeds of the form `seed:index` (`generateScrambles("333", 5, { seed: "s" })` and `--seed s --count 5` both use `s:0` … `s:4`), so items are independent and earlier items do not change when the count grows.
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
## Solver Tables
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
Solver tables are committed as generated binary assets per puzzle — regenerate them only when coordinates, moves, pruning logic, or table encoding changes:
|
|
25
31
|
|
|
26
32
|
```sh
|
|
27
|
-
pnpm cube3:tables
|
|
28
|
-
pnpm
|
|
33
|
+
pnpm cube3:tables && pnpm cube3:tables:check # 3x3 (also: cube2, pyraminx, skewb, sq1)
|
|
34
|
+
pnpm cube4:center1:tables && pnpm cube4:center1:tables:check # 4x4 reduction, phase by phase
|
|
35
|
+
pnpm cube4:center2:tables && pnpm cube4:center2:tables:check
|
|
36
|
+
pnpm cube4:center3:tables && pnpm cube4:center3:tables:check
|
|
37
|
+
pnpm cube4:edge3:tables && pnpm cube4:edge3:tables:check # pairing BFS (C++ generator)
|
|
38
|
+
pnpm cube4:hc:tables && pnpm cube4:hc:tables:check # hc PDB
|
|
29
39
|
```
|
|
30
40
|
|
|
41
|
+
Each `:tables:check` verifies the committed `manifest.json` checksums and fails when a `.bin` has drifted; `pnpm verify` runs them all. After regenerating, `pnpm tables:web:sync` refreshes the demo site copies (with `.gz`/`.br` variants).
|
|
42
|
+
|
|
31
43
|
The build copies those assets into both `dist` and `dist-cjs`. Package checks fail if required generated assets are missing from the packed output.
|
|
32
44
|
|
|
33
45
|
## Public API Expectations
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cubingcenter/scrambler",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Extensible scramble generation toolkit for CubingCenter projects.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -57,15 +57,22 @@
|
|
|
57
57
|
"tsx": "^4.20.0",
|
|
58
58
|
"typescript": "^5.9.0"
|
|
59
59
|
},
|
|
60
|
-
"dependencies": {
|
|
61
|
-
"cubing": "^0.63.4"
|
|
62
|
-
},
|
|
63
60
|
"scripts": {
|
|
64
61
|
"build": "node scripts/clean.cjs && tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && node scripts/write-cjs-package.cjs && node scripts/copy-assets.cjs",
|
|
65
|
-
"test": "node --test --import tsx
|
|
62
|
+
"test": "node --test --import tsx",
|
|
63
|
+
"test:all": "node --test --import tsx test/*.test.ts",
|
|
64
|
+
"test:skewb": "node --test --import tsx test/skewb*.test.ts",
|
|
65
|
+
"test:pyraminx": "node --test --import tsx test/pyraminx*.test.ts",
|
|
66
|
+
"test:sq1": "node --test --import tsx test/sq1*.test.ts",
|
|
67
|
+
"test:fto": "node --test --import tsx test/fto*.test.ts",
|
|
68
|
+
"test:cube2": "node --test --import tsx test/cube2*.test.ts",
|
|
69
|
+
"test:cube3": "node --test --import tsx test/cube3*.test.ts",
|
|
70
|
+
"test:cube4": "node --test --import tsx test/cube4*.test.ts test/center*.test.ts test/edge3.test.ts test/pairing-coordinate.test.ts test/phase*.test.ts",
|
|
71
|
+
"test:big": "node --test --import tsx test/big-cubes*.test.ts",
|
|
72
|
+
"test:watch": "node --test --watch --import tsx",
|
|
66
73
|
"lint": "tsc -p tsconfig.json --noEmit",
|
|
67
74
|
"package:check": "pnpm build && node scripts/check-package.cjs",
|
|
68
|
-
"verify": "pnpm lint && pnpm test && pnpm build && pnpm cube3:tables:check && pnpm cube2:tables:check && pnpm pyraminx:tables:check && pnpm skewb:tables:check && pnpm sq1:tables:check && pnpm package:check",
|
|
75
|
+
"verify": "pnpm lint && pnpm test && pnpm build && pnpm cube3:tables:check && pnpm cube2:tables:check && pnpm pyraminx:tables:check && pnpm skewb:tables:check && pnpm sq1:tables:check && pnpm cube4:center1:tables:check && pnpm cube4:center2:tables:check && pnpm cube4:center3:tables:check && pnpm cube4:edge3:tables:check && pnpm cube4:hc:tables:check && pnpm package:check",
|
|
69
76
|
"dev": "tsx src/cli/index.ts",
|
|
70
77
|
"cube3:tables": "node --import tsx scripts/generate-cube3-solver-tables.ts",
|
|
71
78
|
"cube3:tables:check": "node --import tsx scripts/check-cube3-solver-tables.ts",
|
|
@@ -83,6 +90,8 @@
|
|
|
83
90
|
"cube4:center2:tables:check": "node --import tsx scripts/check-center2-solver-tables.ts",
|
|
84
91
|
"cube4:center3:tables": "node --import tsx scripts/generate-center3-solver-tables.ts",
|
|
85
92
|
"cube4:center3:tables:check": "node --import tsx scripts/check-center3-solver-tables.ts",
|
|
93
|
+
"cube4:hc:tables": "node --import tsx scripts/generate-hc-pdb-table.ts",
|
|
94
|
+
"cube4:hc:tables:check": "node --import tsx scripts/check-hc-pdb-table.ts",
|
|
86
95
|
"cube4:edge3:tables": "node --import tsx scripts/generate-edge3-solver-tables.ts",
|
|
87
96
|
"cube4:edge3:tables:check": "node --import tsx scripts/check-edge3-solver-tables.ts",
|
|
88
97
|
"tables:web:sync": "node --import tsx scripts/sync-web-tables.ts",
|
|
@@ -94,6 +103,7 @@
|
|
|
94
103
|
"bench:skewb": "node --import tsx bench-skewb.ts",
|
|
95
104
|
"bench:pyraminx": "node --import tsx bench-pyraminx.ts",
|
|
96
105
|
"bench:phases": "node --import tsx bench-phases.ts",
|
|
97
|
-
"bench:uniformity": "node --import tsx bench-uniformity.ts"
|
|
106
|
+
"bench:uniformity": "node --import tsx bench-uniformity.ts",
|
|
107
|
+
"bench:cube4-pool": "node --import tsx scripts/bench-444-pool.ts"
|
|
98
108
|
}
|
|
99
109
|
}
|