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.
		
		
		
		
		
			
		
			
				
					59 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					59 lines
				
				1.4 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | exports.__esModule = true; | ||
|  | exports.default = createMetaResolver; | ||
|  | 
 | ||
|  | var _utils = require("./utils"); | ||
|  | 
 | ||
|  | const PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]); | ||
|  | 
 | ||
|  | function createMetaResolver(polyfills) { | ||
|  |   const { | ||
|  |     static: staticP, | ||
|  |     instance: instanceP, | ||
|  |     global: globalP | ||
|  |   } = polyfills; | ||
|  |   return meta => { | ||
|  |     if (meta.kind === "global" && globalP && (0, _utils.has)(globalP, meta.name)) { | ||
|  |       return { | ||
|  |         kind: "global", | ||
|  |         desc: globalP[meta.name], | ||
|  |         name: meta.name | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (meta.kind === "property" || meta.kind === "in") { | ||
|  |       const { | ||
|  |         placement, | ||
|  |         object, | ||
|  |         key | ||
|  |       } = meta; | ||
|  | 
 | ||
|  |       if (object && placement === "static") { | ||
|  |         if (globalP && PossibleGlobalObjects.has(object) && (0, _utils.has)(globalP, key)) { | ||
|  |           return { | ||
|  |             kind: "global", | ||
|  |             desc: globalP[key], | ||
|  |             name: key | ||
|  |           }; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (staticP && (0, _utils.has)(staticP, object) && (0, _utils.has)(staticP[object], key)) { | ||
|  |           return { | ||
|  |             kind: "static", | ||
|  |             desc: staticP[object][key], | ||
|  |             name: `${object}$${key}` | ||
|  |           }; | ||
|  |         } | ||
|  |       } | ||
|  | 
 | ||
|  |       if (instanceP && (0, _utils.has)(instanceP, key)) { | ||
|  |         return { | ||
|  |           kind: "instance", | ||
|  |           desc: instanceP[key], | ||
|  |           name: `${key}` | ||
|  |         }; | ||
|  |       } | ||
|  |     } | ||
|  |   }; | ||
|  | } |