diff --git a/lib/ts-morph.d.ts b/lib/ts-morph.d.ts index d0c983d05..c2c510685 100644 --- a/lib/ts-morph.d.ts +++ b/lib/ts-morph.d.ts @@ -3450,6 +3450,10 @@ export declare class ArrayBindingPattern extends Node { * Gets the array binding pattern's elements. */ getElements(): (BindingElement | OmittedExpression)[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const BindingElementBase: Constructor & Constructor & typeof Node; @@ -3475,6 +3479,10 @@ export declare class BindingElement extends BindingElementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ObjectBindingPattern extends Node { @@ -3482,6 +3490,10 @@ export declare class ObjectBindingPattern extends Node * Gets the object binding pattern's elements. */ getElements(): BindingElement[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare function AbstractableNode>(Base: T): Constructor & T; @@ -3994,6 +4006,10 @@ export declare class ClassDeclaration extends ClassDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ClassElement extends Node { @@ -4006,6 +4022,10 @@ export declare class ClassElement e declare const ClassExpressionBase: Constructor & typeof PrimaryExpression; export declare class ClassExpression extends ClassExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ConstructorDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof ClassElement; @@ -4043,6 +4063,10 @@ export declare class ConstructorDeclaration extends ConstructorDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const GetAccessorDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof ClassElement; @@ -4065,6 +4089,10 @@ export declare class GetAccessorDeclaration extends GetAccessorDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const MethodDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof ClassElement; @@ -4102,6 +4130,10 @@ export declare class MethodDeclaration extends MethodDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const PropertyDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof ClassElement; @@ -4120,6 +4152,10 @@ export declare class PropertyDeclaration extends PropertyDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const SetAccessorDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof ClassElement; @@ -4142,6 +4178,10 @@ export declare class SetAccessorDeclaration extends SetAccessorDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class CommentRange extends TextRange { @@ -4210,6 +4250,10 @@ export declare class ComputedPropertyName extends Node * Gets the expression. */ getExpression(): Expression; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const IdentifierBase: Constructor & Constructor & typeof PrimaryExpression; @@ -4235,10 +4279,14 @@ export declare class Identifier extends IdentifierBase { * This is similar to "go to implementation." */ getImplementations(): ImplementationLocation[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare type NodePropertyToWrappedType> = NodeType[KeyName] extends ts.NodeArray | undefined ? CompilerNodeToWrappedType[] | undefined : NodeType[KeyName] extends ts.NodeArray ? CompilerNodeToWrappedType[] : NodeType[KeyName] extends ts.Node ? CompilerNodeToWrappedType : NonNullableNodeType extends ts.Node ? CompilerNodeToWrappedType | undefined : NodeType[KeyName]; -export declare type NodeParentType = NodeType extends ts.SourceFile ? CompilerNodeToWrappedType | undefined : ts.Node extends NodeType ? CompilerNodeToWrappedType | undefined : CompilerNodeToWrappedType; +export declare type NodeParentType = NodeType extends ts.SourceFile ? undefined : ts.Node extends NodeType ? CompilerNodeToWrappedType | undefined : CompilerNodeToWrappedType; export declare class Node { /** @@ -4585,11 +4633,11 @@ export declare class Node { /** * Get the node's parent. */ - getParent>(): T; + getParent(): Node | undefined; /** * Gets the parent or throws an error if it doesn't exist. */ - getParentOrThrow>(): NonNullable; + getParentOrThrow(): Node; /** * Goes up the parents (ancestors) of the node while a condition is true. * Throws if the initial parent doesn't match the condition. @@ -4877,6 +4925,10 @@ export declare class QualifiedName extends Node { * Gets the right identifier of the qualified name. */ getRight(): Identifier; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare enum Scope { @@ -4899,6 +4951,10 @@ export declare class SyntaxList extends Node { * @returns The children that were inserted. */ insertChildText(index: number, textOrWriterFunction: string | WriterFunction | ReadonlyArray): Node[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class TextRange { @@ -5085,6 +5141,10 @@ export declare class Decorator extends DecoratorBase { * Gets the structure equivalent to this node. */ getStructure(): DecoratorStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare function JSDocPropertyLikeTag>(Base: T): Constructor & T; @@ -5145,18 +5205,30 @@ export declare class JSDoc extends JSDocBase { * Gets the structure equivalent to this node. */ getStructure(): JSDocStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** * JS doc augments tag node. */ export declare class JSDocAugmentsTag extends JSDocTag { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** * JS doc class tag node. */ export declare class JSDocClassTag extends JSDocTag { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JSDocFunctionTypeBase: Constructor & typeof JSDocType; @@ -5165,6 +5237,10 @@ declare const JSDocFunctionTypeBase: Constructor & typeof * JS doc function type. */ export declare class JSDocFunctionType extends JSDocFunctionTypeBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JSDocParameterTagBase: Constructor & typeof JSDocTag; @@ -5173,6 +5249,10 @@ declare const JSDocParameterTagBase: Constructor & typeof * JS doc parameter tag node. */ export declare class JSDocParameterTag extends JSDocParameterTagBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JSDocPropertyTagBase: Constructor & typeof JSDocTag; @@ -5181,6 +5261,10 @@ declare const JSDocPropertyTagBase: Constructor & typeof J * JS doc property tag node. */ export declare class JSDocPropertyTag extends JSDocPropertyTagBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -5191,6 +5275,10 @@ export declare class JSDocReturnTag extends JSDocTag { * Gets the type expression node of the JS doc property return tag. */ getTypeExpression(): JSDocTypeExpression | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -5201,6 +5289,10 @@ export declare class JSDocSignature extends JSDocType { * Gets the type node of the JS doc signature. */ getTypeNode(): JSDocReturnTag | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -5250,6 +5342,10 @@ export declare class JSDocType extends Ty * JS doc type def tag node. */ export declare class JSDocTypedefTag extends JSDocTag { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -5260,12 +5356,20 @@ export declare class JSDocTypeTag extends JSDocTag { * Gets the type expression node of the JS doc property type tag. */ getTypeExpression(): JSDocTypeExpression | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** * JS doc unknown tag node. */ export declare class JSDocUnknownTag extends JSDocTag { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -5276,6 +5380,10 @@ export declare class JSDocTypeExpression extends TypeNode; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class CommentEnumMember extends Node { @@ -5381,6 +5489,10 @@ export declare class EnumDeclaration extends EnumDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const EnumMemberBase: Constructor & Constructor & Constructor & typeof Node; @@ -5411,6 +5523,10 @@ export declare class EnumMember extends EnumMemberBase { * Gets the structure equivalent to this node. */ getStructure(): EnumMemberStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ArrayDestructuringAssignmentBase: typeof AssignmentExpression; @@ -5420,6 +5536,10 @@ export declare class ArrayDestructuringAssignment extends ArrayDestructuringAssi * Gets the left array literal expression of the array destructuring assignment. */ getLeft(): ArrayLiteralExpression; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ArrayLiteralExpression extends PrimaryExpression { @@ -5471,11 +5591,19 @@ export declare class ArrayLiteralExpression extends PrimaryExpression; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const AsExpressionBase: Constructor & Constructor & typeof Expression; export declare class AsExpression extends AsExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const AssignmentExpressionBase: typeof BinaryExpression; @@ -5490,6 +5618,10 @@ export declare class AssignmentExpression & typeof UnaryExpression; export declare class AwaitExpression extends AwaitExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const BinaryExpressionBase: typeof Expression; @@ -5525,6 +5657,10 @@ export declare class CommaListExpression extends CommaListExpressionBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ConditionalExpressionBase: typeof Expression; @@ -5550,11 +5686,19 @@ export declare class ConditionalExpression extends ConditionalExpressionBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const DeleteExpressionBase: Constructor & typeof UnaryExpression; export declare class DeleteExpression extends DeleteExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ElementAccessExpressionBase: Constructor & typeof MemberExpression; @@ -5645,6 +5789,10 @@ declare type UnaryExpressionedNodeExtensionType = Node { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class LeftHandSideExpression extends UpdateExpression { @@ -5665,16 +5813,28 @@ export declare class MetaProperty extends MetaPropertyBase { * Gets the keyword token. */ getKeywordToken(): SyntaxKind.ImportKeyword | SyntaxKind.NewKeyword; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NewExpressionBase: Constructor & Constructor & Constructor & typeof PrimaryExpression; export declare class NewExpression extends NewExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NonNullExpressionBase: Constructor & typeof LeftHandSideExpression; export declare class NonNullExpression extends NonNullExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class CommentObjectLiteralElement extends ObjectLiteralElement { @@ -5687,6 +5847,10 @@ export declare class ObjectDestructuringAssignment extends ObjectDestructuringAs * Gets the left object literal expression of the object destructuring assignment. */ getLeft(): ObjectLiteralExpression; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ObjectLiteralElement extends Node { @@ -5889,6 +6053,10 @@ export declare class ObjectLiteralExpression extends ObjectLiteralExpressionBase * @param structures - Structures that represent the set accessors to insert. */ insertSetAccessors(index: number, structures: ReadonlyArray>): SetAccessorDeclaration[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const PropertyAssignmentBase: Constructor & Constructor & Constructor & typeof ObjectLiteralElement; @@ -5914,6 +6082,10 @@ export declare class PropertyAssignment extends PropertyAssignmentBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ShorthandPropertyAssignmentBase: Constructor & Constructor & Constructor & typeof ObjectLiteralElement; @@ -5961,6 +6133,10 @@ export declare class ShorthandPropertyAssignment extends ShorthandPropertyAssign * Gets the structure equivalent to this node. */ getStructure(): ShorthandPropertyAssignmentStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const SpreadAssignmentBase: Constructor & typeof ObjectLiteralElement; @@ -5975,21 +6151,37 @@ export declare class SpreadAssignment extends SpreadAssignmentBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const OmittedExpressionBase: typeof Expression; export declare class OmittedExpression extends OmittedExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ParenthesizedExpressionBase: Constructor & typeof Expression; export declare class ParenthesizedExpression extends ParenthesizedExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const PartiallyEmittedExpressionBase: Constructor & typeof Expression; export declare class PartiallyEmittedExpression extends PartiallyEmittedExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const PostfixUnaryExpressionBase: typeof UnaryExpression; @@ -6003,6 +6195,10 @@ export declare class PostfixUnaryExpression extends PostfixUnaryExpressionBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const PrefixUnaryExpressionBase: typeof UnaryExpression; @@ -6016,6 +6212,10 @@ export declare class PrefixUnaryExpression extends PrefixUnaryExpressionBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class PrimaryExpression extends MemberExpression { @@ -6029,36 +6229,64 @@ export declare class PropertyAccessExpression & typeof Expression; export declare class SpreadElement extends SpreadElementBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const SuperElementAccessExpressionBase: Constructor & typeof ElementAccessExpression; export declare class SuperElementAccessExpression extends SuperElementAccessExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const SuperExpressionBase: typeof PrimaryExpression; export declare class SuperExpression extends SuperExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const SuperPropertyAccessExpressionBase: Constructor & typeof PropertyAccessExpression; export declare class SuperPropertyAccessExpression extends SuperPropertyAccessExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ThisExpressionBase: typeof PrimaryExpression; export declare class ThisExpression extends ThisExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TypeAssertionBase: Constructor & Constructor & typeof UnaryExpression; export declare class TypeAssertion extends TypeAssertionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TypeOfExpressionBase: Constructor & typeof UnaryExpression; export declare class TypeOfExpression extends TypeOfExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class UnaryExpression extends Expression { @@ -6070,6 +6298,10 @@ export declare class UpdateExpression & typeof UnaryExpression; export declare class VoidExpression extends VoidExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const YieldExpressionBase: Constructor & typeof Expression; @@ -6083,6 +6315,10 @@ export declare class YieldExpression extends YieldExpressionBase; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ArrowFunctionBase: Constructor & Constructor & Constructor & Constructor & typeof Expression; @@ -6092,6 +6328,10 @@ export declare class ArrowFunction extends ArrowFunctionBase { * Gets the equals greater than token of the arrow function. */ getEqualsGreaterThan(): Node>; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const FunctionDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof Statement; @@ -6133,11 +6373,19 @@ export declare class FunctionDeclaration extends FunctionDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const FunctionExpressionBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof PrimaryExpression; export declare class FunctionExpression extends FunctionExpressionBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare function FunctionLikeDeclaration>(Base: T): Constructor & T; @@ -6227,6 +6475,10 @@ export declare class ParameterDeclaration extends ParameterDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class HeritageClause extends Node { @@ -6248,6 +6500,10 @@ export declare class HeritageClause extends Node { * @param expressionNode - Expression to remove. */ removeExpression(expressionNode: ExpressionWithTypeArguments): this; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const CallSignatureDeclarationBase: Constructor & Constructor & Constructor & Constructor & typeof TypeElement; @@ -6262,6 +6518,10 @@ export declare class CallSignatureDeclaration extends CallSignatureDeclarationBa * Gets the structure equivalent to this node. */ getStructure(): CallSignatureDeclarationStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class CommentTypeElement extends TypeElement { @@ -6279,6 +6539,10 @@ export declare class ConstructSignatureDeclaration extends ConstructSignatureDec * Gets the structure equivalent to this node. */ getStructure(): ConstructSignatureDeclarationStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const IndexSignatureDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & typeof TypeElement; @@ -6319,6 +6583,10 @@ export declare class IndexSignatureDeclaration extends IndexSignatureDeclaration * Gets the structure equivalent to this node. */ getStructure(): IndexSignatureDeclarationStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const InterfaceDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof Statement; @@ -6347,6 +6615,10 @@ export declare class InterfaceDeclaration extends InterfaceDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const MethodSignatureBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof TypeElement; @@ -6361,6 +6633,10 @@ export declare class MethodSignature extends MethodSignatureBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const PropertySignatureBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof TypeElement; @@ -6375,6 +6651,10 @@ export declare class PropertySignature extends PropertySignatureBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class TypeElement extends Node { @@ -6478,14 +6758,26 @@ export declare class JsxAttribute extends JsxAttributeBase { * Gets the structure equivalent to this node. */ getStructure(): JsxAttributeStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JsxClosingElementBase: Constructor & typeof Node; export declare class JsxClosingElement extends JsxClosingElementBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class JsxClosingFragment extends Expression { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JsxElementBase: typeof PrimaryExpression; @@ -6522,6 +6814,10 @@ export declare class JsxElement extends JsxElementBase { * Gets the structure equivalent to this node. */ getStructure(): JsxElementStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class JsxExpression extends Expression { @@ -6541,6 +6837,10 @@ export declare class JsxExpression extends Expression { * Gets the expression or returns undefined if it doesn't exist */ getExpression(): Expression | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class JsxFragment extends PrimaryExpression { @@ -6556,14 +6856,26 @@ export declare class JsxFragment extends PrimaryExpression { * Gets the closing fragment. */ getClosingFragment(): JsxClosingFragment; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JsxOpeningElementBase: Constructor & Constructor & typeof Expression; export declare class JsxOpeningElement extends JsxOpeningElementBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class JsxOpeningFragment extends Expression { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JsxSelfClosingElementBase: Constructor & Constructor & typeof PrimaryExpression; @@ -6578,6 +6890,10 @@ export declare class JsxSelfClosingElement extends JsxSelfClosingElementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JsxSpreadAttributeBase: typeof Node; @@ -6605,6 +6921,10 @@ export declare class JsxSpreadAttribute extends JsxSpreadAttributeBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const JsxTextBase: Constructor & typeof Node; @@ -6614,6 +6934,10 @@ export declare class JsxText extends JsxTextBase { * Gets if the JSX text contains only white spaces. */ containsOnlyTriviaWhiteSpaces(): boolean; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export interface ImplementedKindToNodeMappings { @@ -6873,11 +7197,19 @@ export declare class BooleanLiteral extends BooleanLiteralBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NullLiteralBase: typeof PrimaryExpression; export declare class NullLiteral extends NullLiteralBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NumericLiteralBase: typeof LiteralExpression; @@ -6892,6 +7224,10 @@ export declare class NumericLiteral extends NumericLiteralBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -6926,6 +7262,10 @@ export declare class RegularExpressionLiteral extends RegularExpressionLiteralBa * @param regExp - Regular expression. */ setLiteralValue(regExp: RegExp): this; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const StringLiteralBase: typeof LiteralExpression; @@ -6946,6 +7286,10 @@ export declare class StringLiteral extends StringLiteralBase { * Gets the quote kind. */ getQuoteKind(): QuoteKind; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NoSubstitutionTemplateLiteralBase: typeof LiteralExpression; @@ -6963,6 +7307,10 @@ export declare class NoSubstitutionTemplateLiteral extends NoSubstitutionTemplat * @returns The new node if the kind changed; the current node otherwise. */ setLiteralValue(value: string): TemplateLiteral; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class TaggedTemplateExpression extends MemberExpression { @@ -6979,6 +7327,10 @@ export declare class TaggedTemplateExpression extends MemberExpression; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TemplateExpressionBase: typeof PrimaryExpression; @@ -7000,16 +7352,28 @@ export declare class TemplateExpression extends TemplateExpressionBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TemplateHeadBase: Constructor & typeof Node; export declare class TemplateHead extends TemplateHeadBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TemplateMiddleBase: Constructor & typeof Node; export declare class TemplateMiddle extends TemplateMiddleBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TemplateSpanBase: Constructor & typeof Node; @@ -7019,11 +7383,19 @@ export declare class TemplateSpan extends TemplateSpanBase { * Gets the template literal. */ getLiteral(): TemplateMiddle | TemplateTail; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TemplateTailBase: Constructor & typeof Node; export declare class TemplateTail extends TemplateTailBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ExportAssignmentBase: typeof Statement; @@ -7058,6 +7430,10 @@ export declare class ExportAssignment extends ExportAssignmentBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ExportDeclarationBase: typeof Statement; @@ -7148,6 +7524,10 @@ export declare class ExportDeclaration extends ExportDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ExportSpecifierBase: typeof Node; @@ -7217,6 +7597,10 @@ export declare class ExportSpecifier extends ExportSpecifierBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ExternalModuleReference extends Node { @@ -7240,6 +7624,10 @@ export declare class ExternalModuleReference extends Node; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } /** @@ -7291,6 +7679,10 @@ export declare class ImportClause extends ImportClauseBase { * Gets the namespace import identifier, if it exists. */ getNamedImports(): ImportSpecifier[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ImportDeclarationBase: typeof Statement; @@ -7414,6 +7806,10 @@ export declare class ImportDeclaration extends ImportDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ImportEqualsDeclarationBase: Constructor & Constructor & typeof Statement; @@ -7445,6 +7841,10 @@ export declare class ImportEqualsDeclaration extends ImportEqualsDeclarationBase * Gets the source file referenced in the external module reference or returns undefined if it doesn't exist. */ getExternalModuleReferenceSourceFile(): SourceFile | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ImportSpecifierBase: typeof Node; @@ -7503,11 +7903,19 @@ export declare class ImportSpecifier extends ImportSpecifierBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ModuleBlockBase: Constructor & typeof Statement; export declare class ModuleBlock extends ModuleBlockBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NamedExportsBase: typeof Node; @@ -7517,6 +7925,10 @@ export declare class NamedExports extends NamedExportsBase { * Gets the export specifiers. */ getElements(): ExportSpecifier[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NamedImportsBase: typeof Node; @@ -7526,6 +7938,10 @@ export declare class NamedImports extends NamedImportsBase { * Gets the import specifiers. */ getElements(): ImportSpecifier[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare function NamespaceChildableNode>(Base: T): Constructor & T; @@ -7593,6 +8009,10 @@ export declare class NamespaceDeclaration extends NamespaceDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare enum NamespaceDeclarationKind { @@ -7616,6 +8036,10 @@ export declare class NamespaceImport extends NamespaceImportBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class FileReference extends TextRange { @@ -7959,11 +8383,19 @@ export declare class SourceFile extends SourceFileBase { * Gets the structure equivalent to this node. */ getStructure(): SourceFileStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const BlockBase: Constructor & Constructor & typeof Statement; export declare class Block extends BlockBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class BreakStatement extends Statement { @@ -7975,6 +8407,10 @@ export declare class BreakStatement extends Statement { * Gets this break statement's label or throw if it does not exist. */ getLabelOrThrow(): Identifier; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const CaseBlockBase: Constructor & typeof Node; @@ -7994,6 +8430,10 @@ export declare class CaseBlock extends CaseBlockBase { * @param indexRange - Index range. */ removeClauses(indexRange: [number, number]): this; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const CaseClauseBase: Constructor & Constructor & typeof Node; @@ -8007,6 +8447,10 @@ export declare class CaseClause extends CaseClauseBase { * Removes this case clause. */ remove(): void; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const CatchClauseBase: typeof Node; @@ -8024,6 +8468,10 @@ export declare class CatchClause extends CatchClauseBase { * Gets this catch clause's variable declaration or throws if none exists. */ getVariableDeclarationOrThrow(): VariableDeclaration; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class CommentStatement extends Statement { @@ -8038,11 +8486,19 @@ export declare class ContinueStatement extends Statement { * Gets this continue statement's label or throw if it does not exist. */ getLabelOrThrow(): Identifier; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const DebuggerStatementBase: typeof Statement; export declare class DebuggerStatement extends DebuggerStatementBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const DefaultClauseBase: Constructor & Constructor & typeof Node; @@ -8052,6 +8508,10 @@ export declare class DefaultClause extends DefaultClauseBase { * Removes the default clause. */ remove(): void; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const DoStatementBase: typeof IterationStatement; @@ -8061,11 +8521,19 @@ export declare class DoStatement extends DoStatementBase { * Gets this do statement's expression. */ getExpression(): Expression; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const EmptyStatementBase: typeof Statement; export declare class EmptyStatement extends EmptyStatementBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ExpressionStatementBase: Constructor & typeof Statement; @@ -8075,6 +8543,10 @@ export declare class ExpressionStatement extends ExpressionStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ForInStatementBase: typeof IterationStatement; @@ -8088,6 +8560,10 @@ export declare class ForInStatement extends ForInStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ForOfStatementBase: Constructor & typeof IterationStatement; @@ -8101,6 +8577,10 @@ export declare class ForOfStatement extends ForOfStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ForStatementBase: typeof IterationStatement; @@ -8130,6 +8610,10 @@ export declare class ForStatement extends ForStatementBase { * Gets this for statement's incrementor or throws if none exists. */ getIncrementorOrThrow(): Expression; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class IfStatement extends Statement { @@ -8145,6 +8629,10 @@ export declare class IfStatement extends Statement { * Gets this if statement's else statement. */ getElseStatement(): Statement | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class IterationStatement extends Statement { @@ -8165,11 +8653,19 @@ export declare class LabeledStatement extends LabeledStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const NotEmittedStatementBase: typeof Statement; export declare class NotEmittedStatement extends NotEmittedStatementBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ReturnStatement extends Statement { @@ -8181,6 +8677,10 @@ export declare class ReturnStatement extends Statement { * Gets this return statement's expression if it exists. */ getExpression(): Expression | undefined; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const StatementBase: Constructor & typeof Node; @@ -8634,6 +9134,10 @@ export declare class SwitchStatement extends Statement { * @param indexRange - Index range. */ removeClauses(indexRange: [number, number]): CaseBlock; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ThrowStatementBase: typeof Statement; @@ -8647,6 +9151,10 @@ export declare class ThrowStatement extends ThrowStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TryStatementBase: typeof Statement; @@ -8672,6 +9180,10 @@ export declare class TryStatement extends TryStatementBase { * Gets this try statement's finally block or throws if none exists. */ getFinallyBlockOrThrow(): Block; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const VariableStatementBase: Constructor & Constructor & Constructor & Constructor & Constructor & typeof Statement; @@ -8729,6 +9241,10 @@ export declare class VariableStatement extends VariableStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const WhileStatementBase: typeof IterationStatement; @@ -8738,6 +9254,10 @@ export declare class WhileStatement extends WhileStatementBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class WithStatement extends Statement { @@ -8749,6 +9269,10 @@ export declare class WithStatement extends Statement { * Gets this with statement's statement. */ getStatement(): Statement; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ArrayTypeNode extends TypeNode { @@ -8756,6 +9280,10 @@ export declare class ArrayTypeNode extends TypeNode { * Gets the array type node's element type node. */ getElementTypeNode(): TypeNode; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ConditionalTypeNode extends TypeNode { @@ -8783,9 +9311,17 @@ export declare class ConditionalTypeNode extends TypeNode; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const ExpressionWithTypeArgumentsBase: Constructor & typeof TypeNode; @@ -8795,11 +9331,19 @@ export declare class ExpressionWithTypeArguments extends ExpressionWithTypeArgum * Gets the type arguments. */ getTypeArguments(): TypeNode[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const FunctionTypeNodeBase: Constructor & typeof FunctionOrConstructorTypeNodeBase; export declare class FunctionTypeNode extends FunctionTypeNodeBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const FunctionOrConstructorTypeNodeBaseBase: Constructor & typeof TypeNode; @@ -8832,6 +9376,10 @@ export declare class ImportTypeNode extends ImportTypeNodeBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class IndexedAccessTypeNode extends TypeNode { @@ -8847,6 +9395,10 @@ export declare class IndexedAccessTypeNode extends TypeNode; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class InferTypeNode extends TypeNode { @@ -8856,6 +9408,10 @@ export declare class InferTypeNode extends TypeNode { * Ex. In `infer R` returns `R`. */ getTypeParameter(): TypeParameterDeclaration; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class IntersectionTypeNode extends TypeNode { @@ -8863,6 +9419,10 @@ export declare class IntersectionTypeNode extends TypeNode; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class LiteralTypeNode extends TypeNode { @@ -8870,6 +9430,10 @@ export declare class LiteralTypeNode extends TypeNode { * Gets the literal type node's literal. */ getLiteral(): BooleanLiteral | LiteralExpression | PrefixUnaryExpression; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ParenthesizedTypeNode extends TypeNode { @@ -8882,9 +9446,17 @@ export declare class ParenthesizedTypeNode extends TypeNode; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class ThisTypeNode extends TypeNode { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class TupleTypeNode extends TypeNode { @@ -8892,6 +9464,10 @@ export declare class TupleTypeNode extends TypeNode { * Gets the tuple element type nodes. */ getElementTypeNodes(): TypeNode[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TypeAliasDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & Constructor & typeof Statement; @@ -8906,11 +9482,19 @@ export declare class TypeAliasDeclaration extends TypeAliasDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const TypeLiteralNodeBase: Constructor & typeof TypeNode; export declare class TypeLiteralNode extends TypeLiteralNodeBase { + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class TypeNode extends Node { @@ -8966,6 +9550,10 @@ export declare class TypeParameterDeclaration extends TypeParameterDeclarationBa * Gets the structure equivalent to this node. */ getStructure(): TypeParameterDeclarationStructure; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class TypeReferenceNode extends TypeNode { @@ -8977,6 +9565,10 @@ export declare class TypeReferenceNode extends TypeNode { * Gets the type arguments. */ getTypeArguments(): TypeNode[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class UnionTypeNode extends TypeNode { @@ -8984,6 +9576,10 @@ export declare class UnionTypeNode extends TypeNode { * Gets the union type nodes. */ getTypeNodes(): TypeNode[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } declare const VariableDeclarationBase: Constructor & Constructor & Constructor & Constructor & Constructor & typeof Node; @@ -9010,6 +9606,10 @@ export declare class VariableDeclaration extends VariableDeclarationBase; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare enum VariableDeclarationKind { @@ -9060,6 +9660,10 @@ export declare class VariableDeclarationList extends VariableDeclarationListBase * @param structures - Structures representing the variable declarations to insert. */ insertDeclarations(index: number, structures: ReadonlyArray>): VariableDeclaration[]; + /** @inheritdoc **/ + getParent(): NodeParentType; + /** @inheritdoc **/ + getParentOrThrow(): NonNullable>; } export declare class Signature { @@ -9648,9 +10252,9 @@ export declare class DiagnosticMessageChain { */ getMessageText(): string; /** - * Gets th enext diagnostic message chain in the chain. + * Gets the next diagnostic message chains in the chain. */ - getNext(): DiagnosticMessageChain | undefined; + getNext(): DiagnosticMessageChain[] | undefined; /** * Gets the code of the diagnostic message chain. */ diff --git a/package.json b/package.json index 88e8b9aa7..83e472bf6 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test:performance": "yarn build && node ./dist/tests/performance/run.js", "test:performance-save": "yarn test:performance --save", "type-check-library": "ts-node --transpile-only scripts/typeCheckLibrary", - "type-check-scripts": "tsc --noEmit --project tsconfig.scripts.json", + "type-check-scripts": "tsc --noEmit --project scripts/tsconfig.json", "code-generate": "ts-node --transpile-only --compiler ttypescript scripts/generation/main", "refactor": "ts-node --transpile-only scripts/refactor", "output-wrapped-nodes": "ts-node --transpile-only scripts/generation/outputWrappedNodesInfo", diff --git a/scripts/common/cloning.ts b/scripts/common/cloning.ts index 434487d8c..a0fcbf29b 100644 --- a/scripts/common/cloning.ts +++ b/scripts/common/cloning.ts @@ -1,4 +1,4 @@ -import { StatementedNode, NamespaceDeclaration } from "ts-morph"; +import { StatementedNode, NamespaceDeclaration, FunctionDeclarationStructure } from "ts-morph"; export function cloneNamespaces(node: StatementedNode, cloningNamespaces: NamespaceDeclaration[]) { const namespaces = node.addNamespaces(cloningNamespaces.map(n => ({ @@ -17,7 +17,7 @@ export function cloneNamespaces(node: StatementedNode, cloningNamespaces: Namesp isExported: true }))); namespaces[i].addFunctions(cloningNamespaces[i].getFunctions().map(f => ({ - ...f.getStructure(), + ...f.getStructure() as FunctionDeclarationStructure, isExported: true }))); namespaces[i].addEnums(cloningNamespaces[i].getEnums().map(e => ({ diff --git a/scripts/generation/createDeclarationFile.ts b/scripts/generation/createDeclarationFile.ts index da293eb11..032cae31d 100644 --- a/scripts/generation/createDeclarationFile.ts +++ b/scripts/generation/createDeclarationFile.ts @@ -7,7 +7,8 @@ */ import * as os from "os"; import { Node, TypeGuards, Scope, ClassDeclaration, StructureKind, InterfaceDeclarationStructure, TypeAliasDeclarationStructure, FunctionDeclarationStructure, - VariableStatementStructure } from "ts-morph"; + VariableStatementStructure, + Type} from "ts-morph"; import { createDeclarationProject, forEachTypeText } from "../common"; import { getDeclarationFileStatements } from "./declarationFile"; @@ -64,6 +65,8 @@ export async function createDeclarationFile() { makeConstructorsPrivate(); log("Removing @skipOrThrowCheck..."); removeSkipOrThrowCheck(); + log("Adding getParent methods..."); + addGetParentMethods(); log("Moving file..."); mainFile.move("ts-morph.d.ts"); finishLog(lastDateTime!); @@ -134,6 +137,40 @@ export async function createDeclarationFile() { } } + function addGetParentMethods() { + for (const classDec of mainFile.getClasses()) { + const type = classDec.getType(); + if (type.getProperty("compilerNode") == null) + continue; + const nodeType = type.getBaseTypes()[0]; + if (nodeType == null) + continue; + const typeArgName = getTypeScriptTypeName(nodeType, classDec); + if (typeArgName == null) + continue; + + classDec.addMembers(writer => { + writer.writeLine("/** @inheritdoc **/"); + writer.writeLine(`getParent(): NodeParentType<${typeArgName}>;`); + writer.writeLine("/** @inheritdoc **/"); + writer.writeLine(`getParentOrThrow(): NonNullable>;`); + }); + } + + function getTypeScriptTypeName(nodeType: Type, classDec: ClassDeclaration) { + const types = [nodeType, ...nodeType.getIntersectionTypes()]; + for (const type of types) { + for (const typeArg of type.getTypeArguments()) { + const typeArgName = typeArg.getText(classDec); + if (typeArgName.startsWith("ts.")) + return typeArgName; + } + } + + return undefined; + } + } + function log(message: string) { if (lastDateTime != null) finishLog(lastDateTime); diff --git a/scripts/generation/createForEachStructureChild.ts b/scripts/generation/createForEachStructureChild.ts index 93e17c17d..0d8adbdf3 100644 --- a/scripts/generation/createForEachStructureChild.ts +++ b/scripts/generation/createForEachStructureChild.ts @@ -176,7 +176,7 @@ function getStructureInfos(inspector: TsMorphInspector) { const kinds: string[] = []; let allStructure = true; for (const arrayType of arrayTypes) { - const arrayElementType = arrayType.getArrayElementType(); + const arrayElementType = arrayType.getArrayElementTypeOrThrow(); for (const unionElementType of getTypeOrUnionElementTypes(arrayElementType)) { const kindProperty = getTypeKindProperty(unionElementType); if (kindProperty != null) diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 000000000..6823cd4d1 --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.common.json", + "compilerOptions": { + "noEmit": true, + "declaration": false, + "rootDirs": ["../scripts", "../src"], + "outDir": "../dist-scripts", + "plugins": [{ "transform": "ts-nameof", "type": "raw" }] + } +} diff --git a/src/compiler/ast/class/ClassElement.ts b/src/compiler/ast/class/ClassElement.ts index c6359a8c3..d98ef4afa 100644 --- a/src/compiler/ast/class/ClassElement.ts +++ b/src/compiler/ast/class/ClassElement.ts @@ -9,7 +9,7 @@ export class ClassElement extends N * Removes the class member. */ remove() { - const parent = this.getParent(); + const parent = this.getParentOrThrow(); if (TypeGuards.isClassDeclaration(parent) || TypeGuards.isClassExpression(parent)) removeClassMember(this); else if (TypeGuards.isObjectLiteralExpression(parent)) diff --git a/src/compiler/ast/common/Node.ts b/src/compiler/ast/common/Node.ts index 958e33a1e..2ff242b0d 100644 --- a/src/compiler/ast/common/Node.ts +++ b/src/compiler/ast/common/Node.ts @@ -29,7 +29,7 @@ export type NodePropertyToWrappedType | undefined : NodeType[KeyName]; -export type NodeParentType = NodeType extends ts.SourceFile ? CompilerNodeToWrappedType | undefined +export type NodeParentType = NodeType extends ts.SourceFile ? undefined : ts.Node extends NodeType ? CompilerNodeToWrappedType | undefined : CompilerNodeToWrappedType; @@ -1094,15 +1094,15 @@ export class Node { /** * Get the node's parent. */ - getParent>(): T { - return this._getNodeFromCompilerNodeIfExists(this.compilerNode.parent) as T; + getParent() { + return this._getNodeFromCompilerNodeIfExists(this.compilerNode.parent); } /** * Gets the parent or throws an error if it doesn't exist. */ - getParentOrThrow>(): NonNullable { - return errors.throwIfNullOrUndefined(this.getParent(), "Expected to find a parent.") as NonNullable; + getParentOrThrow() { + return errors.throwIfNullOrUndefined(this.getParent(), "Expected to find a parent."); } /** diff --git a/src/compiler/ast/type/TypeParameterDeclaration.ts b/src/compiler/ast/type/TypeParameterDeclaration.ts index 9816996fe..d74b527dd 100644 --- a/src/compiler/ast/type/TypeParameterDeclaration.ts +++ b/src/compiler/ast/type/TypeParameterDeclaration.ts @@ -31,7 +31,7 @@ export class TypeParameterDeclaration extends TypeParameterDeclarationBase(n => n.getParent), () => { + describe(nameof>(), () => { it("should have the correct type when it will have a parent", () => { - const { firstChild } = getInfoFromText("const t = 5;"); - const parent = firstChild.getDeclarationList().getParent(); - assert>(true); + assert, VariableStatement | ForStatement | ForOfStatement | ForInStatement>>(true); }); it("should have the correct type when it might not have a parent", () => { - const { firstChild } = getInfoFromText("const t = 5;"); - const parent = (firstChild as Node).getParent(); - assert>(true); + assert, Node | undefined>>(true); }); - }); - describe(nameof(n => n.getParentOrThrow), () => { - it("should have the correct type when it will have a parent", () => { - const { firstChild } = getInfoFromText("const t = 5;"); - const parent = firstChild.getDeclarationList().getParentOrThrow(); - assert>(true); - }); - - it("should have the correct type when it might not have a parent", () => { - const { firstChild } = getInfoFromText("const t = 5;"); - const parent = (firstChild as Node).getParentOrThrow(); - assert>(true); + it("should have the correct type when it's a source file", () => { + assert, undefined>>(true); }); }); diff --git a/tsconfig.scripts.json b/tsconfig.scripts.json deleted file mode 100644 index f6f4ace5f..000000000 --- a/tsconfig.scripts.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "./tsconfig.common.json", - "compilerOptions": { - "declaration": false, - "rootDirs": ["./scripts", "./src"], - "outDir": "./dist-scripts", - "plugins": [{ "transform": "ts-nameof", "type": "raw" }] - }, - "exclude": [ - "./lib", - "./docs", - "./dist", - "node_modules" - ] -}