cubing 0.25.13 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/.DS_Store +0 -0
- package/dist/esm/{2x2x2.kpuzzle.json-BHTFIME6.js → 2x2x2.kpuzzle.json-RJHNQ246.js} +1 -1
- package/dist/esm/{2x2x2.kpuzzle.json-BHTFIME6.js.map → 2x2x2.kpuzzle.json-RJHNQ246.js.map} +1 -1
- package/dist/esm/{2x2x2.sgs.json-NLV7NA3B.js → 2x2x2.sgs.json-OIAKZDZZ.js} +5 -5
- package/dist/esm/{2x2x2.sgs.json-NLV7NA3B.js.map → 2x2x2.sgs.json-OIAKZDZZ.js.map} +1 -1
- package/dist/esm/{3d-dynamic-ZXCKVS2R.js → 3d-dynamic-OTQHIOVR.js} +5 -5
- package/dist/esm/{3d-dynamic-ZXCKVS2R.js.map → 3d-dynamic-OTQHIOVR.js.map} +1 -1
- package/dist/esm/{3x3x3-min2phase-UBW46KDU.js → 3x3x3-min2phase-GFNNX26U.js} +1 -1
- package/dist/esm/{3x3x3-min2phase-UBW46KDU.js.map → 3x3x3-min2phase-GFNNX26U.js.map} +1 -1
- package/dist/esm/{444-solver-XVU6Q26C.js → 444-solver-2ECPETB3.js} +6 -6
- package/dist/esm/{444-solver-XVU6Q26C.js.map → 444-solver-2ECPETB3.js.map} +1 -1
- package/dist/esm/alg/index.js +1 -1
- package/dist/esm/bluetooth/index.js +6 -8
- package/dist/esm/bluetooth/index.js.map +1 -1
- package/dist/esm/{chunk-FB7SFELN.js → chunk-3CEMUTUD.js} +2 -2
- package/dist/esm/{chunk-FB7SFELN.js.map → chunk-3CEMUTUD.js.map} +1 -1
- package/dist/esm/{chunk-NSLR2SC4.js → chunk-5Q4SJSNY.js} +2 -2
- package/dist/esm/{chunk-NSLR2SC4.js.map → chunk-5Q4SJSNY.js.map} +1 -1
- package/dist/esm/{chunk-ZPAGJE7S.js → chunk-AD6PFNOU.js} +2 -2
- package/dist/esm/{chunk-ZPAGJE7S.js.map → chunk-AD6PFNOU.js.map} +1 -1
- package/dist/esm/{chunk-GBMX6FHY.js → chunk-ALBEW4DJ.js} +1 -1
- package/dist/esm/{chunk-GBMX6FHY.js.map → chunk-ALBEW4DJ.js.map} +1 -1
- package/dist/esm/{chunk-KWHGWTPB.js → chunk-CRU5TVHA.js} +4 -4
- package/dist/esm/{chunk-KWHGWTPB.js.map → chunk-CRU5TVHA.js.map} +1 -1
- package/dist/esm/{chunk-AT7N3AOZ.js → chunk-CYG3DDTX.js} +3 -2
- package/dist/esm/chunk-CYG3DDTX.js.map +7 -0
- package/dist/esm/{chunk-YAOUFM4D.js → chunk-HUCMGBEC.js} +295 -2
- package/dist/esm/chunk-HUCMGBEC.js.map +7 -0
- package/dist/esm/{chunk-RPPJMADS.js → chunk-J7OB2GEM.js} +6 -6
- package/dist/esm/{chunk-RPPJMADS.js.map → chunk-J7OB2GEM.js.map} +1 -1
- package/dist/esm/{chunk-FIUPFE4L.js → chunk-JIBAUV55.js} +7 -7
- package/dist/esm/{chunk-FIUPFE4L.js.map → chunk-JIBAUV55.js.map} +1 -1
- package/dist/esm/{chunk-ASJ4L4HQ.js → chunk-MC2D6L32.js} +3 -3
- package/dist/esm/{chunk-ASJ4L4HQ.js.map → chunk-MC2D6L32.js.map} +1 -1
- package/dist/esm/{chunk-RN5JA7BB.js → chunk-PDVAUAMY.js} +2 -2
- package/dist/esm/{chunk-RN5JA7BB.js.map → chunk-PDVAUAMY.js.map} +1 -1
- package/dist/esm/{chunk-AMOANNTB.js → chunk-PMKVGKT4.js} +4 -4
- package/dist/esm/{chunk-AMOANNTB.js.map → chunk-PMKVGKT4.js.map} +1 -1
- package/dist/esm/{chunk-DO7GZAW4.js → chunk-QZOJPCN5.js} +1 -1
- package/dist/esm/{chunk-DO7GZAW4.js.map → chunk-QZOJPCN5.js.map} +1 -1
- package/dist/esm/{chunk-BEXHMXCT.js → chunk-RHC3DIN3.js} +1 -1
- package/dist/esm/{chunk-BEXHMXCT.js.map → chunk-RHC3DIN3.js.map} +1 -1
- package/dist/esm/{chunk-43SBQEWR.js → chunk-V55YSWJY.js} +3 -3
- package/dist/esm/chunk-V55YSWJY.js.map +7 -0
- package/dist/esm/{chunk-YRNGJPFS.js → chunk-XQKTAWAA.js} +6 -6
- package/dist/esm/{chunk-YRNGJPFS.js.map → chunk-XQKTAWAA.js.map} +1 -1
- package/dist/esm/{clock.kpuzzle.json-PYHONPBY.js → clock.kpuzzle.json-3Q7KDODZ.js} +1 -1
- package/dist/esm/clock.kpuzzle.json-3Q7KDODZ.js.map +7 -0
- package/dist/esm/{fto-solver-TOOJNOZB.js → fto-solver-5EQEC77M.js} +2 -2
- package/dist/esm/{fto-solver-TOOJNOZB.js.map → fto-solver-5EQEC77M.js.map} +1 -1
- package/dist/esm/{fto.dynamic-ZIN22CCJ.js → fto.dynamic-ISSUUAOX.js} +6 -6
- package/dist/esm/{fto.dynamic-ZIN22CCJ.js.map → fto.dynamic-ISSUUAOX.js.map} +1 -1
- package/dist/esm/{kilosolver-A3MNW2DJ.js → kilosolver-RP3POREU.js} +3 -3
- package/dist/esm/{kilosolver-A3MNW2DJ.js.map → kilosolver-RP3POREU.js.map} +1 -1
- package/dist/esm/kpuzzle/index.js +2 -2
- package/dist/esm/{master_tetraminx-solver-QSJNGET5.js → master_tetraminx-solver-RFBUNQMC.js} +2 -2
- package/dist/esm/{master_tetraminx-solver-QSJNGET5.js.map → master_tetraminx-solver-RFBUNQMC.js.map} +1 -1
- package/dist/esm/{megaminx.sgs.json-4RFNTV3K.js → megaminx.sgs.json-NUXKWG2L.js} +6 -6
- package/dist/esm/{megaminx.sgs.json-4RFNTV3K.js.map → megaminx.sgs.json-NUXKWG2L.js.map} +0 -0
- package/dist/esm/notation/index.js +2 -2
- package/dist/esm/protocol/index.js +2 -3
- package/dist/esm/puzzle-geometry/index.js +2 -2
- package/dist/esm/puzzles/index.js +3 -3
- package/dist/esm/pyraminx.sgs.json-2BVIFZAF.js +14 -0
- package/dist/esm/{pyraminx.sgs.json-XWDFTFGD.js.map → pyraminx.sgs.json-2BVIFZAF.js.map} +0 -0
- package/dist/esm/{redi_cube-FYRLEZZH.js → redi_cube-5B6YHJGL.js} +3 -3
- package/dist/esm/{redi_cube-FYRLEZZH.js.map → redi_cube-5B6YHJGL.js.map} +1 -1
- package/dist/esm/{redi_cube.kpuzzle.json-43CP47Z6.js → redi_cube.kpuzzle.json-VGO74GBL.js} +1 -1
- package/dist/esm/{redi_cube.kpuzzle.json-43CP47Z6.js.map → redi_cube.kpuzzle.json-VGO74GBL.js.map} +1 -1
- package/dist/esm/scramble/index.js +8 -8
- package/dist/esm/search/index.js +8 -8
- package/dist/esm/{search-worker-js-entry-MQ5EKNR4.js → search-worker-js-entry-CZHIWNVF.js} +24 -24
- package/dist/esm/{search-worker-js-entry-MQ5EKNR4.js.map → search-worker-js-entry-CZHIWNVF.js.map} +1 -1
- package/dist/esm/{search-worker-ts-entry-AEZHCL75.js → search-worker-ts-entry-4WJDKASM.js} +5 -5
- package/dist/esm/{search-worker-ts-entry-AEZHCL75.js.map → search-worker-ts-entry-4WJDKASM.js.map} +1 -1
- package/dist/esm/skewb.sgs.json-IMR7QJQC.js +16 -0
- package/dist/esm/{skewb.sgs.json-ENZWYZTX.js.map → skewb.sgs.json-IMR7QJQC.js.map} +0 -0
- package/dist/esm/{sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js → sq1-hyperorbit.kpuzzle.json-NHAYS6MD.js} +1 -1
- package/dist/esm/sq1-hyperorbit.kpuzzle.json-NHAYS6MD.js.map +7 -0
- package/dist/esm/{sq1-solver-KMN2GSOU.js → sq1-solver-G73T6FTJ.js} +2 -2
- package/dist/esm/{sq1-solver-KMN2GSOU.js.map → sq1-solver-G73T6FTJ.js.map} +1 -1
- package/dist/esm/stream/index.js +1 -1
- package/dist/esm/stream/index.js.map +1 -1
- package/dist/esm/twisty/index.js +73 -52
- package/dist/esm/twisty/index.js.map +2 -2
- package/dist/esm/{worker-inside-generated-string-HCFERKXI.js → worker-inside-generated-string-4FDHMKDI.js} +27 -27
- package/dist/esm/worker-inside-generated-string-4FDHMKDI.js.map +7 -0
- package/dist/types/Alg-6f3dc52c.d.ts +278 -0
- package/dist/types/KPuzzleDefinition-8531b592.d.ts +349 -0
- package/dist/types/KState-ba36d9a3.d.ts +70 -0
- package/dist/types/PuzzleLoader-a7faf593.d.ts +172 -0
- package/dist/types/alg/index.d.ts +49 -13
- package/dist/types/bluetooth/index.d.ts +147 -11
- package/dist/types/{bluetooth/smart-puzzle/bluetooth-puzzle.d.ts → bluetooth-puzzle-bc1a5264.d.ts} +14 -8
- package/dist/types/kpuzzle/index.d.ts +8 -6
- package/dist/types/notation/index.d.ts +8 -2
- package/dist/types/outside-d6602f71.d.ts +22 -0
- package/dist/types/parse-6d363160.d.ts +9 -0
- package/dist/types/protocol/index.d.ts +26 -4
- package/dist/types/puzzle-geometry/index.d.ts +7 -6
- package/dist/types/puzzles/index.d.ts +29 -12
- package/dist/types/scramble/index.d.ts +4 -1
- package/dist/types/search/index.d.ts +8 -2
- package/dist/types/stream/index.d.ts +57 -3
- package/dist/types/twisty/index.d.ts +1027 -16
- package/package.json +4 -2
- package/dist/esm/chunk-43SBQEWR.js.map +0 -7
- package/dist/esm/chunk-6BUCXDZU.js +0 -274
- package/dist/esm/chunk-6BUCXDZU.js.map +0 -7
- package/dist/esm/chunk-AT7N3AOZ.js.map +0 -7
- package/dist/esm/chunk-YAOUFM4D.js.map +0 -7
- package/dist/esm/clock.kpuzzle.json-PYHONPBY.js.map +0 -7
- package/dist/esm/pyraminx.sgs.json-XWDFTFGD.js +0 -14
- package/dist/esm/skewb.sgs.json-ENZWYZTX.js +0 -16
- package/dist/esm/sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-HCFERKXI.js.map +0 -7
- package/dist/types/alg/Alg.d.ts +0 -118
- package/dist/types/alg/Alg.spec.d.ts +0 -1
- package/dist/types/alg/AlgBuilder.d.ts +0 -11
- package/dist/types/alg/Serializable.d.ts +0 -0
- package/dist/types/alg/common.d.ts +0 -19
- package/dist/types/alg/debug.d.ts +0 -4
- package/dist/types/alg/example.d.ts +0 -14
- package/dist/types/alg/is.d.ts +0 -4
- package/dist/types/alg/iteration.d.ts +0 -9
- package/dist/types/alg/keyboard.d.ts +0 -2
- package/dist/types/alg/limits.d.ts +0 -4
- package/dist/types/alg/operation.d.ts +0 -6
- package/dist/types/alg/operation.spec.d.ts +0 -1
- package/dist/types/alg/parse.d.ts +0 -12
- package/dist/types/alg/parse.spec.d.ts +0 -1
- package/dist/types/alg/test/alg-comparison.d.ts +0 -10
- package/dist/types/alg/test/alg.spec.d.ts +0 -1
- package/dist/types/alg/traversal.d.ts +0 -39
- package/dist/types/alg/units/QuantumWithAmount.d.ts +0 -11
- package/dist/types/alg/units/Unit.d.ts +0 -9
- package/dist/types/alg/units/containers/Commutator.d.ts +0 -14
- package/dist/types/alg/units/containers/Conjugate.d.ts +0 -14
- package/dist/types/alg/units/containers/Grouping.d.ts +0 -19
- package/dist/types/alg/units/index.d.ts +0 -8
- package/dist/types/alg/units/leaves/LineComment.d.ts +0 -12
- package/dist/types/alg/units/leaves/LineComment.spec.d.ts +0 -1
- package/dist/types/alg/units/leaves/Move.d.ts +0 -50
- package/dist/types/alg/units/leaves/Move.spec.d.ts +0 -1
- package/dist/types/alg/units/leaves/Newline.d.ts +0 -9
- package/dist/types/alg/units/leaves/Pause.d.ts +0 -9
- package/dist/types/alg/url.d.ts +0 -11
- package/dist/types/alg/url.spec.d.ts +0 -1
- package/dist/types/alg/validation.d.ts +0 -19
- package/dist/types/alg/warnOnce.d.ts +0 -1
- package/dist/types/bluetooth/connect/index.d.ts +0 -6
- package/dist/types/bluetooth/debug.d.ts +0 -2
- package/dist/types/bluetooth/keyboard.d.ts +0 -14
- package/dist/types/bluetooth/smart-puzzle/Heykube.d.ts +0 -17
- package/dist/types/bluetooth/smart-puzzle/connect.d.ts +0 -3
- package/dist/types/bluetooth/smart-puzzle/endianness.d.ts +0 -1
- package/dist/types/bluetooth/smart-puzzle/gan.d.ts +0 -34
- package/dist/types/bluetooth/smart-puzzle/giiker.d.ts +0 -21
- package/dist/types/bluetooth/smart-puzzle/giiker.spec.d.ts +0 -4
- package/dist/types/bluetooth/smart-puzzle/gocube.d.ts +0 -22
- package/dist/types/bluetooth/smart-robot/GanRobot.d.ts +0 -35
- package/dist/types/bluetooth/smart-robot/index.d.ts +0 -4
- package/dist/types/bluetooth/smart-timer/GanTimer.d.ts +0 -19
- package/dist/types/bluetooth/smart-timer/index.d.ts +0 -4
- package/dist/types/bluetooth/transformer.d.ts +0 -9
- package/dist/types/cubing.bundle-global.d.ts +0 -1
- package/dist/types/cubing.bundle-global.exports.d.ts +0 -24
- package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.d.ts +0 -2
- package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.spec.d.ts +0 -1
- package/dist/types/kpuzzle/3x3x3/puzzle-orientation.d.ts +0 -4
- package/dist/types/kpuzzle/KPuzzle.d.ts +0 -30
- package/dist/types/kpuzzle/KPuzzleDefinition.d.ts +0 -21
- package/dist/types/kpuzzle/KState.d.ts +0 -19
- package/dist/types/kpuzzle/KTransformation.d.ts +0 -24
- package/dist/types/kpuzzle/calculate.d.ts +0 -16
- package/dist/types/kpuzzle/combine.d.ts +0 -3
- package/dist/types/kpuzzle/construct.d.ts +0 -5
- package/dist/types/notation/CountAnimatedLeaves.d.ts +0 -2
- package/dist/types/notation/CountMoves.d.ts +0 -3
- package/dist/types/protocol/binary/binary3x3x3.d.ts +0 -19
- package/dist/types/protocol/binary/binary3x3x3.spec.d.ts +0 -1
- package/dist/types/protocol/binary/hex.d.ts +0 -2
- package/dist/types/protocol/binary/hex.spec.d.ts +0 -1
- package/dist/types/protocol/binary/orbit-indexing.d.ts +0 -5
- package/dist/types/protocol/binary/orbit-indexing.spec.d.ts +0 -1
- package/dist/types/protocol/binary/puzzle-orientation.d.ts +0 -4
- package/dist/types/puzzle-geometry/FaceNameSwizzler.d.ts +0 -12
- package/dist/types/puzzle-geometry/Options.d.ts +0 -45
- package/dist/types/puzzle-geometry/PGPuzzles.d.ts +0 -5
- package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +0 -4
- package/dist/types/puzzle-geometry/Perm.d.ts +0 -18
- package/dist/types/puzzle-geometry/PermOriSet.d.ts +0 -71
- package/dist/types/puzzle-geometry/PlatonicGenerator.d.ts +0 -10
- package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +0 -176
- package/dist/types/puzzle-geometry/Quat.d.ts +0 -43
- package/dist/types/puzzle-geometry/Quat.spec.d.ts +0 -1
- package/dist/types/puzzle-geometry/SchreierSims.d.ts +0 -2
- package/dist/types/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts +0 -10
- package/dist/types/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts +0 -12
- package/dist/types/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts +0 -8
- package/dist/types/puzzle-geometry/notation-mapping/NotationMapper.d.ts +0 -7
- package/dist/types/puzzle-geometry/notation-mapping/NullMapper.d.ts +0 -6
- package/dist/types/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts +0 -8
- package/dist/types/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts +0 -15
- package/dist/types/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts +0 -9
- package/dist/types/puzzle-geometry/notation-mapping/index.d.ts +0 -8
- package/dist/types/puzzle-geometry/orientcenters.spec.d.ts +0 -1
- package/dist/types/puzzles/PuzzleLoader.d.ts +0 -18
- package/dist/types/puzzles/async/async-pg3d.d.ts +0 -33
- package/dist/types/puzzles/async/lazy-cached.d.ts +0 -1
- package/dist/types/puzzles/customPGPuzzleLoader.d.ts +0 -11
- package/dist/types/puzzles/events.d.ts +0 -8
- package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.json.d.ts +0 -2
- package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.svg.d.ts +0 -2
- package/dist/types/puzzles/implementations/2x2x2/index.d.ts +0 -2
- package/dist/types/puzzles/implementations/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts +0 -2
- package/dist/types/puzzles/implementations/3x3x3/3x3x3.kpuzzle.svg.d.ts +0 -2
- package/dist/types/puzzles/implementations/3x3x3/index.d.ts +0 -2
- package/dist/types/puzzles/implementations/clock/clock.kpuzzle.json.d.ts +0 -2
- package/dist/types/puzzles/implementations/clock/clock.kpuzzle.svg.d.ts +0 -2
- package/dist/types/puzzles/implementations/clock/index.d.ts +0 -2
- package/dist/types/puzzles/implementations/fto/fto.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/fto/index.d.ts +0 -12
- package/dist/types/puzzles/implementations/kilominx/index.d.ts +0 -2
- package/dist/types/puzzles/implementations/kilominx/kilominx.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/megaminx/index.d.ts +0 -11
- package/dist/types/puzzles/implementations/pyraminx/index.d.ts +0 -7
- package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.json.d.ts +0 -2
- package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.d.ts +0 -2
- package/dist/types/puzzles/implementations/redi-cube/index.d.ts +0 -2
- package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.json.d.ts +0 -2
- package/dist/types/puzzles/implementations/redi-cube/redi_cube.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/square1/index.d.ts +0 -2
- package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.json.d.ts +0 -2
- package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.svg.d.ts +0 -2
- package/dist/types/puzzles/stickerings/appearance.d.ts +0 -50
- package/dist/types/puzzles/stickerings/cube-stickerings.d.ts +0 -5
- package/dist/types/puzzles/stickerings/fto-stickerings.d.ts +0 -5
- package/dist/types/puzzles/stickerings/global-custom-stickering-hack.d.ts +0 -2
- package/dist/types/puzzles/stickerings/megaminx-stickerings.d.ts +0 -5
- package/dist/types/search/inside/api.d.ts +0 -21
- package/dist/types/search/inside/api.spec.d.ts +0 -1
- package/dist/types/search/inside/inside-worker.d.ts +0 -2
- package/dist/types/search/inside/search-worker-js-entry.d.ts +0 -1
- package/dist/types/search/inside/search-worker-ts-entry-path-getter.d.ts +0 -1
- package/dist/types/search/inside/search-worker-ts-entry.d.ts +0 -1
- package/dist/types/search/inside/solve/addOrientationSuffix.d.ts +0 -2
- package/dist/types/search/inside/solve/parseSGS.d.ts +0 -18
- package/dist/types/search/inside/solve/puzzles/2x2x2.d.ts +0 -6
- package/dist/types/search/inside/solve/puzzles/2x2x2.sgs.json.d.ts +0 -3
- package/dist/types/search/inside/solve/puzzles/3x3x3/convert.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/3x3x3/filter.d.ts +0 -4
- package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts +0 -8
- package/dist/types/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3-inefficient.sgs.json.d.ts +0 -3
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +0 -4
- package/dist/types/search/inside/solve/puzzles/5x5x5.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/big-cubes.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/clock.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/fto.d.ts +0 -5
- package/dist/types/search/inside/solve/puzzles/fto.dynamic.d.ts +0 -3
- package/dist/types/search/inside/solve/puzzles/kilominx.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/master_tetraminx.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/megaminx.d.ts +0 -4
- package/dist/types/search/inside/solve/puzzles/megaminx.sgs.json.d.ts +0 -5
- package/dist/types/search/inside/solve/puzzles/pyraminx.d.ts +0 -6
- package/dist/types/search/inside/solve/puzzles/pyraminx.sgs.json.d.ts +0 -3
- package/dist/types/search/inside/solve/puzzles/redi_cube.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/sgs-defs.spec.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/skewb.d.ts +0 -6
- package/dist/types/search/inside/solve/puzzles/skewb.sgs.json.d.ts +0 -5
- package/dist/types/search/inside/solve/puzzles/sq1.d.ts +0 -2
- package/dist/types/search/inside/solve/puzzles/wca-minx.d.ts +0 -1
- package/dist/types/search/inside/solve/tremble.d.ts +0 -13
- package/dist/types/search/inside/worker-guard.d.ts +0 -3
- package/dist/types/search/instantiator.d.ts +0 -4
- package/dist/types/search/outside.d.ts +0 -17
- package/dist/types/search/worker-inside-generated-string.d.ts +0 -1
- package/dist/types/stream/process/ReorientedStream.d.ts +0 -20
- package/dist/types/stream/proxy-event.d.ts +0 -13
- package/dist/types/stream/twizzle/TwizzleStream.d.ts +0 -18
- package/dist/types/stream/twizzle/stream-types.d.ts +0 -32
- package/dist/types/stream/websocket-proxy.d.ts +0 -21
- package/dist/types/twisty/controllers/AnimationTypes.d.ts +0 -32
- package/dist/types/twisty/controllers/RenderScheduler.d.ts +0 -12
- package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +0 -36
- package/dist/types/twisty/controllers/TwistyPlayerController.d.ts +0 -15
- package/dist/types/twisty/controllers/easing.d.ts +0 -1
- package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts +0 -17
- package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts +0 -36
- package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts +0 -19
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +0 -22
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts +0 -25
- package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts +0 -63
- package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts +0 -20
- package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +0 -2
- package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts +0 -15
- package/dist/types/twisty/heavy-code-imports/3d.d.ts +0 -2
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d-dynamic.d.ts +0 -10
- package/dist/types/twisty/model/PromiseFreshener.d.ts +0 -13
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts +0 -85
- package/dist/types/twisty/model/TwistySceneModel.d.ts +0 -27
- package/dist/types/twisty/model/UserVisibleErrorTracker.d.ts +0 -10
- package/dist/types/twisty/model/helpers.d.ts +0 -4
- package/dist/types/twisty/model/props/TwistyProp.d.ts +0 -59
- package/dist/types/twisty/model/props/TwistyProp.spec.d.ts +0 -4
- package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +0 -26
- package/dist/types/twisty/model/props/general/ArbitraryStringProp.d.ts +0 -4
- package/dist/types/twisty/model/props/general/URLProp.d.ts +0 -5
- package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +0 -5
- package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +0 -10
- package/dist/types/twisty/model/props/puzzle/display/SpriteProp.d.ts +0 -9
- package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +0 -50
- package/dist/types/twisty/model/props/puzzle/state/AlgProp.d.ts +0 -26
- package/dist/types/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts +0 -11
- package/dist/types/twisty/model/props/puzzle/state/AnchorTransformationProp.d.ts +0 -14
- package/dist/types/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts +0 -10
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +0 -16
- package/dist/types/twisty/model/props/puzzle/state/CurrentMoveInfoProp.d.ts +0 -13
- package/dist/types/twisty/model/props/puzzle/state/CurrentStateProp.d.ts +0 -14
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +0 -19
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts +0 -11
- package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +0 -14
- package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +0 -11
- package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +0 -10
- package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +0 -9
- package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +0 -13
- package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +0 -9
- package/dist/types/twisty/model/props/puzzle/state/SetupTransformationProp.d.ts +0 -5
- package/dist/types/twisty/model/props/puzzle/structure/KPuzzleProp.d.ts +0 -10
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts +0 -5
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +0 -10
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +0 -25
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +0 -12
- package/dist/types/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts +0 -24
- package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +0 -21
- package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +0 -14
- package/dist/types/twisty/model/props/timeline/TempoScaleProp.d.ts +0 -5
- package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +0 -15
- package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +0 -11
- package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +0 -10
- package/dist/types/twisty/model/props/viewer/ButtonAppearanceProp.d.ts +0 -21
- package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +0 -10
- package/dist/types/twisty/model/props/viewer/LatitudeLimit.d.ts +0 -5
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +0 -28
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +0 -14
- package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +0 -10
- package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +0 -11
- package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +0 -12
- package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +0 -12
- package/dist/types/twisty/views/2D/KPuzzleSVGWrapper.d.ts +0 -17
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +0 -2
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +0 -27
- package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +0 -15
- package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +0 -19
- package/dist/types/twisty/views/3D/DragTracker.d.ts +0 -27
- package/dist/types/twisty/views/3D/RendererPool.d.ts +0 -3
- package/dist/types/twisty/views/3D/TAU.d.ts +0 -2
- package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +0 -21
- package/dist/types/twisty/views/3D/Twisty3DRenderTarget.d.ts +0 -3
- package/dist/types/twisty/views/3D/Twisty3DScene.d.ts +0 -14
- package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +0 -33
- package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +0 -2
- package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +0 -36
- package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +0 -23
- package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +0 -4
- package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +0 -58
- package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +0 -64
- package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +0 -5
- package/dist/types/twisty/views/ClassListManager.d.ts +0 -10
- package/dist/types/twisty/views/ManagedCustomElement.d.ts +0 -19
- package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +0 -17
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +0 -2
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +0 -40
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts +0 -4
- package/dist/types/twisty/views/TwistyAlgEditor/model.d.ts +0 -60
- package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +0 -2
- package/dist/types/twisty/views/TwistyAlgViewer.d.ts +0 -51
- package/dist/types/twisty/views/TwistyPlayer.css.d.ts +0 -2
- package/dist/types/twisty/views/TwistyPlayer.d.ts +0 -112
- package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +0 -79
- package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +0 -2
- package/dist/types/twisty/views/canvas.d.ts +0 -2
- package/dist/types/twisty/views/control-panel/TwistyButtons.css.d.ts +0 -3
- package/dist/types/twisty/views/control-panel/TwistyButtons.d.ts +0 -32
- package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +0 -2
- package/dist/types/twisty/views/control-panel/TwistyScrubber.d.ts +0 -13
- package/dist/types/twisty/views/control-panel/webkit-fullscreen.d.ts +0 -14
- package/dist/types/twisty/views/document.d.ts +0 -1
- package/dist/types/twisty/views/node-custom-element-shims.d.ts +0 -4
- package/dist/types/twisty/views/screenshot.d.ts +0 -11
- package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +0 -2
- package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts +0 -12
- package/dist/types/twisty/views/twizzle/TwizzleLink.css.d.ts +0 -2
- package/dist/types/twisty/views/twizzle/TwizzleLink.d.ts +0 -11
- package/dist/types/twisty/views/twizzle/url-params.d.ts +0 -18
- package/dist/types/vendor/comlink-everywhere/inside/index.d.ts +0 -4
- package/dist/types/vendor/comlink-everywhere/node-adapter.d.ts +0 -6
- package/dist/types/vendor/comlink-everywhere/outside/index.d.ts +0 -5
- package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts +0 -4
- package/dist/types/vendor/cstimer/src/js/scramble/444-solver.d.ts +0 -3
- package/dist/types/vendor/min2phase/3x3x3-min2phase.d.ts +0 -2
- package/dist/types/vendor/p-lazy/p-lazy.d.ts +0 -9
- package/dist/types/vendor/random-uint-below/get-random-values.d.ts +0 -2
- package/dist/types/vendor/random-uint-below/index.d.ts +0 -3
- package/dist/types/vendor/random-uint-below/random-choice.d.ts +0 -1
- package/dist/types/vendor/random-uint-below/random53BitValue.d.ts +0 -1
- package/dist/types/vendor/sq12phase/sq1-solver.d.ts +0 -1
- package/dist/types/vendor/three/examples/jsm/libs/stats.modified.module.d.ts +0 -32
- package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts +0 -3
- package/dist/types/vendor/xyzzy/fto-solver-original.d.ts +0 -148
- package/dist/types/vendor/xyzzy/fto-solver.d.ts +0 -1
- package/dist/types/vendor/xyzzy/kilosolver.d.ts +0 -2
- package/dist/types/vendor/xyzzy/master_tetraminx-solver.d.ts +0 -1
- package/dist/types/vendor/xyzzy/redi_cube.d.ts +0 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cubing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"description": "A collection of JavaScript cubing libraries.",
|
|
5
5
|
"author": "The js.cubing.net team",
|
|
6
6
|
"type": "module",
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
"peggy": "^1.2.0",
|
|
79
79
|
"prettier": "^2.5.1",
|
|
80
80
|
"puppeteer": "^13.3.2",
|
|
81
|
+
"tsup": "^5.12.1",
|
|
81
82
|
"typescript": "^4.6.0-dev.20220131",
|
|
82
83
|
"yargs": "^17.3.1"
|
|
83
84
|
},
|
|
@@ -125,7 +126,8 @@
|
|
|
125
126
|
"setup": "npm install",
|
|
126
127
|
"initial-setup": "node ./script/initial-setup/main.js",
|
|
127
128
|
"lint": "npx eslint --ext=js,ts src script",
|
|
128
|
-
"prepack": "npm run clean && npm run build && npm run test-dist-esm-node-import"
|
|
129
|
+
"prepack": "npm run clean && npm run build && npm run test-dist-esm-node-import",
|
|
130
|
+
"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'"
|
|
129
131
|
},
|
|
130
132
|
"keywords": [
|
|
131
133
|
"cubing",
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/vendor/random-uint-below/get-random-values.ts", "../../src/cubing/vendor/random-uint-below/random53BitValue.ts", "../../src/cubing/vendor/random-uint-below/random-choice.ts", "../../src/cubing/vendor/random-uint-below/index.ts"],
|
|
4
|
-
"sourcesContent": ["export type GetRandomValuesFunction = (arr: Uint32Array) => void;\n\n// This is a workaround for a `node` segfault.\n// In theory, imports are cached and safe to import multiple times: https://nodejs.org/api/esm.html#esm_urls\n// In practice, a rapid series of inline imports inside a worker causes a segfault(!) in `node`.\n// So we cache a single import reference. We avoid populating it until we first need it, so that we don't attempt to perform the import in environments that don't need or have it (e.g. browsers, `deno`).\nlet cryptoPromise: Promise<typeof import(\"crypto\")> | null = null;\n\n// `@types/node` is... lacking. This type may cause an error in the future, at which point we can hopefully use `@types/node` directly.\ntype NodeWebCrypto = typeof import(\"crypto\").webcrypto & {\n getRandomValues: GetRandomValuesFunction;\n};\n\n// Mangled so that bundlers don't try to inline the source.\nconst cryptoMangled = \"cr-yp-to\";\nconst cryptoUnmangled = () => cryptoMangled.replace(/-/g, \"\");\n\n// We could use top-level await to define this more statically, but that has limited transpilation support.\nexport async function getRandomValuesFactory(): Promise<GetRandomValuesFunction> {\n if (!globalThis?.crypto?.getRandomValues) {\n const nodeWebcrypto = (\n await (cryptoPromise ??= import(/* @vite-ignore */ cryptoUnmangled()))\n ).webcrypto as NodeWebCrypto;\n return nodeWebcrypto.getRandomValues;\n } else {\n return crypto.getRandomValues.bind(crypto) as GetRandomValuesFunction;\n }\n}\n", "import {\n getRandomValuesFactory,\n GetRandomValuesFunction,\n} from \"./get-random-values\";\n\n/*\n * randomInt.below(max) returns a random non-negative integer less than max (0 <= output < max).\n * `max` must be at most 2^53.\n */\n\nconst MAX_JS_PRECISE_INT = 9007199254740992;\n\nconst UPPER_HALF_MULTIPLIER = 2097152; // 2^21. We have to use multiplication because bit shifts truncate to 32 bits.\nconst LOWER_HALF_DIVIDER = 2048;\n\nfunction random53BitValue(getRandomValues: GetRandomValuesFunction): number {\n // Construct a random 53-bit value from a 32-bit upper half and a 21-bit lower half.\n const arr = new Uint32Array(2);\n getRandomValues(arr);\n const upper = arr[0];\n const lower = arr[1];\n return (\n Math.floor(upper * UPPER_HALF_MULTIPLIER) +\n Math.floor(lower / LOWER_HALF_DIVIDER)\n );\n}\n\nfunction validateMax(max: number): void {\n if (typeof max !== \"number\" || max < 0 || Math.floor(max) !== max) {\n throw new Error(\n \"randomInt.below() not called with a positive integer value.\",\n );\n }\n if (max > MAX_JS_PRECISE_INT) {\n throw new Error(\n `Called randomInt.below() with max == ${max}, which is larger than JavaScript can handle with integer precision.`,\n );\n }\n}\n\n// TODO: cache generated `randomUIntBelow`?\nexport async function randomUIntBelowFactory(): Promise<\n (max: number) => number\n> {\n const getRandomValues = await getRandomValuesFactory();\n const randomUIntBelow = (max: number): number => {\n validateMax(max);\n\n const val = random53BitValue(getRandomValues);\n const maxUniformSamplingRange = Math.floor(MAX_JS_PRECISE_INT / max) * max;\n\n // Rejection sampling:\n if (val < maxUniformSamplingRange) {\n return val % max;\n } else {\n // val % max would produce a biased result. This bias an be very bad if `max` is on the order of MAX_JS_PRECISE_INT. We have to try again, so just call ourselves recursively.\n // For some values of `max` just above 9007199254740992 / 2, this happens about once on average. For other values of `max`, it's less than that (and for small values of `max` it's extremely unlikely).\n\n // TODO: Use more bits of accuracy instead of rejection sampling to avoid DoS.\n return randomUIntBelow(max);\n }\n };\n return randomUIntBelow;\n}\n", "import { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// Inspired by https://reference.wolfram.com/language/ref/RandomChoice.html\n// This library itself should be kept small, but a wrapper library may want to implement selecting multiple element without replacement as with replacement:\n// https://reference.wolfram.com/language/ref/RandomSample.html\nexport async function randomChoiceFactory<T>(): Promise<(arr: Array<T>) => T> {\n const randomUIntBelow = await randomUIntBelowFactory();\n return (arr: Array<T>): T => arr[randomUIntBelow(arr.length)];\n}\n", "export { randomChoiceFactory } from \"./random-choice\";\nexport { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// TODO: reuse factory properly, move this to a separate file, add to impl.\nimport { randomUIntBelowFactory } from \"./random53BitValue\";\nconst randomUIntBelowPromise = randomUIntBelowFactory();\nexport async function randomPermute<T>(list: T[]): Promise<void> {\n for (let i = 1; i < list.length; i++) {\n const j = (await randomUIntBelowPromise)(i);\n [list[i], list[j]] = [list[j], list[i]];\n }\n}\n"],
|
|
5
|
-
"mappings": ";AAMA,IAAI,gBAAyD;AAQ7D,IAAM,gBAAgB;AACtB,IAAM,kBAAkB,MAAM,cAAc,QAAQ,MAAM;AAG1D,wCAAiF;AAC/E,MAAI,CAAC,YAAY,QAAQ,iBAAiB;AACxC,UAAM,gBACJ,OAAO,mCAAkB;AAAA;AAAA,MAA0B;AAAA,SACnD;AACF,WAAO,cAAc;AAAA,SAChB;AACL,WAAO,OAAO,gBAAgB,KAAK;AAAA;AAAA;;;ACfvC,IAAM,qBAAqB;AAE3B,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAE3B,0BAA0B,iBAAkD;AAE1E,QAAM,MAAM,IAAI,YAAY;AAC5B,kBAAgB;AAChB,QAAM,QAAQ,IAAI;AAClB,QAAM,QAAQ,IAAI;AAClB,SACE,KAAK,MAAM,QAAQ,yBACnB,KAAK,MAAM,QAAQ;AAAA;AAIvB,qBAAqB,KAAmB;AACtC,MAAI,OAAO,QAAQ,YAAY,MAAM,KAAK,KAAK,MAAM,SAAS,KAAK;AACjE,UAAM,IAAI,MACR;AAAA;AAGJ,MAAI,MAAM,oBAAoB;AAC5B,UAAM,IAAI,MACR,wCAAwC;AAAA;AAAA;AAM9C,wCAEE;AACA,QAAM,kBAAkB,MAAM;AAC9B,QAAM,kBAAkB,CAAC,QAAwB;AAC/C,gBAAY;AAEZ,UAAM,MAAM,iBAAiB;AAC7B,UAAM,0BAA0B,KAAK,MAAM,qBAAqB,OAAO;AAGvE,QAAI,MAAM,yBAAyB;AACjC,aAAO,MAAM;AAAA,WACR;AAKL,aAAO,gBAAgB;AAAA;AAAA;AAG3B,SAAO;AAAA;;;ACzDT,qCAA8E;AAC5E,QAAM,kBAAkB,MAAM;AAC9B,SAAO,CAAC,QAAqB,IAAI,gBAAgB,IAAI;AAAA;;;ACFvD,IAAM,yBAAyB;AAC/B,6BAAuC,MAA0B;AAC/D,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,IAAK,OAAM,wBAAwB;AACzC,KAAC,KAAK,IAAI,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
KState,
|
|
3
|
-
experimental3x3x3KPuzzle
|
|
4
|
-
} from "./chunk-YAOUFM4D.js";
|
|
5
|
-
import {
|
|
6
|
-
Alg
|
|
7
|
-
} from "./chunk-DO7GZAW4.js";
|
|
8
|
-
|
|
9
|
-
// src/cubing/protocol/binary/orbit-indexing.ts
|
|
10
|
-
function identityPermutation(numElems) {
|
|
11
|
-
const arr = new Array(numElems);
|
|
12
|
-
for (let i = 0; i < numElems; i++) {
|
|
13
|
-
arr[i] = i;
|
|
14
|
-
}
|
|
15
|
-
return arr;
|
|
16
|
-
}
|
|
17
|
-
function orientationsToMask(radix, orientations) {
|
|
18
|
-
let val = 0;
|
|
19
|
-
for (const orientation of orientations) {
|
|
20
|
-
val *= radix;
|
|
21
|
-
val += orientation;
|
|
22
|
-
}
|
|
23
|
-
return val;
|
|
24
|
-
}
|
|
25
|
-
function maskToOrientations(radix, numElems, mask) {
|
|
26
|
-
const arr = [];
|
|
27
|
-
while (mask > 0) {
|
|
28
|
-
arr.push(mask % radix);
|
|
29
|
-
mask = Math.floor(mask / radix);
|
|
30
|
-
}
|
|
31
|
-
return new Array(numElems - arr.length).fill(0).concat(arr.reverse());
|
|
32
|
-
}
|
|
33
|
-
function permutationToLex(permutation) {
|
|
34
|
-
const n = permutation.length;
|
|
35
|
-
let lexicographicIdx = 0;
|
|
36
|
-
for (let i = 0; i < n - 1; i++) {
|
|
37
|
-
lexicographicIdx = lexicographicIdx * (n - i);
|
|
38
|
-
for (let j = i + 1; j < n; j++) {
|
|
39
|
-
if (permutation[i] > permutation[j]) {
|
|
40
|
-
lexicographicIdx += 1;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return lexicographicIdx;
|
|
45
|
-
}
|
|
46
|
-
function lexToPermutation(numPieces, lexicographicIdx) {
|
|
47
|
-
const permutation = new Array(numPieces);
|
|
48
|
-
permutation[numPieces - 1] = 0;
|
|
49
|
-
for (let i = numPieces - 2; i >= 0; i--) {
|
|
50
|
-
permutation[i] = lexicographicIdx % (numPieces - i);
|
|
51
|
-
lexicographicIdx = Math.floor(lexicographicIdx / (numPieces - i));
|
|
52
|
-
for (let j = i + 1; j < numPieces; j++) {
|
|
53
|
-
if (permutation[j] >= permutation[i]) {
|
|
54
|
-
permutation[j] = permutation[j] + 1;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return permutation;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// src/cubing/protocol/binary/puzzle-orientation.ts
|
|
62
|
-
function puzzleOrientationIdx(state) {
|
|
63
|
-
const idxU = state.stateData["CENTERS"].pieces[0];
|
|
64
|
-
const idxD = state.stateData["CENTERS"].pieces[5];
|
|
65
|
-
const unadjustedIdxL = state.stateData["CENTERS"].pieces[1];
|
|
66
|
-
let idxL = unadjustedIdxL;
|
|
67
|
-
if (idxU < unadjustedIdxL) {
|
|
68
|
-
idxL--;
|
|
69
|
-
}
|
|
70
|
-
if (idxD < unadjustedIdxL) {
|
|
71
|
-
idxL--;
|
|
72
|
-
}
|
|
73
|
-
return [idxU, idxL];
|
|
74
|
-
}
|
|
75
|
-
var puzzleOrientationCache = new Array(6).fill(0).map(() => {
|
|
76
|
-
return new Array(6);
|
|
77
|
-
});
|
|
78
|
-
{
|
|
79
|
-
const uAlgs = ["", "z", "x", "z'", "x'", "x2"].map((s) => Alg.fromString(s));
|
|
80
|
-
const yAlg = new Alg("y");
|
|
81
|
-
for (const uAlg of uAlgs) {
|
|
82
|
-
let transformation = experimental3x3x3KPuzzle.algToTransformation(uAlg);
|
|
83
|
-
for (let i = 0; i < 4; i++) {
|
|
84
|
-
transformation = transformation.applyAlg(yAlg);
|
|
85
|
-
const [idxU, idxL] = puzzleOrientationIdx(transformation.toKState());
|
|
86
|
-
puzzleOrientationCache[idxU][idxL] = transformation.invert();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function normalizePuzzleOrientation(state) {
|
|
91
|
-
const [idxU, idxL] = puzzleOrientationIdx(state);
|
|
92
|
-
const orientationTransformation = puzzleOrientationCache[idxU][idxL];
|
|
93
|
-
return state.applyTransformation(orientationTransformation);
|
|
94
|
-
}
|
|
95
|
-
function reorientPuzzle(state, idxU, idxL) {
|
|
96
|
-
return state.applyTransformation(puzzleOrientationCache[idxU][idxL].invert());
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// src/cubing/protocol/binary/binary3x3x3.ts
|
|
100
|
-
var BIT_LENGTHS = [29, 12, 16, 13, 3, 2, 1, 12];
|
|
101
|
-
function arraySum(arr) {
|
|
102
|
-
let total = 0;
|
|
103
|
-
for (const entry of arr) {
|
|
104
|
-
total += entry;
|
|
105
|
-
}
|
|
106
|
-
return total;
|
|
107
|
-
}
|
|
108
|
-
function splitBinary(bitLengths, buffy) {
|
|
109
|
-
const u8buffy = new Uint8Array(buffy);
|
|
110
|
-
let at = 0;
|
|
111
|
-
let bits = 0;
|
|
112
|
-
let accum = 0;
|
|
113
|
-
const values = [];
|
|
114
|
-
for (const bitLength of bitLengths) {
|
|
115
|
-
while (bits < bitLength) {
|
|
116
|
-
accum = accum << 8 | u8buffy[at++];
|
|
117
|
-
bits += 8;
|
|
118
|
-
}
|
|
119
|
-
values.push(accum >> bits - bitLength & (1 << bitLength) - 1);
|
|
120
|
-
bits -= bitLength;
|
|
121
|
-
}
|
|
122
|
-
return values;
|
|
123
|
-
}
|
|
124
|
-
function concatBinary(bitLengths, values) {
|
|
125
|
-
const buffy = new Uint8Array(Math.ceil(arraySum(bitLengths) / 8));
|
|
126
|
-
let at = 0;
|
|
127
|
-
let bits = 0;
|
|
128
|
-
let accum = 0;
|
|
129
|
-
for (let i = 0; i < bitLengths.length; i++) {
|
|
130
|
-
accum = accum << bitLengths[i] | values[i];
|
|
131
|
-
bits += bitLengths[i];
|
|
132
|
-
while (bits >= 8) {
|
|
133
|
-
buffy[at++] = accum >> bits - 8;
|
|
134
|
-
bits -= 8;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (bits > 0) {
|
|
138
|
-
buffy[at++] = accum << 8 - bits;
|
|
139
|
-
}
|
|
140
|
-
return buffy;
|
|
141
|
-
}
|
|
142
|
-
function supportsPuzzleOrientation(components) {
|
|
143
|
-
return components.poIdxU !== 7;
|
|
144
|
-
}
|
|
145
|
-
function reid3x3x3ToBinaryComponents(state) {
|
|
146
|
-
const normedState = normalizePuzzleOrientation(state);
|
|
147
|
-
const epLex = permutationToLex(normedState.stateData["EDGES"].pieces);
|
|
148
|
-
const eoMask = orientationsToMask(2, normedState.stateData["EDGES"].orientation);
|
|
149
|
-
const cpLex = permutationToLex(normedState.stateData["CORNERS"].pieces);
|
|
150
|
-
const coMask = orientationsToMask(3, normedState.stateData["CORNERS"].orientation);
|
|
151
|
-
const [poIdxU, poIdxL] = puzzleOrientationIdx(state);
|
|
152
|
-
const moSupport = 1;
|
|
153
|
-
const moMask = orientationsToMask(4, normedState.stateData["CENTERS"].orientation);
|
|
154
|
-
return {
|
|
155
|
-
epLex,
|
|
156
|
-
eoMask,
|
|
157
|
-
cpLex,
|
|
158
|
-
coMask,
|
|
159
|
-
poIdxU,
|
|
160
|
-
poIdxL,
|
|
161
|
-
moSupport,
|
|
162
|
-
moMask
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
function binaryComponentsToTwizzleBinary(components) {
|
|
166
|
-
const { epLex, eoMask, cpLex, coMask, poIdxU, poIdxL, moSupport, moMask } = components;
|
|
167
|
-
return concatBinary(BIT_LENGTHS, [
|
|
168
|
-
epLex,
|
|
169
|
-
eoMask,
|
|
170
|
-
cpLex,
|
|
171
|
-
coMask,
|
|
172
|
-
poIdxU,
|
|
173
|
-
poIdxL,
|
|
174
|
-
moSupport,
|
|
175
|
-
moMask
|
|
176
|
-
]);
|
|
177
|
-
}
|
|
178
|
-
function reid3x3x3ToTwizzleBinary(state) {
|
|
179
|
-
const components = reid3x3x3ToBinaryComponents(state);
|
|
180
|
-
return binaryComponentsToTwizzleBinary(components);
|
|
181
|
-
}
|
|
182
|
-
function twizzleBinaryToBinaryComponents(buffer) {
|
|
183
|
-
const [epLex, eoMask, cpLex, coMask, poIdxU, poIdxL, moSupport, moMask] = splitBinary(BIT_LENGTHS, buffer);
|
|
184
|
-
return {
|
|
185
|
-
epLex,
|
|
186
|
-
eoMask,
|
|
187
|
-
cpLex,
|
|
188
|
-
coMask,
|
|
189
|
-
poIdxU,
|
|
190
|
-
poIdxL,
|
|
191
|
-
moSupport,
|
|
192
|
-
moMask
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
function binaryComponentsToReid3x3x3(components) {
|
|
196
|
-
if (components.moSupport !== 1) {
|
|
197
|
-
throw new Error("Must support center orientation.");
|
|
198
|
-
}
|
|
199
|
-
const normedState = new KState(experimental3x3x3KPuzzle, {
|
|
200
|
-
EDGES: {
|
|
201
|
-
pieces: lexToPermutation(12, components.epLex),
|
|
202
|
-
orientation: maskToOrientations(2, 12, components.eoMask)
|
|
203
|
-
},
|
|
204
|
-
CORNERS: {
|
|
205
|
-
pieces: lexToPermutation(8, components.cpLex),
|
|
206
|
-
orientation: maskToOrientations(3, 8, components.coMask)
|
|
207
|
-
},
|
|
208
|
-
CENTERS: {
|
|
209
|
-
pieces: identityPermutation(6),
|
|
210
|
-
orientation: maskToOrientations(4, 6, components.moMask)
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
if (!supportsPuzzleOrientation(components)) {
|
|
214
|
-
return normedState;
|
|
215
|
-
}
|
|
216
|
-
return reorientPuzzle(normedState, components.poIdxU, components.poIdxL);
|
|
217
|
-
}
|
|
218
|
-
function validateComponents(components) {
|
|
219
|
-
const errors = [];
|
|
220
|
-
if (components.epLex < 0 || components.epLex >= 479001600) {
|
|
221
|
-
errors.push(`epLex (${components.epLex}) out of range`);
|
|
222
|
-
}
|
|
223
|
-
if (components.cpLex < 0 || components.cpLex >= 40320) {
|
|
224
|
-
errors.push(`cpLex (${components.cpLex}) out of range`);
|
|
225
|
-
}
|
|
226
|
-
if (components.coMask < 0 || components.coMask >= 6561) {
|
|
227
|
-
errors.push(`coMask (${components.coMask}) out of range`);
|
|
228
|
-
}
|
|
229
|
-
if (components.poIdxU < 0 || components.poIdxU >= 6) {
|
|
230
|
-
if (supportsPuzzleOrientation(components)) {
|
|
231
|
-
errors.push(`poIdxU (${components.poIdxU}) out of range`);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (components.eoMask < 0 || components.eoMask >= 4096) {
|
|
235
|
-
errors.push(`eoMask (${components.eoMask}) out of range`);
|
|
236
|
-
}
|
|
237
|
-
if (components.moMask < 0 || components.moMask >= 4096) {
|
|
238
|
-
errors.push(`moMask (${components.moMask}) out of range`);
|
|
239
|
-
}
|
|
240
|
-
if (components.poIdxL < 0 || components.poIdxL >= 4) {
|
|
241
|
-
errors.push(`poIdxL (${components.poIdxL}) out of range`);
|
|
242
|
-
}
|
|
243
|
-
if (components.moSupport < 0 || components.moSupport >= 2) {
|
|
244
|
-
errors.push(`moSupport (${components.moSupport}) out of range`);
|
|
245
|
-
}
|
|
246
|
-
return errors;
|
|
247
|
-
}
|
|
248
|
-
function twizzleBinaryToReid3x3x3(buffy) {
|
|
249
|
-
const components = twizzleBinaryToBinaryComponents(buffy);
|
|
250
|
-
const errors = validateComponents(components);
|
|
251
|
-
if (errors.length !== 0) {
|
|
252
|
-
throw new Error(`Invalid binary state components: ${errors.join(", ")}`);
|
|
253
|
-
}
|
|
254
|
-
return binaryComponentsToReid3x3x3(components);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
// src/cubing/protocol/binary/hex.ts
|
|
258
|
-
function bufferToSpacedHex(buffer) {
|
|
259
|
-
return Array.prototype.map.call(new Uint8Array(buffer), (x) => ("00" + x.toString(16)).slice(-2)).join(" ");
|
|
260
|
-
}
|
|
261
|
-
function spacedHexToBuffer(hex) {
|
|
262
|
-
return new Uint8Array(hex.split(" ").map((c) => parseInt(c, 16)));
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
export {
|
|
266
|
-
normalizePuzzleOrientation,
|
|
267
|
-
reid3x3x3ToTwizzleBinary,
|
|
268
|
-
twizzleBinaryToBinaryComponents,
|
|
269
|
-
binaryComponentsToReid3x3x3,
|
|
270
|
-
twizzleBinaryToReid3x3x3,
|
|
271
|
-
bufferToSpacedHex,
|
|
272
|
-
spacedHexToBuffer
|
|
273
|
-
};
|
|
274
|
-
//# sourceMappingURL=chunk-6BUCXDZU.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/protocol/binary/orbit-indexing.ts", "../../src/cubing/protocol/binary/puzzle-orientation.ts", "../../src/cubing/protocol/binary/binary3x3x3.ts", "../../src/cubing/protocol/binary/hex.ts"],
|
|
4
|
-
"sourcesContent": ["export function identityPermutation(numElems: number): number[] {\n const arr = new Array<number>(numElems);\n for (let i = 0; i < numElems; i++) {\n arr[i] = i;\n }\n return arr;\n}\n\n// Inclusive start, exclusive end (similar to `Array.prototype.slice`)\nexport function orientationsToMask(\n radix: number,\n orientations: number[],\n): number {\n let val = 0;\n for (const orientation of orientations) {\n val *= radix;\n val += orientation;\n }\n return val;\n}\n\n// Inclusive start, exclusive end (similar to `Array.prototype.slice`)\nexport function maskToOrientations(\n radix: number,\n numElems: number,\n mask: number,\n): number[] {\n const arr = [];\n while (mask > 0) {\n arr.push(mask % radix);\n mask = Math.floor(mask / radix);\n }\n return new Array<number>(numElems - arr.length).fill(0).concat(arr.reverse());\n}\n\n// From https://www.jaapsch.net/puzzles/compindx.htm#perm\nexport function permutationToLex(permutation: number[]): number {\n const n = permutation.length;\n let lexicographicIdx = 0;\n for (let i = 0; i < n - 1; i++) {\n lexicographicIdx = lexicographicIdx * (n - i);\n for (let j = i + 1; j < n; j++) {\n if (permutation[i] > permutation[j]) {\n lexicographicIdx += 1;\n }\n }\n }\n return lexicographicIdx;\n}\n\n// From https://www.jaapsch.net/puzzles/compindx.htm#perm\nexport function lexToPermutation(\n numPieces: number,\n lexicographicIdx: number,\n): number[] {\n const permutation: number[] = new Array(numPieces);\n permutation[numPieces - 1] = 0;\n for (let i = numPieces - 2; i >= 0; i--) {\n permutation[i] = lexicographicIdx % (numPieces - i);\n lexicographicIdx = Math.floor(lexicographicIdx / (numPieces - i));\n for (let j = i + 1; j < numPieces; j++) {\n if (permutation[j] >= permutation[i]) {\n permutation[j] = permutation[j] + 1;\n }\n }\n }\n return permutation;\n}\n", "import { Alg } from \"../../alg\";\nimport { experimental3x3x3KPuzzle, KTransformation } from \"../../kpuzzle\";\nimport type { KState } from \"../../kpuzzle/KState\";\n\nexport function puzzleOrientationIdx(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 puzzleOrientationCache: KTransformation[][] = new Array(6)\n .fill(0)\n .map(() => {\n return new Array<KTransformation>(6);\n });\n\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] = puzzleOrientationIdx(transformation.toKState());\n puzzleOrientationCache[idxU][idxL] = transformation.invert();\n }\n }\n}\n\nexport function normalizePuzzleOrientation(state: KState): KState {\n const [idxU, idxL] = puzzleOrientationIdx(state);\n const orientationTransformation = puzzleOrientationCache[idxU][idxL];\n return state.applyTransformation(orientationTransformation);\n}\n\n// TODO: combine with `orientPuzzle`?\nexport function reorientPuzzle(\n state: KState,\n idxU: number,\n idxL: number,\n): KState {\n return state.applyTransformation(puzzleOrientationCache[idxU][idxL].invert());\n}\n", "import { experimental3x3x3KPuzzle, KState } from \"../../kpuzzle\";\nimport {\n identityPermutation,\n lexToPermutation,\n maskToOrientations,\n orientationsToMask,\n permutationToLex,\n} from \"./orbit-indexing\";\nimport {\n normalizePuzzleOrientation,\n puzzleOrientationIdx,\n reorientPuzzle,\n} from \"./puzzle-orientation\";\n\ntype Binary3x3x3State = ArrayBuffer;\n\n// Bit lengths of the encoded components, in order.\nconst BIT_LENGTHS = [29, 12, 16, 13, 3, 2, 1, 12];\n\n// These fields are sorted by the order in which they appear in the binary format.\nexport interface Binary3x3x3Components {\n epLex: number; // 29 bits, edge permutation\n eoMask: number; // 12 bits, edge orientation\n cpLex: number; // 16 bits, corner permutation\n coMask: number; // 13 bits, corner orientation\n poIdxU: number; // 3 bits, puzzle orientation (U face)\n poIdxL: number; // 2 bits, puzzle orientation (L face)\n moSupport: number; // 1 bit, center orientation support\n moMask: number; // 12 bits, center orientation\n}\n\n// There are various clever ways to do this, but this is simple and efficient.\nfunction arraySum(arr: number[]): number {\n let total = 0;\n for (const entry of arr) {\n total += entry;\n }\n return total;\n}\n\n// Due to limitations in JS bit operations, this is unsafe if any of the bit lengths span across the contents of more than 4 bytes.\n// - Safe: [8, 32]\n// - Unsafe: [4, 32, 4]\n// - Unsafe: [40, 4]\nfunction splitBinary(bitLengths: number[], buffy: ArrayBuffer): number[] {\n const u8buffy = new Uint8Array(buffy);\n let at = 0;\n let bits = 0;\n let accum = 0;\n const values: number[] = [];\n for (const bitLength of bitLengths) {\n while (bits < bitLength) {\n accum = (accum << 8) | u8buffy[at++];\n bits += 8;\n }\n values.push((accum >> (bits - bitLength)) & ((1 << bitLength) - 1));\n bits -= bitLength;\n }\n return values;\n}\n\n// See above for safety notes.\nfunction concatBinary(bitLengths: number[], values: number[]): ArrayBuffer {\n const buffy = new Uint8Array(Math.ceil(arraySum(bitLengths) / 8));\n let at = 0;\n let bits = 0;\n let accum = 0;\n for (let i = 0; i < bitLengths.length; i++) {\n accum = (accum << bitLengths[i]) | values[i];\n bits += bitLengths[i];\n while (bits >= 8) {\n buffy[at++] = accum >> (bits - 8);\n bits -= 8;\n }\n }\n if (bits > 0) {\n buffy[at++] = accum << (8 - bits);\n }\n return buffy;\n}\n\n// 0x111 (for idxU) means \"not supported\"\nfunction supportsPuzzleOrientation(components: Binary3x3x3Components): boolean {\n return components.poIdxU !== 7;\n}\n\nexport function reid3x3x3ToBinaryComponents(\n state: KState,\n): Binary3x3x3Components {\n const normedState = normalizePuzzleOrientation(state);\n\n const epLex = permutationToLex(normedState.stateData[\"EDGES\"].pieces);\n const eoMask = orientationsToMask(\n 2,\n normedState.stateData[\"EDGES\"].orientation,\n );\n const cpLex = permutationToLex(normedState.stateData[\"CORNERS\"].pieces);\n const coMask = orientationsToMask(\n 3,\n normedState.stateData[\"CORNERS\"].orientation,\n );\n const [poIdxU, poIdxL] = puzzleOrientationIdx(state);\n const moSupport = 1; // Required for now.\n const moMask = orientationsToMask(\n 4,\n normedState.stateData[\"CENTERS\"].orientation,\n );\n\n return {\n epLex,\n eoMask,\n cpLex,\n coMask,\n poIdxU,\n poIdxL,\n moSupport,\n moMask,\n };\n}\n\nexport function binaryComponentsToTwizzleBinary(\n components: Binary3x3x3Components,\n): Binary3x3x3State {\n const { epLex, eoMask, cpLex, coMask, poIdxU, poIdxL, moSupport, moMask } =\n components;\n\n return concatBinary(BIT_LENGTHS, [\n epLex,\n eoMask,\n cpLex,\n coMask,\n poIdxU,\n poIdxL,\n moSupport,\n moMask,\n ]);\n}\n\nexport function reid3x3x3ToTwizzleBinary(state: KState): Binary3x3x3State {\n const components: Binary3x3x3Components = reid3x3x3ToBinaryComponents(state);\n return binaryComponentsToTwizzleBinary(components);\n}\n\nexport function twizzleBinaryToBinaryComponents(\n buffer: ArrayBuffer,\n): Binary3x3x3Components {\n const [epLex, eoMask, cpLex, coMask, poIdxU, poIdxL, moSupport, moMask] =\n splitBinary(BIT_LENGTHS, buffer);\n\n return {\n epLex,\n eoMask,\n cpLex,\n coMask,\n poIdxU,\n poIdxL,\n moSupport,\n moMask,\n };\n}\n\nexport function binaryComponentsToReid3x3x3(\n components: Binary3x3x3Components,\n): KState {\n if (components.moSupport !== 1) {\n throw new Error(\"Must support center orientation.\");\n }\n\n const normedState = new KState(experimental3x3x3KPuzzle, {\n EDGES: {\n pieces: lexToPermutation(12, components.epLex),\n orientation: maskToOrientations(2, 12, components.eoMask),\n },\n CORNERS: {\n pieces: lexToPermutation(8, components.cpLex),\n orientation: maskToOrientations(3, 8, components.coMask),\n },\n CENTERS: {\n pieces: identityPermutation(6),\n orientation: maskToOrientations(4, 6, components.moMask),\n },\n });\n\n if (!supportsPuzzleOrientation(components)) {\n return normedState;\n }\n\n return reorientPuzzle(normedState, components.poIdxU, components.poIdxL);\n}\n\n// Returns a list of error string.\n// An empty list means validation success.\nfunction validateComponents(components: Binary3x3x3Components): string[] {\n const errors = [];\n if (components.epLex < 0 || components.epLex >= 479001600) {\n errors.push(`epLex (${components.epLex}) out of range`);\n }\n if (components.cpLex < 0 || components.cpLex >= 40320) {\n errors.push(`cpLex (${components.cpLex}) out of range`);\n }\n if (components.coMask < 0 || components.coMask >= 6561) {\n errors.push(`coMask (${components.coMask}) out of range`);\n }\n if (components.poIdxU < 0 || components.poIdxU >= 6) {\n // 0x111 (for idxU) means \"not supported\"\n if (supportsPuzzleOrientation(components)) {\n errors.push(`poIdxU (${components.poIdxU}) out of range`);\n }\n }\n // The following cannot be (f decoded from binary properl) out of rangey.\n if (components.eoMask < 0 || components.eoMask >= 4096) {\n errors.push(`eoMask (${components.eoMask}) out of range`);\n }\n if (components.moMask < 0 || components.moMask >= 4096) {\n errors.push(`moMask (${components.moMask}) out of range`);\n }\n if (components.poIdxL < 0 || components.poIdxL >= 4) {\n errors.push(`poIdxL (${components.poIdxL}) out of range`);\n }\n if (components.moSupport < 0 || components.moSupport >= 2) {\n errors.push(`moSupport (${components.moSupport}) out of range`);\n }\n return errors;\n}\n\nexport function twizzleBinaryToReid3x3x3(buffy: ArrayBuffer): KState {\n const components = twizzleBinaryToBinaryComponents(buffy);\n const errors = validateComponents(components);\n if (errors.length !== 0) {\n throw new Error(`Invalid binary state components: ${errors.join(\", \")}`);\n }\n return binaryComponentsToReid3x3x3(components);\n}\n", "export function bufferToSpacedHex(buffer: ArrayBuffer): string {\n // buffer is an ArrayBuffer\n return (\n Array.prototype.map.call(new Uint8Array(buffer), (x: number) =>\n (\"00\" + x.toString(16)).slice(-2),\n ) as string[]\n ).join(\" \");\n}\n\nexport function spacedHexToBuffer(hex: string): Uint8Array {\n return new Uint8Array(hex.split(\" \").map((c) => parseInt(c, 16)));\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|