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