cubing 0.25.14 → 0.26.2

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 (414) hide show
  1. package/dist/esm/.DS_Store +0 -0
  2. package/dist/esm/bluetooth/index.js +1 -1
  3. package/dist/esm/{chunk-AT7N3AOZ.js → chunk-3ADPLDWG.js} +17 -9
  4. package/dist/esm/chunk-3ADPLDWG.js.map +7 -0
  5. package/dist/esm/{chunk-KIVNYU5K.js → chunk-3NFDCQI2.js} +5 -40
  6. package/dist/esm/chunk-3NFDCQI2.js.map +7 -0
  7. package/dist/esm/{chunk-XA4PIJ26.js → chunk-4OCHKVLJ.js} +6 -6
  8. package/dist/esm/{chunk-XA4PIJ26.js.map → chunk-4OCHKVLJ.js.map} +2 -2
  9. package/dist/esm/{chunk-QYQUT5N5.js → chunk-ESSOEWR6.js} +14 -14
  10. package/dist/esm/{chunk-QYQUT5N5.js.map → chunk-ESSOEWR6.js.map} +2 -2
  11. package/dist/esm/{chunk-EQO3X3CR.js → chunk-RGEST6KF.js} +10 -8
  12. package/dist/esm/chunk-RGEST6KF.js.map +7 -0
  13. package/dist/esm/chunk-YBDBUTYE.js +42 -0
  14. package/dist/esm/chunk-YBDBUTYE.js.map +7 -0
  15. package/dist/esm/puzzle-geometry/index.js +5 -1
  16. package/dist/esm/puzzles/index.js +1 -1
  17. package/dist/esm/{3x3x3.kpuzzle.svg-5U7LUACF.js → puzzles-dynamic-3x3x3-NB2PEZTV.js} +115 -4
  18. package/dist/esm/puzzles-dynamic-3x3x3-NB2PEZTV.js.map +7 -0
  19. package/dist/esm/puzzles-dynamic-side-events-CXNWDLKD.js +1855 -0
  20. package/dist/esm/puzzles-dynamic-side-events-CXNWDLKD.js.map +7 -0
  21. package/dist/esm/puzzles-dynamic-unofficial-CKTRIKMY.js +399 -0
  22. package/dist/esm/puzzles-dynamic-unofficial-CKTRIKMY.js.map +7 -0
  23. package/dist/esm/scramble/index.js +5 -4
  24. package/dist/esm/search/index.js +6 -5
  25. package/dist/esm/{chunk-ZII44VO5.js → search-dynamic-sgs-side-events-ZDPMZ4Y7.js} +320 -6
  26. package/dist/esm/search-dynamic-sgs-side-events-ZDPMZ4Y7.js.map +7 -0
  27. package/dist/esm/{fto.dynamic-SV2AUQBH.js → search-dynamic-sgs-unofficial-RAGEBTDP.js} +562 -9
  28. package/dist/esm/search-dynamic-sgs-unofficial-RAGEBTDP.js.map +7 -0
  29. package/dist/esm/{3x3x3-min2phase-UBW46KDU.js → search-dynamic-solve-3x3x3-K4TG7P3X.js} +1 -1
  30. package/dist/esm/{3x3x3-min2phase-UBW46KDU.js.map → search-dynamic-solve-3x3x3-K4TG7P3X.js.map} +0 -0
  31. package/dist/esm/{444-solver-EWF7OHAQ.js → search-dynamic-solve-4x4x4-W455FUFG.js} +4 -3
  32. package/dist/esm/{444-solver-EWF7OHAQ.js.map → search-dynamic-solve-4x4x4-W455FUFG.js.map} +1 -1
  33. package/dist/esm/{fto-solver-QFOR6LKK.js → search-dynamic-solve-fto-ZM45FTCO.js} +1 -1
  34. package/dist/esm/{fto-solver-QFOR6LKK.js.map → search-dynamic-solve-fto-ZM45FTCO.js.map} +0 -0
  35. package/dist/esm/{kilosolver-QN5CWSPC.js → search-dynamic-solve-kilominx-PAW6HKT5.js} +1 -3
  36. package/dist/esm/{kilosolver-QN5CWSPC.js.map → search-dynamic-solve-kilominx-PAW6HKT5.js.map} +1 -1
  37. package/dist/esm/{master_tetraminx-solver-4JXXIBVR.js → search-dynamic-solve-master_tetraminx-3R2CJUKW.js} +1 -3
  38. package/dist/esm/{master_tetraminx-solver-4JXXIBVR.js.map → search-dynamic-solve-master_tetraminx-3R2CJUKW.js.map} +1 -1
  39. package/dist/esm/{sq1-solver-E4EE73CO.js → search-dynamic-solve-sq1-RS5HN6AH.js} +1 -1
  40. package/dist/esm/{sq1-solver-E4EE73CO.js.map → search-dynamic-solve-sq1-RS5HN6AH.js.map} +0 -0
  41. package/dist/esm/{worker-inside-generated-string-NGQ24QDC.js → search-worker-inside-generated-string-VBEHCGJ6.js} +1335 -1335
  42. package/dist/esm/search-worker-inside-generated-string-VBEHCGJ6.js.map +7 -0
  43. package/dist/esm/{search-worker-js-entry-Z6HIC5BI.js → search-worker-js-entry-5IIKIMTU.js} +45 -60
  44. package/dist/esm/search-worker-js-entry-5IIKIMTU.js.map +7 -0
  45. package/dist/esm/{search-worker-ts-entry-PS4HBLXL.js → search-worker-ts-entry-BV3J54MW.js} +2 -2
  46. package/dist/esm/{search-worker-ts-entry-PS4HBLXL.js.map → search-worker-ts-entry-BV3J54MW.js.map} +0 -0
  47. package/dist/esm/twisty/index.js +71 -15
  48. package/dist/esm/twisty/index.js.map +3 -3
  49. package/dist/esm/{3d-dynamic-BOMV4HRU.js → twisty-dynamic-3d-KFFJZNMZ.js} +6 -5
  50. package/dist/esm/{3d-dynamic-BOMV4HRU.js.map → twisty-dynamic-3d-KFFJZNMZ.js.map} +2 -2
  51. package/dist/types/Alg-6f3dc52c.d.ts +278 -0
  52. package/dist/types/KPuzzleDefinition-121e85a8.d.ts +353 -0
  53. package/dist/types/KState-73482114.d.ts +70 -0
  54. package/dist/types/PuzzleLoader-9243f44d.d.ts +1177 -0
  55. package/dist/types/alg/index.d.ts +49 -13
  56. package/dist/types/bluetooth/index.d.ts +147 -11
  57. package/dist/types/{bluetooth/smart-puzzle/bluetooth-puzzle.d.ts → bluetooth-puzzle-679d8ca3.d.ts} +14 -8
  58. package/dist/types/kpuzzle/index.d.ts +8 -6
  59. package/dist/types/notation/index.d.ts +8 -2
  60. package/dist/types/outside-f7ba9c00.d.ts +22 -0
  61. package/dist/types/parse-6d363160.d.ts +9 -0
  62. package/dist/types/protocol/index.d.ts +26 -4
  63. package/dist/types/puzzle-geometry/index.d.ts +7 -6
  64. package/dist/types/puzzles/index.d.ts +31 -12
  65. package/dist/types/scramble/index.d.ts +4 -1
  66. package/dist/types/search/index.d.ts +8 -2
  67. package/dist/types/stream/index.d.ts +57 -3
  68. package/dist/types/twisty/index.d.ts +58 -16
  69. package/package.json +7 -4
  70. package/dist/esm/2x2x2.kpuzzle.json-BHTFIME6.js +0 -96
  71. package/dist/esm/2x2x2.kpuzzle.json-BHTFIME6.js.map +0 -7
  72. package/dist/esm/2x2x2.kpuzzle.svg-CYX37VBY.js +0 -52
  73. package/dist/esm/2x2x2.kpuzzle.svg-CYX37VBY.js.map +0 -7
  74. package/dist/esm/2x2x2.sgs.json-EFZFDZSW.js +0 -122
  75. package/dist/esm/2x2x2.sgs.json-EFZFDZSW.js.map +0 -7
  76. package/dist/esm/3x3x3-ll.kpuzzle.svg-KZNSV76X.js +0 -115
  77. package/dist/esm/3x3x3-ll.kpuzzle.svg-KZNSV76X.js.map +0 -7
  78. package/dist/esm/3x3x3.kpuzzle.svg-5U7LUACF.js.map +0 -7
  79. package/dist/esm/chunk-74BT3ZNM.js +0 -122
  80. package/dist/esm/chunk-74BT3ZNM.js.map +0 -7
  81. package/dist/esm/chunk-AT7N3AOZ.js.map +0 -7
  82. package/dist/esm/chunk-AWBXZ43I.js +0 -103
  83. package/dist/esm/chunk-AWBXZ43I.js.map +0 -7
  84. package/dist/esm/chunk-EQO3X3CR.js.map +0 -7
  85. package/dist/esm/chunk-KIVNYU5K.js.map +0 -7
  86. package/dist/esm/chunk-ZII44VO5.js.map +0 -7
  87. package/dist/esm/clock.kpuzzle.json-PYHONPBY.js +0 -714
  88. package/dist/esm/clock.kpuzzle.json-PYHONPBY.js.map +0 -7
  89. package/dist/esm/clock.kpuzzle.svg-JSRDCSQF.js +0 -376
  90. package/dist/esm/clock.kpuzzle.svg-JSRDCSQF.js.map +0 -7
  91. package/dist/esm/fto.dynamic-SV2AUQBH.js.map +0 -7
  92. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js +0 -102
  93. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js.map +0 -7
  94. package/dist/esm/kilominx.kpuzzle.svg-ZLRTRUTM.js +0 -83
  95. package/dist/esm/kilominx.kpuzzle.svg-ZLRTRUTM.js.map +0 -7
  96. package/dist/esm/megaminx.sgs.json-2JJOMDGZ.js +0 -16
  97. package/dist/esm/megaminx.sgs.json-2JJOMDGZ.js.map +0 -7
  98. package/dist/esm/pyraminx.kpuzzle.svg-UHDZCBET.js +0 -95
  99. package/dist/esm/pyraminx.kpuzzle.svg-UHDZCBET.js.map +0 -7
  100. package/dist/esm/pyraminx.sgs.json-53OXF5I4.js +0 -14
  101. package/dist/esm/pyraminx.sgs.json-53OXF5I4.js.map +0 -7
  102. package/dist/esm/redi_cube-6LJBQEBD.js +0 -565
  103. package/dist/esm/redi_cube-6LJBQEBD.js.map +0 -7
  104. package/dist/esm/redi_cube.kpuzzle.json-43CP47Z6.js +0 -66
  105. package/dist/esm/redi_cube.kpuzzle.json-43CP47Z6.js.map +0 -7
  106. package/dist/esm/redi_cube.kpuzzle.svg-3DWDYE3O.js +0 -160
  107. package/dist/esm/redi_cube.kpuzzle.svg-3DWDYE3O.js.map +0 -7
  108. package/dist/esm/search-worker-js-entry-Z6HIC5BI.js.map +0 -7
  109. package/dist/esm/skewb.sgs.json-3EF2HRKU.js +0 -16
  110. package/dist/esm/skewb.sgs.json-3EF2HRKU.js.map +0 -7
  111. package/dist/esm/sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js +0 -244
  112. package/dist/esm/sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js.map +0 -7
  113. package/dist/esm/sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js +0 -302
  114. package/dist/esm/sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js.map +0 -7
  115. package/dist/esm/worker-inside-generated-string-NGQ24QDC.js.map +0 -7
  116. package/dist/types/alg/Alg.d.ts +0 -118
  117. package/dist/types/alg/Alg.spec.d.ts +0 -1
  118. package/dist/types/alg/AlgBuilder.d.ts +0 -11
  119. package/dist/types/alg/Serializable.d.ts +0 -0
  120. package/dist/types/alg/common.d.ts +0 -19
  121. package/dist/types/alg/debug.d.ts +0 -4
  122. package/dist/types/alg/example.d.ts +0 -14
  123. package/dist/types/alg/is.d.ts +0 -4
  124. package/dist/types/alg/iteration.d.ts +0 -9
  125. package/dist/types/alg/keyboard.d.ts +0 -2
  126. package/dist/types/alg/limits.d.ts +0 -4
  127. package/dist/types/alg/operation.d.ts +0 -6
  128. package/dist/types/alg/operation.spec.d.ts +0 -1
  129. package/dist/types/alg/parse.d.ts +0 -12
  130. package/dist/types/alg/parse.spec.d.ts +0 -1
  131. package/dist/types/alg/test/alg-comparison.d.ts +0 -10
  132. package/dist/types/alg/test/alg.spec.d.ts +0 -1
  133. package/dist/types/alg/traversal.d.ts +0 -39
  134. package/dist/types/alg/units/QuantumWithAmount.d.ts +0 -11
  135. package/dist/types/alg/units/Unit.d.ts +0 -9
  136. package/dist/types/alg/units/containers/Commutator.d.ts +0 -14
  137. package/dist/types/alg/units/containers/Conjugate.d.ts +0 -14
  138. package/dist/types/alg/units/containers/Grouping.d.ts +0 -19
  139. package/dist/types/alg/units/index.d.ts +0 -8
  140. package/dist/types/alg/units/leaves/LineComment.d.ts +0 -12
  141. package/dist/types/alg/units/leaves/LineComment.spec.d.ts +0 -1
  142. package/dist/types/alg/units/leaves/Move.d.ts +0 -50
  143. package/dist/types/alg/units/leaves/Move.spec.d.ts +0 -1
  144. package/dist/types/alg/units/leaves/Newline.d.ts +0 -9
  145. package/dist/types/alg/units/leaves/Pause.d.ts +0 -9
  146. package/dist/types/alg/url.d.ts +0 -11
  147. package/dist/types/alg/url.spec.d.ts +0 -1
  148. package/dist/types/alg/validation.d.ts +0 -19
  149. package/dist/types/alg/warnOnce.d.ts +0 -1
  150. package/dist/types/bluetooth/connect/index.d.ts +0 -6
  151. package/dist/types/bluetooth/debug.d.ts +0 -2
  152. package/dist/types/bluetooth/keyboard.d.ts +0 -14
  153. package/dist/types/bluetooth/smart-puzzle/Heykube.d.ts +0 -17
  154. package/dist/types/bluetooth/smart-puzzle/connect.d.ts +0 -3
  155. package/dist/types/bluetooth/smart-puzzle/endianness.d.ts +0 -1
  156. package/dist/types/bluetooth/smart-puzzle/gan.d.ts +0 -34
  157. package/dist/types/bluetooth/smart-puzzle/giiker.d.ts +0 -21
  158. package/dist/types/bluetooth/smart-puzzle/giiker.spec.d.ts +0 -4
  159. package/dist/types/bluetooth/smart-puzzle/gocube.d.ts +0 -22
  160. package/dist/types/bluetooth/smart-robot/GanRobot.d.ts +0 -35
  161. package/dist/types/bluetooth/smart-robot/index.d.ts +0 -4
  162. package/dist/types/bluetooth/smart-timer/GanTimer.d.ts +0 -19
  163. package/dist/types/bluetooth/smart-timer/index.d.ts +0 -4
  164. package/dist/types/bluetooth/transformer.d.ts +0 -9
  165. package/dist/types/cubing.bundle-global.d.ts +0 -1
  166. package/dist/types/cubing.bundle-global.exports.d.ts +0 -24
  167. package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.d.ts +0 -2
  168. package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.spec.d.ts +0 -1
  169. package/dist/types/kpuzzle/3x3x3/puzzle-orientation.d.ts +0 -5
  170. package/dist/types/kpuzzle/KPuzzle.d.ts +0 -30
  171. package/dist/types/kpuzzle/KPuzzleDefinition.d.ts +0 -21
  172. package/dist/types/kpuzzle/KState.d.ts +0 -23
  173. package/dist/types/kpuzzle/KTransformation.d.ts +0 -24
  174. package/dist/types/kpuzzle/calculate.d.ts +0 -16
  175. package/dist/types/kpuzzle/combine.d.ts +0 -3
  176. package/dist/types/kpuzzle/construct.d.ts +0 -5
  177. package/dist/types/notation/CountAnimatedLeaves.d.ts +0 -2
  178. package/dist/types/notation/CountMoves.d.ts +0 -3
  179. package/dist/types/protocol/binary/binary3x3x3.d.ts +0 -19
  180. package/dist/types/protocol/binary/binary3x3x3.spec.d.ts +0 -1
  181. package/dist/types/protocol/binary/hex.d.ts +0 -2
  182. package/dist/types/protocol/binary/hex.spec.d.ts +0 -1
  183. package/dist/types/protocol/binary/orbit-indexing.d.ts +0 -5
  184. package/dist/types/protocol/binary/orbit-indexing.spec.d.ts +0 -1
  185. package/dist/types/protocol/binary/puzzle-orientation.d.ts +0 -4
  186. package/dist/types/puzzle-geometry/FaceNameSwizzler.d.ts +0 -12
  187. package/dist/types/puzzle-geometry/Options.d.ts +0 -45
  188. package/dist/types/puzzle-geometry/PGPuzzles.d.ts +0 -5
  189. package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +0 -4
  190. package/dist/types/puzzle-geometry/Perm.d.ts +0 -18
  191. package/dist/types/puzzle-geometry/PermOriSet.d.ts +0 -71
  192. package/dist/types/puzzle-geometry/PlatonicGenerator.d.ts +0 -10
  193. package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +0 -176
  194. package/dist/types/puzzle-geometry/Quat.d.ts +0 -43
  195. package/dist/types/puzzle-geometry/Quat.spec.d.ts +0 -1
  196. package/dist/types/puzzle-geometry/SchreierSims.d.ts +0 -2
  197. package/dist/types/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts +0 -10
  198. package/dist/types/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts +0 -12
  199. package/dist/types/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts +0 -8
  200. package/dist/types/puzzle-geometry/notation-mapping/NotationMapper.d.ts +0 -7
  201. package/dist/types/puzzle-geometry/notation-mapping/NullMapper.d.ts +0 -6
  202. package/dist/types/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts +0 -8
  203. package/dist/types/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts +0 -15
  204. package/dist/types/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts +0 -9
  205. package/dist/types/puzzle-geometry/notation-mapping/index.d.ts +0 -8
  206. package/dist/types/puzzle-geometry/orientcenters.spec.d.ts +0 -1
  207. package/dist/types/puzzles/PuzzleLoader.d.ts +0 -18
  208. package/dist/types/puzzles/async/async-pg3d.d.ts +0 -33
  209. package/dist/types/puzzles/async/lazy-cached.d.ts +0 -1
  210. package/dist/types/puzzles/customPGPuzzleLoader.d.ts +0 -11
  211. package/dist/types/puzzles/events.d.ts +0 -8
  212. package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.json.d.ts +0 -2
  213. package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.svg.d.ts +0 -2
  214. package/dist/types/puzzles/implementations/2x2x2/index.d.ts +0 -2
  215. package/dist/types/puzzles/implementations/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts +0 -2
  216. package/dist/types/puzzles/implementations/3x3x3/3x3x3.kpuzzle.svg.d.ts +0 -2
  217. package/dist/types/puzzles/implementations/3x3x3/index.d.ts +0 -2
  218. package/dist/types/puzzles/implementations/clock/clock.kpuzzle.json.d.ts +0 -2
  219. package/dist/types/puzzles/implementations/clock/clock.kpuzzle.svg.d.ts +0 -2
  220. package/dist/types/puzzles/implementations/clock/index.d.ts +0 -2
  221. package/dist/types/puzzles/implementations/fto/fto.kpuzzle.svg.d.ts +0 -1
  222. package/dist/types/puzzles/implementations/fto/index.d.ts +0 -12
  223. package/dist/types/puzzles/implementations/kilominx/index.d.ts +0 -2
  224. package/dist/types/puzzles/implementations/kilominx/kilominx.kpuzzle.svg.d.ts +0 -1
  225. package/dist/types/puzzles/implementations/megaminx/index.d.ts +0 -11
  226. package/dist/types/puzzles/implementations/pyraminx/index.d.ts +0 -7
  227. package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.json.d.ts +0 -2
  228. package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.d.ts +0 -2
  229. package/dist/types/puzzles/implementations/redi-cube/index.d.ts +0 -2
  230. package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.json.d.ts +0 -2
  231. package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.svg.d.ts +0 -1
  232. package/dist/types/puzzles/implementations/square1/index.d.ts +0 -2
  233. package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.json.d.ts +0 -2
  234. package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.svg.d.ts +0 -2
  235. package/dist/types/puzzles/stickerings/appearance.d.ts +0 -50
  236. package/dist/types/puzzles/stickerings/cube-stickerings.d.ts +0 -5
  237. package/dist/types/puzzles/stickerings/fto-stickerings.d.ts +0 -5
  238. package/dist/types/puzzles/stickerings/global-custom-stickering-hack.d.ts +0 -2
  239. package/dist/types/puzzles/stickerings/megaminx-stickerings.d.ts +0 -5
  240. package/dist/types/search/inside/api.d.ts +0 -21
  241. package/dist/types/search/inside/api.spec.d.ts +0 -1
  242. package/dist/types/search/inside/inside-worker.d.ts +0 -2
  243. package/dist/types/search/inside/search-worker-js-entry.d.ts +0 -1
  244. package/dist/types/search/inside/search-worker-ts-entry-path-getter.d.ts +0 -1
  245. package/dist/types/search/inside/search-worker-ts-entry.d.ts +0 -1
  246. package/dist/types/search/inside/solve/addOrientationSuffix.d.ts +0 -2
  247. package/dist/types/search/inside/solve/parseSGS.d.ts +0 -18
  248. package/dist/types/search/inside/solve/puzzles/2x2x2.d.ts +0 -6
  249. package/dist/types/search/inside/solve/puzzles/2x2x2.sgs.json.d.ts +0 -3
  250. package/dist/types/search/inside/solve/puzzles/3x3x3/convert.d.ts +0 -2
  251. package/dist/types/search/inside/solve/puzzles/3x3x3/filter.d.ts +0 -4
  252. package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts +0 -8
  253. package/dist/types/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts +0 -1
  254. package/dist/types/search/inside/solve/puzzles/3x3x3-inefficient.sgs.json.d.ts +0 -3
  255. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +0 -4
  256. package/dist/types/search/inside/solve/puzzles/5x5x5.d.ts +0 -2
  257. package/dist/types/search/inside/solve/puzzles/big-cubes.d.ts +0 -2
  258. package/dist/types/search/inside/solve/puzzles/clock.d.ts +0 -1
  259. package/dist/types/search/inside/solve/puzzles/fto.d.ts +0 -5
  260. package/dist/types/search/inside/solve/puzzles/fto.dynamic.d.ts +0 -3
  261. package/dist/types/search/inside/solve/puzzles/kilominx.d.ts +0 -2
  262. package/dist/types/search/inside/solve/puzzles/master_tetraminx.d.ts +0 -2
  263. package/dist/types/search/inside/solve/puzzles/megaminx.d.ts +0 -4
  264. package/dist/types/search/inside/solve/puzzles/megaminx.sgs.json.d.ts +0 -5
  265. package/dist/types/search/inside/solve/puzzles/pyraminx.d.ts +0 -6
  266. package/dist/types/search/inside/solve/puzzles/pyraminx.sgs.json.d.ts +0 -3
  267. package/dist/types/search/inside/solve/puzzles/redi_cube.d.ts +0 -2
  268. package/dist/types/search/inside/solve/puzzles/sgs-defs.spec.d.ts +0 -1
  269. package/dist/types/search/inside/solve/puzzles/skewb.d.ts +0 -6
  270. package/dist/types/search/inside/solve/puzzles/skewb.sgs.json.d.ts +0 -5
  271. package/dist/types/search/inside/solve/puzzles/sq1.d.ts +0 -2
  272. package/dist/types/search/inside/solve/puzzles/wca-minx.d.ts +0 -1
  273. package/dist/types/search/inside/solve/tremble.d.ts +0 -13
  274. package/dist/types/search/inside/worker-guard.d.ts +0 -3
  275. package/dist/types/search/instantiator.d.ts +0 -4
  276. package/dist/types/search/outside.d.ts +0 -17
  277. package/dist/types/search/worker-inside-generated-string.d.ts +0 -1
  278. package/dist/types/stream/process/ReorientedStream.d.ts +0 -20
  279. package/dist/types/stream/proxy-event.d.ts +0 -13
  280. package/dist/types/stream/twizzle/TwizzleStream.d.ts +0 -18
  281. package/dist/types/stream/twizzle/stream-types.d.ts +0 -32
  282. package/dist/types/stream/websocket-proxy.d.ts +0 -21
  283. package/dist/types/twisty/controllers/AnimationTypes.d.ts +0 -32
  284. package/dist/types/twisty/controllers/RenderScheduler.d.ts +0 -12
  285. package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +0 -36
  286. package/dist/types/twisty/controllers/TwistyPlayerController.d.ts +0 -15
  287. package/dist/types/twisty/controllers/easing.d.ts +0 -1
  288. package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts +0 -17
  289. package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts +0 -36
  290. package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts +0 -19
  291. package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +0 -22
  292. package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts +0 -25
  293. package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts +0 -63
  294. package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts +0 -20
  295. package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +0 -2
  296. package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts +0 -15
  297. package/dist/types/twisty/heavy-code-imports/3d.d.ts +0 -2
  298. package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d-dynamic.d.ts +0 -10
  299. package/dist/types/twisty/model/PromiseFreshener.d.ts +0 -13
  300. package/dist/types/twisty/model/TwistyPlayerModel.d.ts +0 -85
  301. package/dist/types/twisty/model/TwistySceneModel.d.ts +0 -27
  302. package/dist/types/twisty/model/UserVisibleErrorTracker.d.ts +0 -10
  303. package/dist/types/twisty/model/helpers.d.ts +0 -4
  304. package/dist/types/twisty/model/props/TwistyProp.d.ts +0 -59
  305. package/dist/types/twisty/model/props/TwistyProp.spec.d.ts +0 -4
  306. package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +0 -26
  307. package/dist/types/twisty/model/props/general/ArbitraryStringProp.d.ts +0 -4
  308. package/dist/types/twisty/model/props/general/URLProp.d.ts +0 -5
  309. package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +0 -5
  310. package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +0 -10
  311. package/dist/types/twisty/model/props/puzzle/display/SpriteProp.d.ts +0 -9
  312. package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +0 -50
  313. package/dist/types/twisty/model/props/puzzle/state/AlgProp.d.ts +0 -26
  314. package/dist/types/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts +0 -11
  315. package/dist/types/twisty/model/props/puzzle/state/AnchorTransformationProp.d.ts +0 -14
  316. package/dist/types/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts +0 -10
  317. package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +0 -16
  318. package/dist/types/twisty/model/props/puzzle/state/CurrentMoveInfoProp.d.ts +0 -13
  319. package/dist/types/twisty/model/props/puzzle/state/CurrentStateProp.d.ts +0 -14
  320. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +0 -19
  321. package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts +0 -11
  322. package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +0 -14
  323. package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +0 -11
  324. package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +0 -10
  325. package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +0 -9
  326. package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +0 -13
  327. package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +0 -9
  328. package/dist/types/twisty/model/props/puzzle/state/SetupTransformationProp.d.ts +0 -5
  329. package/dist/types/twisty/model/props/puzzle/structure/KPuzzleProp.d.ts +0 -10
  330. package/dist/types/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts +0 -5
  331. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +0 -10
  332. package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +0 -25
  333. package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +0 -12
  334. package/dist/types/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts +0 -24
  335. package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +0 -21
  336. package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +0 -14
  337. package/dist/types/twisty/model/props/timeline/TempoScaleProp.d.ts +0 -5
  338. package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +0 -15
  339. package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +0 -11
  340. package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +0 -10
  341. package/dist/types/twisty/model/props/viewer/ButtonAppearanceProp.d.ts +0 -21
  342. package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +0 -10
  343. package/dist/types/twisty/model/props/viewer/LatitudeLimit.d.ts +0 -5
  344. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +0 -28
  345. package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +0 -14
  346. package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +0 -10
  347. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +0 -11
  348. package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +0 -12
  349. package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +0 -12
  350. package/dist/types/twisty/views/2D/KPuzzleSVGWrapper.d.ts +0 -17
  351. package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +0 -2
  352. package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +0 -27
  353. package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +0 -15
  354. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +0 -19
  355. package/dist/types/twisty/views/3D/DragTracker.d.ts +0 -27
  356. package/dist/types/twisty/views/3D/RendererPool.d.ts +0 -3
  357. package/dist/types/twisty/views/3D/TAU.d.ts +0 -2
  358. package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +0 -21
  359. package/dist/types/twisty/views/3D/Twisty3DRenderTarget.d.ts +0 -3
  360. package/dist/types/twisty/views/3D/Twisty3DScene.d.ts +0 -14
  361. package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +0 -33
  362. package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +0 -2
  363. package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +0 -36
  364. package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +0 -23
  365. package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +0 -4
  366. package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +0 -58
  367. package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +0 -64
  368. package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +0 -5
  369. package/dist/types/twisty/views/ClassListManager.d.ts +0 -10
  370. package/dist/types/twisty/views/ManagedCustomElement.d.ts +0 -19
  371. package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +0 -17
  372. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +0 -2
  373. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +0 -40
  374. package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts +0 -4
  375. package/dist/types/twisty/views/TwistyAlgEditor/model.d.ts +0 -60
  376. package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +0 -2
  377. package/dist/types/twisty/views/TwistyAlgViewer.d.ts +0 -51
  378. package/dist/types/twisty/views/TwistyPlayer.css.d.ts +0 -2
  379. package/dist/types/twisty/views/TwistyPlayer.d.ts +0 -112
  380. package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +0 -79
  381. package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +0 -2
  382. package/dist/types/twisty/views/canvas.d.ts +0 -2
  383. package/dist/types/twisty/views/control-panel/TwistyButtons.css.d.ts +0 -3
  384. package/dist/types/twisty/views/control-panel/TwistyButtons.d.ts +0 -32
  385. package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +0 -2
  386. package/dist/types/twisty/views/control-panel/TwistyScrubber.d.ts +0 -13
  387. package/dist/types/twisty/views/control-panel/webkit-fullscreen.d.ts +0 -14
  388. package/dist/types/twisty/views/document.d.ts +0 -1
  389. package/dist/types/twisty/views/node-custom-element-shims.d.ts +0 -4
  390. package/dist/types/twisty/views/screenshot.d.ts +0 -11
  391. package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +0 -2
  392. package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts +0 -12
  393. package/dist/types/twisty/views/twizzle/TwizzleLink.css.d.ts +0 -2
  394. package/dist/types/twisty/views/twizzle/TwizzleLink.d.ts +0 -11
  395. package/dist/types/twisty/views/twizzle/url-params.d.ts +0 -18
  396. package/dist/types/vendor/comlink-everywhere/inside/index.d.ts +0 -4
  397. package/dist/types/vendor/comlink-everywhere/node-adapter.d.ts +0 -6
  398. package/dist/types/vendor/comlink-everywhere/outside/index.d.ts +0 -5
  399. package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts +0 -4
  400. package/dist/types/vendor/cstimer/src/js/scramble/444-solver.d.ts +0 -3
  401. package/dist/types/vendor/min2phase/3x3x3-min2phase.d.ts +0 -2
  402. package/dist/types/vendor/p-lazy/p-lazy.d.ts +0 -9
  403. package/dist/types/vendor/random-uint-below/get-random-values.d.ts +0 -2
  404. package/dist/types/vendor/random-uint-below/index.d.ts +0 -3
  405. package/dist/types/vendor/random-uint-below/random-choice.d.ts +0 -1
  406. package/dist/types/vendor/random-uint-below/random53BitValue.d.ts +0 -1
  407. package/dist/types/vendor/sq12phase/sq1-solver.d.ts +0 -1
  408. package/dist/types/vendor/three/examples/jsm/libs/stats.modified.module.d.ts +0 -32
  409. package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts +0 -3
  410. package/dist/types/vendor/xyzzy/fto-solver-original.d.ts +0 -148
  411. package/dist/types/vendor/xyzzy/fto-solver.d.ts +0 -1
  412. package/dist/types/vendor/xyzzy/kilosolver.d.ts +0 -2
  413. package/dist/types/vendor/xyzzy/master_tetraminx-solver.d.ts +0 -1
  414. package/dist/types/vendor/xyzzy/redi_cube.d.ts +0 -2
