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.
Files changed (101) hide show
  1. package/README.md +2 -0
  2. package/dist/esm/alg/index.js +2 -2
  3. package/dist/esm/bluetooth/index.js +222 -86
  4. package/dist/esm/bluetooth/index.js.map +3 -3
  5. package/dist/esm/{chunk-F4WWCPVE.js → chunk-2IZUSAXQ.js} +2 -2
  6. package/dist/esm/{chunk-F4WWCPVE.js.map → chunk-2IZUSAXQ.js.map} +1 -1
  7. package/dist/esm/{chunk-YSVFZVG4.js → chunk-DZGFGBKT.js} +183 -76
  8. package/dist/esm/chunk-DZGFGBKT.js.map +7 -0
  9. package/dist/esm/{chunk-7D7LW3WQ.js → chunk-GW4FGG42.js} +8 -4
  10. package/dist/esm/{chunk-7D7LW3WQ.js.map → chunk-GW4FGG42.js.map} +1 -1
  11. package/dist/esm/{chunk-32FWPPTW.js → chunk-LSCTPPWV.js} +22 -8
  12. package/dist/esm/{chunk-32FWPPTW.js.map → chunk-LSCTPPWV.js.map} +1 -1
  13. package/dist/esm/{chunk-LSVR2HCG.js → chunk-LV7IKG36.js} +389 -363
  14. package/dist/esm/{chunk-LSVR2HCG.js.map → chunk-LV7IKG36.js.map} +1 -1
  15. package/dist/esm/{chunk-CSBUJ64Q.js → chunk-NI7U4XAZ.js} +373 -238
  16. package/dist/esm/chunk-NI7U4XAZ.js.map +7 -0
  17. package/dist/esm/{chunk-GVPTO3OF.js → chunk-OX6O2ZO5.js} +1 -1
  18. package/dist/esm/{chunk-GVPTO3OF.js.map → chunk-OX6O2ZO5.js.map} +1 -1
  19. package/dist/esm/{chunk-67VJZGH2.js → chunk-PYWGREIP.js} +44 -13
  20. package/dist/esm/chunk-PYWGREIP.js.map +7 -0
  21. package/dist/esm/{chunk-WAL36PO3.js → chunk-Q4W5ZR4U.js} +28 -12
  22. package/dist/esm/{chunk-WAL36PO3.js.map → chunk-Q4W5ZR4U.js.map} +1 -1
  23. package/dist/esm/{chunk-MGJA5U5O.js → chunk-SBZRVSPK.js} +1 -12
  24. package/dist/esm/{chunk-MGJA5U5O.js.map → chunk-SBZRVSPK.js.map} +0 -0
  25. package/dist/esm/{chunk-MWKALF6W.js → chunk-TGPS3CXW.js} +22 -13
  26. package/dist/esm/chunk-TGPS3CXW.js.map +7 -0
  27. package/dist/esm/{chunk-V55YSWJY.js → chunk-WXCNEGW3.js} +10 -4
  28. package/dist/esm/{chunk-V55YSWJY.js.map → chunk-WXCNEGW3.js.map} +1 -1
  29. package/dist/esm/{chunk-ZY3RTFFS.js → chunk-XU5ILFX5.js} +137 -66
  30. package/dist/esm/{chunk-ZY3RTFFS.js.map → chunk-XU5ILFX5.js.map} +3 -3
  31. package/dist/esm/{chunk-ALBEW4DJ.js → chunk-ZB3P5AZN.js} +1 -1
  32. package/dist/esm/{chunk-ALBEW4DJ.js.map → chunk-ZB3P5AZN.js.map} +1 -1
  33. package/dist/esm/{chunk-NPHUBFZ6.js → chunk-ZNAYJGVL.js} +2 -2
  34. package/dist/esm/{chunk-NPHUBFZ6.js.map → chunk-ZNAYJGVL.js.map} +1 -1
  35. package/dist/esm/kpuzzle/index.js +3 -3
  36. package/dist/esm/notation/index.js +3 -3
  37. package/dist/esm/protocol/index.js +5 -5
  38. package/dist/esm/puzzle-geometry/index.js +271 -71
  39. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  40. package/dist/esm/puzzles/index.js +5 -5
  41. package/dist/esm/{puzzles-dynamic-3x3x3-NB2PEZTV.js → puzzles-dynamic-3x3x3-KIG5A6QR.js} +2 -2
  42. package/dist/esm/{puzzles-dynamic-3x3x3-NB2PEZTV.js.map → puzzles-dynamic-3x3x3-KIG5A6QR.js.map} +0 -0
  43. package/dist/esm/puzzles-dynamic-4x4x4-PEDAPUZK.js +126 -0
  44. package/dist/esm/puzzles-dynamic-4x4x4-PEDAPUZK.js.map +7 -0
  45. package/dist/esm/{puzzles-dynamic-side-events-WZI4Y3N6.js → puzzles-dynamic-side-events-5C7LMBWX.js} +2 -2
  46. package/dist/esm/{puzzles-dynamic-side-events-WZI4Y3N6.js.map → puzzles-dynamic-side-events-5C7LMBWX.js.map} +0 -0
  47. package/dist/esm/{puzzles-dynamic-unofficial-FUG3JBMH.js → puzzles-dynamic-unofficial-WWJ4NJMX.js} +2 -2
  48. package/dist/esm/{puzzles-dynamic-unofficial-FUG3JBMH.js.map → puzzles-dynamic-unofficial-WWJ4NJMX.js.map} +0 -0
  49. package/dist/esm/scramble/index.js +5 -5
  50. package/dist/esm/search/index.js +10 -10
  51. package/dist/esm/{search-dynamic-sgs-side-events-R3HDJ5XQ.js → search-dynamic-sgs-side-events-AYX7MZO7.js} +35 -17
  52. package/dist/esm/{search-dynamic-sgs-side-events-R3HDJ5XQ.js.map → search-dynamic-sgs-side-events-AYX7MZO7.js.map} +2 -2
  53. package/dist/esm/{search-dynamic-sgs-unofficial-FQNKGHVO.js → search-dynamic-sgs-unofficial-DLJOJFJL.js} +35 -14
  54. package/dist/esm/{search-dynamic-sgs-unofficial-FQNKGHVO.js.map → search-dynamic-sgs-unofficial-DLJOJFJL.js.map} +2 -2
  55. package/dist/esm/{search-dynamic-solve-3x3x3-K42IWMQV.js → search-dynamic-solve-3x3x3-7XZTYQMO.js} +795 -142
  56. package/dist/esm/{search-dynamic-solve-3x3x3-K42IWMQV.js.map → search-dynamic-solve-3x3x3-7XZTYQMO.js.map} +1 -1
  57. package/dist/esm/{search-dynamic-solve-4x4x4-XRV4NBMQ.js → search-dynamic-solve-4x4x4-CWWTFKMR.js} +135 -29
  58. package/dist/esm/{search-dynamic-solve-4x4x4-XRV4NBMQ.js.map → search-dynamic-solve-4x4x4-CWWTFKMR.js.map} +1 -1
  59. package/dist/esm/{search-dynamic-solve-fto-O6UXF7EC.js → search-dynamic-solve-fto-4LI23P6K.js} +253 -69
  60. package/dist/esm/{search-dynamic-solve-fto-O6UXF7EC.js.map → search-dynamic-solve-fto-4LI23P6K.js.map} +2 -2
  61. package/dist/esm/{search-dynamic-solve-kilominx-G4MLGWNS.js → search-dynamic-solve-kilominx-3HEVQ4MC.js} +32 -8
  62. package/dist/esm/{search-dynamic-solve-kilominx-G4MLGWNS.js.map → search-dynamic-solve-kilominx-3HEVQ4MC.js.map} +2 -2
  63. package/dist/esm/{search-dynamic-solve-master_tetraminx-3RKD3IAN.js → search-dynamic-solve-master_tetraminx-UB32C7MM.js} +111 -42
  64. package/dist/esm/{search-dynamic-solve-master_tetraminx-3RKD3IAN.js.map → search-dynamic-solve-master_tetraminx-UB32C7MM.js.map} +2 -2
  65. package/dist/esm/{search-dynamic-solve-sq1-WIJEGVLP.js → search-dynamic-solve-sq1-HA72TYF2.js} +54 -9
  66. package/dist/esm/{search-dynamic-solve-sq1-WIJEGVLP.js.map → search-dynamic-solve-sq1-HA72TYF2.js.map} +2 -2
  67. package/dist/esm/{search-worker-inside-generated-string-IZCKWXUA.js → search-worker-inside-generated-string-AMEXYCKK.js} +146 -28
  68. package/dist/esm/search-worker-inside-generated-string-AMEXYCKK.js.map +7 -0
  69. package/dist/esm/{search-worker-js-entry-WBEKNBB7.js → search-worker-js-entry-TP2T3NUL.js} +147 -53
  70. package/dist/esm/{search-worker-js-entry-WBEKNBB7.js.map → search-worker-js-entry-TP2T3NUL.js.map} +2 -2
  71. package/dist/esm/{search-worker-ts-entry-XQWMEOC4.js → search-worker-ts-entry-NEH77S4I.js} +5 -5
  72. package/dist/esm/{search-worker-ts-entry-XQWMEOC4.js.map → search-worker-ts-entry-NEH77S4I.js.map} +1 -1
  73. package/dist/esm/stream/index.js +12 -8
  74. package/dist/esm/stream/index.js.map +1 -1
  75. package/dist/esm/twisty/index.js +1154 -762
  76. package/dist/esm/twisty/index.js.map +3 -3
  77. package/dist/esm/{twisty-dynamic-3d-QOX7IEXC.js → twisty-dynamic-3d-D3ZDBJUH.js} +352 -175
  78. package/dist/esm/{twisty-dynamic-3d-QOX7IEXC.js.map → twisty-dynamic-3d-D3ZDBJUH.js.map} +2 -2
  79. package/dist/types/{Alg-e2a80975.d.ts → Alg-137fb0d5.d.ts} +19 -16
  80. package/dist/types/{KState-a2f0e651.d.ts → KState-a73111d7.d.ts} +1 -9
  81. package/dist/types/{TwizzleLink-dcf51446.d.ts → TwizzleLink-bef52ecd.d.ts} +46 -10
  82. package/dist/types/alg/index.d.ts +4 -4
  83. package/dist/types/bluetooth/index.d.ts +4 -4
  84. package/dist/types/{bluetooth-puzzle-3670a6a1.d.ts → bluetooth-puzzle-8a678993.d.ts} +9 -9
  85. package/dist/types/kpuzzle/index.d.ts +2 -2
  86. package/dist/types/notation/index.d.ts +1 -1
  87. package/dist/types/{outside-0ce1b145.d.ts → outside-e55f28a0.d.ts} +2 -2
  88. package/dist/types/{parseAlg-db0dec6c.d.ts → parseAlg-a28f7568.d.ts} +1 -1
  89. package/dist/types/protocol/index.d.ts +2 -2
  90. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  91. package/dist/types/puzzles/index.d.ts +5 -5
  92. package/dist/types/scramble/index.d.ts +3 -3
  93. package/dist/types/search/index.d.ts +3 -3
  94. package/dist/types/stream/index.d.ts +5 -5
  95. package/dist/types/twisty/index.d.ts +5 -5
  96. package/package.json +47 -41
  97. package/dist/esm/chunk-67VJZGH2.js.map +0 -7
  98. package/dist/esm/chunk-CSBUJ64Q.js.map +0 -7
  99. package/dist/esm/chunk-MWKALF6W.js.map +0 -7
  100. package/dist/esm/chunk-YSVFZVG4.js.map +0 -7
  101. package/dist/esm/search-worker-inside-generated-string-IZCKWXUA.js.map +0 -7
