add hw2
This commit is contained in:
		
							
								
								
									
										84
									
								
								node_modules/sucrase/dist/esm/util/getTSImportedNames.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								node_modules/sucrase/dist/esm/util/getTSImportedNames.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| import {TokenType as tt} from "../parser/tokenizer/types"; | ||||
|  | ||||
| import getImportExportSpecifierInfo from "./getImportExportSpecifierInfo"; | ||||
|  | ||||
| /** | ||||
|  * Special case code to scan for imported names in ESM TypeScript. We need to do this so we can | ||||
|  * properly get globals so we can compute shadowed globals. | ||||
|  * | ||||
|  * This is similar to logic in CJSImportProcessor, but trimmed down to avoid logic with CJS | ||||
|  * replacement and flow type imports. | ||||
|  */ | ||||
| export default function getTSImportedNames(tokens) { | ||||
|   const importedNames = new Set(); | ||||
|   for (let i = 0; i < tokens.tokens.length; i++) { | ||||
|     if ( | ||||
|       tokens.matches1AtIndex(i, tt._import) && | ||||
|       !tokens.matches3AtIndex(i, tt._import, tt.name, tt.eq) | ||||
|     ) { | ||||
|       collectNamesForImport(tokens, i, importedNames); | ||||
|     } | ||||
|   } | ||||
|   return importedNames; | ||||
| } | ||||
|  | ||||
| function collectNamesForImport( | ||||
|   tokens, | ||||
|   index, | ||||
|   importedNames, | ||||
| ) { | ||||
|   index++; | ||||
|  | ||||
|   if (tokens.matches1AtIndex(index, tt.parenL)) { | ||||
|     // Dynamic import, so nothing to do | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   if (tokens.matches1AtIndex(index, tt.name)) { | ||||
|     importedNames.add(tokens.identifierNameAtIndex(index)); | ||||
|     index++; | ||||
|     if (tokens.matches1AtIndex(index, tt.comma)) { | ||||
|       index++; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if (tokens.matches1AtIndex(index, tt.star)) { | ||||
|     // * as | ||||
|     index += 2; | ||||
|     importedNames.add(tokens.identifierNameAtIndex(index)); | ||||
|     index++; | ||||
|   } | ||||
|  | ||||
|   if (tokens.matches1AtIndex(index, tt.braceL)) { | ||||
|     index++; | ||||
|     collectNamesForNamedImport(tokens, index, importedNames); | ||||
|   } | ||||
| } | ||||
|  | ||||
| function collectNamesForNamedImport( | ||||
|   tokens, | ||||
|   index, | ||||
|   importedNames, | ||||
| ) { | ||||
|   while (true) { | ||||
|     if (tokens.matches1AtIndex(index, tt.braceR)) { | ||||
|       return; | ||||
|     } | ||||
|  | ||||
|     const specifierInfo = getImportExportSpecifierInfo(tokens, index); | ||||
|     index = specifierInfo.endIndex; | ||||
|     if (!specifierInfo.isType) { | ||||
|       importedNames.add(specifierInfo.rightName); | ||||
|     } | ||||
|  | ||||
|     if (tokens.matches2AtIndex(index, tt.comma, tt.braceR)) { | ||||
|       return; | ||||
|     } else if (tokens.matches1AtIndex(index, tt.braceR)) { | ||||
|       return; | ||||
|     } else if (tokens.matches1AtIndex(index, tt.comma)) { | ||||
|       index++; | ||||
|     } else { | ||||
|       throw new Error(`Unexpected token: ${JSON.stringify(tokens.tokens[index])}`); | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 nik
					nik