Katie Boulter booked her first WTA 500 semi-final after this brilliant rally against Donna Vekic at the San Diego Open.