@@ -1,15 +1,15 @@
1
- import { M as Move } from './Alg-e2a80975.js';
2
- import { K as KState } from './KState-a2f0e651.js';
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
- transformMove(moveEvent: MoveEvent): void;
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 MoveEvent {
12
- latestMove: Move;
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: MoveEvent) => void>;
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
- addMoveListener(listener: (e: MoveEvent) => void): void;
37
+ addAlgLeafListener(listener: (e: AlgLeafEvent) => void): void;
38
38
  addOrientationListener(listener: (e: OrientationEvent) => void): void;
39
39
  experimentalAddBasicRotationTransformer(): void;
40
- protected dispatchMove(moveEvent: MoveEvent): void;
40
+ protected dispatchAlgLeaf(algLeaf: AlgLeafEvent): void;
41
41
  protected dispatchOrientation(orientationEvent: OrientationEvent): void;
42
42
  }
43
43
 
44
- export { BluetoothPuzzle as B, MoveEvent as M, OrientationEvent as O };
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-a2f0e651.js';
2
- import '../Alg-e2a80975.js';
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,4 +1,4 @@
1
- import { a as Alg } from '../Alg-e2a80975.js';
1
+ import { a as Alg } from '../Alg-137fb0d5.js';
2
2
 
3
3
  declare const countMoves: (alg: Alg) => number;
