This requires the client app to use the indexedDB API manually. We don't expose it anywhere else, and I'd rather not expose it here.

Instead of using this updateIndexes() function, can you just compare store.indexNames with media.indexes and create or delete indexes that have changed?  So if a client app wants to change its indexes, it can just change the indexes and version number options and it will just happen.