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.
		
		
		
		
		
			
		
			
				
					66 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					66 lines
				
				2.1 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.buildScopeIIFE = buildScopeIIFE; | ||
|  | exports.collectShadowedParamsNames = collectShadowedParamsNames; | ||
|  | exports.iifeVisitor = void 0; | ||
|  | var _core = require("@babel/core"); | ||
|  | const iifeVisitor = { | ||
|  |   "ReferencedIdentifier|BindingIdentifier"(path, state) { | ||
|  |     const { | ||
|  |       scope, | ||
|  |       node | ||
|  |     } = path; | ||
|  |     const { | ||
|  |       name | ||
|  |     } = node; | ||
|  |     if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) { | ||
|  |       state.needsOuterBinding = true; | ||
|  |       path.stop(); | ||
|  |     } | ||
|  |   }, | ||
|  |   "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": path => path.skip() | ||
|  | }; | ||
|  | exports.iifeVisitor = iifeVisitor; | ||
|  | function collectShadowedParamsNames(param, functionScope, shadowedParams) { | ||
|  |   for (const name of Object.keys(param.getBindingIdentifiers())) { | ||
|  |     var _functionScope$bindin; | ||
|  |     const constantViolations = (_functionScope$bindin = functionScope.bindings[name]) == null ? void 0 : _functionScope$bindin.constantViolations; | ||
|  |     if (constantViolations) { | ||
|  |       for (const redeclarator of constantViolations) { | ||
|  |         const node = redeclarator.node; | ||
|  |         switch (node.type) { | ||
|  |           case "VariableDeclarator": | ||
|  |             { | ||
|  |               if (node.init === null) { | ||
|  |                 const declaration = redeclarator.parentPath; | ||
|  |                 if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) { | ||
|  |                   redeclarator.remove(); | ||
|  |                   break; | ||
|  |                 } | ||
|  |               } | ||
|  |               shadowedParams.add(name); | ||
|  |               break; | ||
|  |             } | ||
|  |           case "FunctionDeclaration": | ||
|  |             shadowedParams.add(name); | ||
|  |             break; | ||
|  |         } | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | function buildScopeIIFE(shadowedParams, body) { | ||
|  |   const args = []; | ||
|  |   const params = []; | ||
|  |   for (const name of shadowedParams) { | ||
|  |     args.push(_core.types.identifier(name)); | ||
|  |     params.push(_core.types.identifier(name)); | ||
|  |   } | ||
|  |   return _core.types.returnStatement(_core.types.callExpression(_core.types.arrowFunctionExpression(params, body), args)); | ||
|  | } | ||
|  | 
 | ||
|  | //# sourceMappingURL=shadow-utils.js.map
 |