@@ -1,3 +1,6 @@
1
+ import {
2
+ from
3
+ } from "./chunk-YBDBUTYE.js";
1
4
  import {
2
5
  __privateAdd,
3
6
  __privateGet,
@@ -6,44 +9,6 @@ import {
6
9
  __privateWrapper
7
10
  } from "./chunk-MGJA5U5O.js";
8
11
 
9
- // src/cubing/vendor/p-lazy/p-lazy.ts
10
- var PLazy = class extends Promise {
11
- constructor(executor) {
12
- super((resolve) => {
13
- resolve();
14
- });
15
- this._executor = executor;
16
- }
17
- static from(function_) {
18
- return new PLazy((resolve) => {
19
- resolve(function_());
20
- });
21
- }
22
- static resolve(value) {
23
- return new PLazy((resolve) => {
24
- resolve(value);
25
- });
26
- }
27
- static reject(error) {
28
- return new PLazy((_resolve, reject) => {
29
- reject(error);
30
- });
31
- }
32
- then(onFulfilled, onRejected) {
33
- this._promise = this._promise || new Promise(this._executor);
34
- return this._promise.then(onFulfilled, onRejected);
35
- }
36
- catch(onRejected) {
37
- this._promise = this._promise || new Promise(this._executor);
38
- return this._promise.catch(onRejected);
39
- }
40
- };
41
- function from(function_) {
42
- return new PLazy((resolve) => {
43
- resolve(function_());
44
- });
45
- }
46
-
47
12
  // src/cubing/twisty/model/PromiseFreshener.ts
48
13
  var _latestAssignedIdx, _latestResolvedIdx;
49
14
  var PromiseFreshener = class {
@@ -405,7 +370,7 @@ var DEGREES_PER_RADIAN = 360 / TAU;
405
370
  // src/cubing/twisty/heavy-code-imports/3d.ts
406
371
  var cachedConstructorProxy = null;
407
372
  async function proxy3D() {
408
- return cachedConstructorProxy ?? (cachedConstructorProxy = import("./3d-dynamic-BOMV4HRU.js"));
373
+ return cachedConstructorProxy ?? (cachedConstructorProxy = import("./twisty-dynamic-3d-KFFJZNMZ.js"));
409
374
  }
410
375
  var THREEJS = from(async () => (await proxy3D()).T3I);
411
376
 
@@ -425,4 +390,4 @@ export {
425
390
  proxy3D,
426
391
  THREEJS
427
392
  };
428
- //# sourceMappingURL=chunk-KIVNYU5K.js.map
393
+ //# sourceMappingURL=chunk-3NFDCQI2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/twisty/model/PromiseFreshener.ts", "../../src/cubing/twisty/model/props/TwistyProp.ts", "../../src/cubing/twisty/model/props/puzzle/display/StickeringProp.ts", "../../src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.ts", "../../src/cubing/twisty/views/3D/TAU.ts", "../../src/cubing/twisty/heavy-code-imports/3d.ts"],
4
+ "sourcesContent": ["// TODO: Pick a much better name.\nexport class PromiseFreshener<T> {\n #latestAssignedIdx = 0;\n #latestResolvedIdx = 0;\n\n // TODO: reject instead? Drop?\n async queue(\n p: Promise<T>,\n ): Promise<{ fresh: false } | { fresh: true; result: T }> {\n const idx = ++this.#latestAssignedIdx;\n const result = await p;\n if (idx > this.#latestResolvedIdx) {\n this.#latestResolvedIdx = idx;\n return {\n fresh: true,\n result: result,\n };\n } else {\n return { fresh: false };\n }\n }\n}\n\n// This will silenty drop a queued Promise (i.e. not resolve it) if a\n// newer queued one already resolved first. This is useful for classes that want\n// to know the \"latest\" state of something without jumping back to an older\n// value by accident.\n// TODO: Remove this because it's too easy to misuse?\nexport class StaleDropper<T> {\n #latestAssignedIdx = 0;\n #latestResolvedIdx = 0;\n\n queue(p: Promise<T>): Promise<T> {\n // This is a very rare case where we *do* want to drop a Promise sometimes.\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n const idx = ++this.#latestAssignedIdx;\n const result = await p;\n if (idx > this.#latestResolvedIdx) {\n this.#latestResolvedIdx = idx;\n resolve(result);\n }\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n", "import { from } from \"../../../vendor/p-lazy/p-lazy\";\nimport { StaleDropper } from \"../PromiseFreshener\";\nimport type { UserVisibleErrorTracker } from \"../UserVisibleErrorTracker\";\n\n/*eslint @typescript-eslint/ban-types:off */\ntype InputRecord = {};\n\nexport type InputProps<T extends InputRecord> = {\n [s in keyof T]: TwistyPropParent<T[s]>;\n};\n\ntype InputPromises<T extends InputRecord> = {\n [s in keyof T]: Promise<T[s]>;\n};\n\ninterface SourceEventDetail<OutputType> {\n sourceProp: TwistyPropSource<OutputType, any>;\n value: Promise<OutputType>; // TODO: remove?\n generation: number;\n}\n\ntype SourceEvent<T> = CustomEvent<SourceEventDetail<T>>;\n\ntype PromiseOrValue<T> = T | Promise<T>;\n\n// Values of T must be immutable.\nlet globalSourceGeneration = 0; // This is incremented before being used, so 1 will be the first active value.\nexport abstract class TwistyPropParent<T> {\n public abstract get(): Promise<T>;\n\n // Don't overwrite this. Overwrite `canReuseValue` instead.\n canReuse(v1: T, v2: T): boolean {\n return v1 === v2 || this.canReuseValue(v1, v2);\n }\n\n // Overwrite with a cheap semantic comparison when possible.\n // Note that this is not called if `v1 === v2` (in which case the value is automatically reused).\n canReuseValue(_v1: T, _v2: T): boolean {\n return false;\n }\n\n debugGetChildren(): Array<TwistyPropDerived<any, any>> {\n return Array.from(this.#children.values());\n }\n\n // Propagation\n\n #children: Set<TwistyPropDerived<any, any>> = new Set();\n protected addChild(child: TwistyPropDerived<any, any>): void {\n this.#children.add(child);\n }\n\n protected removeChild(child: TwistyPropDerived<any, any>): void {\n this.#children.delete(child);\n }\n\n protected lastSourceGeneration: number = 0;\n // Synchronously marks all descendants as stale. This doesn't actually\n // literally mark as stale, but it updates the last source generation, which\n // is used to tell if a cahced result is stale.\n protected markStale(sourceEvent: SourceEvent<any>): void {\n if (sourceEvent.detail.generation !== globalSourceGeneration) {\n // The full stale propagation is synchronous, so there should not be a new one yet.\n throw new Error(\"A TwistyProp was marked stale too late!\");\n }\n if (this.lastSourceGeneration === sourceEvent.detail.generation) {\n // Already propagated.\n return;\n }\n this.lastSourceGeneration = sourceEvent.detail.generation;\n for (const child of this.#children) {\n child.markStale(sourceEvent);\n }\n // We schedule sending out events *after* the (synchronous) propagation has happened, in\n // case one of the listeners updates a source again.\n this.#scheduleRawDispatch();\n }\n\n #rawListeners: Set<() => void> = new Set();\n /** @deprecated */\n addRawListener(listener: () => void, options?: { initial: boolean }): void {\n this.#rawListeners.add(listener);\n if (options?.initial) {\n listener(); // TODO: wrap in a try?\n }\n }\n\n /** @deprecated */\n removeRawListener(listener: () => void): void {\n this.#rawListeners.delete(listener);\n }\n\n /** @deprecated */\n #scheduleRawDispatch(): void {\n if (!this.#rawDispatchPending) {\n this.#rawDispatchPending = true;\n setTimeout(() => this.#dispatchRawListeners(), 0);\n }\n }\n\n #rawDispatchPending: boolean = false;\n #dispatchRawListeners(): void {\n if (!this.#rawDispatchPending) {\n throw new Error(\"Invalid dispatch state!\");\n }\n for (const listener of this.#rawListeners) {\n listener(); // TODO: wrap in a try?\n }\n this.#rawDispatchPending = false;\n }\n\n #freshListeners: Map<(value: T) => void, () => void> = new Map();\n // TODO: Pick a better name.\n addFreshListener(listener: (value: T) => void): void {\n const staleDropper: StaleDropper<T> = new StaleDropper<T>();\n let lastResult: T | null = null;\n const callback = async () => {\n const result = await staleDropper.queue(this.get());\n if (lastResult !== null && this.canReuse(lastResult, result)) {\n return;\n }\n lastResult = result;\n listener(result);\n };\n this.#freshListeners.set(listener, callback);\n this.addRawListener(callback, { initial: true });\n }\n\n removeFreshListener(listener: (value: T) => void): void {\n this.removeRawListener(this.#freshListeners.get(listener)!); // TODO: throw a custom error?\n this.#freshListeners.delete(listener);\n }\n}\n\nexport abstract class TwistyPropSource<\n OutputType,\n InputType = OutputType,\n> extends TwistyPropParent<OutputType> {\n #value: Promise<OutputType>;\n\n public abstract getDefaultValue(): PromiseOrValue<OutputType>;\n\n constructor(initialValue?: PromiseOrValue<InputType>) {\n super();\n this.#value = from(() => this.getDefaultValue());\n if (initialValue) {\n this.#value = this.deriveFromPromiseOrValue(initialValue, this.#value);\n }\n }\n\n set(input: PromiseOrValue<InputType>): void {\n this.#value = this.deriveFromPromiseOrValue(input, this.#value);\n\n const sourceEventDetail: SourceEventDetail<OutputType> = {\n sourceProp: this,\n value: this.#value,\n generation: ++globalSourceGeneration,\n };\n this.markStale(\n new CustomEvent<SourceEventDetail<OutputType>>(\"stale\", {\n detail: sourceEventDetail,\n }),\n );\n }\n\n async get(): Promise<OutputType> {\n return this.#value;\n }\n\n async deriveFromPromiseOrValue(\n input: PromiseOrValue<InputType>,\n oldValuePromise: Promise<OutputType>,\n ): Promise<OutputType> {\n return this.derive(await input, oldValuePromise);\n }\n\n // TODO: add an indirect layer to cache the derivation?\n protected abstract derive(\n input: InputType,\n oldValuePromise: Promise<OutputType>,\n ): PromiseOrValue<OutputType>;\n}\n\nexport abstract class SimpleTwistyPropSource<\n SimpleType,\n> extends TwistyPropSource<SimpleType> {\n derive(input: SimpleType): PromiseOrValue<SimpleType> {\n return input;\n }\n}\n\n// TODO: Can we support `null` as a valid output value without loosening type\n// safety?\nexport const NO_VALUE = Symbol(\"no value\");\nexport type NoValueType = typeof NO_VALUE;\n\nexport abstract class TwistyPropDerived<\n InputTypes extends InputRecord,\n OutputType,\n> extends TwistyPropParent<OutputType> {\n // cachedInputs:\n #parents: InputProps<InputTypes>;\n\n constructor(\n parents: InputProps<InputTypes>,\n protected userVisibleErrorTracker?: UserVisibleErrorTracker,\n ) {\n super();\n this.#parents = parents;\n for (const parent of Object.values(parents)) {\n (\n parent as TwistyPropDerived<InputProps<InputTypes>, OutputType>\n ).addChild(this);\n }\n }\n\n #cachedLastSuccessfulCalculation: {\n inputs: InputTypes;\n output: Promise<OutputType>;\n generation: number;\n } | null = null;\n\n #cachedLatestGenerationCalculation: {\n output: Promise<OutputType>;\n generation: number;\n } | null = null;\n\n public async get(): Promise<OutputType> {\n const generation = this.lastSourceGeneration;\n\n if (this.#cachedLatestGenerationCalculation?.generation === generation) {\n return this.#cachedLatestGenerationCalculation.output;\n }\n\n const latestGenerationCalculation = {\n generation,\n output: this.#cacheDerive(\n this.#getParents(),\n generation,\n this.#cachedLastSuccessfulCalculation,\n ),\n };\n this.#cachedLatestGenerationCalculation = latestGenerationCalculation;\n\n this.userVisibleErrorTracker?.reset();\n return latestGenerationCalculation.output;\n }\n\n async #getParents(): Promise<InputTypes> {\n const inputValuePromises: InputPromises<InputRecord> = {} as any; // TODO\n for (const [key, parent] of Object.entries(this.#parents)) {\n (inputValuePromises as Record<string, Promise<unknown>>)[key] = (\n parent as TwistyPropParent<unknown>\n ).get();\n }\n\n const inputs: InputTypes = {} as any; // TODO\n for (const key in this.#parents) {\n inputs[key] = (await (\n inputValuePromises as Record<string, Promise<unknown>>\n )[key]) as any;\n }\n return inputs;\n }\n\n async #cacheDerive(\n inputsPromise: PromiseOrValue<InputTypes>,\n generation: number,\n cachedLatestGenerationCalculation: {\n inputs: InputTypes;\n output: Promise<OutputType>;\n generation: number;\n } | null = null,\n ): Promise<OutputType> {\n const inputs = await inputsPromise;\n\n const cache = (output: OutputType): OutputType => {\n this.#cachedLastSuccessfulCalculation = {\n inputs,\n output: Promise.resolve(output),\n generation,\n };\n return output;\n };\n\n if (!cachedLatestGenerationCalculation) {\n return cache(await this.derive(inputs));\n }\n\n const cachedInputs = cachedLatestGenerationCalculation.inputs;\n for (const key in this.#parents) {\n const parent = this.#parents[key];\n if (!parent.canReuse(inputs[key], cachedInputs[key])) {\n return cache(await this.derive(inputs));\n }\n }\n\n return cachedLatestGenerationCalculation.output;\n }\n\n protected abstract derive(input: InputTypes): PromiseOrValue<OutputType>;\n}\n\nexport class FreshListenerManager {\n #disconnectionFunctions: (() => void)[] = [];\n\n addListener<T>(\n prop: TwistyPropParent<T>,\n listener: (value: T) => void,\n ): void {\n let disconnected = false;\n const wrappedListener = (value: T) => {\n if (disconnected) {\n // TODO\n // console.warn(\"Should be disconnected!\");\n return;\n }\n listener(value);\n };\n\n prop.addFreshListener(wrappedListener);\n\n this.#disconnectionFunctions.push(() => {\n prop.removeFreshListener(wrappedListener);\n disconnected = true;\n });\n }\n\n addMultiListener<U, V>(\n props: [TwistyPropParent<U>, TwistyPropParent<V>],\n listener: (values: [U, V]) => void,\n ) {\n let disconnected = false;\n\n // We're going to get one initial call per prop. We'll ignore all but one.\n let initialIgnoresLeft = props.length - 1;\n const wrappedListener = async (_: any) => {\n if (initialIgnoresLeft > 0) {\n initialIgnoresLeft--;\n return;\n }\n if (disconnected) {\n // TODO\n // console.warn(\"Should be disconnected!\");\n return;\n }\n // We rely on `TwistyProp` caching to give us the full set of latest\n // values efficiently.\n const promises = (props as TwistyPropParent<any>[]).map((prop) =>\n prop.get(),\n );\n const values = await Promise.all(promises);\n listener(values as any); // TODO: fix up types\n };\n\n for (const prop of props) {\n prop.addFreshListener(wrappedListener);\n }\n\n this.#disconnectionFunctions.push(() => {\n for (const prop of props) {\n prop.removeFreshListener(wrappedListener);\n }\n disconnected = true;\n });\n }\n\n disconnect(): void {\n for (const disconnectionFunction of this.#disconnectionFunctions) {\n disconnectionFunction();\n }\n }\n}\n", "import { SimpleTwistyPropSource } from \"../../TwistyProp\";\n\n// TODO: turn these maps into lists?\n// TODO: alg.cubing.net parity\nexport const experimentalStickerings = {\n \"full\": true, // default\n \"centers-only\": true, // TODO\n \"PLL\": true,\n \"CLS\": true,\n \"OLL\": true,\n \"COLL\": true,\n \"OCLL\": true,\n \"CLL\": true,\n \"ELL\": true,\n \"ELS\": true,\n \"LL\": true,\n \"F2L\": true,\n \"ZBLL\": true,\n \"ZBLS\": true,\n \"WVLS\": true,\n \"VLS\": true,\n \"LS\": true,\n \"EO\": true,\n \"EOline\": true,\n \"EOcross\": true,\n \"CMLL\": true,\n \"L6E\": true,\n \"L6EO\": true,\n \"Daisy\": true,\n \"Cross\": true,\n \"2x2x2\": true,\n \"2x2x3\": true,\n \"Void Cube\": true,\n \"invisible\": true,\n \"picture\": true,\n \"experimental-centers-U\": true,\n \"experimental-centers-U-D\": true,\n \"experimental-centers-U-L-D\": true,\n \"experimental-centers-U-L-B-D\": true,\n \"experimental-centers\": true,\n \"experimental-fto-fc\": true,\n \"experimental-fto-f2t\": true,\n \"experimental-fto-sc\": true,\n \"experimental-fto-l2c\": true,\n \"experimental-fto-lbt\": true,\n \"experimental-fto-l3t\": true,\n \"experimental-global-custom-1\": true,\n \"experimental-global-custom-2\": true,\n};\nexport type ExperimentalStickering = keyof typeof experimentalStickerings;\n\nexport class StickeringProp extends SimpleTwistyPropSource<ExperimentalStickering> {\n getDefaultValue(): ExperimentalStickering {\n return \"full\"; // TODO: auto\n }\n}\n", "import { SimpleTwistyPropSource } from \"../../TwistyProp\";\n\n// TODO: turn these maps into lists?\nexport const hintFaceletStyles = {\n floating: true, // default\n none: true,\n};\nexport type HintFaceletStyle = keyof typeof hintFaceletStyles;\nexport type HintFaceletStyleWithAuto = HintFaceletStyle | \"auto\";\n\nexport class HintFaceletProp extends SimpleTwistyPropSource<HintFaceletStyleWithAuto> {\n getDefaultValue(): HintFaceletStyleWithAuto {\n return \"auto\";\n }\n}\n", "export const TAU = Math.PI * 2;\nexport const DEGREES_PER_RADIAN = 360 / TAU;\n", "import { from } from \"../../vendor/p-lazy/p-lazy\";\n\n// TODO can we remove the cached proxy?\n\n// In theory we can, but we've run into situations where imports are not properly cached.\nlet cachedConstructorProxy: Promise<\n typeof import(\"./dynamic-entries/twisty-dynamic-3d\")\n> | null = null;\n\nexport async function proxy3D(): Promise<\n typeof import(\"./dynamic-entries/twisty-dynamic-3d\")\n> {\n return (cachedConstructorProxy ??= import(\n \"./dynamic-entries/twisty-dynamic-3d\"\n ));\n}\n\nexport const THREEJS: Promise<typeof import(\"three\")> = from(\n async () => (await proxy3D()).T3I,\n);\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,12 +1,12 @@
1
+ import {
2
+ randomUIntBelowFactory
3
+ } from "./chunk-NYAPGKCW.js";
1
4
  import {
2
5
  exposeAPI
3
6
  } from "./chunk-BEXHMXCT.js";
4
7
  import {
5
8
  node_adapter_default
6
9
  } from "./chunk-GBMX6FHY.js";
7
- import {
8
- randomUIntBelowFactory
9
- } from "./chunk-NYAPGKCW.js";
10
10
  import {
11
11
  Alg
12
12
  } from "./chunk-DO7GZAW4.js";
@@ -111,7 +111,7 @@ async function constructWorker(source, options) {
111
111
  // src/cubing/search/inside/search-worker-ts-entry-path-getter.ts
112
112
  exposeAPI.expose = false;
113
113
  async function getWorkerEntryFileURL() {
114
- return (await import("./search-worker-ts-entry-PS4HBLXL.js")).WORKER_ENTRY_FILE_URL;
114
+ return (await import("./search-worker-ts-entry-BV3J54MW.js")).WORKER_ENTRY_FILE_URL;
115
115
  }
116
116
 
117
117
  // src/cubing/search/instantiator.ts
@@ -172,7 +172,7 @@ async function instantiateModuleWorker() {
172
172
  });
173
173
  }
174
174
  async function instantiateClassicWorker() {
175
- const { workerSource } = await import("./worker-inside-generated-string-NGQ24QDC.js");
175
+ const { workerSource } = await import("./search-worker-inside-generated-string-VBEHCGJ6.js");
176
176
  const worker = await constructWorker(workerSource, { eval: true });
177
177
  return wrap(worker);
178
178
  }
@@ -251,4 +251,4 @@ export {
251
251
  solveMegaminx,
252
252
  setDebug
253
253
  };
254
- //# sourceMappingURL=chunk-XA4PIJ26.js.map
254
+ //# sourceMappingURL=chunk-4OCHKVLJ.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/search/inside/solve/puzzles/clock.ts", "../../src/cubing/search/inside/solve/puzzles/wca-minx.ts", "../../src/cubing/vendor/comlink-everywhere/outside/index.ts", "../../src/cubing/search/inside/search-worker-ts-entry-path-getter.ts", "../../src/cubing/search/instantiator.ts", "../../src/cubing/search/outside.ts"],
4
- "sourcesContent": ["import { randomUIntBelowFactory } from \"../../../../vendor/random-uint-below\";\n\nconst pins = [\"UR\", \"DR\", \"DL\", \"UL\"];\nconst backMoves = [\"U\", \"R\", \"D\", \"L\", \"ALL\"];\nconst frontMoves = pins.concat(backMoves);\n\nconst randomUIntBelowPromise = randomUIntBelowFactory();\n\nexport async function randomClockScrambleString(): Promise<string> {\n const randomUIntBelow = await randomUIntBelowPromise;\n\n let filteringMoveCount = 0;\n\n async function randomSuffix(randomUIntBelow: (max: number) => number) {\n const amount = randomUIntBelow(12);\n if (amount !== 0) {\n filteringMoveCount++;\n }\n if (amount <= 6) {\n return `${amount}+`;\n } else {\n return `${12 - amount}-`;\n }\n }\n\n const moves = [];\n async function side(families: string[]): Promise<void> {\n for (const family of families) {\n moves.push(`${family}${await randomSuffix(randomUIntBelow)}`);\n }\n }\n\n await side(frontMoves);\n moves.push(\"y2\");\n await side(backMoves);\n\n // https://www.worldcubeassociation.org/regulations/#4b3\n if (filteringMoveCount < 2) {\n return randomClockScrambleString();\n }\n\n for (const pin of pins) {\n if (randomUIntBelow(2) === 0) {\n moves.push(pin);\n }\n }\n return moves.join(\" \");\n}\n", "import { randomUIntBelowFactory } from \"../../../../vendor/random-uint-below\";\n\nconst randomUIntBelowPromise = randomUIntBelowFactory();\n\nconst suffixes = [\"++\", \"--\"];\n\nexport async function randomMegaminxScrambleString(): Promise<string> {\n const randomUIntBelow = await randomUIntBelowPromise;\n\n function rdPair(): string {\n return `R${suffixes[randomUIntBelow(2)]} D${suffixes[randomUIntBelow(2)]}`;\n }\n\n function randomU(): string {\n return `U${[\"\", \"'\"][randomUIntBelow(2)]}`;\n }\n\n function row(): string {\n const chunks = [];\n for (let i = 0; i < 5; i++) {\n chunks.push(rdPair());\n }\n chunks.push(randomU());\n return chunks.join(\" \");\n }\n\n const chunks = [];\n for (let i = 0; i < 6; i++) {\n chunks.push(row());\n }\n return chunks.join(\"\\n\");\n}\n", "import nodeEndpoint from \"../node-adapter\";\n\nexport { wrap } from \"comlink\";\n// Mangled so that bundlers don't try to inline the source.\n\nconst worker_threads_mangled = \"w-orker-_threa-ds\";\nconst worker_threads_unmangled = () => worker_threads_mangled.replace(/-/g, \"\");\n\nconst useNodeWorkarounds =\n typeof globalThis.Worker === \"undefined\" &&\n typeof (globalThis as any).WorkerNavigator === \"undefined\";\n\nasync function nodeWorker(\n source: string | URL,\n options?: { eval?: boolean },\n): Promise<Worker> {\n const { Worker: NodeWorker } = await import(\n /* @vite-ignore */ worker_threads_unmangled()\n );\n const worker = new NodeWorker(source, options);\n worker.unref();\n return nodeEndpoint(worker);\n}\n\nexport async function constructWorker(\n source: string | URL,\n options?: { eval?: boolean; type?: WorkerType },\n): Promise<Worker> {\n let worker;\n if (useNodeWorkarounds) {\n return nodeWorker(source, { eval: options?.eval });\n } else {\n if (options?.eval) {\n const blob = new Blob([source as string], {\n type: \"application/javascript\",\n });\n source = URL.createObjectURL(blob);\n }\n worker = new globalThis.Worker(source, {\n type: options ? options.type : undefined, // TODO: Is it safe to use `options?.type`?\n });\n }\n return worker;\n}\n", "import { exposeAPI } from \"./worker-guard\";\n\nexposeAPI.expose = false;\nexport async function getWorkerEntryFileURL() {\n return (await import(\"./search-worker-ts-entry\")).WORKER_ENTRY_FILE_URL;\n}\n", "import { constructWorker, wrap } from \"../vendor/comlink-everywhere/outside\";\nimport type { WorkerInsideAPI } from \"./inside/api\";\nimport { getWorkerEntryFileURL } from \"./inside/search-worker-ts-entry-path-getter\";\n\nconst MODULE_WORKER_TIMEOUT_MILLISECONDS = 5000;\n\nlet forceStringWorker: boolean = false;\nexport function setForceStringWorker(force: boolean): void {\n forceStringWorker = force;\n}\n\nexport async function instantiateModuleWorker(): Promise<WorkerInsideAPI> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<WorkerInsideAPI>(async (resolve, reject) => {\n const timeoutID = setTimeout(() => {\n reject(new Error(\"module instantiation timeout\"));\n }, MODULE_WORKER_TIMEOUT_MILLISECONDS);\n\n try {\n const workerEntryFileURL = await getWorkerEntryFileURL();\n if (!workerEntryFileURL) {\n // This happens in `bundle-global`.\n reject(new Error(\"Could not get worker entry file URL.\"));\n }\n let url: string | URL;\n if (globalThis.Blob) {\n // Standard browser-like environment.\n const importSrc = `import \"${workerEntryFileURL}\";`;\n const blob = new Blob([importSrc], {\n type: \"text/javascript\",\n });\n url = URL.createObjectURL(blob);\n } else {\n // `node` doesn't have `Blob`. We can keep the original entry file URL there, but we have to wrap it.\n // Needed for `node`\n url = new URL(workerEntryFileURL);\n }\n\n const worker = (await constructWorker(url, {\n type: \"module\",\n })) as Worker & {\n nodeWorker?: import(\"worker_threads\").Worker;\n };\n\n const onError = (e: ErrorEvent) => {\n // TODO: Remove fallback when Firefox implements module workers: https://bugzilla.mozilla.org/show_bug.cgi?id=1247687\n if (e.message?.startsWith(\"SyntaxError\")) {\n reject(e);\n }\n };\n\n const onFirstMessage = (messageData: string) => {\n if (messageData === \"comlink-exposed\") {\n // We need to clear the timeout so that we don't prevent `node` from exiting in the meantime.\n clearTimeout(timeoutID);\n resolve(wrap<WorkerInsideAPI>(worker));\n } else {\n reject(\n new Error(\"wrong module instantiation message \" + messageData),\n );\n }\n };\n\n if (worker.nodeWorker) {\n // We have to use `once` so the `unref()` from `comlink-everywhere` allows the process to quite as expected.\n worker.nodeWorker.once(\"message\", onFirstMessage);\n } else {\n worker.addEventListener(\"error\", onError, {\n once: true,\n });\n worker.addEventListener(\"message\", (e) => onFirstMessage(e.data), {\n once: true,\n });\n }\n } catch (e) {\n reject(e);\n }\n });\n}\n\nasync function instantiateClassicWorker(): Promise<WorkerInsideAPI> {\n const { workerSource } = await import(\"./worker-inside-generated-string.js\");\n const worker = await constructWorker(workerSource, { eval: true });\n return wrap(worker);\n}\n\nexport async function instantiateWorker(): Promise<WorkerInsideAPI> {\n if (forceStringWorker) {\n console.warn(\n \"Using the `forceStringWorker` workaround for search worker instantiation. This will require downloading significantly more code than necessary, but the functionality will be the same.\",\n );\n return instantiateClassicWorker();\n }\n try {\n // `await` is important for `catch` to work.\n return await instantiateModuleWorker();\n } catch (e) {\n console.warn(\n \"Could not instantiate module worker (this may happen in Firefox, with `bundle-global`, or when using Parcel). Falling back to string worker.\",\n e,\n );\n return instantiateClassicWorker();\n }\n}\n", "import { Alg } from \"../alg\";\n// import { preInitialize222 } from \"../implementations/2x2x2\";\nimport { randomClockScrambleString } from \"./inside/solve/puzzles/clock\"; // TODO: don't reach into `inside` code.\nimport { randomMegaminxScrambleString } from \"./inside/solve/puzzles/wca-minx\"; // TODO: don't reach into `inside` code.\nimport { instantiateWorker, setForceStringWorker } from \"./instantiator\";\nimport type { PrefetchLevel, WorkerInsideAPI } from \"./inside/api\";\nimport type { KState } from \"../kpuzzle/KState\";\n\nlet cachedWorkerInstance: Promise<WorkerInsideAPI> | null = null;\nasync function getCachedWorkerInstance(): Promise<WorkerInsideAPI> {\n return await (cachedWorkerInstance ??= instantiateWorker());\n}\n\n// Pre-initialize the scrambler for the given event. (Otherwise, an event is\n// initialized the first time you ask for a scramble for that event.)\n//\n// Some typical numbers for a fast computer:\n// - 3x3x3 initialization: 200ms\n// - Each 3x3x3 scramble: 50ms\n// - 4x4x4 initialization: 2500ms\n// - Each 4x4x4 scramble: 300ms to 800ms\n//\n// It is safe to immediately call for a scramble\n// any time after starting pre-initialization, or to call for them without\n// pre-initializing. Pre-initializing essentially gives the scramble worker a\n// head start in case a scramble doesn't get requested immediately.\n//\n// Note that events cannot be pre-initialized in parallel. Attempting to\n// pre-initialize multiple events will initialize them consecutively. Scrambles\n// for a given event cannot be computed while another event is being initialized.\nexport function _preInitializationHintForEvent(\n eventID: string,\n // callback?: () => void\n): void {\n switch (eventID) {\n case \"clock\":\n case \"minx\":\n return;\n case \"333oh\":\n return _preInitializationHintForEvent(\"333\");\n }\n (async () => {\n await (await getCachedWorkerInstance()).initialize(eventID);\n })();\n}\n\nexport async function randomScrambleForEvent(eventID: string): Promise<Alg> {\n switch (eventID) {\n case \"clock\":\n return Alg.fromString(await randomClockScrambleString());\n case \"minx\":\n return Alg.fromString(await randomMegaminxScrambleString());\n }\n const prom = _randomScrambleStringForEvent(eventID);\n const wat = await prom;\n return Alg.fromString(wat);\n}\n\nexport async function _randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n const cwi = await getCachedWorkerInstance();\n return cwi.randomScrambleStringForEvent(eventID);\n}\n\nexport async function randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n switch (eventID) {\n case \"clock\":\n return randomClockScrambleString();\n case \"minx\":\n return randomMegaminxScrambleString();\n }\n return await _randomScrambleStringForEvent(eventID);\n}\n\nexport async function experimentalSolve3x3x3IgnoringCenters(\n state: KState,\n): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solve333ToString(state.stateData));\n}\n\nexport async function experimentalSolve2x2x2(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solve222ToString(state.stateData));\n}\n\nexport async function solveSkewb(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solveSkewbToString(state.stateData));\n}\n\nexport async function solvePyraminx(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solvePyraminxToString(state.stateData));\n}\n\nexport async function solveMegaminx(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solveMegaminxToString(state.stateData));\n}\n\nexport function setDebug(options: {\n logPerf?: boolean;\n scramblePrefetchLevel?: `${PrefetchLevel}`;\n forceStringWorker?: boolean;\n}): void {\n const { logPerf, scramblePrefetchLevel } = options;\n if (typeof logPerf !== \"undefined\") {\n getCachedWorkerInstance().then((cwi) => cwi.setDebugMeasurePerf(logPerf));\n }\n if (typeof scramblePrefetchLevel !== \"undefined\") {\n getCachedWorkerInstance().then((cwi) =>\n cwi.setScramblePrefetchLevel(scramblePrefetchLevel as PrefetchLevel),\n );\n }\n if (\"forceStringWorker\" in options) {\n setForceStringWorker(!!options.forceStringWorker);\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { randomUIntBelowFactory } from \"../../../../vendor/random-uint-below\";\n\nconst pins = [\"UR\", \"DR\", \"DL\", \"UL\"];\nconst backMoves = [\"U\", \"R\", \"D\", \"L\", \"ALL\"];\nconst frontMoves = pins.concat(backMoves);\n\nconst randomUIntBelowPromise = randomUIntBelowFactory();\n\nexport async function randomClockScrambleString(): Promise<string> {\n const randomUIntBelow = await randomUIntBelowPromise;\n\n let filteringMoveCount = 0;\n\n async function randomSuffix(randomUIntBelow: (max: number) => number) {\n const amount = randomUIntBelow(12);\n if (amount !== 0) {\n filteringMoveCount++;\n }\n if (amount <= 6) {\n return `${amount}+`;\n } else {\n return `${12 - amount}-`;\n }\n }\n\n const moves = [];\n async function side(families: string[]): Promise<void> {\n for (const family of families) {\n moves.push(`${family}${await randomSuffix(randomUIntBelow)}`);\n }\n }\n\n await side(frontMoves);\n moves.push(\"y2\");\n await side(backMoves);\n\n // https://www.worldcubeassociation.org/regulations/#4b3\n if (filteringMoveCount < 2) {\n return randomClockScrambleString();\n }\n\n for (const pin of pins) {\n if (randomUIntBelow(2) === 0) {\n moves.push(pin);\n }\n }\n return moves.join(\" \");\n}\n", "import { randomUIntBelowFactory } from \"../../../../vendor/random-uint-below\";\n\nconst randomUIntBelowPromise = randomUIntBelowFactory();\n\nconst suffixes = [\"++\", \"--\"];\n\nexport async function randomMegaminxScrambleString(): Promise<string> {\n const randomUIntBelow = await randomUIntBelowPromise;\n\n function rdPair(): string {\n return `R${suffixes[randomUIntBelow(2)]} D${suffixes[randomUIntBelow(2)]}`;\n }\n\n function randomU(): string {\n return `U${[\"\", \"'\"][randomUIntBelow(2)]}`;\n }\n\n function row(): string {\n const chunks = [];\n for (let i = 0; i < 5; i++) {\n chunks.push(rdPair());\n }\n chunks.push(randomU());\n return chunks.join(\" \");\n }\n\n const chunks = [];\n for (let i = 0; i < 6; i++) {\n chunks.push(row());\n }\n return chunks.join(\"\\n\");\n}\n", "import nodeEndpoint from \"../node-adapter\";\n\nexport { wrap } from \"comlink\";\n// Mangled so that bundlers don't try to inline the source.\n\nconst worker_threads_mangled = \"w-orker-_threa-ds\";\nconst worker_threads_unmangled = () => worker_threads_mangled.replace(/-/g, \"\");\n\nconst useNodeWorkarounds =\n typeof globalThis.Worker === \"undefined\" &&\n typeof (globalThis as any).WorkerNavigator === \"undefined\";\n\nasync function nodeWorker(\n source: string | URL,\n options?: { eval?: boolean },\n): Promise<Worker> {\n const { Worker: NodeWorker } = await import(\n /* @vite-ignore */ worker_threads_unmangled()\n );\n const worker = new NodeWorker(source, options);\n worker.unref();\n return nodeEndpoint(worker);\n}\n\nexport async function constructWorker(\n source: string | URL,\n options?: { eval?: boolean; type?: WorkerType },\n): Promise<Worker> {\n let worker;\n if (useNodeWorkarounds) {\n return nodeWorker(source, { eval: options?.eval });\n } else {\n if (options?.eval) {\n const blob = new Blob([source as string], {\n type: \"application/javascript\",\n });\n source = URL.createObjectURL(blob);\n }\n worker = new globalThis.Worker(source, {\n type: options ? options.type : undefined, // TODO: Is it safe to use `options?.type`?\n });\n }\n return worker;\n}\n", "import { exposeAPI } from \"./worker-guard\";\n\nexposeAPI.expose = false;\nexport async function getWorkerEntryFileURL() {\n return (await import(\"./search-worker-ts-entry\")).WORKER_ENTRY_FILE_URL;\n}\n", "import { constructWorker, wrap } from \"../vendor/comlink-everywhere/outside\";\nimport type { WorkerInsideAPI } from \"./inside/api\";\nimport { getWorkerEntryFileURL } from \"./inside/search-worker-ts-entry-path-getter\";\n\nconst MODULE_WORKER_TIMEOUT_MILLISECONDS = 5000;\n\nlet forceStringWorker: boolean = false;\nexport function setForceStringWorker(force: boolean): void {\n forceStringWorker = force;\n}\n\nexport async function instantiateModuleWorker(): Promise<WorkerInsideAPI> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<WorkerInsideAPI>(async (resolve, reject) => {\n const timeoutID = setTimeout(() => {\n reject(new Error(\"module instantiation timeout\"));\n }, MODULE_WORKER_TIMEOUT_MILLISECONDS);\n\n try {\n const workerEntryFileURL = await getWorkerEntryFileURL();\n if (!workerEntryFileURL) {\n // This happens in `bundle-global`.\n reject(new Error(\"Could not get worker entry file URL.\"));\n }\n let url: string | URL;\n if (globalThis.Blob) {\n // Standard browser-like environment.\n const importSrc = `import \"${workerEntryFileURL}\";`;\n const blob = new Blob([importSrc], {\n type: \"text/javascript\",\n });\n url = URL.createObjectURL(blob);\n } else {\n // `node` doesn't have `Blob`. We can keep the original entry file URL there, but we have to wrap it.\n // Needed for `node`\n url = new URL(workerEntryFileURL);\n }\n\n const worker = (await constructWorker(url, {\n type: \"module\",\n })) as Worker & {\n nodeWorker?: import(\"worker_threads\").Worker;\n };\n\n const onError = (e: ErrorEvent) => {\n // TODO: Remove fallback when Firefox implements module workers: https://bugzilla.mozilla.org/show_bug.cgi?id=1247687\n if (e.message?.startsWith(\"SyntaxError\")) {\n reject(e);\n }\n };\n\n const onFirstMessage = (messageData: string) => {\n if (messageData === \"comlink-exposed\") {\n // We need to clear the timeout so that we don't prevent `node` from exiting in the meantime.\n clearTimeout(timeoutID);\n resolve(wrap<WorkerInsideAPI>(worker));\n } else {\n reject(\n new Error(\"wrong module instantiation message \" + messageData),\n );\n }\n };\n\n if (worker.nodeWorker) {\n // We have to use `once` so the `unref()` from `comlink-everywhere` allows the process to quite as expected.\n worker.nodeWorker.once(\"message\", onFirstMessage);\n } else {\n worker.addEventListener(\"error\", onError, {\n once: true,\n });\n worker.addEventListener(\"message\", (e) => onFirstMessage(e.data), {\n once: true,\n });\n }\n } catch (e) {\n reject(e);\n }\n });\n}\n\nasync function instantiateClassicWorker(): Promise<WorkerInsideAPI> {\n const { workerSource } = await import(\n \"./search-worker-inside-generated-string.js\"\n );\n const worker = await constructWorker(workerSource, { eval: true });\n return wrap(worker);\n}\n\nexport async function instantiateWorker(): Promise<WorkerInsideAPI> {\n if (forceStringWorker) {\n console.warn(\n \"Using the `forceStringWorker` workaround for search worker instantiation. This will require downloading significantly more code than necessary, but the functionality will be the same.\",\n );\n return instantiateClassicWorker();\n }\n try {\n // `await` is important for `catch` to work.\n return await instantiateModuleWorker();\n } catch (e) {\n console.warn(\n \"Could not instantiate module worker (this may happen in Firefox, with `bundle-global`, or when using Parcel). Falling back to string worker.\",\n e,\n );\n return instantiateClassicWorker();\n }\n}\n", "import { Alg } from \"../alg\";\n// import { preInitialize222 } from \"../implementations/2x2x2\";\nimport { randomClockScrambleString } from \"./inside/solve/puzzles/clock\"; // TODO: don't reach into `inside` code.\nimport { randomMegaminxScrambleString } from \"./inside/solve/puzzles/wca-minx\"; // TODO: don't reach into `inside` code.\nimport { instantiateWorker, setForceStringWorker } from \"./instantiator\";\nimport type { PrefetchLevel, WorkerInsideAPI } from \"./inside/api\";\nimport type { KState } from \"../kpuzzle/KState\";\n\nlet cachedWorkerInstance: Promise<WorkerInsideAPI> | null = null;\nasync function getCachedWorkerInstance(): Promise<WorkerInsideAPI> {\n return await (cachedWorkerInstance ??= instantiateWorker());\n}\n\n// Pre-initialize the scrambler for the given event. (Otherwise, an event is\n// initialized the first time you ask for a scramble for that event.)\n//\n// Some typical numbers for a fast computer:\n// - 3x3x3 initialization: 200ms\n// - Each 3x3x3 scramble: 50ms\n// - 4x4x4 initialization: 2500ms\n// - Each 4x4x4 scramble: 300ms to 800ms\n//\n// It is safe to immediately call for a scramble\n// any time after starting pre-initialization, or to call for them without\n// pre-initializing. Pre-initializing essentially gives the scramble worker a\n// head start in case a scramble doesn't get requested immediately.\n//\n// Note that events cannot be pre-initialized in parallel. Attempting to\n// pre-initialize multiple events will initialize them consecutively. Scrambles\n// for a given event cannot be computed while another event is being initialized.\nexport function _preInitializationHintForEvent(\n eventID: string,\n // callback?: () => void\n): void {\n switch (eventID) {\n case \"clock\":\n case \"minx\":\n return;\n case \"333oh\":\n return _preInitializationHintForEvent(\"333\");\n }\n (async () => {\n await (await getCachedWorkerInstance()).initialize(eventID);\n })();\n}\n\nexport async function randomScrambleForEvent(eventID: string): Promise<Alg> {\n switch (eventID) {\n case \"clock\":\n return Alg.fromString(await randomClockScrambleString());\n case \"minx\":\n return Alg.fromString(await randomMegaminxScrambleString());\n }\n const prom = _randomScrambleStringForEvent(eventID);\n const wat = await prom;\n return Alg.fromString(wat);\n}\n\nexport async function _randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n const cwi = await getCachedWorkerInstance();\n return cwi.randomScrambleStringForEvent(eventID);\n}\n\nexport async function randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n switch (eventID) {\n case \"clock\":\n return randomClockScrambleString();\n case \"minx\":\n return randomMegaminxScrambleString();\n }\n return await _randomScrambleStringForEvent(eventID);\n}\n\nexport async function experimentalSolve3x3x3IgnoringCenters(\n state: KState,\n): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solve333ToString(state.stateData));\n}\n\nexport async function experimentalSolve2x2x2(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solve222ToString(state.stateData));\n}\n\nexport async function solveSkewb(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solveSkewbToString(state.stateData));\n}\n\nexport async function solvePyraminx(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solvePyraminxToString(state.stateData));\n}\n\nexport async function solveMegaminx(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.solveMegaminxToString(state.stateData));\n}\n\nexport function setDebug(options: {\n logPerf?: boolean;\n scramblePrefetchLevel?: `${PrefetchLevel}`;\n forceStringWorker?: boolean;\n}): void {\n const { logPerf, scramblePrefetchLevel } = options;\n if (typeof logPerf !== \"undefined\") {\n getCachedWorkerInstance().then((cwi) => cwi.setDebugMeasurePerf(logPerf));\n }\n if (typeof scramblePrefetchLevel !== \"undefined\") {\n getCachedWorkerInstance().then((cwi) =>\n cwi.setScramblePrefetchLevel(scramblePrefetchLevel as PrefetchLevel),\n );\n }\n if (\"forceStringWorker\" in options) {\n setForceStringWorker(!!options.forceStringWorker);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -596,9 +596,9 @@ var CubePGPuzzleLoader = class extends PGPuzzleLoader {
596
596
  var cube2x2x2 = {
597
597
  id: "2x2x2",
598
598
  fullName: "2\xD72\xD72 Cube",
599
- kpuzzle: getCached(async () => new KPuzzle((await import("./2x2x2.kpuzzle.json-BHTFIME6.js")).cube2x2x2KPuzzleDefinition)),
599
+ kpuzzle: getCached(async () => new KPuzzle((await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).cube2x2x2JSON)),
600
600
  svg: async () => {
601
- return (await import("./2x2x2.kpuzzle.svg-CYX37VBY.js")).default;
601
+ return (await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).cube2x2x2SVG;
602
602
  },
603
603
  pg: getCached(async () => {
604
604
  return asyncGetPuzzleGeometry("2x2x2");
@@ -617,10 +617,10 @@ var cube3x3x3 = {
617
617
  return experimental3x3x3KPuzzle;
618
618
  }),
619
619
  svg: getCached(async () => {
620
- return (await import("./3x3x3.kpuzzle.svg-5U7LUACF.js")).default;
620
+ return (await import("./puzzles-dynamic-3x3x3-NB2PEZTV.js")).cube3x3x3SVG;
621
621
  }),
622
622
  llSVG: getCached(async () => {
623
- return (await import("./3x3x3-ll.kpuzzle.svg-KZNSV76X.js")).default;
623
+ return (await import("./puzzles-dynamic-3x3x3-NB2PEZTV.js")).cube3x3x3LLSVG;
624
624
  }),
625
625
  pg: getCached(async () => {
626
626
  return asyncGetPuzzleGeometry("3x3x3");
@@ -635,9 +635,9 @@ var clock = {
635
635
  fullName: "Clock",
636
636
  inventedBy: ["Christopher C. Wiggs", "Christopher J. Taylor"],
637
637
  inventionYear: 1988,
638
- kpuzzle: getCached(async () => new KPuzzle((await import("./clock.kpuzzle.json-PYHONPBY.js")).clockKPuzzleDefinition)),
638
+ kpuzzle: getCached(async () => new KPuzzle((await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).clockJSON)),
639
639
  svg: getCached(async () => {
640
- return (await import("./clock.kpuzzle.svg-JSRDCSQF.js")).default;
640
+ return (await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).clockSVG;
641
641
  })
642
642
  };
643
643
 
@@ -718,7 +718,7 @@ var FTOPuzzleLoader = class extends PGPuzzleLoader {
718
718
  });
719
719
  this.stickerings = ftoStickerings;
720
720
  this.svg = getCached(async () => {
721
- return (await import("./fto.kpuzzle.svg-H2RJX6UR.js")).ftoSVG;
721
+ return (await import("./puzzles-dynamic-unofficial-CKTRIKMY.js")).ftoSVG;
722
722
  });
723
723
  }
724
724
  appearance(stickering) {
@@ -768,7 +768,7 @@ var PyraminxPuzzleLoader = class extends PGPuzzleLoader {
768
768
  inventedBy: ["Uwe Meffert"]
769
769
  });
770
770
  this.svg = getCached(async () => {
771
- return (await import("./pyraminx.kpuzzle.svg-UHDZCBET.js")).default;
771
+ return (await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).pyraminxSVG;
772
772
  });
773
773
  }
774
774
  };
@@ -780,9 +780,9 @@ var square1 = {
780
780
  fullName: "Square-1",
781
781
  inventedBy: ["Karel Hr\u0161el", "Vojtech Kopsk\xFD"],
782
782
  inventionYear: 1990,
783
- kpuzzle: getCached(async () => new KPuzzle((await import("./sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js")).sq1HyperOrbitKPuzzleDefinition)),
783
+ kpuzzle: getCached(async () => new KPuzzle((await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).sq1HyperOrbitJSON)),
784
784
  svg: getCached(async () => {
785
- return (await import("./sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js")).default;
785
+ return (await import("./puzzles-dynamic-side-events-CXNWDLKD.js")).sq1HyperOrbitSVG;
786
786
  })
787
787
  };
788
788
 
@@ -820,7 +820,7 @@ var kilominx = {
820
820
  return kpuzzle;
821
821
  }),
822
822
  svg: getCached(async () => {
823
- return (await import("./kilominx.kpuzzle.svg-ZLRTRUTM.js")).kilominxSVG;
823
+ return (await import("./puzzles-dynamic-unofficial-CKTRIKMY.js")).kilominxSVG;
824
824
  })
825
825
  };
826
826
 
@@ -830,9 +830,9 @@ var rediCube = {
830
830
  fullName: "Redi Cube",
831
831
  inventedBy: ["Oskar van Deventer"],
832
832
  inventionYear: 2009,
833
- kpuzzle: getCached(async () => new KPuzzle((await import("./redi_cube.kpuzzle.json-43CP47Z6.js")).rediCubeKPuzzleDefinition)),
833
+ kpuzzle: getCached(async () => new KPuzzle((await import("./puzzles-dynamic-unofficial-CKTRIKMY.js")).rediCubeJSON)),
834
834
  svg: async () => {
835
- return (await import("./redi_cube.kpuzzle.svg-3DWDYE3O.js")).rediCubeSVG;
835
+ return (await import("./puzzles-dynamic-unofficial-CKTRIKMY.js")).rediCubeSVG;
836
836
  }
837
837
  };
838
838
 
@@ -885,4 +885,4 @@ export {
885
885
  cube3x3x3,
886
886
  puzzles
887
887
  };
888
- //# sourceMappingURL=chunk-QYQUT5N5.js.map
888
+ //# sourceMappingURL=chunk-ESSOEWR6.js.map