MIT licensed.
Someone please write tests to test these cases:
chess = new Chess("r3kbnr/ppp1pp2/n2q2p1/2PpPb1p/P6P/5P2/1P1P2P1/RNBQKBNR b KQkq - 0 7");
chess = new Chess("r3kb1r/ppp1p3/n2qPppn/2Pp1b1p/P6P/5P2/1P1P2P1/RNBQKBNR w KQkq - 0 9");
chess = new Chess("r3k2r/ppp1p1b1/n1PqPppn/3p1b1p/P4P1P/8/1P1P2P1/RNBQKBNR b KQkq - 0 10");
chess = new Chess("2kr1b1r/p1p1p3/n1PqPpp1/3p1b1p/Pp4nP/N2P1P2/1PQB2P1/R3KBNR w KQ - 2 14");