auth-js icon indicating copy to clipboard operation
auth-js copied to clipboard

Add "loose auto complete" to string literals where applicable

Open janglad opened this issue 1 year ago • 0 comments

What kind of change does this PR introduce?

Add "loose autocomplete" toWeakPasswordReasons, AMREntry.method, Factor.factor_type, SignInWithIdTokenCredentials.provider and AuthError.code

What is the current behavior?

The above types define possible string literal values, which is great, but they're unioned with string. As a regular "literal" | string just ends up as a string this foregoes the benefit of defining the literals in the first place.

What is the new behavior?

TypeScript still allows any possible string as a valid value (notice no error on the "not in there"), but now the predefined literals show up as hints. This is done by using "literal" | string & {}. While this seems hacky, it's something that works and something the TS team test against meaning they won't "fix" it in future releases.

image

Currently these hints aren't shown as the type just ends up as a simple string.

Additional context

I believe this can be quite helpful for people when trying to handle errors etc. I know string & {} might look somewhat weird for maintainers, if preferable I can create a LooseAutocomplete<T> or something and wrap them in there but this seemed cleaner.

janglad avatar Sep 28 '24 15:09 janglad