| 'use strict'; | 
| var $ = require('../internals/export'); | 
| var ReflectMetadataModule = require('../internals/reflect-metadata'); | 
| var anObject = require('../internals/an-object'); | 
|   | 
| var toMetadataKey = ReflectMetadataModule.toKey; | 
| var getOrCreateMetadataMap = ReflectMetadataModule.getMap; | 
| var store = ReflectMetadataModule.store; | 
|   | 
| // `Reflect.deleteMetadata` method | 
| // https://github.com/rbuckton/reflect-metadata | 
| $({ target: 'Reflect', stat: true }, { | 
|   deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { | 
|     var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); | 
|     var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); | 
|     if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; | 
|     if (metadataMap.size) return true; | 
|     var targetMetadata = store.get(target); | 
|     targetMetadata['delete'](targetKey); | 
|     return !!targetMetadata.size || store['delete'](target); | 
|   } | 
| }); |