You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					52 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					52 lines
				
				1.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								var Map = require('./es6.map');
							 | 
						||
| 
								 | 
							
								var $export = require('./_export');
							 | 
						||
| 
								 | 
							
								var shared = require('./_shared')('metadata');
							 | 
						||
| 
								 | 
							
								var store = shared.store || (shared.store = new (require('./es6.weak-map'))());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getOrCreateMetadataMap = function (target, targetKey, create) {
							 | 
						||
| 
								 | 
							
								  var targetMetadata = store.get(target);
							 | 
						||
| 
								 | 
							
								  if (!targetMetadata) {
							 | 
						||
| 
								 | 
							
								    if (!create) return undefined;
							 | 
						||
| 
								 | 
							
								    store.set(target, targetMetadata = new Map());
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  var keyMetadata = targetMetadata.get(targetKey);
							 | 
						||
| 
								 | 
							
								  if (!keyMetadata) {
							 | 
						||
| 
								 | 
							
								    if (!create) return undefined;
							 | 
						||
| 
								 | 
							
								    targetMetadata.set(targetKey, keyMetadata = new Map());
							 | 
						||
| 
								 | 
							
								  } return keyMetadata;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
							 | 
						||
| 
								 | 
							
								  var metadataMap = getOrCreateMetadataMap(O, P, false);
							 | 
						||
| 
								 | 
							
								  return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
							 | 
						||
| 
								 | 
							
								  var metadataMap = getOrCreateMetadataMap(O, P, false);
							 | 
						||
| 
								 | 
							
								  return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
							 | 
						||
| 
								 | 
							
								  getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var ordinaryOwnMetadataKeys = function (target, targetKey) {
							 | 
						||
| 
								 | 
							
								  var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
							 | 
						||
| 
								 | 
							
								  var keys = [];
							 | 
						||
| 
								 | 
							
								  if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });
							 | 
						||
| 
								 | 
							
								  return keys;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var toMetaKey = function (it) {
							 | 
						||
| 
								 | 
							
								  return it === undefined || typeof it == 'symbol' ? it : String(it);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var exp = function (O) {
							 | 
						||
| 
								 | 
							
								  $export($export.S, 'Reflect', O);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  store: store,
							 | 
						||
| 
								 | 
							
								  map: getOrCreateMetadataMap,
							 | 
						||
| 
								 | 
							
								  has: ordinaryHasOwnMetadata,
							 | 
						||
| 
								 | 
							
								  get: ordinaryGetOwnMetadata,
							 | 
						||
| 
								 | 
							
								  set: ordinaryDefineOwnMetadata,
							 | 
						||
| 
								 | 
							
								  keys: ordinaryOwnMetadataKeys,
							 | 
						||
| 
								 | 
							
								  key: toMetaKey,
							 | 
						||
| 
								 | 
							
								  exp: exp
							 | 
						||
| 
								 | 
							
								};
							 |