cubing 0.28.1 → 0.29.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 +2 -0
- package/dist/esm/alg/index.js +2 -2
- package/dist/esm/bluetooth/index.js +222 -86
- package/dist/esm/bluetooth/index.js.map +3 -3
- package/dist/esm/{chunk-F4WWCPVE.js → chunk-2IZUSAXQ.js} +2 -2
- package/dist/esm/{chunk-F4WWCPVE.js.map → chunk-2IZUSAXQ.js.map} +1 -1
- package/dist/esm/{chunk-YSVFZVG4.js → chunk-DZGFGBKT.js} +183 -76
- package/dist/esm/chunk-DZGFGBKT.js.map +7 -0
- package/dist/esm/{chunk-7D7LW3WQ.js → chunk-GW4FGG42.js} +8 -4
- package/dist/esm/{chunk-7D7LW3WQ.js.map → chunk-GW4FGG42.js.map} +1 -1
- package/dist/esm/{chunk-32FWPPTW.js → chunk-LSCTPPWV.js} +22 -8
- package/dist/esm/{chunk-32FWPPTW.js.map → chunk-LSCTPPWV.js.map} +1 -1
- package/dist/esm/{chunk-LSVR2HCG.js → chunk-LV7IKG36.js} +389 -363
- package/dist/esm/{chunk-LSVR2HCG.js.map → chunk-LV7IKG36.js.map} +1 -1
- package/dist/esm/{chunk-CSBUJ64Q.js → chunk-NI7U4XAZ.js} +373 -238
- package/dist/esm/chunk-NI7U4XAZ.js.map +7 -0
- package/dist/esm/{chunk-GVPTO3OF.js → chunk-OX6O2ZO5.js} +1 -1
- package/dist/esm/{chunk-GVPTO3OF.js.map → chunk-OX6O2ZO5.js.map} +1 -1
- package/dist/esm/{chunk-67VJZGH2.js → chunk-PYWGREIP.js} +44 -13
- package/dist/esm/chunk-PYWGREIP.js.map +7 -0
- package/dist/esm/{chunk-WAL36PO3.js → chunk-Q4W5ZR4U.js} +28 -12
- package/dist/esm/{chunk-WAL36PO3.js.map → chunk-Q4W5ZR4U.js.map} +1 -1
- package/dist/esm/{chunk-MGJA5U5O.js → chunk-SBZRVSPK.js} +1 -12
- package/dist/esm/{chunk-MGJA5U5O.js.map → chunk-SBZRVSPK.js.map} +0 -0
- package/dist/esm/{chunk-MWKALF6W.js → chunk-TGPS3CXW.js} +22 -13
- package/dist/esm/chunk-TGPS3CXW.js.map +7 -0
- package/dist/esm/{chunk-V55YSWJY.js → chunk-WXCNEGW3.js} +10 -4
- package/dist/esm/{chunk-V55YSWJY.js.map → chunk-WXCNEGW3.js.map} +1 -1
- package/dist/esm/{chunk-ZY3RTFFS.js → chunk-XU5ILFX5.js} +137 -66
- package/dist/esm/{chunk-ZY3RTFFS.js.map → chunk-XU5ILFX5.js.map} +3 -3
- package/dist/esm/{chunk-ALBEW4DJ.js → chunk-ZB3P5AZN.js} +1 -1
- package/dist/esm/{chunk-ALBEW4DJ.js.map → chunk-ZB3P5AZN.js.map} +1 -1
- package/dist/esm/{chunk-NPHUBFZ6.js → chunk-ZNAYJGVL.js} +2 -2
- package/dist/esm/{chunk-NPHUBFZ6.js.map → chunk-ZNAYJGVL.js.map} +1 -1
- package/dist/esm/kpuzzle/index.js +3 -3
- package/dist/esm/notation/index.js +3 -3
- package/dist/esm/protocol/index.js +5 -5
- package/dist/esm/puzzle-geometry/index.js +271 -71
- package/dist/esm/puzzle-geometry/index.js.map +2 -2
- package/dist/esm/puzzles/index.js +5 -5
- package/dist/esm/{puzzles-dynamic-3x3x3-NB2PEZTV.js → puzzles-dynamic-3x3x3-KIG5A6QR.js} +2 -2
- package/dist/esm/{puzzles-dynamic-3x3x3-NB2PEZTV.js.map → puzzles-dynamic-3x3x3-KIG5A6QR.js.map} +0 -0
- package/dist/esm/puzzles-dynamic-4x4x4-PEDAPUZK.js +126 -0
- package/dist/esm/puzzles-dynamic-4x4x4-PEDAPUZK.js.map +7 -0
- package/dist/esm/{puzzles-dynamic-side-events-WZI4Y3N6.js → puzzles-dynamic-side-events-5C7LMBWX.js} +2 -2
- package/dist/esm/{puzzles-dynamic-side-events-WZI4Y3N6.js.map → puzzles-dynamic-side-events-5C7LMBWX.js.map} +0 -0
- package/dist/esm/{puzzles-dynamic-unofficial-FUG3JBMH.js → puzzles-dynamic-unofficial-WWJ4NJMX.js} +2 -2
- package/dist/esm/{puzzles-dynamic-unofficial-FUG3JBMH.js.map → puzzles-dynamic-unofficial-WWJ4NJMX.js.map} +0 -0
- package/dist/esm/scramble/index.js +5 -5
- package/dist/esm/search/index.js +10 -10
- package/dist/esm/{search-dynamic-sgs-side-events-R3HDJ5XQ.js → search-dynamic-sgs-side-events-AYX7MZO7.js} +35 -17
- package/dist/esm/{search-dynamic-sgs-side-events-R3HDJ5XQ.js.map → search-dynamic-sgs-side-events-AYX7MZO7.js.map} +2 -2
- package/dist/esm/{search-dynamic-sgs-unofficial-FQNKGHVO.js → search-dynamic-sgs-unofficial-DLJOJFJL.js} +35 -14
- package/dist/esm/{search-dynamic-sgs-unofficial-FQNKGHVO.js.map → search-dynamic-sgs-unofficial-DLJOJFJL.js.map} +2 -2
- package/dist/esm/{search-dynamic-solve-3x3x3-K42IWMQV.js → search-dynamic-solve-3x3x3-7XZTYQMO.js} +795 -142
- package/dist/esm/{search-dynamic-solve-3x3x3-K42IWMQV.js.map → search-dynamic-solve-3x3x3-7XZTYQMO.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-4x4x4-XRV4NBMQ.js → search-dynamic-solve-4x4x4-CWWTFKMR.js} +135 -29
- package/dist/esm/{search-dynamic-solve-4x4x4-XRV4NBMQ.js.map → search-dynamic-solve-4x4x4-CWWTFKMR.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-fto-O6UXF7EC.js → search-dynamic-solve-fto-4LI23P6K.js} +253 -69
- package/dist/esm/{search-dynamic-solve-fto-O6UXF7EC.js.map → search-dynamic-solve-fto-4LI23P6K.js.map} +2 -2
- package/dist/esm/{search-dynamic-solve-kilominx-G4MLGWNS.js → search-dynamic-solve-kilominx-3HEVQ4MC.js} +32 -8
- package/dist/esm/{search-dynamic-solve-kilominx-G4MLGWNS.js.map → search-dynamic-solve-kilominx-3HEVQ4MC.js.map} +2 -2
- package/dist/esm/{search-dynamic-solve-master_tetraminx-3RKD3IAN.js → search-dynamic-solve-master_tetraminx-UB32C7MM.js} +111 -42
- package/dist/esm/{search-dynamic-solve-master_tetraminx-3RKD3IAN.js.map → search-dynamic-solve-master_tetraminx-UB32C7MM.js.map} +2 -2
- package/dist/esm/{search-dynamic-solve-sq1-WIJEGVLP.js → search-dynamic-solve-sq1-HA72TYF2.js} +54 -9
- package/dist/esm/{search-dynamic-solve-sq1-WIJEGVLP.js.map → search-dynamic-solve-sq1-HA72TYF2.js.map} +2 -2
- package/dist/esm/{search-worker-inside-generated-string-IZCKWXUA.js → search-worker-inside-generated-string-AMEXYCKK.js} +146 -28
- package/dist/esm/search-worker-inside-generated-string-AMEXYCKK.js.map +7 -0
- package/dist/esm/{search-worker-js-entry-WBEKNBB7.js → search-worker-js-entry-TP2T3NUL.js} +147 -53
- package/dist/esm/{search-worker-js-entry-WBEKNBB7.js.map → search-worker-js-entry-TP2T3NUL.js.map} +2 -2
- package/dist/esm/{search-worker-ts-entry-XQWMEOC4.js → search-worker-ts-entry-NEH77S4I.js} +5 -5
- package/dist/esm/{search-worker-ts-entry-XQWMEOC4.js.map → search-worker-ts-entry-NEH77S4I.js.map} +1 -1
- package/dist/esm/stream/index.js +12 -8
- package/dist/esm/stream/index.js.map +1 -1
- package/dist/esm/twisty/index.js +1154 -762
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/{twisty-dynamic-3d-QOX7IEXC.js → twisty-dynamic-3d-D3ZDBJUH.js} +352 -175
- package/dist/esm/{twisty-dynamic-3d-QOX7IEXC.js.map → twisty-dynamic-3d-D3ZDBJUH.js.map} +2 -2
- package/dist/types/{Alg-e2a80975.d.ts → Alg-137fb0d5.d.ts} +19 -16
- package/dist/types/{KState-a2f0e651.d.ts → KState-a73111d7.d.ts} +1 -9
- package/dist/types/{TwizzleLink-dcf51446.d.ts → TwizzleLink-bef52ecd.d.ts} +46 -10
- package/dist/types/alg/index.d.ts +4 -4
- package/dist/types/bluetooth/index.d.ts +4 -4
- package/dist/types/{bluetooth-puzzle-3670a6a1.d.ts → bluetooth-puzzle-8a678993.d.ts} +9 -9
- package/dist/types/kpuzzle/index.d.ts +2 -2
- package/dist/types/notation/index.d.ts +1 -1
- package/dist/types/{outside-0ce1b145.d.ts → outside-e55f28a0.d.ts} +2 -2
- package/dist/types/{parseAlg-db0dec6c.d.ts → parseAlg-a28f7568.d.ts} +1 -1
- package/dist/types/protocol/index.d.ts +2 -2
- package/dist/types/puzzle-geometry/index.d.ts +3 -3
- package/dist/types/puzzles/index.d.ts +5 -5
- package/dist/types/scramble/index.d.ts +3 -3
- package/dist/types/search/index.d.ts +3 -3
- package/dist/types/stream/index.d.ts +5 -5
- package/dist/types/twisty/index.d.ts +5 -5
- package/package.json +47 -41
- package/dist/esm/chunk-67VJZGH2.js.map +0 -7
- package/dist/esm/chunk-CSBUJ64Q.js.map +0 -7
- package/dist/esm/chunk-MWKALF6W.js.map +0 -7
- package/dist/esm/chunk-YSVFZVG4.js.map +0 -7
- package/dist/esm/search-worker-inside-generated-string-IZCKWXUA.js.map +0 -7
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { K as KState } from './KState-
|
|
1
|
+
import { b as AlgLeaf } from './Alg-137fb0d5.js';
|
|
2
|
+
import { K as KState } from './KState-a73111d7.js';
|
|
3
3
|
|
|
4
4
|
interface StreamTransformer {
|
|
5
|
-
|
|
5
|
+
transformAlgLeaf(algLeafEvent: AlgLeafEvent): void;
|
|
6
6
|
transformOrientation(orientationEvent: OrientationEvent): void;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
/******** BluetoothPuzzle ********/
|
|
10
10
|
/** @category Smart Puzzles */
|
|
11
|
-
interface
|
|
12
|
-
|
|
11
|
+
interface AlgLeafEvent {
|
|
12
|
+
latestAlgLeaf: AlgLeaf;
|
|
13
13
|
timeStamp: number;
|
|
14
14
|
debug?: Record<string, unknown>;
|
|
15
15
|
state?: KState;
|
|
@@ -29,16 +29,16 @@ interface OrientationEvent {
|
|
|
29
29
|
/** @category Smart Puzzles */
|
|
30
30
|
declare abstract class BluetoothPuzzle extends EventTarget {
|
|
31
31
|
transformers: StreamTransformer[];
|
|
32
|
-
protected listeners: Array<(e:
|
|
32
|
+
protected listeners: Array<(e: AlgLeafEvent) => void>;
|
|
33
33
|
protected orientationListeners: Array<(e: OrientationEvent) => void>;
|
|
34
34
|
abstract name(): string | undefined;
|
|
35
35
|
abstract disconnect(): void;
|
|
36
36
|
getState(): Promise<KState>;
|
|
37
|
-
|
|
37
|
+
addAlgLeafListener(listener: (e: AlgLeafEvent) => void): void;
|
|
38
38
|
addOrientationListener(listener: (e: OrientationEvent) => void): void;
|
|
39
39
|
experimentalAddBasicRotationTransformer(): void;
|
|
40
|
-
protected
|
|
40
|
+
protected dispatchAlgLeaf(algLeaf: AlgLeafEvent): void;
|
|
41
41
|
protected dispatchOrientation(orientationEvent: OrientationEvent): void;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
export {
|
|
44
|
+
export { AlgLeafEvent as A, BluetoothPuzzle as B, OrientationEvent as O };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { a as KPuzzle, b as KPuzzleDefinition, K as KState, c as KStateData, e as KTransformation, d as KTransformationData } from '../KState-
|
|
2
|
-
import '../Alg-
|
|
1
|
+
export { a as KPuzzle, b as KPuzzleDefinition, K as KState, c as KStateData, e as KTransformation, d as KTransformationData } from '../KState-a73111d7.js';
|
|
2
|
+
import '../Alg-137fb0d5.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as Perm } from '../KState-
|
|
2
|
-
export { u as EXPERIMENTAL_PUZZLE_BASE_SHAPES, s as EXPERIMENTAL_PUZZLE_CUT_TYPES, o as ExperimentalPGNotation, v as ExperimentalPuzzleBaseShape, q as ExperimentalPuzzleCutDescription, t as ExperimentalPuzzleCutType, r as ExperimentalPuzzleDescription, j as PuzzleGeometry, Q as Quat, S as StickerDat, k as StickerDatAxis, l as StickerDatFace, m as StickerDatSticker, i as getPG3DNamedPuzzles, g as getPuzzleDescriptionString, f as getPuzzleGeometryByDesc, h as getPuzzleGeometryByName, n as parseOptions, p as parsePuzzleDescription } from '../KState-
|
|
3
|
-
import '../Alg-
|
|
1
|
+
import { P as Perm } from '../KState-a73111d7.js';
|
|
2
|
+
export { u as EXPERIMENTAL_PUZZLE_BASE_SHAPES, s as EXPERIMENTAL_PUZZLE_CUT_TYPES, o as ExperimentalPGNotation, v as ExperimentalPuzzleBaseShape, q as ExperimentalPuzzleCutDescription, t as ExperimentalPuzzleCutType, r as ExperimentalPuzzleDescription, j as PuzzleGeometry, Q as Quat, S as StickerDat, k as StickerDatAxis, l as StickerDatFace, m as StickerDatSticker, i as getPG3DNamedPuzzles, g as getPuzzleDescriptionString, f as getPuzzleGeometryByDesc, h as getPuzzleGeometryByName, n as parseOptions, p as parsePuzzleDescription } from '../KState-a73111d7.js';
|
|
3
|
+
import '../Alg-137fb0d5.js';
|
|
4
4
|
|
|
5
5
|
declare function schreierSims(g: Perm[], disp: (s: string) => void): bigint;
|
|
6
6
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PuzzleID, a as PuzzleLoader } from '../TwizzleLink-
|
|
2
|
-
export { a as PuzzleLoader } from '../TwizzleLink-
|
|
1
|
+
import { P as PuzzleID, a as PuzzleLoader } from '../TwizzleLink-bef52ecd.js';
|
|
2
|
+
export { a as PuzzleLoader } from '../TwizzleLink-bef52ecd.js';
|
|
3
3
|
import 'three';
|
|
4
|
-
import '../Alg-
|
|
5
|
-
import '../parseAlg-
|
|
6
|
-
import '../KState-
|
|
4
|
+
import '../Alg-137fb0d5.js';
|
|
5
|
+
import '../parseAlg-a28f7568.js';
|
|
6
|
+
import '../KState-a73111d7.js';
|
|
7
7
|
|
|
8
8
|
interface EventInfo {
|
|
9
9
|
puzzleID: PuzzleID;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { r as randomScrambleForEvent } from '../outside-
|
|
2
|
-
import '../Alg-
|
|
3
|
-
import '../KState-
|
|
1
|
+
export { r as randomScrambleForEvent } from '../outside-e55f28a0.js';
|
|
2
|
+
import '../Alg-137fb0d5.js';
|
|
3
|
+
import '../KState-a73111d7.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { a as experimentalSolve2x2x2, e as experimentalSolve3x3x3IgnoringCenters, d as setDebug, c as solveMegaminx, b as solvePyraminx, s as solveSkewb } from '../outside-
|
|
2
|
-
import { K as KState } from '../KState-
|
|
3
|
-
import '../Alg-
|
|
1
|
+
export { a as experimentalSolve2x2x2, e as experimentalSolve3x3x3IgnoringCenters, d as setDebug, c as solveMegaminx, b as solvePyraminx, s as solveSkewb } from '../outside-e55f28a0.js';
|
|
2
|
+
import { K as KState } from '../KState-a73111d7.js';
|
|
3
|
+
import '../Alg-137fb0d5.js';
|
|
4
4
|
|
|
5
5
|
declare function random333State(): Promise<KState>;
|
|
6
6
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import '../Alg-
|
|
3
|
-
import '../KState-
|
|
1
|
+
import { A as AlgLeafEvent, O as OrientationEvent } from '../bluetooth-puzzle-8a678993.js';
|
|
2
|
+
import '../Alg-137fb0d5.js';
|
|
3
|
+
import '../KState-a73111d7.js';
|
|
4
4
|
|
|
5
5
|
interface ProxyMoveEvent {
|
|
6
6
|
event: "move";
|
|
7
|
-
data:
|
|
7
|
+
data: AlgLeafEvent;
|
|
8
8
|
}
|
|
9
9
|
interface ProxyOrientationEvent {
|
|
10
10
|
event: "orientation";
|
|
@@ -18,7 +18,7 @@ declare type ProxyEvent = ProxyMoveEvent | ProxyOrientationEvent | ProxyResetEve
|
|
|
18
18
|
declare class WebSocketProxySender {
|
|
19
19
|
protected websocket: WebSocket;
|
|
20
20
|
constructor(url: string);
|
|
21
|
-
sendMoveEvent(e:
|
|
21
|
+
sendMoveEvent(e: AlgLeafEvent): void;
|
|
22
22
|
sendOrientationEvent(e: OrientationEvent): void;
|
|
23
23
|
sendResetEvent(): void;
|
|
24
24
|
protected sendProxyEvent(proxyEvent: ProxyEvent): void;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { A as AlgIndexer, T as Timestamp, D as Duration, b as PuzzleAppearance } from '../TwizzleLink-
|
|
2
|
-
export { A as AlgIndexer, B as BackViewLayout, N as EXPERIMENTAL_PROP_NO_VALUE, M as ExperimentalMillisecondTimestamp, E as ExperimentalStickering, P as PuzzleID, e as TwistyAlgEditor, d as TwistyAlgViewer, c as TwistyPlayer, f as TwistyPlayerConfig, h as TwizzleLink, V as VisualizationFormat, g as backViewLayouts } from '../TwizzleLink-
|
|
3
|
-
import { a as Alg, M as Move } from '../Alg-
|
|
4
|
-
import { a as KPuzzle, K as KState, e as KTransformation } from '../KState-
|
|
1
|
+
import { A as AlgIndexer, T as Timestamp, D as Duration, b as PuzzleAppearance } from '../TwizzleLink-bef52ecd.js';
|
|
2
|
+
export { A as AlgIndexer, B as BackViewLayout, N as EXPERIMENTAL_PROP_NO_VALUE, M as ExperimentalMillisecondTimestamp, E as ExperimentalStickering, P as PuzzleID, e as TwistyAlgEditor, d as TwistyAlgViewer, c as TwistyPlayer, f as TwistyPlayerConfig, h as TwizzleLink, V as VisualizationFormat, g as backViewLayouts } from '../TwizzleLink-bef52ecd.js';
|
|
3
|
+
import { a as Alg, M as Move } from '../Alg-137fb0d5.js';
|
|
4
|
+
import { a as KPuzzle, K as KState, e as KTransformation } from '../KState-a73111d7.js';
|
|
5
5
|
import 'three';
|
|
6
|
-
import '../parseAlg-
|
|
6
|
+
import '../parseAlg-a28f7568.js';
|
|
7
7
|
|
|
8
8
|
declare const twistyDebugGlobals: {
|
|
9
9
|
animateRaiseHintFacelets: boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cubing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "A collection of JavaScript cubing libraries.",
|
|
5
5
|
"author": "The js.cubing.net team",
|
|
6
6
|
"type": "module",
|
|
@@ -53,35 +53,39 @@
|
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@types/three": "^0.
|
|
57
|
-
"@types/web-bluetooth": "^0.0.
|
|
56
|
+
"@types/three": "^0.143.0",
|
|
57
|
+
"@types/web-bluetooth": "^0.0.15",
|
|
58
58
|
"comlink": "^4.3.1",
|
|
59
|
-
"three": "^0.
|
|
59
|
+
"three": "^0.143.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@babel/eslint-parser": "^7.18.9",
|
|
63
|
-
"@babel/preset-env": "^7.18.
|
|
63
|
+
"@babel/preset-env": "^7.18.10",
|
|
64
64
|
"@babel/preset-typescript": "^7.18.6",
|
|
65
|
+
"@esm-bundle/chai": "^4.3.4-fix.0",
|
|
66
|
+
"@types/chai": "^4.3.3",
|
|
65
67
|
"@types/dom-speech-recognition": "^0.0.1",
|
|
66
|
-
"@types/
|
|
67
|
-
"@types/node": "^18.
|
|
68
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
69
|
-
"@typescript-eslint/parser": "^5.
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
68
|
+
"@types/mocha": "^9.1.1",
|
|
69
|
+
"@types/node": "^18.7.2",
|
|
70
|
+
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
|
71
|
+
"@typescript-eslint/parser": "^5.33.0",
|
|
72
|
+
"@web/dev-server-esbuild": "^0.3.2",
|
|
73
|
+
"@web/test-runner": "^0.14.0",
|
|
74
|
+
"@web/test-runner-playwright": "^0.8.10",
|
|
75
|
+
"barely-a-dev-server": "^0.3.4",
|
|
76
|
+
"chai": "^4.3.6",
|
|
77
|
+
"esbuild": "^0.15.3",
|
|
78
|
+
"eslint": "^8.21.0",
|
|
74
79
|
"eslint-config-prettier": "^8.5.0",
|
|
75
|
-
"eslint-plugin-html": "^7.
|
|
80
|
+
"eslint-plugin-html": "^7.1.0",
|
|
76
81
|
"eslint-plugin-prettier": "^4.2.1",
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"jszip": "^3.10.0",
|
|
82
|
+
"jszip": "^3.10.1",
|
|
83
|
+
"mocha": "^10.0.0",
|
|
80
84
|
"peggy": "^2.0.1",
|
|
85
|
+
"playwright": "^1.25.1",
|
|
81
86
|
"prettier": "^2.7.1",
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"typedoc": "^0.23.8",
|
|
87
|
+
"tsup": "^6.2.2",
|
|
88
|
+
"typedoc": "^0.23.10",
|
|
85
89
|
"typescript": "^4.7.4",
|
|
86
90
|
"yargs": "^17.5.1"
|
|
87
91
|
},
|
|
@@ -106,7 +110,6 @@
|
|
|
106
110
|
"scripts": {
|
|
107
111
|
"build": "npm run clean && node ./script/build/main.js all",
|
|
108
112
|
"build-esm": "node ./script/build/main.js esm",
|
|
109
|
-
"build-bundle-global": "node ./script/build/main.js bundle-global",
|
|
110
113
|
"build-types": "node ./script/build/main.js types",
|
|
111
114
|
"build-bin": "node ./script/build/main.js bin",
|
|
112
115
|
"build-sites": "npm run build-site-twizzle && npm run build-site-experiments",
|
|
@@ -117,24 +120,33 @@
|
|
|
117
120
|
"generate-js": "npm run generate-js-parsers && npm run generate-js-svg",
|
|
118
121
|
"generate-js-parsers": "npx peggy --format es src/cubing/kpuzzle/parser/parser-peggy.peggy",
|
|
119
122
|
"generate-js-svg": "echo \"TODO: Generating JS for SVGs is not implemented yet.\"",
|
|
120
|
-
"dev": "npm run
|
|
123
|
+
"dev": "npm run quick-setup && node ./script/build/main.js sites dev",
|
|
121
124
|
"link": "npm run build && npm link",
|
|
122
125
|
"clean": "rm -rf dist .temp coverage src/cubing/search/search-worker-inside-generated* ./alg ./bluetooth ./kpuzzle ./notation ./protocol ./puzzle-geometry ./puzzles ./scramble ./search ./stream ./twisty",
|
|
123
|
-
"test": "
|
|
126
|
+
"test": "echo \"Run one of the following.\n(Time estimates are based on a fast computer.)\n\n make test-spec (≈4s, \\`*.spec.ts\\` files only)\n\n make test-src (≈30s, includes \\`make test-spec\\`)\n make test-build (≈10s)\n make test-dist (≈30s)\n\n make test-all (≈70s, runs all of the above)\n make test-fast (≈6s, runs a subset of the above)\n\"",
|
|
127
|
+
"test-fast": "npm run build-esm && npm run build-sites && npm run build-bin && npm run test-spec",
|
|
128
|
+
"test-all": "npm run test-src && npm run test-build && npm run test-dist",
|
|
129
|
+
"test-src": "npm run test-spec && npm run lint && npm run test-src-tsc && npm run test-src-internal-import-restrictions && npm run test-src-does-not-import-dist # keep CI.yml in sync with this",
|
|
130
|
+
"test-spec": "npx @web/test-runner --playwright",
|
|
131
|
+
"test-spec-watch": "npx @web/test-runner --playwright --watch",
|
|
132
|
+
"test-src-internal-import-restrictions": "node ./script/test/src/internal-import-restrictions/main.js",
|
|
133
|
+
"test-src-does-not-import-dist": "node ./script/test/src/does-not-import-dist/main.js",
|
|
134
|
+
"test-src-tsc": "npm run build-types && npx tsc --project ./tsconfig.json",
|
|
135
|
+
"test-build": "npm run build-esm && npm run build-bin && npm run build-types && npm run build-sites && npm run build-site-typedoc # keep CI.yml in sync with this",
|
|
136
|
+
"test-dist": "npm run build-esm && npm run test-dist-esm-node-import && npm run test-dist-esm-scramble-all-events && npm run test-dist-esm-perf && npm run test-dist-esm-plain-esbuild-compat && npm run test-dist-esm-parcel && npm run test-dist-esm-vite && npm run test-dist-sites-experiments && npm run build-sites && npm run test-dist-sites-experiments # keep CI.yml in sync with this",
|
|
124
137
|
"test-dist-esm-node-import": "node script/test/dist/esm/node-import/main.mjs",
|
|
125
|
-
"test-dist-esm-
|
|
138
|
+
"test-dist-esm-scramble-all-events": "node script/test/dist/esm/scramble-all-events/main.mjs",
|
|
126
139
|
"test-dist-esm-perf": "node script/test/dist/esm/perf/*.mjs",
|
|
127
|
-
"test-dist-
|
|
128
|
-
"test-dist-
|
|
129
|
-
"test-
|
|
130
|
-
"test-
|
|
131
|
-
"test-tsc": "npm run build-types && npx tsc --project ./tsconfig.json",
|
|
140
|
+
"test-dist-esm-plain-esbuild-compat": "node script/test/dist/esm/plain-esbuild-compat/main.js",
|
|
141
|
+
"test-dist-esm-parcel": "node ./script/test/dist/esm/parcel/main.js",
|
|
142
|
+
"test-dist-esm-vite": "node ./script/test/dist/esm/vite/main.js",
|
|
143
|
+
"test-dist-sites-experiments": "node ./script/test/dist/experiments/main.js",
|
|
132
144
|
"format": "npx eslint --fix --ext=js,ts src script; npx prettier --write src script",
|
|
133
|
-
"setup": "npm
|
|
134
|
-
"
|
|
145
|
+
"setup": "npm ci",
|
|
146
|
+
"quick-setup": "node ./script/quick-setup/main.js",
|
|
135
147
|
"lint": "npx eslint --ext=js,ts src script",
|
|
136
|
-
"prepack": "npm run clean && npm run build && npm run test-dist-esm-node-import",
|
|
137
|
-
"postpublish": "echo -e '\n\nConsider updating
|
|
148
|
+
"prepack": "npm run clean && npm run build && npm run test-dist-esm-node-import && npm run test-dist-esm-plain-esbuild-compat",
|
|
149
|
+
"postpublish": "echo -e '\n\nConsider updating \\`cdn.cubing.net\\` if you have access:\nhttps://github.com/cubing/cdn.cubing.net/blob/main/docs/maintenance.md#updating-cdncubingnet-to-a-new-cubing-version\n'"
|
|
138
150
|
},
|
|
139
151
|
"keywords": [
|
|
140
152
|
"cubing",
|
|
@@ -206,7 +218,8 @@
|
|
|
206
218
|
"@typescript-eslint/no-unsafe-call": "off",
|
|
207
219
|
"@typescript-eslint/no-empty-function": "off",
|
|
208
220
|
"@typescript-eslint/restrict-plus-operands": "off",
|
|
209
|
-
"@typescript-eslint/restrict-template-expressions": "off"
|
|
221
|
+
"@typescript-eslint/restrict-template-expressions": "off",
|
|
222
|
+
"@typescript-eslint/no-unsafe-return": "off"
|
|
210
223
|
}
|
|
211
224
|
}
|
|
212
225
|
],
|
|
@@ -238,12 +251,5 @@
|
|
|
238
251
|
],
|
|
239
252
|
"@babel/preset-typescript"
|
|
240
253
|
]
|
|
241
|
-
},
|
|
242
|
-
"jest": {
|
|
243
|
-
"roots": [
|
|
244
|
-
"<rootDir>/src",
|
|
245
|
-
"<rootDir>/script"
|
|
246
|
-
],
|
|
247
|
-
"coverageDirectory": "<rootDir>/.temp/coverage"
|
|
248
254
|
}
|
|
249
255
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/puzzles/stickerings/appearance.ts", "../../src/cubing/puzzles/stickerings/puzzle-stickerings.ts", "../../src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.json.ts", "../../src/cubing/puzzles/customPGPuzzleLoader.ts", "../../src/cubing/puzzles/cubing-private/index.ts", "../../src/cubing/puzzles/implementations/dynamic/3x3x3/puzzle-orientation.ts"],
|
|
4
|
-
"sourcesContent": ["// TODO: figure out where to house this permanently.\n\nimport type { Move } from \"../../alg\";\nimport type { KPuzzle } from \"../../kpuzzle\";\n\nexport type FaceletMeshAppearance =\n | \"regular\"\n | \"dim\"\n | \"oriented\"\n | \"ignored\"\n | \"invisible\";\n\nexport type FaceletAppearance = {\n appearance: FaceletMeshAppearance;\n hintAppearance?: FaceletMeshAppearance;\n};\n\nexport type PieceAppearance = {\n // TODO: foundation?\n facelets: (FaceletMeshAppearance | FaceletAppearance | null)[];\n};\n\nexport type OrbitAppearance = {\n pieces: (PieceAppearance | null)[];\n};\n\nexport type PuzzleAppearance = {\n name?: string; // TODO\n orbits: Record<string, OrbitAppearance>;\n};\n\nexport function getFaceletAppearance(\n appearance: PuzzleAppearance,\n orbitName: string,\n pieceIdx: number,\n faceletIdx: number,\n hint: boolean,\n): FaceletMeshAppearance {\n const orbitAppearance = appearance.orbits[orbitName];\n const pieceAppearance: PieceAppearance | null =\n orbitAppearance.pieces[pieceIdx];\n if (pieceAppearance === null) {\n return regular;\n }\n const faceletAppearance: FaceletMeshAppearance | FaceletAppearance | null =\n pieceAppearance.facelets[faceletIdx];\n if (faceletAppearance === null) {\n return regular;\n }\n if (typeof faceletAppearance === \"string\") {\n return faceletAppearance;\n }\n if (hint) {\n return faceletAppearance.hintAppearance ?? faceletAppearance.appearance;\n }\n return faceletAppearance.appearance;\n}\n\n// TODO: Revert this to a normal enum, or write a standard to codify the names?\nexport enum PieceStickering {\n Regular = \"Regular\",\n Dim = \"Dim\",\n Ignored = \"Ignored\",\n OrientationStickers = \"OrientationStickers\",\n Invisible = \"Invisible\",\n Ignoriented = \"Ignoriented\",\n IgnoreNonPrimary = \"IgnoreNonPrimary\",\n PermuteNonPrimary = \"PermuteNonPrimary\",\n OrientationWithoutPermutation = \"OrientationWithoutPermutation\",\n}\n\nexport class PieceAnnotation<T> {\n stickerings: Map<string, T[]> = new Map();\n constructor(kpuzzle: KPuzzle, defaultValue: T) {\n for (const [orbitName, orbitDef] of Object.entries(\n kpuzzle.definition.orbits,\n )) {\n this.stickerings.set(\n orbitName,\n new Array(orbitDef.numPieces).fill(defaultValue),\n );\n }\n }\n}\n\nconst regular = \"regular\";\nconst ignored = \"ignored\";\nconst oriented = \"oriented\";\nconst invisible = \"invisible\";\nconst dim = \"dim\";\n\n// regular\nconst r: PieceAppearance = {\n facelets: [regular, regular, regular, regular, regular],\n};\n\n// ignored\nconst i: PieceAppearance = {\n facelets: [ignored, ignored, ignored, ignored, ignored],\n};\n\n// oriented stickers\nconst o: PieceAppearance = {\n facelets: [oriented, oriented, oriented, oriented, oriented],\n};\n\n// invisible\nconst invisiblePiece: PieceAppearance = {\n facelets: [invisible, invisible, invisible, invisible], // TODO: 4th entry is for void cube. Should be handled properly for all stickerings.\n};\n\n// \"OLL\"\nconst riiii: PieceAppearance = {\n facelets: [regular, ignored, ignored, ignored, ignored],\n};\n\n// \"PLL\"\nconst drrrr: PieceAppearance = {\n facelets: [dim, regular, regular, regular, regular],\n};\n\n// ignored\nconst d: PieceAppearance = {\n facelets: [dim, dim, dim, dim, dim],\n};\n\n// \"OLL\"\nconst diiii: PieceAppearance = {\n facelets: [dim, ignored, ignored, ignored, ignored],\n};\n\n// oriented\nconst oiiii: PieceAppearance = {\n facelets: [oriented, ignored, ignored, ignored, ignored],\n};\n\nexport function getPieceAppearance(\n pieceStickering: PieceStickering,\n): PieceAppearance {\n switch (pieceStickering) {\n case PieceStickering.Regular:\n return r;\n case PieceStickering.Dim:\n return d;\n case PieceStickering.Ignored:\n return i;\n case PieceStickering.OrientationStickers: // TODO: Hack for centers. This shouldn't be needed.\n return o;\n case PieceStickering.Invisible: // TODO: Hack for centers. This shouldn't be needed.\n return invisiblePiece;\n case PieceStickering.IgnoreNonPrimary:\n return riiii;\n case PieceStickering.PermuteNonPrimary:\n return drrrr;\n case PieceStickering.Ignoriented:\n return diiii;\n case PieceStickering.OrientationWithoutPermutation:\n return oiiii;\n }\n}\n\nexport class PuzzleStickering extends PieceAnnotation<PieceStickering> {\n constructor(kpuzzle: KPuzzle) {\n super(kpuzzle, PieceStickering.Regular);\n }\n\n set(pieceSet: PieceSet, pieceStickering: PieceStickering): PuzzleStickering {\n for (const [orbitName, pieces] of this.stickerings.entries()) {\n for (let i = 0; i < pieces.length; i++) {\n if (pieceSet.stickerings.get(orbitName)![i]) {\n pieces[i] = pieceStickering;\n }\n }\n }\n return this;\n }\n\n toAppearance(): PuzzleAppearance {\n const appearance: PuzzleAppearance = { orbits: {} };\n for (const [orbitName, pieceStickerings] of this.stickerings.entries()) {\n const pieces: PieceAppearance[] = [];\n const orbitAppearance: OrbitAppearance = {\n pieces,\n };\n appearance.orbits[orbitName] = orbitAppearance;\n for (const pieceStickering of pieceStickerings) {\n pieces.push(getPieceAppearance(pieceStickering));\n }\n }\n return appearance;\n }\n}\n\nexport type PieceSet = PieceAnnotation<boolean>;\n\nexport class StickeringManager {\n constructor(private kpuzzle: KPuzzle) {}\n\n and(pieceSets: PieceSet[]): PieceSet {\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n pieceLoop: for (let i = 0; i < orbitDef.numPieces; i++) {\n newPieceSet.stickerings.get(orbitName)![i] = true;\n for (const pieceSet of pieceSets) {\n if (!pieceSet.stickerings.get(orbitName)![i]) {\n newPieceSet.stickerings.get(orbitName)![i] = false;\n continue pieceLoop;\n }\n }\n }\n }\n return newPieceSet;\n }\n\n or(pieceSets: PieceSet[]): PieceSet {\n // TODO: unify impl with and?\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n pieceLoop: for (let i = 0; i < orbitDef.numPieces; i++) {\n newPieceSet.stickerings.get(orbitName)![i] = false;\n for (const pieceSet of pieceSets) {\n if (pieceSet.stickerings.get(orbitName)![i]) {\n newPieceSet.stickerings.get(orbitName)![i] = true;\n continue pieceLoop;\n }\n }\n }\n }\n return newPieceSet;\n }\n\n not(pieceSet: PieceSet): PieceSet {\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n for (let i = 0; i < orbitDef.numPieces; i++) {\n newPieceSet.stickerings.get(orbitName)![i] =\n !pieceSet.stickerings.get(orbitName)![i];\n }\n }\n return newPieceSet;\n }\n\n all(): PieceSet {\n return this.and(this.moves([])); // TODO: are the degenerate cases for and/or the wrong way around\n }\n\n move(moveSource: Move | string): PieceSet {\n const transformation = this.kpuzzle.moveToTransformation(moveSource);\n const newPieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const [orbitName, orbitDef] of Object.entries(\n this.kpuzzle.definition.orbits,\n )) {\n for (let i = 0; i < orbitDef.numPieces; i++) {\n if (\n transformation.transformationData[orbitName].permutation[i] !== i ||\n transformation.transformationData[orbitName].orientation[i] !== 0\n ) {\n newPieceSet.stickerings.get(orbitName)![i] = true;\n }\n }\n }\n return newPieceSet;\n }\n\n moves(moveSources: (Move | string)[]): PieceSet[] {\n return moveSources.map((moveSource) => this.move(moveSource));\n }\n\n orbits(orbitNames: string[]): PieceSet {\n const pieceSet = new PieceAnnotation<boolean>(this.kpuzzle, false);\n for (const orbitName of orbitNames) {\n pieceSet.stickerings.get(orbitName)!.fill(true);\n }\n return pieceSet;\n }\n\n // trueCounts(pieceSet: PieceSet): Record<string, number> {\n // const counts: Record<string, number> = {};\n // for (const [orbitName, orbitDef] of Object.entries(this.def.orbits)) {\n // let count = 0;\n // for (let i = 0; i < orbitDef.numPieces; i++) {\n // if (pieceSet.stickerings.get(orbitName)![i]) {\n // count++;\n // }\n // }\n // counts[orbitName] = count;\n // }\n // return counts;\n // }\n}\n", "import type { PuzzleID } from \"../../twisty\";\n\nexport const experimentalStickerings: Record<\n string,\n { groups?: Partial<Record<PuzzleID, string>> }\n> = {\n \"full\": { groups: { \"3x3x3\": \"Stickering\" } }, // default\n \"OLL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"PLL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"LL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"COLL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"OCLL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"CLL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"ELL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"ZBLL\": { groups: { \"3x3x3\": \"Last Layer\" } },\n \"LS\": { groups: { \"3x3x3\": \"Last Slot\" } },\n \"ELS\": { groups: { \"3x3x3\": \"Last Slot\" } },\n \"CLS\": { groups: { \"3x3x3\": \"Last Slot\" } },\n \"ZBLS\": { groups: { \"3x3x3\": \"Last Slot\" } },\n \"VLS\": { groups: { \"3x3x3\": \"Last Slot\" } },\n \"WVLS\": { groups: { \"3x3x3\": \"Last Slot\" } },\n \"F2L\": { groups: { \"3x3x3\": \"CFOP (Fridrich)\" } },\n \"Daisy\": { groups: { \"3x3x3\": \"CFOP (Fridrich)\" } },\n \"Cross\": { groups: { \"3x3x3\": \"CFOP (Fridrich)\" } },\n \"EO\": { groups: { \"3x3x3\": \"ZZ\" } },\n \"EOline\": { groups: { \"3x3x3\": \"ZZ\" } },\n \"EOcross\": { groups: { \"3x3x3\": \"ZZ\" } },\n \"CMLL\": { groups: { \"3x3x3\": \"Roux\" } },\n \"L10P\": { groups: { \"3x3x3\": \"Roux\" } },\n \"L6E\": { groups: { \"3x3x3\": \"Roux\" } },\n \"L6EO\": { groups: { \"3x3x3\": \"Roux\" } },\n \"2x2x2\": { groups: { \"3x3x3\": \"Petrus\" } },\n \"2x2x3\": { groups: { \"3x3x3\": \"Petrus\" } },\n \"Void Cube\": { groups: { \"3x3x3\": \"Miscellaneous\" } },\n \"invisible\": { groups: { \"3x3x3\": \"Miscellaneous\" } },\n \"picture\": { groups: { \"3x3x3\": \"Miscellaneous\" } },\n \"centers-only\": { groups: { \"3x3x3\": \"Miscellaneous\" } }, // TODO\n \"experimental-centers-U\": {},\n \"experimental-centers-U-D\": {},\n \"experimental-centers-U-L-D\": {},\n \"experimental-centers-U-L-B-D\": {},\n \"experimental-centers\": {},\n \"experimental-fto-fc\": { groups: { fto: \"Bencisco\" } },\n \"experimental-fto-f2t\": { groups: { fto: \"Bencisco\" } },\n \"experimental-fto-sc\": { groups: { fto: \"Bencisco\" } },\n \"experimental-fto-l2c\": { groups: { fto: \"Bencisco\" } },\n \"experimental-fto-lbt\": { groups: { fto: \"Bencisco\" } },\n \"experimental-fto-l3t\": { groups: { fto: \"Bencisco\" } },\n};\n", "import type { KPuzzleDefinition } from \"../../../../kpuzzle\";\n\nexport const cube3x3x3KPuzzleDefinition: KPuzzleDefinition = {\n name: \"3x3x3\",\n orbits: {\n EDGES: { numPieces: 12, numOrientations: 2 },\n CORNERS: { numPieces: 8, numOrientations: 3 },\n CENTERS: { numPieces: 6, numOrientations: 4 },\n },\n startStateData: {\n EDGES: {\n pieces: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n pieces: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n pieces: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 0, 0],\n },\n },\n moves: {\n U: {\n EDGES: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [1, 0, 0, 0, 0, 0],\n },\n },\n y: {\n EDGES: {\n permutation: [1, 2, 3, 0, 5, 6, 7, 4, 10, 8, 11, 9],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 7, 4, 5, 6],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 2, 3, 4, 1, 5],\n orientation: [1, 0, 0, 0, 0, 3],\n },\n },\n x: {\n EDGES: {\n permutation: [4, 8, 0, 9, 6, 10, 2, 11, 5, 7, 1, 3],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 3, 5, 7, 6, 2, 1],\n orientation: [2, 1, 2, 1, 1, 2, 1, 2],\n },\n CENTERS: {\n permutation: [2, 1, 5, 3, 0, 4],\n orientation: [0, 3, 0, 1, 2, 2],\n },\n },\n L: {\n EDGES: {\n permutation: [0, 1, 2, 11, 4, 5, 6, 9, 8, 3, 10, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 6, 2, 4, 3, 5, 7],\n orientation: [0, 0, 2, 1, 0, 2, 1, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 1, 0, 0, 0, 0],\n },\n },\n F: {\n EDGES: {\n permutation: [9, 1, 2, 3, 8, 5, 6, 7, 0, 4, 10, 11],\n orientation: [1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0],\n },\n CORNERS: {\n permutation: [3, 1, 2, 5, 0, 4, 6, 7],\n orientation: [1, 0, 0, 2, 2, 1, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 1, 0, 0, 0],\n },\n },\n R: {\n EDGES: {\n permutation: [0, 8, 2, 3, 4, 10, 6, 7, 5, 9, 1, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 2, 3, 7, 5, 6, 1],\n orientation: [2, 1, 0, 0, 1, 0, 0, 2],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 1, 0, 0],\n },\n },\n B: {\n EDGES: {\n permutation: [0, 1, 10, 3, 4, 5, 11, 7, 8, 9, 6, 2],\n orientation: [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1],\n },\n CORNERS: {\n permutation: [0, 7, 1, 3, 4, 5, 2, 6],\n orientation: [0, 2, 1, 0, 0, 0, 2, 1],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 1, 0],\n },\n },\n D: {\n EDGES: {\n permutation: [0, 1, 2, 3, 7, 4, 5, 6, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 0, 1],\n },\n },\n z: {\n EDGES: {\n permutation: [9, 3, 11, 7, 8, 1, 10, 5, 0, 4, 2, 6],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [3, 2, 6, 5, 0, 4, 7, 1],\n orientation: [1, 2, 1, 2, 2, 1, 2, 1],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 1, 1, 3, 1],\n },\n },\n M: {\n EDGES: {\n permutation: [2, 1, 6, 3, 0, 5, 4, 7, 8, 9, 10, 11],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 0, 0, 0, 2, 0],\n },\n },\n E: {\n EDGES: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [0, 0, 0, 0, 0, 0],\n },\n },\n S: {\n EDGES: {\n permutation: [0, 3, 2, 7, 4, 1, 6, 5, 8, 9, 10, 11],\n orientation: [0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 0, 1, 0, 1],\n },\n },\n u: {\n EDGES: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7, 10, 8, 11, 9],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 2, 3, 4, 1, 5],\n orientation: [1, 0, 0, 0, 0, 0],\n },\n },\n l: {\n EDGES: {\n permutation: [2, 1, 6, 11, 0, 5, 4, 9, 8, 3, 10, 7],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 6, 2, 4, 3, 5, 7],\n orientation: [0, 0, 2, 1, 0, 2, 1, 0],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 1, 0, 0, 2, 0],\n },\n },\n f: {\n EDGES: {\n permutation: [9, 3, 2, 7, 8, 1, 6, 5, 0, 4, 10, 11],\n orientation: [1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0],\n },\n CORNERS: {\n permutation: [3, 1, 2, 5, 0, 4, 6, 7],\n orientation: [1, 0, 0, 2, 2, 1, 0, 0],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 1, 1, 0, 1],\n },\n },\n r: {\n EDGES: {\n permutation: [4, 8, 0, 3, 6, 10, 2, 7, 5, 9, 1, 11],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 2, 3, 7, 5, 6, 1],\n orientation: [2, 1, 0, 0, 1, 0, 0, 2],\n },\n CENTERS: {\n permutation: [2, 1, 5, 3, 0, 4],\n orientation: [0, 0, 0, 1, 2, 2],\n },\n },\n b: {\n EDGES: {\n permutation: [0, 5, 10, 1, 4, 7, 11, 3, 8, 9, 6, 2],\n orientation: [0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1],\n },\n CORNERS: {\n permutation: [0, 7, 1, 3, 4, 5, 2, 6],\n orientation: [0, 2, 1, 0, 0, 0, 2, 1],\n },\n CENTERS: {\n permutation: [3, 0, 2, 5, 4, 1],\n orientation: [3, 3, 0, 3, 1, 3],\n },\n },\n d: {\n EDGES: {\n permutation: [0, 1, 2, 3, 7, 4, 5, 6, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [0, 0, 0, 0, 0, 1],\n },\n },\n },\n};\n\ncube3x3x3KPuzzleDefinition.moves[\"Uw\"] = cube3x3x3KPuzzleDefinition.moves[\"u\"];\ncube3x3x3KPuzzleDefinition.moves[\"Lw\"] = cube3x3x3KPuzzleDefinition.moves[\"l\"];\ncube3x3x3KPuzzleDefinition.moves[\"Fw\"] = cube3x3x3KPuzzleDefinition.moves[\"f\"];\ncube3x3x3KPuzzleDefinition.moves[\"Rw\"] = cube3x3x3KPuzzleDefinition.moves[\"r\"];\ncube3x3x3KPuzzleDefinition.moves[\"Bw\"] = cube3x3x3KPuzzleDefinition.moves[\"b\"];\ncube3x3x3KPuzzleDefinition.moves[\"Dw\"] = cube3x3x3KPuzzleDefinition.moves[\"d\"];\n\ncube3x3x3KPuzzleDefinition.moves[\"Rv\"] = cube3x3x3KPuzzleDefinition.moves[\"x\"];\ncube3x3x3KPuzzleDefinition.moves[\"Uv\"] = cube3x3x3KPuzzleDefinition.moves[\"y\"];\ncube3x3x3KPuzzleDefinition.moves[\"Fv\"] = cube3x3x3KPuzzleDefinition.moves[\"z\"];\ncube3x3x3KPuzzleDefinition.moves[\"Lv\"] = {\n EDGES: {\n permutation: [2, 10, 6, 11, 0, 8, 4, 9, 1, 3, 5, 7],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [1, 7, 6, 2, 0, 3, 5, 4],\n orientation: [2, 1, 2, 1, 1, 2, 1, 2],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 1, 0, 3, 2, 0],\n },\n};\ncube3x3x3KPuzzleDefinition.moves[\"Dv\"] = {\n EDGES: {\n permutation: [3, 0, 1, 2, 7, 4, 5, 6, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [3, 0, 1, 2, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [3, 0, 0, 0, 0, 1],\n },\n};\ncube3x3x3KPuzzleDefinition.moves[\"Bv\"] = {\n EDGES: {\n permutation: [8, 5, 10, 1, 9, 7, 11, 3, 4, 0, 6, 2],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [4, 7, 1, 0, 5, 3, 2, 6],\n orientation: [1, 2, 1, 2, 2, 1, 2, 1],\n },\n CENTERS: {\n permutation: [3, 0, 2, 5, 4, 1],\n orientation: [3, 3, 3, 3, 1, 3],\n },\n};\n", "import { KPuzzle, KPuzzleDefinition } from \"../kpuzzle\";\nimport type { PuzzleGeometry } from \"../puzzle-geometry\";\nimport type { PuzzleDescriptionString } from \"../puzzle-geometry/PGPuzzles\";\nimport type { PuzzleLoader } from \"./PuzzleLoader\";\n\n// TODO: modify this to handle TwistyPlayer options\nexport async function descAsyncGetPuzzleGeometry(\n desc: PuzzleDescriptionString,\n): Promise<PuzzleGeometry> {\n const puzzleGeometry = await import(\"../puzzle-geometry\");\n return puzzleGeometry.getPuzzleGeometryByDesc(desc, {\n allMoves: true,\n orientCenters: true,\n addRotations: true,\n });\n}\n\n// TODO: dedup with `cubing/puzzles`\nexport async function asyncGetKPuzzle(\n desc: PuzzleDescriptionString,\n): Promise<KPuzzle> {\n const pg = await descAsyncGetPuzzleGeometry(desc);\n const kpuzzleDefinition: KPuzzleDefinition = pg.getKPuzzleDefinition(true);\n kpuzzleDefinition.name = `description: ${desc}`;\n const puzzleGeometry = await import(\"../puzzle-geometry\");\n const pgNotation = new puzzleGeometry.ExperimentalPGNotation(\n pg,\n pg.getOrbitsDef(true),\n );\n return new KPuzzle(kpuzzleDefinition, {\n experimentalPGNotation: pgNotation,\n });\n}\n\n// TODO: Can we avoid relying on IDs to deduplicate work at higher levels?\nlet nextCustomID = 1;\n\nexport function customPGPuzzleLoader(\n desc: PuzzleDescriptionString,\n info?: {\n fullName?: string;\n inventedBy?: string[];\n inventionYear?: number;\n },\n): PuzzleLoader {\n const customID = nextCustomID++;\n let cachedKPuzzle: Promise<KPuzzle> | null = null;\n const puzzleLoader: PuzzleLoader = {\n id: `custom-${customID}`,\n fullName: info?.fullName ?? `Custom Puzzle (instance #${customID})`,\n kpuzzle: async () => {\n return (cachedKPuzzle ??= asyncGetKPuzzle(desc));\n },\n svg: async () => {\n const pg = await descAsyncGetPuzzleGeometry(desc);\n return pg.generatesvg();\n },\n pg: async () => {\n return descAsyncGetPuzzleGeometry(desc);\n },\n };\n if (info?.inventedBy) {\n puzzleLoader.inventedBy = info.inventedBy;\n }\n if (info?.inventionYear) {\n puzzleLoader.inventionYear = info.inventionYear;\n }\n return puzzleLoader;\n}\n", "import { KPuzzle } from \"../../kpuzzle\";\nimport { cube3x3x3KPuzzleDefinition as experimentalCube3x3x3KPuzzleDefinition } from \"../implementations/dynamic/3x3x3/3x3x3.kpuzzle.json\";\nimport { experimentalIs3x3x3Solved } from \"../implementations/dynamic/3x3x3/puzzle-orientation\";\nexport { experimentalCube3x3x3KPuzzleDefinition };\n\n/** @deprecated */\nexport const experimental3x3x3KPuzzle = new KPuzzle(\n experimentalCube3x3x3KPuzzleDefinition,\n);\nexperimentalCube3x3x3KPuzzleDefinition.experimentalIsStateSolved =\n experimentalIs3x3x3Solved;\n\nexport {\n experimentalIs3x3x3Solved,\n normalize3x3x3Orientation as experimentalNormalize3x3x3Orientation,\n puzzleOrientation3x3x3Cache as experimentalPuzzleOrientation3x3x3Cache,\n puzzleOrientation3x3x3Idx as experimentalPuzzleOrientation3x3x3Idx,\n} from \"../implementations/dynamic/3x3x3/puzzle-orientation\";\nexport { experimentalStickerings } from \"../stickerings/puzzle-stickerings\";\n\nexport { customPGPuzzleLoader as experimentalCustomPGPuzzleLoader } from \"../customPGPuzzleLoader\";\nexport { getFaceletAppearance as experimentalGetFaceletAppearance } from \"../stickerings/appearance\";\nexport type {\n FaceletMeshAppearance as ExperimentalFaceletMeshAppearance,\n PuzzleAppearance as ExperimentalPuzzleAppearance,\n} from \"../stickerings/appearance\";\n", "import { Alg } from \"../../../../alg\";\nimport { KState, KTransformation } from \"../../../../kpuzzle\";\nimport { experimental3x3x3KPuzzle } from \"../../../cubing-private\";\n\nexport function puzzleOrientation3x3x3Idx(state: KState): [number, number] {\n const idxU = state.stateData[\"CENTERS\"].pieces[0];\n const idxD = state.stateData[\"CENTERS\"].pieces[5];\n const unadjustedIdxL = state.stateData[\"CENTERS\"].pieces[1];\n let idxL = unadjustedIdxL;\n if (idxU < unadjustedIdxL) {\n idxL--;\n }\n if (idxD < unadjustedIdxL) {\n idxL--;\n }\n return [idxU, idxL];\n}\n\nconst puzzleOrientationCacheRaw: KTransformation[][] = new Array(6)\n .fill(0)\n .map(() => {\n return new Array<KTransformation>(6);\n });\n\nconst puzzleOrientationCacheInitialized = false;\nexport function puzzleOrientation3x3x3Cache(): KTransformation[][] {\n if (!puzzleOrientationCacheInitialized) {\n // We use a new block to avoid keeping a reference to temporary vars.\n // kpuzzle todo\n {\n const uAlgs: Alg[] = [\"\", \"z\", \"x\", \"z'\", \"x'\", \"x2\"].map((s) =>\n Alg.fromString(s),\n );\n const yAlg = new Alg(\"y\");\n for (const uAlg of uAlgs) {\n let transformation = experimental3x3x3KPuzzle.algToTransformation(uAlg);\n for (let i = 0; i < 4; i++) {\n transformation = transformation.applyAlg(yAlg);\n const [idxU, idxL] = puzzleOrientation3x3x3Idx(\n transformation.toKState(),\n );\n puzzleOrientationCacheRaw[idxU][idxL] = transformation.invert();\n }\n }\n }\n }\n return puzzleOrientationCacheRaw;\n}\n\nexport function normalize3x3x3Orientation(state: KState): KState {\n const [idxU, idxL] = puzzleOrientation3x3x3Idx(state);\n const orientationTransformation = puzzleOrientation3x3x3Cache()[idxU][idxL];\n return state.applyTransformation(orientationTransformation);\n}\n\n// The `options` argument is required for now, because we haven't yet come up\n// with a general way to specify different kinds of solved for the same puzle.\nexport function experimentalIs3x3x3Solved(\n state: KState,\n options: {\n ignorePuzzleOrientation: boolean;\n ignoreCenterOrientation: boolean;\n },\n): boolean {\n if (options.ignorePuzzleOrientation) {\n state = normalize3x3x3Orientation(state);\n }\n if (options.ignoreCenterOrientation) {\n state = new KState(state.kpuzzle, {\n EDGES: state.stateData.EDGES,\n CORNERS: state.stateData.CORNERS,\n CENTERS: {\n pieces: state.stateData.CENTERS.pieces,\n orientation: new Array(6).fill(0),\n },\n });\n }\n return !!state.experimentalToTransformation()?.isIdentityTransformation(); // TODO: Compare to start state instead?\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|