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