blade
Version:
React at the edge.
1,662 lines (1,659 loc) • 122 kB
TypeScript
//#region ../../node_modules/@oxc-project/types/types.d.ts
// Auto-generated code, DO NOT EDIT DIRECTLY!
// To edit this generated file you have to edit `tasks/ast_tools/src/generators/typescript.rs`.
interface Program extends Span {
type: "Program";
body: Array<Directive | Statement>;
sourceType: ModuleKind;
hashbang: Hashbang | null;
parent?: null;
}
type Expression = BooleanLiteral | NullLiteral | NumericLiteral | BigIntLiteral | RegExpLiteral | StringLiteral | TemplateLiteral | IdentifierReference | MetaProperty | Super | ArrayExpression | ArrowFunctionExpression | AssignmentExpression | AwaitExpression | BinaryExpression | CallExpression | ChainExpression | Class | ConditionalExpression | Function | ImportExpression | LogicalExpression | NewExpression | ObjectExpression | ParenthesizedExpression | SequenceExpression | TaggedTemplateExpression | ThisExpression | UnaryExpression | UpdateExpression | YieldExpression | PrivateInExpression | JSXElement | JSXFragment | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | TSInstantiationExpression | V8IntrinsicExpression | MemberExpression;
interface IdentifierName extends Span {
type: "Identifier";
decorators?: [];
name: string;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface IdentifierReference extends Span {
type: "Identifier";
decorators?: [];
name: string;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface BindingIdentifier extends Span {
type: "Identifier";
decorators?: [];
name: string;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface LabelIdentifier extends Span {
type: "Identifier";
decorators?: [];
name: string;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface ThisExpression extends Span {
type: "ThisExpression";
parent?: Node;
}
interface ArrayExpression extends Span {
type: "ArrayExpression";
elements: Array<ArrayExpressionElement>;
parent?: Node;
}
type ArrayExpressionElement = SpreadElement | null | Expression;
interface ObjectExpression extends Span {
type: "ObjectExpression";
properties: Array<ObjectPropertyKind>;
parent?: Node;
}
type ObjectPropertyKind = ObjectProperty | SpreadElement;
interface ObjectProperty extends Span {
type: "Property";
kind: PropertyKind;
key: PropertyKey;
value: Expression;
method: boolean;
shorthand: boolean;
computed: boolean;
optional?: false;
parent?: Node;
}
type PropertyKey = IdentifierName | PrivateIdentifier | Expression;
type PropertyKind = "init" | "get" | "set";
interface TemplateLiteral extends Span {
type: "TemplateLiteral";
quasis: Array<TemplateElement>;
expressions: Array<Expression>;
parent?: Node;
}
interface TaggedTemplateExpression extends Span {
type: "TaggedTemplateExpression";
tag: Expression;
typeArguments?: TSTypeParameterInstantiation | null;
quasi: TemplateLiteral;
parent?: Node;
}
interface TemplateElement extends Span {
type: "TemplateElement";
value: TemplateElementValue;
tail: boolean;
parent?: Node;
}
interface TemplateElementValue {
raw: string;
cooked: string | null;
}
type MemberExpression = ComputedMemberExpression | StaticMemberExpression | PrivateFieldExpression;
interface ComputedMemberExpression extends Span {
type: "MemberExpression";
object: Expression;
property: Expression;
optional: boolean;
computed: true;
parent?: Node;
}
interface StaticMemberExpression extends Span {
type: "MemberExpression";
object: Expression;
property: IdentifierName;
optional: boolean;
computed: false;
parent?: Node;
}
interface PrivateFieldExpression extends Span {
type: "MemberExpression";
object: Expression;
property: PrivateIdentifier;
optional: boolean;
computed: false;
parent?: Node;
}
interface CallExpression extends Span {
type: "CallExpression";
callee: Expression;
typeArguments?: TSTypeParameterInstantiation | null;
arguments: Array<Argument>;
optional: boolean;
parent?: Node;
}
interface NewExpression extends Span {
type: "NewExpression";
callee: Expression;
typeArguments?: TSTypeParameterInstantiation | null;
arguments: Array<Argument>;
parent?: Node;
}
interface MetaProperty extends Span {
type: "MetaProperty";
meta: IdentifierName;
property: IdentifierName;
parent?: Node;
}
interface SpreadElement extends Span {
type: "SpreadElement";
argument: Expression;
parent?: Node;
}
type Argument = SpreadElement | Expression;
interface UpdateExpression extends Span {
type: "UpdateExpression";
operator: UpdateOperator;
prefix: boolean;
argument: SimpleAssignmentTarget;
parent?: Node;
}
interface UnaryExpression extends Span {
type: "UnaryExpression";
operator: UnaryOperator;
argument: Expression;
prefix: true;
parent?: Node;
}
interface BinaryExpression extends Span {
type: "BinaryExpression";
left: Expression;
operator: BinaryOperator;
right: Expression;
parent?: Node;
}
interface PrivateInExpression extends Span {
type: "BinaryExpression";
left: PrivateIdentifier;
operator: "in";
right: Expression;
parent?: Node;
}
interface LogicalExpression extends Span {
type: "LogicalExpression";
left: Expression;
operator: LogicalOperator;
right: Expression;
parent?: Node;
}
interface ConditionalExpression extends Span {
type: "ConditionalExpression";
test: Expression;
consequent: Expression;
alternate: Expression;
parent?: Node;
}
interface AssignmentExpression extends Span {
type: "AssignmentExpression";
operator: AssignmentOperator;
left: AssignmentTarget;
right: Expression;
parent?: Node;
}
type AssignmentTarget = SimpleAssignmentTarget | AssignmentTargetPattern;
type SimpleAssignmentTarget = IdentifierReference | TSAsExpression | TSSatisfiesExpression | TSNonNullExpression | TSTypeAssertion | MemberExpression;
type AssignmentTargetPattern = ArrayAssignmentTarget | ObjectAssignmentTarget;
interface ArrayAssignmentTarget extends Span {
type: "ArrayPattern";
decorators?: [];
elements: Array<AssignmentTargetMaybeDefault | AssignmentTargetRest | null>;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface ObjectAssignmentTarget extends Span {
type: "ObjectPattern";
decorators?: [];
properties: Array<AssignmentTargetProperty | AssignmentTargetRest>;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface AssignmentTargetRest extends Span {
type: "RestElement";
decorators?: [];
argument: AssignmentTarget;
optional?: false;
typeAnnotation?: null;
value?: null;
parent?: Node;
}
type AssignmentTargetMaybeDefault = AssignmentTargetWithDefault | AssignmentTarget;
interface AssignmentTargetWithDefault extends Span {
type: "AssignmentPattern";
decorators?: [];
left: AssignmentTarget;
right: Expression;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
type AssignmentTargetProperty = AssignmentTargetPropertyIdentifier | AssignmentTargetPropertyProperty;
interface AssignmentTargetPropertyIdentifier extends Span {
type: "Property";
kind: "init";
key: IdentifierReference;
value: IdentifierReference | AssignmentTargetWithDefault;
method: false;
shorthand: true;
computed: false;
optional?: false;
parent?: Node;
}
interface AssignmentTargetPropertyProperty extends Span {
type: "Property";
kind: "init";
key: PropertyKey;
value: AssignmentTargetMaybeDefault;
method: false;
shorthand: false;
computed: boolean;
optional?: false;
parent?: Node;
}
interface SequenceExpression extends Span {
type: "SequenceExpression";
expressions: Array<Expression>;
parent?: Node;
}
interface Super extends Span {
type: "Super";
parent?: Node;
}
interface AwaitExpression extends Span {
type: "AwaitExpression";
argument: Expression;
parent?: Node;
}
interface ChainExpression extends Span {
type: "ChainExpression";
expression: ChainElement;
parent?: Node;
}
type ChainElement = CallExpression | TSNonNullExpression | MemberExpression;
interface ParenthesizedExpression extends Span {
type: "ParenthesizedExpression";
expression: Expression;
parent?: Node;
}
type Statement = BlockStatement | BreakStatement | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | ReturnStatement | SwitchStatement | ThrowStatement | TryStatement | WhileStatement | WithStatement | Declaration | ModuleDeclaration;
interface Directive extends Span {
type: "ExpressionStatement";
expression: StringLiteral;
directive: string;
parent?: Node;
}
interface Hashbang extends Span {
type: "Hashbang";
value: string;
parent?: Node;
}
interface BlockStatement extends Span {
type: "BlockStatement";
body: Array<Statement>;
parent?: Node;
}
type Declaration = VariableDeclaration | Function | Class | TSTypeAliasDeclaration | TSInterfaceDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSGlobalDeclaration | TSImportEqualsDeclaration;
interface VariableDeclaration extends Span {
type: "VariableDeclaration";
kind: VariableDeclarationKind;
declarations: Array<VariableDeclarator>;
declare?: boolean;
parent?: Node;
}
type VariableDeclarationKind = "var" | "let" | "const" | "using" | "await using";
interface VariableDeclarator extends Span {
type: "VariableDeclarator";
id: BindingPattern;
init: Expression | null;
definite?: boolean;
parent?: Node;
}
interface EmptyStatement extends Span {
type: "EmptyStatement";
parent?: Node;
}
interface ExpressionStatement extends Span {
type: "ExpressionStatement";
expression: Expression;
directive?: string | null;
parent?: Node;
}
interface IfStatement extends Span {
type: "IfStatement";
test: Expression;
consequent: Statement;
alternate: Statement | null;
parent?: Node;
}
interface DoWhileStatement extends Span {
type: "DoWhileStatement";
body: Statement;
test: Expression;
parent?: Node;
}
interface WhileStatement extends Span {
type: "WhileStatement";
test: Expression;
body: Statement;
parent?: Node;
}
interface ForStatement extends Span {
type: "ForStatement";
init: ForStatementInit | null;
test: Expression | null;
update: Expression | null;
body: Statement;
parent?: Node;
}
type ForStatementInit = VariableDeclaration | Expression;
interface ForInStatement extends Span {
type: "ForInStatement";
left: ForStatementLeft;
right: Expression;
body: Statement;
parent?: Node;
}
type ForStatementLeft = VariableDeclaration | AssignmentTarget;
interface ForOfStatement extends Span {
type: "ForOfStatement";
await: boolean;
left: ForStatementLeft;
right: Expression;
body: Statement;
parent?: Node;
}
interface ContinueStatement extends Span {
type: "ContinueStatement";
label: LabelIdentifier | null;
parent?: Node;
}
interface BreakStatement extends Span {
type: "BreakStatement";
label: LabelIdentifier | null;
parent?: Node;
}
interface ReturnStatement extends Span {
type: "ReturnStatement";
argument: Expression | null;
parent?: Node;
}
interface WithStatement extends Span {
type: "WithStatement";
object: Expression;
body: Statement;
parent?: Node;
}
interface SwitchStatement extends Span {
type: "SwitchStatement";
discriminant: Expression;
cases: Array<SwitchCase>;
parent?: Node;
}
interface SwitchCase extends Span {
type: "SwitchCase";
test: Expression | null;
consequent: Array<Statement>;
parent?: Node;
}
interface LabeledStatement extends Span {
type: "LabeledStatement";
label: LabelIdentifier;
body: Statement;
parent?: Node;
}
interface ThrowStatement extends Span {
type: "ThrowStatement";
argument: Expression;
parent?: Node;
}
interface TryStatement extends Span {
type: "TryStatement";
block: BlockStatement;
handler: CatchClause | null;
finalizer: BlockStatement | null;
parent?: Node;
}
interface CatchClause extends Span {
type: "CatchClause";
param: BindingPattern | null;
body: BlockStatement;
parent?: Node;
}
interface DebuggerStatement extends Span {
type: "DebuggerStatement";
parent?: Node;
}
type BindingPattern = {
optional?: boolean;
typeAnnotation?: TSTypeAnnotation | null;
} & (BindingIdentifier | ObjectPattern | ArrayPattern | AssignmentPattern);
type BindingPatternKind = BindingIdentifier | ObjectPattern | ArrayPattern | AssignmentPattern;
interface AssignmentPattern extends Span {
type: "AssignmentPattern";
decorators?: [];
left: BindingPattern;
right: Expression;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface ObjectPattern extends Span {
type: "ObjectPattern";
decorators?: [];
properties: Array<BindingProperty | BindingRestElement>;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface BindingProperty extends Span {
type: "Property";
kind: "init";
key: PropertyKey;
value: BindingPattern;
method: false;
shorthand: boolean;
computed: boolean;
optional?: false;
parent?: Node;
}
interface ArrayPattern extends Span {
type: "ArrayPattern";
decorators?: [];
elements: Array<BindingPattern | BindingRestElement | null>;
optional?: false;
typeAnnotation?: null;
parent?: Node;
}
interface BindingRestElement extends Span {
type: "RestElement";
decorators?: [];
argument: BindingPattern;
optional?: false;
typeAnnotation?: null;
value?: null;
parent?: Node;
}
interface Function extends Span {
type: FunctionType;
id: BindingIdentifier | null;
generator: boolean;
async: boolean;
declare?: boolean;
typeParameters?: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType?: TSTypeAnnotation | null;
body: FunctionBody | null;
expression: false;
parent?: Node;
}
type ParamPattern = FormalParameter | TSParameterProperty | FormalParameterRest;
type FunctionType = "FunctionDeclaration" | "FunctionExpression" | "TSDeclareFunction" | "TSEmptyBodyFunctionExpression";
interface FormalParameterRest extends Span {
type: "RestElement";
argument: BindingPatternKind;
decorators?: [];
optional?: boolean;
typeAnnotation?: TSTypeAnnotation | null;
value?: null;
parent?: Node;
}
type FormalParameter = {
decorators?: Array<Decorator>;
} & BindingPattern;
interface TSParameterProperty extends Span {
type: "TSParameterProperty";
accessibility: TSAccessibility | null;
decorators: Array<Decorator>;
override: boolean;
parameter: FormalParameter;
readonly: boolean;
static: boolean;
parent?: Node;
}
interface FunctionBody extends Span {
type: "BlockStatement";
body: Array<Directive | Statement>;
parent?: Node;
}
interface ArrowFunctionExpression extends Span {
type: "ArrowFunctionExpression";
expression: boolean;
async: boolean;
typeParameters?: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType?: TSTypeAnnotation | null;
body: FunctionBody | Expression;
id: null;
generator: false;
parent?: Node;
}
interface YieldExpression extends Span {
type: "YieldExpression";
delegate: boolean;
argument: Expression | null;
parent?: Node;
}
interface Class extends Span {
type: ClassType;
decorators: Array<Decorator>;
id: BindingIdentifier | null;
typeParameters?: TSTypeParameterDeclaration | null;
superClass: Expression | null;
superTypeArguments?: TSTypeParameterInstantiation | null;
implements?: Array<TSClassImplements>;
body: ClassBody;
abstract?: boolean;
declare?: boolean;
parent?: Node;
}
type ClassType = "ClassDeclaration" | "ClassExpression";
interface ClassBody extends Span {
type: "ClassBody";
body: Array<ClassElement>;
parent?: Node;
}
type ClassElement = StaticBlock | MethodDefinition | PropertyDefinition | AccessorProperty | TSIndexSignature;
interface MethodDefinition extends Span {
type: MethodDefinitionType;
decorators: Array<Decorator>;
key: PropertyKey;
value: Function;
kind: MethodDefinitionKind;
computed: boolean;
static: boolean;
override?: boolean;
optional?: boolean;
accessibility?: TSAccessibility | null;
parent?: Node;
}
type MethodDefinitionType = "MethodDefinition" | "TSAbstractMethodDefinition";
interface PropertyDefinition extends Span {
type: PropertyDefinitionType;
decorators: Array<Decorator>;
key: PropertyKey;
typeAnnotation?: TSTypeAnnotation | null;
value: Expression | null;
computed: boolean;
static: boolean;
declare?: boolean;
override?: boolean;
optional?: boolean;
definite?: boolean;
readonly?: boolean;
accessibility?: TSAccessibility | null;
parent?: Node;
}
type PropertyDefinitionType = "PropertyDefinition" | "TSAbstractPropertyDefinition";
type MethodDefinitionKind = "constructor" | "method" | "get" | "set";
interface PrivateIdentifier extends Span {
type: "PrivateIdentifier";
name: string;
parent?: Node;
}
interface StaticBlock extends Span {
type: "StaticBlock";
body: Array<Statement>;
parent?: Node;
}
type ModuleDeclaration = ImportDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | TSExportAssignment | TSNamespaceExportDeclaration;
type AccessorPropertyType = "AccessorProperty" | "TSAbstractAccessorProperty";
interface AccessorProperty extends Span {
type: AccessorPropertyType;
decorators: Array<Decorator>;
key: PropertyKey;
typeAnnotation?: TSTypeAnnotation | null;
value: Expression | null;
computed: boolean;
static: boolean;
override?: boolean;
definite?: boolean;
accessibility?: TSAccessibility | null;
declare?: false;
optional?: false;
readonly?: false;
parent?: Node;
}
interface ImportExpression extends Span {
type: "ImportExpression";
source: Expression;
options: Expression | null;
phase: ImportPhase | null;
parent?: Node;
}
interface ImportDeclaration extends Span {
type: "ImportDeclaration";
specifiers: Array<ImportDeclarationSpecifier>;
source: StringLiteral;
phase: ImportPhase | null;
attributes: Array<ImportAttribute>;
importKind?: ImportOrExportKind;
parent?: Node;
}
type ImportPhase = "source" | "defer";
type ImportDeclarationSpecifier = ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier;
interface ImportSpecifier extends Span {
type: "ImportSpecifier";
imported: ModuleExportName;
local: BindingIdentifier;
importKind?: ImportOrExportKind;
parent?: Node;
}
interface ImportDefaultSpecifier extends Span {
type: "ImportDefaultSpecifier";
local: BindingIdentifier;
parent?: Node;
}
interface ImportNamespaceSpecifier extends Span {
type: "ImportNamespaceSpecifier";
local: BindingIdentifier;
parent?: Node;
}
interface ImportAttribute extends Span {
type: "ImportAttribute";
key: ImportAttributeKey;
value: StringLiteral;
parent?: Node;
}
type ImportAttributeKey = IdentifierName | StringLiteral;
interface ExportNamedDeclaration extends Span {
type: "ExportNamedDeclaration";
declaration: Declaration | null;
specifiers: Array<ExportSpecifier>;
source: StringLiteral | null;
exportKind?: ImportOrExportKind;
attributes: Array<ImportAttribute>;
parent?: Node;
}
interface ExportDefaultDeclaration extends Span {
type: "ExportDefaultDeclaration";
declaration: ExportDefaultDeclarationKind;
exportKind?: "value";
parent?: Node;
}
interface ExportAllDeclaration extends Span {
type: "ExportAllDeclaration";
exported: ModuleExportName | null;
source: StringLiteral;
attributes: Array<ImportAttribute>;
exportKind?: ImportOrExportKind;
parent?: Node;
}
interface ExportSpecifier extends Span {
type: "ExportSpecifier";
local: ModuleExportName;
exported: ModuleExportName;
exportKind?: ImportOrExportKind;
parent?: Node;
}
type ExportDefaultDeclarationKind = Function | Class | TSInterfaceDeclaration | Expression;
type ModuleExportName = IdentifierName | IdentifierReference | StringLiteral;
interface V8IntrinsicExpression extends Span {
type: "V8IntrinsicExpression";
name: IdentifierName;
arguments: Array<Argument>;
parent?: Node;
}
interface BooleanLiteral extends Span {
type: "Literal";
value: boolean;
raw: string | null;
parent?: Node;
}
interface NullLiteral extends Span {
type: "Literal";
value: null;
raw: "null" | null;
parent?: Node;
}
interface NumericLiteral extends Span {
type: "Literal";
value: number;
raw: string | null;
parent?: Node;
}
interface StringLiteral extends Span {
type: "Literal";
value: string;
raw: string | null;
parent?: Node;
}
interface BigIntLiteral extends Span {
type: "Literal";
value: bigint;
raw: string | null;
bigint: string;
parent?: Node;
}
interface RegExpLiteral extends Span {
type: "Literal";
value: RegExp | null;
raw: string | null;
regex: {
pattern: string;
flags: string;
};
parent?: Node;
}
interface JSXElement extends Span {
type: "JSXElement";
openingElement: JSXOpeningElement;
children: Array<JSXChild>;
closingElement: JSXClosingElement | null;
parent?: Node;
}
interface JSXOpeningElement extends Span {
type: "JSXOpeningElement";
name: JSXElementName;
typeArguments?: TSTypeParameterInstantiation | null;
attributes: Array<JSXAttributeItem>;
selfClosing: boolean;
parent?: Node;
}
interface JSXClosingElement extends Span {
type: "JSXClosingElement";
name: JSXElementName;
parent?: Node;
}
interface JSXFragment extends Span {
type: "JSXFragment";
openingFragment: JSXOpeningFragment;
children: Array<JSXChild>;
closingFragment: JSXClosingFragment;
parent?: Node;
}
interface JSXOpeningFragment extends Span {
type: "JSXOpeningFragment";
attributes?: [];
selfClosing?: false;
parent?: Node;
}
interface JSXClosingFragment extends Span {
type: "JSXClosingFragment";
parent?: Node;
}
type JSXElementName = JSXIdentifier | JSXNamespacedName | JSXMemberExpression;
interface JSXNamespacedName extends Span {
type: "JSXNamespacedName";
namespace: JSXIdentifier;
name: JSXIdentifier;
parent?: Node;
}
interface JSXMemberExpression extends Span {
type: "JSXMemberExpression";
object: JSXMemberExpressionObject;
property: JSXIdentifier;
parent?: Node;
}
type JSXMemberExpressionObject = JSXIdentifier | JSXMemberExpression;
interface JSXExpressionContainer extends Span {
type: "JSXExpressionContainer";
expression: JSXExpression;
parent?: Node;
}
type JSXExpression = JSXEmptyExpression | Expression;
interface JSXEmptyExpression extends Span {
type: "JSXEmptyExpression";
parent?: Node;
}
type JSXAttributeItem = JSXAttribute | JSXSpreadAttribute;
interface JSXAttribute extends Span {
type: "JSXAttribute";
name: JSXAttributeName;
value: JSXAttributeValue | null;
parent?: Node;
}
interface JSXSpreadAttribute extends Span {
type: "JSXSpreadAttribute";
argument: Expression;
parent?: Node;
}
type JSXAttributeName = JSXIdentifier | JSXNamespacedName;
type JSXAttributeValue = StringLiteral | JSXExpressionContainer | JSXElement | JSXFragment;
interface JSXIdentifier extends Span {
type: "JSXIdentifier";
name: string;
parent?: Node;
}
type JSXChild = JSXText | JSXElement | JSXFragment | JSXExpressionContainer | JSXSpreadChild;
interface JSXSpreadChild extends Span {
type: "JSXSpreadChild";
expression: Expression;
parent?: Node;
}
interface JSXText extends Span {
type: "JSXText";
value: string;
raw: string | null;
parent?: Node;
}
interface TSThisParameter extends Span {
type: "Identifier";
decorators: [];
name: "this";
optional: false;
typeAnnotation: TSTypeAnnotation | null;
parent?: Node;
}
interface TSEnumDeclaration extends Span {
type: "TSEnumDeclaration";
id: BindingIdentifier;
body: TSEnumBody;
const: boolean;
declare: boolean;
parent?: Node;
}
interface TSEnumBody extends Span {
type: "TSEnumBody";
members: Array<TSEnumMember>;
parent?: Node;
}
interface TSEnumMember extends Span {
type: "TSEnumMember";
id: TSEnumMemberName;
initializer: Expression | null;
computed: boolean;
parent?: Node;
}
type TSEnumMemberName = IdentifierName | StringLiteral | TemplateLiteral;
interface TSTypeAnnotation extends Span {
type: "TSTypeAnnotation";
typeAnnotation: TSType;
parent?: Node;
}
interface TSLiteralType extends Span {
type: "TSLiteralType";
literal: TSLiteral;
parent?: Node;
}
type TSLiteral = BooleanLiteral | NumericLiteral | BigIntLiteral | StringLiteral | TemplateLiteral | UnaryExpression;
type TSType = TSAnyKeyword | TSBigIntKeyword | TSBooleanKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSArrayType | TSConditionalType | TSConstructorType | TSFunctionType | TSImportType | TSIndexedAccessType | TSInferType | TSIntersectionType | TSLiteralType | TSMappedType | TSNamedTupleMember | TSTemplateLiteralType | TSThisType | TSTupleType | TSTypeLiteral | TSTypeOperator | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUnionType | TSParenthesizedType | JSDocNullableType | JSDocNonNullableType | JSDocUnknownType;
interface TSConditionalType extends Span {
type: "TSConditionalType";
checkType: TSType;
extendsType: TSType;
trueType: TSType;
falseType: TSType;
parent?: Node;
}
interface TSUnionType extends Span {
type: "TSUnionType";
types: Array<TSType>;
parent?: Node;
}
interface TSIntersectionType extends Span {
type: "TSIntersectionType";
types: Array<TSType>;
parent?: Node;
}
interface TSParenthesizedType extends Span {
type: "TSParenthesizedType";
typeAnnotation: TSType;
parent?: Node;
}
interface TSTypeOperator extends Span {
type: "TSTypeOperator";
operator: TSTypeOperatorOperator;
typeAnnotation: TSType;
parent?: Node;
}
type TSTypeOperatorOperator = "keyof" | "unique" | "readonly";
interface TSArrayType extends Span {
type: "TSArrayType";
elementType: TSType;
parent?: Node;
}
interface TSIndexedAccessType extends Span {
type: "TSIndexedAccessType";
objectType: TSType;
indexType: TSType;
parent?: Node;
}
interface TSTupleType extends Span {
type: "TSTupleType";
elementTypes: Array<TSTupleElement>;
parent?: Node;
}
interface TSNamedTupleMember extends Span {
type: "TSNamedTupleMember";
label: IdentifierName;
elementType: TSTupleElement;
optional: boolean;
parent?: Node;
}
interface TSOptionalType extends Span {
type: "TSOptionalType";
typeAnnotation: TSType;
parent?: Node;
}
interface TSRestType extends Span {
type: "TSRestType";
typeAnnotation: TSType;
parent?: Node;
}
type TSTupleElement = TSOptionalType | TSRestType | TSType;
interface TSAnyKeyword extends Span {
type: "TSAnyKeyword";
parent?: Node;
}
interface TSStringKeyword extends Span {
type: "TSStringKeyword";
parent?: Node;
}
interface TSBooleanKeyword extends Span {
type: "TSBooleanKeyword";
parent?: Node;
}
interface TSNumberKeyword extends Span {
type: "TSNumberKeyword";
parent?: Node;
}
interface TSNeverKeyword extends Span {
type: "TSNeverKeyword";
parent?: Node;
}
interface TSIntrinsicKeyword extends Span {
type: "TSIntrinsicKeyword";
parent?: Node;
}
interface TSUnknownKeyword extends Span {
type: "TSUnknownKeyword";
parent?: Node;
}
interface TSNullKeyword extends Span {
type: "TSNullKeyword";
parent?: Node;
}
interface TSUndefinedKeyword extends Span {
type: "TSUndefinedKeyword";
parent?: Node;
}
interface TSVoidKeyword extends Span {
type: "TSVoidKeyword";
parent?: Node;
}
interface TSSymbolKeyword extends Span {
type: "TSSymbolKeyword";
parent?: Node;
}
interface TSThisType extends Span {
type: "TSThisType";
parent?: Node;
}
interface TSObjectKeyword extends Span {
type: "TSObjectKeyword";
parent?: Node;
}
interface TSBigIntKeyword extends Span {
type: "TSBigIntKeyword";
parent?: Node;
}
interface TSTypeReference extends Span {
type: "TSTypeReference";
typeName: TSTypeName;
typeArguments: TSTypeParameterInstantiation | null;
parent?: Node;
}
type TSTypeName = IdentifierReference | TSQualifiedName | ThisExpression;
interface TSQualifiedName extends Span {
type: "TSQualifiedName";
left: TSTypeName;
right: IdentifierName;
parent?: Node;
}
interface TSTypeParameterInstantiation extends Span {
type: "TSTypeParameterInstantiation";
params: Array<TSType>;
parent?: Node;
}
interface TSTypeParameter extends Span {
type: "TSTypeParameter";
name: BindingIdentifier;
constraint: TSType | null;
default: TSType | null;
in: boolean;
out: boolean;
const: boolean;
parent?: Node;
}
interface TSTypeParameterDeclaration extends Span {
type: "TSTypeParameterDeclaration";
params: Array<TSTypeParameter>;
parent?: Node;
}
interface TSTypeAliasDeclaration extends Span {
type: "TSTypeAliasDeclaration";
id: BindingIdentifier;
typeParameters: TSTypeParameterDeclaration | null;
typeAnnotation: TSType;
declare: boolean;
parent?: Node;
}
type TSAccessibility = "private" | "protected" | "public";
interface TSClassImplements extends Span {
type: "TSClassImplements";
expression: IdentifierReference | ThisExpression | MemberExpression;
typeArguments: TSTypeParameterInstantiation | null;
parent?: Node;
}
interface TSInterfaceDeclaration extends Span {
type: "TSInterfaceDeclaration";
id: BindingIdentifier;
typeParameters: TSTypeParameterDeclaration | null;
extends: Array<TSInterfaceHeritage>;
body: TSInterfaceBody;
declare: boolean;
parent?: Node;
}
interface TSInterfaceBody extends Span {
type: "TSInterfaceBody";
body: Array<TSSignature>;
parent?: Node;
}
interface TSPropertySignature extends Span {
type: "TSPropertySignature";
computed: boolean;
optional: boolean;
readonly: boolean;
key: PropertyKey;
typeAnnotation: TSTypeAnnotation | null;
accessibility: null;
static: false;
parent?: Node;
}
type TSSignature = TSIndexSignature | TSPropertySignature | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSMethodSignature;
interface TSIndexSignature extends Span {
type: "TSIndexSignature";
parameters: Array<TSIndexSignatureName>;
typeAnnotation: TSTypeAnnotation;
readonly: boolean;
static: boolean;
accessibility: null;
parent?: Node;
}
interface TSCallSignatureDeclaration extends Span {
type: "TSCallSignatureDeclaration";
typeParameters: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType: TSTypeAnnotation | null;
parent?: Node;
}
type TSMethodSignatureKind = "method" | "get" | "set";
interface TSMethodSignature extends Span {
type: "TSMethodSignature";
key: PropertyKey;
computed: boolean;
optional: boolean;
kind: TSMethodSignatureKind;
typeParameters: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType: TSTypeAnnotation | null;
accessibility: null;
readonly: false;
static: false;
parent?: Node;
}
interface TSConstructSignatureDeclaration extends Span {
type: "TSConstructSignatureDeclaration";
typeParameters: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType: TSTypeAnnotation | null;
parent?: Node;
}
interface TSIndexSignatureName extends Span {
type: "Identifier";
decorators: [];
name: string;
optional: false;
typeAnnotation: TSTypeAnnotation;
parent?: Node;
}
interface TSInterfaceHeritage extends Span {
type: "TSInterfaceHeritage";
expression: Expression;
typeArguments: TSTypeParameterInstantiation | null;
parent?: Node;
}
interface TSTypePredicate extends Span {
type: "TSTypePredicate";
parameterName: TSTypePredicateName;
asserts: boolean;
typeAnnotation: TSTypeAnnotation | null;
parent?: Node;
}
type TSTypePredicateName = IdentifierName | TSThisType;
interface TSModuleDeclaration extends Span {
type: "TSModuleDeclaration";
id: BindingIdentifier | StringLiteral | TSQualifiedName;
body: TSModuleBlock | null;
kind: TSModuleDeclarationKind;
declare: boolean;
global: false;
parent?: Node;
}
type TSModuleDeclarationKind = "module" | "namespace";
interface TSGlobalDeclaration extends Span {
type: "TSModuleDeclaration";
id: IdentifierName;
body: TSModuleBlock;
kind: "global";
declare: boolean;
global: true;
parent?: Node;
}
interface TSModuleBlock extends Span {
type: "TSModuleBlock";
body: Array<Directive | Statement>;
parent?: Node;
}
interface TSTypeLiteral extends Span {
type: "TSTypeLiteral";
members: Array<TSSignature>;
parent?: Node;
}
interface TSInferType extends Span {
type: "TSInferType";
typeParameter: TSTypeParameter;
parent?: Node;
}
interface TSTypeQuery extends Span {
type: "TSTypeQuery";
exprName: TSTypeQueryExprName;
typeArguments: TSTypeParameterInstantiation | null;
parent?: Node;
}
type TSTypeQueryExprName = TSImportType | TSTypeName;
interface TSImportType extends Span {
type: "TSImportType";
source: StringLiteral;
options: ObjectExpression | null;
qualifier: TSImportTypeQualifier | null;
typeArguments: TSTypeParameterInstantiation | null;
parent?: Node;
}
type TSImportTypeQualifier = IdentifierName | TSImportTypeQualifiedName;
interface TSImportTypeQualifiedName extends Span {
type: "TSQualifiedName";
left: TSImportTypeQualifier;
right: IdentifierName;
parent?: Node;
}
interface TSFunctionType extends Span {
type: "TSFunctionType";
typeParameters: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType: TSTypeAnnotation;
parent?: Node;
}
interface TSConstructorType extends Span {
type: "TSConstructorType";
abstract: boolean;
typeParameters: TSTypeParameterDeclaration | null;
params: ParamPattern[];
returnType: TSTypeAnnotation;
parent?: Node;
}
interface TSMappedType extends Span {
type: "TSMappedType";
key: TSTypeParameter["name"];
constraint: TSTypeParameter["constraint"];
nameType: TSType | null;
typeAnnotation: TSType | null;
optional: TSMappedTypeModifierOperator | false;
readonly: TSMappedTypeModifierOperator | null;
parent?: Node;
}
type TSMappedTypeModifierOperator = true | "+" | "-";
interface TSTemplateLiteralType extends Span {
type: "TSTemplateLiteralType";
quasis: Array<TemplateElement>;
types: Array<TSType>;
parent?: Node;
}
interface TSAsExpression extends Span {
type: "TSAsExpression";
expression: Expression;
typeAnnotation: TSType;
parent?: Node;
}
interface TSSatisfiesExpression extends Span {
type: "TSSatisfiesExpression";
expression: Expression;
typeAnnotation: TSType;
parent?: Node;
}
interface TSTypeAssertion extends Span {
type: "TSTypeAssertion";
typeAnnotation: TSType;
expression: Expression;
parent?: Node;
}
interface TSImportEqualsDeclaration extends Span {
type: "TSImportEqualsDeclaration";
id: BindingIdentifier;
moduleReference: TSModuleReference;
importKind: ImportOrExportKind;
parent?: Node;
}
type TSModuleReference = TSExternalModuleReference | TSTypeName;
interface TSExternalModuleReference extends Span {
type: "TSExternalModuleReference";
expression: StringLiteral;
parent?: Node;
}
interface TSNonNullExpression extends Span {
type: "TSNonNullExpression";
expression: Expression;
parent?: Node;
}
interface Decorator extends Span {
type: "Decorator";
expression: Expression;
parent?: Node;
}
interface TSExportAssignment extends Span {
type: "TSExportAssignment";
expression: Expression;
parent?: Node;
}
interface TSNamespaceExportDeclaration extends Span {
type: "TSNamespaceExportDeclaration";
id: IdentifierName;
parent?: Node;
}
interface TSInstantiationExpression extends Span {
type: "TSInstantiationExpression";
expression: Expression;
typeArguments: TSTypeParameterInstantiation;
parent?: Node;
}
type ImportOrExportKind = "value" | "type";
interface JSDocNullableType extends Span {
type: "TSJSDocNullableType";
typeAnnotation: TSType;
postfix: boolean;
parent?: Node;
}
interface JSDocNonNullableType extends Span {
type: "TSJSDocNonNullableType";
typeAnnotation: TSType;
postfix: boolean;
parent?: Node;
}
interface JSDocUnknownType extends Span {
type: "TSJSDocUnknownType";
parent?: Node;
}
type AssignmentOperator = "=" | "+=" | "-=" | "*=" | "/=" | "%=" | "**=" | "<<=" | ">>=" | ">>>=" | "|=" | "^=" | "&=" | "||=" | "&&=" | "??=";
type BinaryOperator = "==" | "!=" | "===" | "!==" | "<" | "<=" | ">" | ">=" | "+" | "-" | "*" | "/" | "%" | "**" | "<<" | ">>" | ">>>" | "|" | "^" | "&" | "in" | "instanceof";
type LogicalOperator = "||" | "&&" | "??";
type UnaryOperator = "+" | "-" | "!" | "~" | "typeof" | "void" | "delete";
type UpdateOperator = "++" | "--";
interface Span {
start: number;
end: number;
range?: [number, number];
}
type ModuleKind = "script" | "module";
type Node = Program | IdentifierName | IdentifierReference | BindingIdentifier | LabelIdentifier | ThisExpression | ArrayExpression | ObjectExpression | ObjectProperty | TemplateLiteral | TaggedTemplateExpression | TemplateElement | ComputedMemberExpression | StaticMemberExpression | PrivateFieldExpression | CallExpression | NewExpression | MetaProperty | SpreadElement | UpdateExpression | UnaryExpression | BinaryExpression | PrivateInExpression | LogicalExpression | ConditionalExpression | AssignmentExpression | ArrayAssignmentTarget | ObjectAssignmentTarget | AssignmentTargetRest | AssignmentTargetWithDefault | AssignmentTargetPropertyIdentifier | AssignmentTargetPropertyProperty | SequenceExpression | Super | AwaitExpression | ChainExpression | ParenthesizedExpression | Directive | Hashbang | BlockStatement | VariableDeclaration | VariableDeclarator | EmptyStatement | ExpressionStatement | IfStatement | DoWhileStatement | WhileStatement | ForStatement | ForInStatement | ForOfStatement | ContinueStatement | BreakStatement | ReturnStatement | WithStatement | SwitchStatement | SwitchCase | LabeledStatement | ThrowStatement | TryStatement | CatchClause | DebuggerStatement | AssignmentPattern | ObjectPattern | BindingProperty | ArrayPattern | BindingRestElement | Function | FunctionBody | ArrowFunctionExpression | YieldExpression | Class | ClassBody | MethodDefinition | PropertyDefinition | PrivateIdentifier | StaticBlock | AccessorProperty | ImportExpression | ImportDeclaration | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportAttribute | ExportNamedDeclaration | ExportDefaultDeclaration | ExportAllDeclaration | ExportSpecifier | V8IntrinsicExpression | BooleanLiteral | NullLiteral | NumericLiteral | StringLiteral | BigIntLiteral | RegExpLiteral | JSXElement | JSXOpeningElement | JSXClosingElement | JSXFragment | JSXOpeningFragment | JSXClosingFragment | JSXNamespacedName | JSXMemberExpression | JSXExpressionContainer | JSXEmptyExpression | JSXAttribute | JSXSpreadAttribute | JSXIdentifier | JSXSpreadChild | JSXText | TSThisParameter | TSEnumDeclaration | TSEnumBody | TSEnumMember | TSTypeAnnotation | TSLiteralType | TSConditionalType | TSUnionType | TSIntersectionType | TSParenthesizedType | TSTypeOperator | TSArrayType | TSIndexedAccessType | TSTupleType | TSNamedTupleMember | TSOptionalType | TSRestType | TSAnyKeyword | TSStringKeyword | TSBooleanKeyword | TSNumberKeyword | TSNeverKeyword | TSIntrinsicKeyword | TSUnknownKeyword | TSNullKeyword | TSUndefinedKeyword | TSVoidKeyword | TSSymbolKeyword | TSThisType | TSObjectKeyword | TSBigIntKeyword | TSTypeReference | TSQualifiedName | TSTypeParameterInstantiation | TSTypeParameter | TSTypeParameterDeclaration | TSTypeAliasDeclaration | TSClassImplements | TSInterfaceDeclaration | TSInterfaceBody | TSPropertySignature | TSIndexSignature | TSCallSignatureDeclaration | TSMethodSignature | TSConstructSignatureDeclaration | TSIndexSignatureName | TSInterfaceHeritage | TSTypePredicate | TSModuleDeclaration | TSGlobalDeclaration | TSModuleBlock | TSTypeLiteral | TSInferType | TSTypeQuery | TSImportType | TSImportTypeQualifiedName | TSFunctionType | TSConstructorType | TSMappedType | TSTemplateLiteralType | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | Decorator | TSExportAssignment | TSNamespaceExportDeclaration | TSInstantiationExpression | JSDocNullableType | JSDocNonNullableType | JSDocUnknownType | ParamPattern;
//#endregion
//#region ../../node_modules/rolldown/dist/shared/binding-CY7Z709f.d.mts
interface CodegenOptions {
/**
* Remove whitespace.
*
* @default true
*/
removeWhitespace?: boolean;
}
interface CompressOptions {
/**
* Set desired EcmaScript standard version for output.
*
* Set `esnext` to enable all target highering.
*
* Example:
*
* * `'es2015'`
* * `['es2020', 'chrome58', 'edge16', 'firefox57', 'node12', 'safari11']`
*
* @default 'esnext'
*
* @see [esbuild#target](https://esbuild.github.io/api/#target)
*/
target?: string | Array<string>;
/**
* Pass true to discard calls to `console.*`.
*
* @default false
*/
dropConsole?: boolean;
/**
* Remove `debugger;` statements.
*
* @default true
*/
dropDebugger?: boolean;
/**
* Pass `true` to drop unreferenced functions and variables.
*
* Simple direct variable assignments do not count as references unless set to `keep_assign`.
* @default true
*/
unused?: boolean | 'keep_assign';
/** Keep function / class names. */
keepNames?: CompressOptionsKeepNames;
/**
* Join consecutive var, let and const statements.
*
* @default true
*/
joinVars?: boolean;
/**
* Join consecutive simple statements using the comma operator.
*
* `a; b` -> `a, b`
*
* @default true
*/
sequences?: boolean;
/**
* Set of label names to drop from the code.
*
* Labeled statements matching these names will be removed during minification.
*
* @default []
*/
dropLabels?: Array<string>;
/** Limit the maximum number of iterations for debugging purpose. */
maxIterations?: number;
/** Treeshake options. */
treeshake?: TreeShakeOptions;
}
interface CompressOptionsKeepNames {
/**
* Keep function names so that `Function.prototype.name` is preserved.
*
* This does not guarantee that the `undefined` name is preserved.
*
* @default false
*/
function: boolean;
/**
* Keep class names so that `Class.prototype.name` is preserved.
*
* This does not guarantee that the `undefined` name is preserved.
*
* @default false
*/
class: boolean;
}
interface MangleOptions {
/**
* Pass `true` to mangle names declared in the top level scope.
*
* @default false
*/
toplevel?: boolean;
/**
* Preserve `name` property for functions and classes.
*
* @default false
*/
keepNames?: boolean | MangleOptionsKeepNames;
/** Debug mangled names. */
debug?: boolean;
}
interface MangleOptionsKeepNames {
/**
* Preserve `name` property for functions.
*
* @default false
*/
function: boolean;
/**
* Preserve `name` property for classes.
*
* @default false
*/
class: boolean;
}
/**
* Minify asynchronously.
*
* Note: This function can be slower than `minifySync` due to the overhead of spawning a thread.
*/
interface MinifyOptions {
/** Use when minifying an ES module. */
module?: boolean;
compress?: boolean | CompressOptions;
mangle?: boolean | MangleOptions;
codegen?: boolean | CodegenOptions;
sourcemap?: boolean;
}
interface TreeShakeOptions {
/**
* Whether to respect the pure annotations.
*
* Pure annotations are comments that mark an expression as pure.
* For example: @__PURE__ or #__NO_SIDE_EFFECTS__.
*
* @default true
*/
annotations?: boolean;
/**
* Whether to treat this function call as pure.
*
* This function is called for normal function calls, new calls, and
* tagged template calls.
*/
manualPureFunctions?: Array<string>;
/**
* Whether property read accesses have side effects.
*
* @default 'always'
*/
propertyReadSideEffects?: boolean | 'always';
/**
* Whether accessing a global variable has side effects.
*
* Accessing a non-existing global variable will throw an error.
* Global variable may be a getter that has side effects.
*
* @default true
*/
unknownGlobalSideEffects?: boolean;
}
interface ParserOptions {
/** Treat the source text as `js`, `jsx`, `ts`, `tsx` or `dts`. */
lang?: 'js' | 'jsx' | 'ts' | 'tsx' | 'dts';
/** Treat the source text as `script` or `module` code. */
sourceType?: 'script' | 'module' | 'unambiguous' | undefined;
/**
* Return an AST which includes TypeScript-related properties, or excludes them.
*
* `'js'` is default for JS / JSX files.
* `'ts'` is default for TS / TSX files.
* The type of the file is determined from `lang` option, or extension of provided `filename`.
*/
astType?: 'js' | 'ts';
/**
* Controls whether the `range` property is included on AST nodes.
* The `range` property is a `[number, number]` which indicates the start/end offsets
* of the node in the file contents.
*
* @default false
*/
range?: boolean;
/**
* Emit `ParenthesizedExpression` and `TSParenthesizedType` in AST.
*
* If this option is true, parenthesized expressions are represented by
* (non-standard) `ParenthesizedExpression` and `TSParenthesizedType` nodes that
* have a single `expression` property containing the expression inside parentheses.
*
* @default true
*/
preserveParens?: boolean;
/**
* Produce semantic errors with an additional AST pass.
* Semantic errors depend on symbols and scopes, where the parser does not construct.
* This adds a small performance overhead.
*
* @default false
*/
showSemanticErrors?: boolean;
}
interface CompilerAssumptions {
ignoreFunctionLength?: boolean;
noDocumentAll?: boolean;
objectRestNoSymbols?: boolean;
pureGetters?: boolean;
/**
* When using public class fields, assume that they don't shadow any getter in the current class,
* in its subclasses or in its superclass. Thus, it's safe to assign them rather than using
* `Object.defineProperty`.
*
* For example:
*
* Input:
* ```js
* class Test {
* field = 2;
*
* static staticField = 3;
* }
* ```
*
* When `set_public_class_fields` is `true`, the output will be:
* ```js
* class Test {
* constructor() {
* this.field = 2;
* }
* }
* Test.staticField = 3;
* ```
*
* Otherwise, the output will be:
* ```js
* import _defineProperty from "@oxc-project/runtime/helpers/defineProperty";
* class Test {
* constructor() {
* _defineProperty(this, "field", 2);
* }
* }
* _defineProperty(Test, "staticField", 3);
* ```
*
* NOTE: For TypeScript, if you wanted behavior is equivalent to `useDefineForClassFields: false`, you should
* set both `set_public_class_fields` and [`crate::TypeScriptOptions::remove_class_fields_without_initializer`]
* to `true`.
*/
setPublicClassFields?: boolean;
}
interface DecoratorOptions {
/**
* Enables experimental support for decorators, which is a version of decorators that predates the TC39 standardization process.
*
* Decorators are a language feature which hasn’t yet been fully ratified into the JavaScript specification.
* This means that the implementation version in TypeScript may differ from the implementation in JavaScript when it it decided by TC39.
*
* @see https://www.typescriptlang.org/tsconfig/#experimentalDecorators
* @default false
*/
legacy?: boolean;
/**
* Enables emitting decorator metadata.
*
* This option the same as [emitDecoratorMetadata](https://www.typescriptlang.org/tsconfig/#emitDecoratorMetadata)
* in TypeScript, and it only works when `legacy` is true.
*
* @see https://www.typescriptlang.org/tsconfig/#emitDecoratorMetadata
* @default false
*/
emitDecoratorMetadata?: boolean;
}
type HelperMode =
/**
* Runtime mode (default): Helper functions are imported from a runtime package.
*
* Example:
*
* ```js
* import helperName from "@oxc-project/runtime/helpers/helperName";
* helperName(...arguments);
* ```
*/
'Runtime' |
/**
* External mode: Helper functions are accessed from a global `babelHelpers` object.
*
* Example:
*
* ```js
* babelHelpers.helperName(...arguments);
* ```
*/
'External';
interface Helpers {
mode?: HelperMode;
}
/**
* TypeScript Isolated Declarations for Standalone DTS Emit (async)
*
* Note: This function can be slower than `isolatedDeclarationSync` due to the overhead of spawning a thread.
*/
interface IsolatedDeclarationsOptions {
/**
* Do not emit declarations for code that has an @internal annotation in its JSDoc comment.
* This is an internal compiler option; use at your own risk, because the compiler does not check that the result is valid.
*
* Default: `false`
*
* See <https://www.typescriptlang.org/tsconfig/#stripInternal>
*/
stripInternal?: boolean;
sourcemap?: boolean;
}
/**
* Configure how TSX and JSX are transformed.
*
* @see {@link https://babeljs.io/docs/babel-plugin-transform-react-jsx#options}
*/
interface JsxOptions {
/**
* Decides which runtime to use.
*
* - 'automatic' - auto-import the correct JSX factories
* - 'classic' - no auto-import
*
* @default 'automatic'
*/
runtime?: 'classic' | 'automatic';
/**
* Emit development-specific information, such as `__source` and `__self`.
*
* @default false
*
* @see {@link https://babeljs.io/docs/babel-plugin-transform-react-jsx-development}
*/
development?: boolean;
/**
* Toggles whether or not to throw an error if an XML namespaced tag name
* is used.
*
* Though the JSX spec allows this, it is disabled by default since React's
* JSX does not currently have support for it.
*
* @default true
*/
throwIfNamespace?: boolean;
/**
* Enables `@babel/plugin-transform-react-pure-annotations`.
*
* It will mark JSX elements and top-level Reac