cubing 0.22.1 → 0.23.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 +1 -1
- package/alg/package.json +1 -3
- package/bluetooth/package.json +1 -3
- package/dist/bundle-global/cubing.bundle-global.js +2979 -242
- package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js +122 -0
- package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js.map +7 -0
- package/dist/esm/{3d-M7GBIT3X.js → 3d-Q4WSD4BC.js} +3 -3
- package/dist/esm/{3d-M7GBIT3X.js.map → 3d-Q4WSD4BC.js.map} +0 -0
- package/dist/esm/bluetooth/index.d.ts +1 -1
- package/dist/esm/bluetooth/index.js +1 -1
- package/dist/esm/chunk-37EHU3GZ.js +66 -0
- package/dist/esm/chunk-37EHU3GZ.js.map +7 -0
- package/dist/esm/chunk-BJIOROQC.js +18 -0
- package/dist/esm/chunk-BJIOROQC.js.map +7 -0
- package/dist/esm/{chunk-R3HRHYIW.js → chunk-DK6PXBB2.js} +1 -1
- package/dist/esm/{chunk-R3HRHYIW.js.map → chunk-DK6PXBB2.js.map} +0 -0
- package/dist/esm/chunk-DPMEZY7V.js +1552 -0
- package/dist/esm/chunk-DPMEZY7V.js.map +7 -0
- package/dist/esm/chunk-FK2SCC3Z.js +499 -0
- package/dist/esm/chunk-FK2SCC3Z.js.map +7 -0
- package/dist/esm/chunk-JZWB7AIU.js +115 -0
- package/dist/esm/chunk-JZWB7AIU.js.map +7 -0
- package/dist/esm/chunk-MLOCDLUF.js +226 -0
- package/dist/esm/chunk-MLOCDLUF.js.map +7 -0
- package/dist/esm/{chunk-GF76PWEV.js → chunk-N3RNWU5T.js} +2 -2
- package/dist/esm/{chunk-GF76PWEV.js.map → chunk-N3RNWU5T.js.map} +0 -0
- package/dist/esm/chunk-PUPUQWJC.js +4065 -0
- package/dist/esm/chunk-PUPUQWJC.js.map +7 -0
- package/dist/esm/chunk-XVZOMB6J.js +89 -0
- package/dist/esm/chunk-XVZOMB6J.js.map +7 -0
- package/dist/esm/chunk-Z6X7HTPP.js +103 -0
- package/dist/esm/chunk-Z6X7HTPP.js.map +7 -0
- package/dist/esm/entry-L6CE2HLF.js +531 -0
- package/dist/esm/entry-L6CE2HLF.js.map +7 -0
- package/dist/esm/esm-test-worker.js +3 -14
- package/dist/esm/esm-test-worker.js.map +3 -3
- package/dist/esm/fto.sgs.json-62YNULOK.js +649 -0
- package/dist/esm/fto.sgs.json-62YNULOK.js.map +7 -0
- package/dist/esm/gwt-B7CBESZR.js +1669 -0
- package/dist/esm/gwt-B7CBESZR.js.map +7 -0
- package/dist/esm/megaminx.sgs.json-PRL46G5J.js +16 -0
- package/dist/esm/megaminx.sgs.json-PRL46G5J.js.map +7 -0
- package/dist/esm/module-entry-J2N3UZP7.js +18 -0
- package/dist/esm/module-entry-J2N3UZP7.js.map +7 -0
- package/dist/esm/{node-HFBX5WHK.js → node-W3AD4HBK.js} +2 -1
- package/dist/esm/node-W3AD4HBK.js.map +7 -0
- package/dist/esm/puzzle-geometry/index.js +11 -4051
- package/dist/esm/puzzle-geometry/index.js.map +3 -3
- package/dist/esm/puzzles/index.js +1 -1
- package/dist/esm/pyraminx.sgs.json-7QMPT5XP.js +14 -0
- package/dist/esm/pyraminx.sgs.json-7QMPT5XP.js.map +7 -0
- package/dist/esm/scramble/index.js +4 -2
- package/dist/esm/scramble_444-JP3CWLJM.js +2572 -0
- package/dist/esm/scramble_444-JP3CWLJM.js.map +7 -0
- package/dist/esm/scramble_sq1-PQ2AYBFW.js +706 -0
- package/dist/esm/scramble_sq1-PQ2AYBFW.js.map +7 -0
- package/dist/esm/search/index.js +6 -3
- package/dist/esm/skewb.sgs.json-FWHYACJG.js +16 -0
- package/dist/esm/skewb.sgs.json-FWHYACJG.js.map +7 -0
- package/dist/esm/twisty/index.js +3 -3
- package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js +3450 -0
- package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js.map +7 -0
- package/dist/types/search/inside/module-entry-path-getter.d.ts +2 -0
- package/dist/types/search/inside/module-entry-path-getter.d.ts.map +1 -0
- package/dist/types/search/inside/module-entry.d.ts +2 -0
- package/dist/types/search/inside/module-entry.d.ts.map +1 -0
- package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts.map +1 -1
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +2 -1
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts.map +1 -1
- package/dist/types/search/inside/solve/puzzles/sq1.d.ts.map +1 -1
- package/dist/types/search/instantiator.d.ts +1 -2
- package/dist/types/search/instantiator.d.ts.map +1 -1
- package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
- package/dist/types/search/worker-inside-generated-string.d.ts.map +1 -1
- package/dist/types/vendor/comlink-everywhere/outside/node.d.ts.map +1 -1
- package/docs/.DS_Store +0 -0
- package/docs/cubing/.DS_Store +0 -0
- package/docs/cubing/index.html +1 -1
- package/kpuzzle/package.json +1 -3
- package/notation/package.json +1 -3
- package/package.json +2 -6
- package/protocol/package.json +1 -3
- package/puzzle-geometry/package.json +1 -3
- package/puzzles/package.json +1 -3
- package/scramble/package.json +1 -3
- package/search/package.json +1 -3
- package/src/cubing/.DS_Store +0 -0
- package/src/cubing/search/.DS_Store +0 -0
- package/src/cubing/search/inside/.DS_Store +0 -0
- package/src/cubing/search/inside/module-entry-path-getter.ts +5 -0
- package/src/cubing/search/inside/module-entry.ts +20 -0
- package/src/cubing/search/inside/solve/puzzles/3x3x3/index.ts +13 -3
- package/src/cubing/search/inside/solve/puzzles/4x4x4.ts +19 -5
- package/src/cubing/search/inside/solve/puzzles/fto.sgs.json.ts +356 -13
- package/src/cubing/search/inside/solve/puzzles/sq1.ts +12 -2
- package/src/cubing/search/instantiator.ts +75 -40
- package/src/cubing/search/worker-inside-generated-string.js +1 -1
- package/src/cubing/vendor/.DS_Store +0 -0
- package/src/cubing/vendor/comlink-everywhere/.DS_Store +0 -0
- package/src/cubing/vendor/comlink-everywhere/outside/node.js +1 -0
- package/src/cubing/vendor/cstimer/.DS_Store +0 -0
- package/src/cubing/{search/inside/solve/puzzles → vendor/cstimer/src}/.DS_Store +0 -0
- package/src/cubing/vendor/random-uint-below/random53BitValue.ts +1 -1
- package/src/cubing/vendor/sq12phase/scramble_sq1.js +2 -2
- package/src/cubing/{twisty/heavy-code-imports → vendor/three}/.DS_Store +0 -0
- package/src/cubing/{twisty/old/animation → vendor/three/examples}/.DS_Store +0 -0
- package/stream/package.json +1 -3
- package/twisty/package.json +1 -3
- package/alg/index.d.ts +0 -1
- package/bluetooth/index.d.ts +0 -1
- package/dist/.DS_Store +0 -0
- package/dist/esm/chunk-6BZSKSG7.js +0 -1368
- package/dist/esm/chunk-6BZSKSG7.js.map +0 -7
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/node-HFBX5WHK.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-RQYYANYQ.js +0 -3107
- package/dist/esm/worker-inside-generated-string-RQYYANYQ.js.map +0 -7
- package/kpuzzle/index.d.ts +0 -1
- package/notation/index.d.ts +0 -1
- package/protocol/index.d.ts +0 -1
- package/puzzle-geometry/index.d.ts +0 -1
- package/puzzles/index.d.ts +0 -1
- package/scramble/index.d.ts +0 -1
- package/search/index.d.ts +0 -1
- package/src/cubing/puzzles/.DS_Store +0 -0
- package/src/cubing/puzzles/implementations/.DS_Store +0 -0
- package/src/cubing/search/inside/solve/.DS_Store +0 -0
- package/src/cubing/search/inside/solve/vendor/.DS_Store +0 -0
- package/src/cubing/twisty/.DS_Store +0 -0
- package/src/cubing/twisty/controllers/.DS_Store +0 -0
- package/src/cubing/twisty/controllers/animation/.DS_Store +0 -0
- package/src/cubing/twisty/controllers/indexer/.DS_Store +0 -0
- package/src/cubing/twisty/model/.DS_Store +0 -0
- package/src/cubing/twisty/model/props/.DS_Store +0 -0
- package/src/cubing/twisty/model/props/puzzle/.DS_Store +0 -0
- package/src/cubing/twisty/old/.DS_Store +0 -0
- package/src/cubing/twisty/old/dom/.DS_Store +0 -0
- package/src/cubing/twisty/views/.DS_Store +0 -0
- package/src/cubing/twisty/views/3D/.DS_Store +0 -0
- package/stream/index.d.ts +0 -1
- package/twisty/index.d.ts +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseSGS
|
|
3
|
+
} from "./chunk-XVZOMB6J.js";
|
|
4
|
+
import {
|
|
5
|
+
cube2x2x2
|
|
6
|
+
} from "./chunk-DK6PXBB2.js";
|
|
7
|
+
import "./chunk-X6JHXPDX.js";
|
|
8
|
+
import "./chunk-EWRBHQFX.js";
|
|
9
|
+
import "./chunk-WO2AXYFE.js";
|
|
10
|
+
|
|
11
|
+
// src/cubing/search/inside/solve/puzzles/2x2x2.sgs.json.ts
|
|
12
|
+
var cachedData = null;
|
|
13
|
+
async function cachedData222() {
|
|
14
|
+
return cachedData ?? (cachedData = data222());
|
|
15
|
+
}
|
|
16
|
+
async function data222() {
|
|
17
|
+
return parseSGS(await cube2x2x2.def(), `SubgroupSizes 24 21 18 15 12 9 6
|
|
18
|
+
|
|
19
|
+
Alg F
|
|
20
|
+
Alg F2
|
|
21
|
+
Alg F'
|
|
22
|
+
Alg D
|
|
23
|
+
Alg D2
|
|
24
|
+
Alg D'
|
|
25
|
+
Alg L
|
|
26
|
+
Alg L2
|
|
27
|
+
Alg L'
|
|
28
|
+
Alg F U
|
|
29
|
+
Alg F U2
|
|
30
|
+
Alg F U'
|
|
31
|
+
Alg F L
|
|
32
|
+
Alg F L2
|
|
33
|
+
Alg F L'
|
|
34
|
+
Alg F2 U
|
|
35
|
+
Alg F2 U'
|
|
36
|
+
Alg F2 R
|
|
37
|
+
Alg F2 R'
|
|
38
|
+
Alg F' D
|
|
39
|
+
Alg F' D'
|
|
40
|
+
Alg F' R
|
|
41
|
+
Alg F' R'
|
|
42
|
+
Alg B
|
|
43
|
+
Alg B2
|
|
44
|
+
Alg B'
|
|
45
|
+
Alg B R
|
|
46
|
+
Alg B R2
|
|
47
|
+
Alg B R'
|
|
48
|
+
Alg B2 U
|
|
49
|
+
Alg B2 U2
|
|
50
|
+
Alg B2 U'
|
|
51
|
+
Alg B2 R
|
|
52
|
+
Alg B2 R2
|
|
53
|
+
Alg B2 R'
|
|
54
|
+
Alg B' U
|
|
55
|
+
Alg B' U'
|
|
56
|
+
Alg F D' F'
|
|
57
|
+
Alg F2 L F2
|
|
58
|
+
Alg B R' B2
|
|
59
|
+
Alg B R' U2
|
|
60
|
+
Alg B2 U R'
|
|
61
|
+
Alg B2 R B'
|
|
62
|
+
Alg R
|
|
63
|
+
Alg R2
|
|
64
|
+
Alg R'
|
|
65
|
+
Alg R2 U
|
|
66
|
+
Alg R2 U2
|
|
67
|
+
Alg R2 U'
|
|
68
|
+
Alg R' U
|
|
69
|
+
Alg R' U2
|
|
70
|
+
Alg R' U'
|
|
71
|
+
Alg F R F'
|
|
72
|
+
Alg F R2 F'
|
|
73
|
+
Alg L2 D' L2
|
|
74
|
+
Alg L' B L
|
|
75
|
+
Alg R2 U' R
|
|
76
|
+
Alg R' U R2
|
|
77
|
+
Alg R' U R'
|
|
78
|
+
Alg F R F' U2
|
|
79
|
+
Alg F' U F
|
|
80
|
+
Alg F' U2 F
|
|
81
|
+
Alg F' U' F
|
|
82
|
+
Alg L F L'
|
|
83
|
+
Alg L F2 L'
|
|
84
|
+
Alg L F' L'
|
|
85
|
+
Alg F' D R D'
|
|
86
|
+
Alg F' U2 F U'
|
|
87
|
+
Alg F D2 B D2 F'
|
|
88
|
+
Alg F2 D' L2 D F2
|
|
89
|
+
Alg F2 L F L' F
|
|
90
|
+
Alg L' F2 L' F2 L
|
|
91
|
+
Alg F L' U' L2 F L'
|
|
92
|
+
Alg F2 L F L' U2 F
|
|
93
|
+
Alg U
|
|
94
|
+
Alg U2
|
|
95
|
+
Alg U'
|
|
96
|
+
Alg F2 D2 B D2 F2
|
|
97
|
+
Alg F2 D2 B' D2 F2
|
|
98
|
+
Alg L2 D2 R D2 L2
|
|
99
|
+
Alg L2 D2 R' D2 L2
|
|
100
|
+
Alg F2 D2 B D2 F2 U
|
|
101
|
+
Alg F2 D2 B D2 F2 U'
|
|
102
|
+
Alg U F2 D2 B D2 F2
|
|
103
|
+
Alg U F2 D2 B' D2 F2
|
|
104
|
+
Alg F D B D' R' F' U
|
|
105
|
+
Alg F' D L F U B' L'
|
|
106
|
+
Alg F' L' F U L U L'
|
|
107
|
+
Alg D' L F D R' U' F'
|
|
108
|
+
Alg L F L' U' F' U' F
|
|
109
|
+
Alg L D' F' L' U' R F
|
|
110
|
+
Alg F D F U F' L' F' R'
|
|
111
|
+
Alg F2 D' F L F2 D F' R'
|
|
112
|
+
Alg F D' F L' D F R2 U2 F' U'
|
|
113
|
+
Alg F D' L D' L F D2 L2 B' R'
|
|
114
|
+
Alg F L' D F R2 D2 L D F' U2
|
|
115
|
+
Alg F L' D F2 D' L F L2 F2 U
|
|
116
|
+
Alg F D F' D L2 F R' F' D' B2 U'`);
|
|
117
|
+
}
|
|
118
|
+
export {
|
|
119
|
+
cachedData222,
|
|
120
|
+
data222
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=2x2x2.sgs.json-FRBWMMA7.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubing/search/inside/solve/puzzles/2x2x2.sgs.json.ts"],
|
|
4
|
+
"sourcesContent": ["import { cube2x2x2 } from \"../../../../puzzles\";\nimport { parseSGS, SGSCachedData } from \"../parseSGS\";\n\nlet cachedData: Promise<SGSCachedData> | null = null;\nexport async function cachedData222() {\n return (cachedData ??= data222());\n}\n\n// TODO: Reduce info.\nexport async function data222(): Promise<SGSCachedData> {\n return parseSGS(\n await cube2x2x2.def(),\n `SubgroupSizes 24 21 18 15 12 9 6\n\nAlg F\nAlg F2\nAlg F'\nAlg D\nAlg D2\nAlg D'\nAlg L\nAlg L2\nAlg L'\nAlg F U\nAlg F U2\nAlg F U'\nAlg F L\nAlg F L2\nAlg F L'\nAlg F2 U\nAlg F2 U'\nAlg F2 R\nAlg F2 R'\nAlg F' D\nAlg F' D'\nAlg F' R\nAlg F' R'\nAlg B\nAlg B2\nAlg B'\nAlg B R\nAlg B R2\nAlg B R'\nAlg B2 U\nAlg B2 U2\nAlg B2 U'\nAlg B2 R\nAlg B2 R2\nAlg B2 R'\nAlg B' U\nAlg B' U'\nAlg F D' F'\nAlg F2 L F2\nAlg B R' B2\nAlg B R' U2\nAlg B2 U R'\nAlg B2 R B'\nAlg R\nAlg R2\nAlg R'\nAlg R2 U\nAlg R2 U2\nAlg R2 U'\nAlg R' U\nAlg R' U2\nAlg R' U'\nAlg F R F'\nAlg F R2 F'\nAlg L2 D' L2\nAlg L' B L\nAlg R2 U' R\nAlg R' U R2\nAlg R' U R'\nAlg F R F' U2\nAlg F' U F\nAlg F' U2 F\nAlg F' U' F\nAlg L F L'\nAlg L F2 L'\nAlg L F' L'\nAlg F' D R D'\nAlg F' U2 F U'\nAlg F D2 B D2 F'\nAlg F2 D' L2 D F2\nAlg F2 L F L' F\nAlg L' F2 L' F2 L\nAlg F L' U' L2 F L'\nAlg F2 L F L' U2 F\nAlg U\nAlg U2\nAlg U'\nAlg F2 D2 B D2 F2\nAlg F2 D2 B' D2 F2\nAlg L2 D2 R D2 L2\nAlg L2 D2 R' D2 L2\nAlg F2 D2 B D2 F2 U\nAlg F2 D2 B D2 F2 U'\nAlg U F2 D2 B D2 F2\nAlg U F2 D2 B' D2 F2\nAlg F D B D' R' F' U\nAlg F' D L F U B' L'\nAlg F' L' F U L U L'\nAlg D' L F D R' U' F'\nAlg L F L' U' F' U' F\nAlg L D' F' L' U' R F\nAlg F D F U F' L' F' R'\nAlg F2 D' F L F2 D F' R'\nAlg F D' F L' D F R2 U2 F' U'\nAlg F D' L D' L F D2 L2 B' R'\nAlg F L' D F R2 D2 L D F' U2\nAlg F L' D F2 D' L F L2 F2 U\nAlg F D F' D L2 F R' F' D' B2 U'`,\n );\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAGA,IAAI,aAA4C;AAChD,+BAAsC;AACpC,SAAQ,4BAAe;AAAA;AAIzB,yBAAwD;AACtD,SAAO,SACL,MAAM,UAAU,OAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
Twisty3DScene,
|
|
6
6
|
cube3DShim,
|
|
7
7
|
pg3dShim
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-N3RNWU5T.js";
|
|
9
|
+
import "./chunk-DK6PXBB2.js";
|
|
10
10
|
import "./chunk-X6JHXPDX.js";
|
|
11
11
|
import "./chunk-EWRBHQFX.js";
|
|
12
12
|
import "./chunk-WO2AXYFE.js";
|
|
@@ -18,4 +18,4 @@ export {
|
|
|
18
18
|
cube3DShim,
|
|
19
19
|
pg3dShim
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=3d-
|
|
21
|
+
//# sourceMappingURL=3d-Q4WSD4BC.js.map
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "../../types/
|
|
1
|
+
export * from "../../types/bluetooth";
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// src/cubing/vendor/random-uint-below/get-random-values.ts
|
|
2
|
+
var cryptoPromise = null;
|
|
3
|
+
async function getRandomValuesFactory() {
|
|
4
|
+
if (!globalThis?.crypto?.getRandomValues) {
|
|
5
|
+
const nodeWebcrypto = (await (cryptoPromise ?? (cryptoPromise = import("crypto")))).webcrypto;
|
|
6
|
+
return nodeWebcrypto.getRandomValues;
|
|
7
|
+
} else {
|
|
8
|
+
return crypto.getRandomValues.bind(crypto);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// src/cubing/vendor/random-uint-below/random53BitValue.ts
|
|
13
|
+
var MAX_JS_PRECISE_INT = 9007199254740992;
|
|
14
|
+
var UPPER_HALF_MULTIPLIER = 2097152;
|
|
15
|
+
var LOWER_HALF_DIVIDER = 2048;
|
|
16
|
+
function random53BitValue(getRandomValues) {
|
|
17
|
+
const arr = new Uint32Array(2);
|
|
18
|
+
getRandomValues(arr);
|
|
19
|
+
const upper = arr[0];
|
|
20
|
+
const lower = arr[1];
|
|
21
|
+
return Math.floor(upper * UPPER_HALF_MULTIPLIER) + Math.floor(lower / LOWER_HALF_DIVIDER);
|
|
22
|
+
}
|
|
23
|
+
function validateMax(max) {
|
|
24
|
+
if (typeof max !== "number" || max < 0 || Math.floor(max) !== max) {
|
|
25
|
+
throw new Error("randomInt.below() not called with a positive integer value.");
|
|
26
|
+
}
|
|
27
|
+
if (max > MAX_JS_PRECISE_INT) {
|
|
28
|
+
throw new Error(`Called randomInt.below() with max == ${max}, which is larger than JavaScript can handle with integer precision.`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function randomUIntBelowFactory() {
|
|
32
|
+
const getRandomValues = await getRandomValuesFactory();
|
|
33
|
+
const randomUIntBelow = (max) => {
|
|
34
|
+
validateMax(max);
|
|
35
|
+
const val = random53BitValue(getRandomValues);
|
|
36
|
+
const maxUniformSamplingRange = Math.floor(MAX_JS_PRECISE_INT / max) * max;
|
|
37
|
+
if (val < maxUniformSamplingRange) {
|
|
38
|
+
return val % max;
|
|
39
|
+
} else {
|
|
40
|
+
return randomUIntBelow(max);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return randomUIntBelow;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/cubing/vendor/random-uint-below/random-choice.ts
|
|
47
|
+
async function randomChoiceFactory() {
|
|
48
|
+
const randomUIntBelow = await randomUIntBelowFactory();
|
|
49
|
+
return (arr) => arr[randomUIntBelow(arr.length)];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// src/cubing/vendor/random-uint-below/index.ts
|
|
53
|
+
var randomUIntBelowPromise = randomUIntBelowFactory();
|
|
54
|
+
async function randomPermute(list) {
|
|
55
|
+
for (let i = 1; i < list.length; i++) {
|
|
56
|
+
const j = (await randomUIntBelowPromise)(i);
|
|
57
|
+
[list[i], list[j]] = [list[j], list[i]];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export {
|
|
62
|
+
randomUIntBelowFactory,
|
|
63
|
+
randomChoiceFactory,
|
|
64
|
+
randomPermute
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=chunk-37EHU3GZ.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubing/vendor/random-uint-below/get-random-values.ts", "../../src/cubing/vendor/random-uint-below/random53BitValue.ts", "../../src/cubing/vendor/random-uint-below/random-choice.ts", "../../src/cubing/vendor/random-uint-below/index.ts"],
|
|
4
|
+
"sourcesContent": ["export type GetRandomValuesFunction = (arr: Uint32Array) => void;\n\n// This is a workaround for a `node` segfault.\n// In theory, imports are cached and safe to import multiple times: https://nodejs.org/api/esm.html#esm_urls\n// In practice, a rapid series of inline imports inside a worker causes a segfault(!) in `node`.\n// So we cache a single import reference. We avoid populating it until we first need it, so that we don't attempt to perform the import in environments that don't need or have it (e.g. browsers, `deno`).\nlet cryptoPromise: Promise<typeof import(\"crypto\")> | null = null;\n\n// `@types/node` is... lacking. This type may cause an error in the future, at which point we can hopefully use `@types/node` directly.\ntype NodeWebCrypto = typeof import(\"crypto\").webcrypto & {\n getRandomValues: GetRandomValuesFunction;\n};\n\n// We could use top-level await to define this more statically, but that has limited transpilation support.\nexport async function getRandomValuesFactory(): Promise<GetRandomValuesFunction> {\n if (!globalThis?.crypto?.getRandomValues) {\n const nodeWebcrypto = (await (cryptoPromise ??= import(\"crypto\")))\n .webcrypto as NodeWebCrypto;\n return nodeWebcrypto.getRandomValues;\n } else {\n return crypto.getRandomValues.bind(crypto) as GetRandomValuesFunction;\n }\n}\n", "import {\n getRandomValuesFactory,\n GetRandomValuesFunction,\n} from \"./get-random-values\";\n\n/*\n * randomInt.below(max) returns a random non-negative integer less than max (0 <= output < max).\n * `max` must be at most 2^53.\n */\n\nconst MAX_JS_PRECISE_INT = 9007199254740992;\n\nconst UPPER_HALF_MULTIPLIER = 2097152; // 2^21. We have to use multiplication because bit shifts truncate to 32 bits.\nconst LOWER_HALF_DIVIDER = 2048;\n\nfunction random53BitValue(getRandomValues: GetRandomValuesFunction): number {\n // Construct a random 53-bit value from a 32-bit upper half and a 21-bit lower half.\n const arr = new Uint32Array(2);\n getRandomValues(arr);\n const upper = arr[0];\n const lower = arr[1];\n return (\n Math.floor(upper * UPPER_HALF_MULTIPLIER) +\n Math.floor(lower / LOWER_HALF_DIVIDER)\n );\n}\n\nfunction validateMax(max: number): void {\n if (typeof max !== \"number\" || max < 0 || Math.floor(max) !== max) {\n throw new Error(\n \"randomInt.below() not called with a positive integer value.\",\n );\n }\n if (max > MAX_JS_PRECISE_INT) {\n throw new Error(\n `Called randomInt.below() with max == ${max}, which is larger than JavaScript can handle with integer precision.`,\n );\n }\n}\n\n// TODO: cache generated `randomUIntBelow`?\nexport async function randomUIntBelowFactory(): Promise<\n (max: number) => number\n> {\n const getRandomValues = await getRandomValuesFactory();\n const randomUIntBelow = (max: number): number => {\n validateMax(max);\n\n const val = random53BitValue(getRandomValues);\n const maxUniformSamplingRange = Math.floor(MAX_JS_PRECISE_INT / max) * max;\n\n // Rejection sampling:\n if (val < maxUniformSamplingRange) {\n return val % max;\n } else {\n // val % max would produce a biased result. This bias an be very bad if `max` is on the order of MAX_JS_PRECISE_INT. We have to try again, so just call ourselves recursively.\n // For some values of `max` just above 9007199254740992 / 2, this happens about once on average. For other values of `max`, it's less than that (and for small values of `max` it's extremely unlikely).\n\n // TODO: Use more bits of accuracy instead of rejection sampling to avoid DoS.\n return randomUIntBelow(max);\n }\n };\n return randomUIntBelow;\n}\n", "import { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// Inspired by https://reference.wolfram.com/language/ref/RandomChoice.html\n// This library itself should be kept small, but a wrapper library may want to implement selecting multiple element without replacement as with replacement:\n// https://reference.wolfram.com/language/ref/RandomSample.html\nexport async function randomChoiceFactory<T>(): Promise<(arr: Array<T>) => T> {\n const randomUIntBelow = await randomUIntBelowFactory();\n return (arr: Array<T>): T => arr[randomUIntBelow(arr.length)];\n}\n", "export { randomChoiceFactory } from \"./random-choice\";\nexport { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// TODO: reuse factory properly, move this to a separate file, add to impl.\nimport { randomUIntBelowFactory } from \"./random53BitValue\";\nconst randomUIntBelowPromise = randomUIntBelowFactory();\nexport async function randomPermute<T>(list: T[]): Promise<void> {\n for (let i = 1; i < list.length; i++) {\n const j = (await randomUIntBelowPromise)(i);\n [list[i], list[j]] = [list[j], list[i]];\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAMA,IAAI,gBAAyD;AAQ7D,wCAAiF;AAC/E,MAAI,CAAC,YAAY,QAAQ,iBAAiB;AACxC,UAAM,gBAAiB,OAAO,mCAAkB,OAAO,aACpD;AACH,WAAO,cAAc;AAAA,SAChB;AACL,WAAO,OAAO,gBAAgB,KAAK;AAAA;AAAA;;;ACVvC,IAAM,qBAAqB;AAE3B,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAE3B,0BAA0B,iBAAkD;AAE1E,QAAM,MAAM,IAAI,YAAY;AAC5B,kBAAgB;AAChB,QAAM,QAAQ,IAAI;AAClB,QAAM,QAAQ,IAAI;AAClB,SACE,KAAK,MAAM,QAAQ,yBACnB,KAAK,MAAM,QAAQ;AAAA;AAIvB,qBAAqB,KAAmB;AACtC,MAAI,OAAO,QAAQ,YAAY,MAAM,KAAK,KAAK,MAAM,SAAS,KAAK;AACjE,UAAM,IAAI,MACR;AAAA;AAGJ,MAAI,MAAM,oBAAoB;AAC5B,UAAM,IAAI,MACR,wCAAwC;AAAA;AAAA;AAM9C,wCAEE;AACA,QAAM,kBAAkB,MAAM;AAC9B,QAAM,kBAAkB,CAAC,QAAwB;AAC/C,gBAAY;AAEZ,UAAM,MAAM,iBAAiB;AAC7B,UAAM,0BAA0B,KAAK,MAAM,qBAAqB,OAAO;AAGvE,QAAI,MAAM,yBAAyB;AACjC,aAAO,MAAM;AAAA,WACR;AAKL,aAAO,gBAAgB;AAAA;AAAA;AAG3B,SAAO;AAAA;;;ACzDT,qCAA8E;AAC5E,QAAM,kBAAkB,MAAM;AAC9B,SAAO,CAAC,QAAqB,IAAI,gBAAgB,IAAI;AAAA;;;ACFvD,IAAM,yBAAyB;AAC/B,6BAAuC,MAA0B;AAC/D,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,IAAK,OAAM,wBAAwB;AACzC,KAAC,KAAK,IAAI,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/cubing/vendor/comlink-everywhere/inside/index.js
|
|
2
|
+
import { expose as comlinkExpose } from "comlink";
|
|
3
|
+
var useNodeWorkarounds = typeof globalThis.Worker === "undefined" && typeof globalThis.WorkerNavigator === "undefined";
|
|
4
|
+
function expose(api) {
|
|
5
|
+
if (useNodeWorkarounds) {
|
|
6
|
+
(async () => {
|
|
7
|
+
const { port } = await import("./node-SP4L2AKI.js");
|
|
8
|
+
comlinkExpose(api, await port());
|
|
9
|
+
})();
|
|
10
|
+
} else {
|
|
11
|
+
comlinkExpose(api);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export {
|
|
16
|
+
expose
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=chunk-BJIOROQC.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubing/vendor/comlink-everywhere/inside/index.js"],
|
|
4
|
+
"sourcesContent": ["import { expose as comlinkExpose } from \"comlink\";\n\nconst useNodeWorkarounds =\n typeof globalThis.Worker === \"undefined\" &&\n typeof globalThis.WorkerNavigator === \"undefined\";\n\nexport function expose(api) {\n if (useNodeWorkarounds) {\n (async () => {\n const { port } = await import(\"./node.js\");\n comlinkExpose(api, await port());\n })();\n } else {\n comlinkExpose(api);\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA;AAEA,IAAM,qBACJ,OAAO,WAAW,WAAW,eAC7B,OAAO,WAAW,oBAAoB;AAEjC,gBAAgB,KAAK;AAC1B,MAAI,oBAAoB;AACtB,IAAC,aAAY;AACX,YAAM,EAAE,SAAS,MAAM,OAAO;AAC9B,oBAAc,KAAK,MAAM;AAAA;AAAA,SAEtB;AACL,kBAAc;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
File without changes
|