'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); 
 | 
  } 
 | 
}); 
 |