sucrase
Version:
Super-fast alternative to Babel for when you can target modern JS runtimes
45 lines (44 loc) • 1.79 kB
TypeScript
import type CJSImportProcessor from "../CJSImportProcessor";
import type { Options } from "../index";
import type NameManager from "../NameManager";
import type TokenProcessor from "../TokenProcessor";
import { JSXPragmaInfo } from "../util/getJSXPragmaInfo";
import type RootTransformer from "./RootTransformer";
import Transformer from "./Transformer";
export default class JSXTransformer extends Transformer {
readonly rootTransformer: RootTransformer;
readonly tokens: TokenProcessor;
readonly importProcessor: CJSImportProcessor | null;
readonly nameManager: NameManager;
readonly options: Options;
lastLineNumber: number;
lastIndex: number;
filenameVarName: string | null;
readonly jsxPragmaInfo: JSXPragmaInfo;
constructor(rootTransformer: RootTransformer, tokens: TokenProcessor, importProcessor: CJSImportProcessor | null, nameManager: NameManager, options: Options);
process(): boolean;
getPrefixCode(): string;
/**
* Lazily calculate line numbers to avoid unneeded work. We assume this is always called in
* increasing order by index.
*/
getLineNumberForIndex(index: number): number;
getFilenameVarName(): string;
processProps(firstTokenStart: number): void;
processPropKeyName(): void;
processStringPropValue(): void;
/**
* Process the first part of a tag, before any props.
*/
processTagIntro(): void;
processChildren(): void;
processChildTextElement(): void;
processJSXTag(): void;
}
/**
* Spec for identifiers: https://tc39.github.io/ecma262/#prod-IdentifierStart.
*
* Really only treat anything starting with a-z as tag names. `_`, `$`, `é`
* should be treated as copmonent names
*/
export declare function startsWithLowerCase(s: string): boolean;