dist-esnext/Move.js
function getGameAfterMove(game, move, backMove = false) {
    if (!backMove && canNotMove(game, move))
        return game;
    const board = getBoardAfterMove(game.board, move);
    return {
        players: game.players,
        board,
        score: Score.getScore(game.board),
        moves: backMove ? game.moves : game.moves.concat(getMoveXAndY(move))
    };
}
function getGameAfterMove(game, move, backMove = false) {
    if (!backMove && canNotMove(game, move))
        return game;
    const board = getBoardAfterMove(game.board, move);
    return {
        players: game.players,
        board,
        score: Score.getScore(game.board),
        moves: backMove ? game.moves : game.moves.concat(getMoveXAndY(move))
    };
}
function getGameAfterMove ( game , move , backMove = false ) { if ( ! backMove && canNotMove ( game , move ) ) return game ; const board = getBoardAfterMove ( game . board , move ) ; return { players : game . players , board , score : Score . getScore ( game . board ) , moves : backMove ? game . moves : game . moves . concat ( getMoveXAndY ( move ) ) } ; }
Takes game and move then returns new game after move.

Updates:
- .board (It cleans board, set new positions and move breadcrumb)
- .score
- .moves (add new move if valid and it is not backMove)
Takes game and move then returns new game after move .