sucrase
Version:
Super-fast alternative to Babel for when you can target modern JS runtimes
79 lines (78 loc) • 2.41 kB
TypeScript
import { Transformer } from './Transformer';
import { RootTransformer } from '../index';
import TokenProcessor from '../TokenProcessor';
import { ImportProcessor } from '../ImportProcessor';
import { NameManager } from '../NameManager';
export default class ImportTransformer implements Transformer {
readonly rootTransformer: RootTransformer;
readonly tokens: TokenProcessor;
readonly nameManager: NameManager;
readonly importProcessor: ImportProcessor;
readonly shouldAddModuleExports: boolean;
private hadExport;
private hadNamedExport;
private hadDefaultExport;
constructor(rootTransformer: RootTransformer, tokens: TokenProcessor, nameManager: NameManager, importProcessor: ImportProcessor, shouldAddModuleExports: boolean);
preprocess(): void;
getPrefixCode(): string;
getSuffixCode(): string;
process(): boolean;
/**
* Transform this:
* import foo, {bar} from 'baz';
* into
* var _baz = require('baz'); var _baz2 = _interopRequireDefault(_baz);
*
* The import code was already generated in the import preprocessing step, so
* we just need to look it up.
*/
private processImport();
private processIdentifier();
processObjectShorthand(): boolean;
processExport(): void;
private processAssignment();
private processExportDefault();
/**
* Transform this:
* export const x = 1;
* into this:
* const x = exports.x = 1;
*/
private processExportVar();
/**
* Transform this:
* export function foo() {}
* into this:
* function foo() {} exports.foo = foo;
*/
private processExportFunction();
/**
* Skip past a function with a name and return that name.
*/
private processNamedFunction();
/**
* Transform this:
* export class A {}
* into this:
* class A {} exports.A = A;
*/
private processExportClass();
/**
* Skip past a class with a name and return that name.
*/
private processNamedClass();
/**
* Transform this:
* export {a, b as c};
* into this:
* exports.a = a; exports.c = b;
*
* OR
*
* Transform this:
* export {a, b as c} from './foo';
* into the pre-generated Object.defineProperty code from the ImportProcessor.
*/
private processExportBindings();
private processExportStar();
}