123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _types = require('../parser/tokenizer/types');
- var _getImportExportSpecifierInfo = require('./getImportExportSpecifierInfo'); var _getImportExportSpecifierInfo2 = _interopRequireDefault(_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.
- */
- function getTSImportedNames(tokens) {
- const importedNames = new Set();
- for (let i = 0; i < tokens.tokens.length; i++) {
- if (
- tokens.matches1AtIndex(i, _types.TokenType._import) &&
- !tokens.matches3AtIndex(i, _types.TokenType._import, _types.TokenType.name, _types.TokenType.eq)
- ) {
- collectNamesForImport(tokens, i, importedNames);
- }
- }
- return importedNames;
- } exports.default = getTSImportedNames;
- function collectNamesForImport(
- tokens,
- index,
- importedNames,
- ) {
- index++;
- if (tokens.matches1AtIndex(index, _types.TokenType.parenL)) {
- // Dynamic import, so nothing to do
- return;
- }
- if (tokens.matches1AtIndex(index, _types.TokenType.name)) {
- importedNames.add(tokens.identifierNameAtIndex(index));
- index++;
- if (tokens.matches1AtIndex(index, _types.TokenType.comma)) {
- index++;
- }
- }
- if (tokens.matches1AtIndex(index, _types.TokenType.star)) {
- // * as
- index += 2;
- importedNames.add(tokens.identifierNameAtIndex(index));
- index++;
- }
- if (tokens.matches1AtIndex(index, _types.TokenType.braceL)) {
- index++;
- collectNamesForNamedImport(tokens, index, importedNames);
- }
- }
- function collectNamesForNamedImport(
- tokens,
- index,
- importedNames,
- ) {
- while (true) {
- if (tokens.matches1AtIndex(index, _types.TokenType.braceR)) {
- return;
- }
- const specifierInfo = _getImportExportSpecifierInfo2.default.call(void 0, tokens, index);
- index = specifierInfo.endIndex;
- if (!specifierInfo.isType) {
- importedNames.add(specifierInfo.rightName);
- }
- if (tokens.matches2AtIndex(index, _types.TokenType.comma, _types.TokenType.braceR)) {
- return;
- } else if (tokens.matches1AtIndex(index, _types.TokenType.braceR)) {
- return;
- } else if (tokens.matches1AtIndex(index, _types.TokenType.comma)) {
- index++;
- } else {
- throw new Error(`Unexpected token: ${JSON.stringify(tokens.tokens[index])}`);
- }
- }
- }
|