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