AngularJS "Constant" Factory

I'm working on setting up configuration files in AngularJS. Is it possible to create a factory in AngularJS whose key cannot be overwritten? For example, I can set up a constant like this, which cannot be overwritten

module.constant('animals', {"cat": "meow", "dog": "woof"});

But I'd like to do something like this that allows for overwritten values but not the factory itself

module.value('catSound','meow')
      .value('dogSound','woof')
      .factory('animals', ['catSound','dogSound', function(catSound, dogSound) {
            return {
                 "cat": catSound,
                 "dog": dogSound
            }
      });

The above factory can be overwritten allowing for another piece of code to have module.factory('animals',function(){ return 7 }) and break everything. However, as a factory, the individual values can (and should) be overwritable, so I should be able to assign module.value('catSound','hiss') and have things still work as expected.

I've tried injecting into constants, but as far as I've been able to understand that isn't possible. How can I prevent my factory declaration from being overwritten? I realize that constant probably isn't the correct term when describing what I want, but I do want the factory's function definition to be constant.

Everything is mutable in javascript, so setting up something like this is tricky and never completely fail-safe. I've looked around in the angular code and found no evidence of any attempt at a protection mechanism like you seem to be asking for.

My advise would be to just live with the risk. It's not worth trying to protect yourself other than with tests and nice long names. I assume you've been bitten once, but I think the chances are quite low, unless you define factories with very short names.