4
4
  declare const countMovesETM: (alg: Alg) => number;
@@ -1,5 +1,5 @@
1
- import { a as Alg } from './Alg-e2a80975.js';
2
- import { K as KState } from './KState-a2f0e651.js';
1
+ import { a as Alg } from './Alg-137fb0d5.js';
2
+ import { K as KState } from './KState-a73111d7.js';
3
3
 
4
4
  declare enum PrefetchLevel {
5
5
  Auto = "auto",
@@ -1,4 +1,4 @@
1
- import { a as Alg, A as AlgNode } from './Alg-e2a80975.js';
1
+ import { a as Alg, A as AlgNode } from './Alg-137fb0d5.js';
2
2
 
3
3
  interface ParserIndexed {
4
4
  startCharIndex: number;
@@ -1,5 +1,5 @@
1
- import { K as KState } from '../KState-a2f0e651.js';
2
- import '../Alg-e2a80975.js';
1
+ import { K as KState } from '../KState-a73111d7.js';
2
+ import '../Alg-137fb0d5.js';
3
3
 
4
4
  declare type Binary3x3x3State = ArrayBuffer;
5
5
  interface Binary3x3x3Components {
@@ -1,6 +1,6 @@
1
- import { P as Perm } from '../KState-a2f0e651.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-a2f0e651.js';
3
- import '../Alg-e2a80975.js';
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-dcf51446.js';
2
- export { a as PuzzleLoader } from '../TwizzleLink-dcf51446.js';
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-e2a80975.js';
5
- import '../parseAlg-db0dec6c.js';
6
- import '../KState-a2f0e651.js';
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-0ce1b145.js';
2
- import '../Alg-e2a80975.js';
3
- import '../KState-a2f0e651.js';
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-0ce1b145.js';
2
- import { K as KState } from '../KState-a2f0e651.js';
3
- import '../Alg-e2a80975.js';
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 { M as MoveEvent, O as OrientationEvent } from '../bluetooth-puzzle-3670a6a1.js';
2
- import '../Alg-e2a80975.js';
3
- import '../KState-a2f0e651.js';
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: MoveEvent;
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: MoveEvent): void;
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-dcf51446.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-dcf51446.js';
3
- import { a as Alg, M as Move } from '../Alg-e2a80975.js';
4
- import { a as KPuzzle, K as KState, e as KTransformation } from '../KState-a2f0e651.js';
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-db0dec6c.js';
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.28.1",
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.141.0",
57
- "@types/web-bluetooth": "^0.0.14",
56
+ "@types/three": "^0.143.0",
57
+ "@types/web-bluetooth": "^0.0.15",
58
58
  "comlink": "^4.3.1",
59
- "three": "^0.142.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.9",
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/jest": "^28.1.6",
67
- "@types/node": "^18.0.6",
68
- "@typescript-eslint/eslint-plugin": "^5.30.7",
69
- "@typescript-eslint/parser": "^5.30.7",
70
- "babel-jest": "^28.1.3",
71
- "barely-a-dev-server": "^0.3.0",
72
- "esbuild": "^0.14.49",
73
- "eslint": "^8.20.0",
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.0.0",
80
+ "eslint-plugin-html": "^7.1.0",
76
81
  "eslint-plugin-prettier": "^4.2.1",
77
- "jest": "^28.1.3",
78
- "jest-environment-jsdom": "^28.1.3",
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
- "puppeteer": "^15.4.0",
83
- "tsup": "^6.1.3",
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 initial-setup && node ./script/build/main.js sites dev",
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": "npm run test-jest && npm run lint && npm run test-import-restrictions && npm run test-tsc # keep test.yml in sync with this",
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-parcel": "node ./script/test/dist/esm/parcel/main.js",
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-experiments": "node ./script/test/dist/experiments/main.js",
128
- "test-dist-not-imported-from-src": "node ./script/test/dist/not-imported-from-src/main.js",
129
- "test-import-restrictions": "node ./script/test/import-restrictions/main.js",
130
- "test-jest": "npx jest --collectCoverage",
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 install",
134
- "initial-setup": "node ./script/initial-setup/main.js",
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 `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'"
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
- }