123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- // Type definitions for @babel/parser
- // Project: https://github.com/babel/babel/tree/main/packages/babel-parser
- // Definitions by: Troy Gerwien <https://github.com/yortus>
- // Marvin Hagemeister <https://github.com/marvinhagemeister>
- // Avi Vahl <https://github.com/AviVahl>
- // TypeScript Version: 2.9
- /**
- * Parse the provided code as an entire ECMAScript program.
- */
- export function parse(
- input: string,
- options?: ParserOptions
- ): ParseResult<import("@babel/types").File>;
- /**
- * Parse the provided code as a single expression.
- */
- export function parseExpression(
- input: string,
- options?: ParserOptions
- ): ParseResult<import("@babel/types").Expression>;
- export interface ParserOptions {
- /**
- * By default, import and export declarations can only appear at a program's top level.
- * Setting this option to true allows them anywhere where a statement is allowed.
- */
- allowImportExportEverywhere?: boolean;
- /**
- * By default, await use is not allowed outside of an async function.
- * Set this to true to accept such code.
- */
- allowAwaitOutsideFunction?: boolean;
- /**
- * By default, a return statement at the top level raises an error.
- * Set this to true to accept such code.
- */
- allowReturnOutsideFunction?: boolean;
- allowSuperOutsideMethod?: boolean;
- /**
- * By default, exported identifiers must refer to a declared variable.
- * Set this to true to allow export statements to reference undeclared variables.
- */
- allowUndeclaredExports?: boolean;
- /**
- * By default, Babel attaches comments to adjacent AST nodes.
- * When this option is set to false, comments are not attached.
- * It can provide up to 30% performance improvement when the input code has many comments.
- * @babel/eslint-parser will set it for you.
- * It is not recommended to use attachComment: false with Babel transform,
- * as doing so removes all the comments in output code, and renders annotations such as
- * /* istanbul ignore next *\/ nonfunctional.
- */
- attachComment?: boolean;
- /**
- * By default, Babel always throws an error when it finds some invalid code.
- * When this option is set to true, it will store the parsing error and
- * try to continue parsing the invalid input file.
- */
- errorRecovery?: boolean;
- /**
- * Indicate the mode the code should be parsed in.
- * Can be one of "script", "module", or "unambiguous". Defaults to "script".
- * "unambiguous" will make @babel/parser attempt to guess, based on the presence
- * of ES6 import or export statements.
- * Files with ES6 imports and exports are considered "module" and are otherwise "script".
- */
- sourceType?: "script" | "module" | "unambiguous";
- /**
- * Correlate output AST nodes with their source filename.
- * Useful when generating code and source maps from the ASTs of multiple input files.
- */
- sourceFilename?: string;
- /**
- * By default, the first line of code parsed is treated as line 1.
- * You can provide a line number to alternatively start with.
- * Useful for integration with other source tools.
- */
- startLine?: number;
- /**
- * Array containing the plugins that you want to enable.
- */
- plugins?: ParserPlugin[];
- /**
- * Should the parser work in strict mode.
- * Defaults to true if sourceType === 'module'. Otherwise, false.
- */
- strictMode?: boolean;
- /**
- * Adds a ranges property to each node: [node.start, node.end]
- */
- ranges?: boolean;
- /**
- * Adds all parsed tokens to a tokens property on the File node.
- */
- tokens?: boolean;
- /**
- * By default, the parser adds information about parentheses by setting
- * `extra.parenthesized` to `true` as needed.
- * When this option is `true` the parser creates `ParenthesizedExpression`
- * AST nodes instead of using the `extra` property.
- */
- createParenthesizedExpressions?: boolean;
- }
- export type ParserPlugin =
- | "asyncDoExpressions"
- | "asyncGenerators"
- | "bigInt"
- | "classPrivateMethods"
- | "classPrivateProperties"
- | "classProperties"
- | "classStaticBlock" // Enabled by default
- | "decimal"
- | "decorators"
- | "decorators-legacy"
- | "decoratorAutoAccessors"
- | "destructuringPrivate"
- | "doExpressions"
- | "dynamicImport"
- | "estree"
- | "exportDefaultFrom"
- | "exportNamespaceFrom" // deprecated
- | "flow"
- | "flowComments"
- | "functionBind"
- | "functionSent"
- | "importMeta"
- | "jsx"
- | "logicalAssignment"
- | "importAssertions"
- | "moduleBlocks"
- | "moduleStringNames"
- | "nullishCoalescingOperator"
- | "numericSeparator"
- | "objectRestSpread"
- | "optionalCatchBinding"
- | "optionalChaining"
- | "partialApplication"
- | "pipelineOperator"
- | "placeholders"
- | "privateIn" // Enabled by default
- | "regexpUnicodeSets"
- | "throwExpressions"
- | "topLevelAwait"
- | "typescript"
- | "v8intrinsic"
- | ParserPluginWithOptions;
- export type ParserPluginWithOptions =
- | ["decorators", DecoratorsPluginOptions]
- | ["pipelineOperator", PipelineOperatorPluginOptions]
- | ["recordAndTuple", RecordAndTuplePluginOptions]
- | ["flow", FlowPluginOptions]
- | ["typescript", TypeScriptPluginOptions];
- export interface DecoratorsPluginOptions {
- decoratorsBeforeExport?: boolean;
- }
- export interface PipelineOperatorPluginOptions {
- proposal: "minimal" | "fsharp" | "hack" | "smart";
- topicToken?: "%" | "#" | "@@" | "^^";
- }
- export interface RecordAndTuplePluginOptions {
- syntaxType: "bar" | "hash";
- }
- export interface FlowPluginOptions {
- all?: boolean;
- }
- export interface TypeScriptPluginOptions {
- dts?: boolean;
- disallowAmbiguousJSXLike?: boolean;
- }
- export const tokTypes: {
- // todo(flow->ts) real token type
- [name: string]: any;
- };
- export interface ParseError {
- code: string;
- reasonCode: string;
- }
- type ParseResult<Result> = Result & {
- errors: ParseError[];
- };
|