It looks like this may handle middle names better than the only package on npmjs.org that does name parsing.