Auth0-lock vs auth0-spa-js

I’ve searched for answers to this question in the forum, but I can’t find a clear answer.

When should you choose Lock as compared to auth0-spa-js?
Is there a decision tree to use?

thank you
Klas