Usually if I have a big list of mappings from one string to another, that is likely to be later enhanced on, I use a generic mapping method, that is fed a static mapping constant.
So the first iteration would be something like:
type ExpectedMimeTypes =
type ExpectedMagicOutput ...
Per se returning a promise from an Angular Service is not bad, however there are numerous things in Angular world that are heavily based on Observables:
usually you will likely change the change detection to ChangeDetectionStrategy.OnPush in your components and this will most likely be easier with Angular's async pipe not a problem, because async also ...