Skip to content

Commit 9d14798

Browse files
committed
feat: wrap TypeQueryNode
I need it.
1 parent 1b8955d commit 9d14798

File tree

10 files changed

+87
-4
lines changed

10 files changed

+87
-4
lines changed

deno/ts_morph.d.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4396,6 +4396,11 @@ export declare class Node<NodeType extends ts.Node = ts.Node> {
43964396
* @param node - Node to check.
43974397
*/
43984398
static isTypePredicateNode(node: Node | undefined): node is TypePredicateNode;
4399+
/**
4400+
* Gets if the node is a TypeQueryNode.
4401+
* @param node - Node to check.
4402+
*/
4403+
static isTypeQueryNode(node: Node | undefined): node is TypeQueryNode;
43994404
/**
44004405
* Gets if the node is a TypeReferenceNode.
44014406
* @param node - Node to check.
@@ -6514,6 +6519,7 @@ export interface ImplementedKindToNodeMappings {
65146519
[SyntaxKind.TypeOperator]: TypeOperatorTypeNode;
65156520
[SyntaxKind.TypeParameter]: TypeParameterDeclaration;
65166521
[SyntaxKind.TypePredicate]: TypePredicateNode;
6522+
[SyntaxKind.TypeQuery]: TypeQueryNode;
65176523
[SyntaxKind.TypeReference]: TypeReferenceNode;
65186524
[SyntaxKind.UnionType]: UnionTypeNode;
65196525
[SyntaxKind.VariableDeclaration]: VariableDeclaration;
@@ -8804,6 +8810,15 @@ export declare class TypePredicateNode extends TypeNode<ts.TypePredicateNode> {
88048810
getParentOrThrow(): NonNullable<NodeParentType<ts.TypePredicateNode>>;
88058811
}
88068812

8813+
export declare class TypeQueryNode extends TypeNode<ts.TypeQueryNode> {
8814+
/** Gets the expression name. */
8815+
getExprName(): EntityName;
8816+
/** @inheritdoc **/
8817+
getParent(): NodeParentType<ts.TypeQueryNode>;
8818+
/** @inheritdoc **/
8819+
getParentOrThrow(): NonNullable<NodeParentType<ts.TypeQueryNode>>;
8820+
}
8821+
88078822
export declare class TypeReferenceNode extends TypeNode<ts.TypeReferenceNode> {
88088823
/** Gets the type name. */
88098824
getTypeName(): EntityName;

deno/ts_morph.js

Lines changed: 12 additions & 1 deletion
Large diffs are not rendered by default.

packages/ts-morph/lib/ts-morph.d.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4396,6 +4396,11 @@ export declare class Node<NodeType extends ts.Node = ts.Node> {
43964396
* @param node - Node to check.
43974397
*/
43984398
static isTypePredicateNode(node: Node | undefined): node is TypePredicateNode;
4399+
/**
4400+
* Gets if the node is a TypeQueryNode.
4401+
* @param node - Node to check.
4402+
*/
4403+
static isTypeQueryNode(node: Node | undefined): node is TypeQueryNode;
43994404
/**
44004405
* Gets if the node is a TypeReferenceNode.
44014406
* @param node - Node to check.
@@ -6514,6 +6519,7 @@ export interface ImplementedKindToNodeMappings {
65146519
[SyntaxKind.TypeOperator]: TypeOperatorTypeNode;
65156520
[SyntaxKind.TypeParameter]: TypeParameterDeclaration;
65166521
[SyntaxKind.TypePredicate]: TypePredicateNode;
6522+
[SyntaxKind.TypeQuery]: TypeQueryNode;
65176523
[SyntaxKind.TypeReference]: TypeReferenceNode;
65186524
[SyntaxKind.UnionType]: UnionTypeNode;
65196525
[SyntaxKind.VariableDeclaration]: VariableDeclaration;
@@ -8804,6 +8810,15 @@ export declare class TypePredicateNode extends TypeNode<ts.TypePredicateNode> {
88048810
getParentOrThrow(): NonNullable<NodeParentType<ts.TypePredicateNode>>;
88058811
}
88068812

8813+
export declare class TypeQueryNode extends TypeNode<ts.TypeQueryNode> {
8814+
/** Gets the expression name. */
8815+
getExprName(): EntityName;
8816+
/** @inheritdoc **/
8817+
getParent(): NodeParentType<ts.TypeQueryNode>;
8818+
/** @inheritdoc **/
8819+
getParentOrThrow(): NonNullable<NodeParentType<ts.TypeQueryNode>>;
8820+
}
8821+
88078822
export declare class TypeReferenceNode extends TypeNode<ts.TypeReferenceNode> {
88088823
/** Gets the type name. */
88098824
getTypeName(): EntityName;

packages/ts-morph/src/compiler/ast/common/Node.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4175,6 +4175,7 @@ export class Node<NodeType extends ts.Node = ts.Node> {
41754175
case SyntaxKind.TypeLiteral:
41764176
case SyntaxKind.TypeOperator:
41774177
case SyntaxKind.TypePredicate:
4178+
case SyntaxKind.TypeQuery:
41784179
case SyntaxKind.TypeReference:
41794180
case SyntaxKind.UnionType:
41804181
return true;
@@ -4237,6 +4238,14 @@ export class Node<NodeType extends ts.Node = ts.Node> {
42374238
return node?.getKind() === SyntaxKind.TypePredicate;
42384239
}
42394240

4241+
/**
4242+
* Gets if the node is a TypeQueryNode.
4243+
* @param node - Node to check.
4244+
*/
4245+
static isTypeQueryNode(node: compiler.Node | undefined): node is compiler.TypeQueryNode {
4246+
return node?.getKind() === SyntaxKind.TypeQuery;
4247+
}
4248+
42404249
/**
42414250
* Gets if the node is a TypeReferenceNode.
42424251
* @param node - Node to check.

packages/ts-morph/src/compiler/ast/kindToNodeMappings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ export interface ImplementedKindToNodeMappings {
166166
[SyntaxKind.TypeOperator]: compiler.TypeOperatorTypeNode;
167167
[SyntaxKind.TypeParameter]: compiler.TypeParameterDeclaration;
168168
[SyntaxKind.TypePredicate]: compiler.TypePredicateNode;
169+
[SyntaxKind.TypeQuery]: compiler.TypeQueryNode;
169170
[SyntaxKind.TypeReference]: compiler.TypeReferenceNode;
170171
[SyntaxKind.UnionType]: compiler.UnionTypeNode;
171172
[SyntaxKind.VariableDeclaration]: compiler.VariableDeclaration;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { ts } from "@ts-morph/common";
2+
import { EntityName } from "../aliases";
3+
import { TypeNode } from "./TypeNode";
4+
5+
export class TypeQueryNode extends TypeNode<ts.TypeQueryNode> {
6+
/**
7+
* Gets the expression name.
8+
*/
9+
getExprName(): EntityName {
10+
return this._getNodeFromCompilerNode(this.compilerNode.exprName);
11+
}
12+
}

packages/ts-morph/src/compiler/ast/type/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ export * from "./TypeNode";
2121
export * from "./TypeOperatorTypeNode";
2222
export * from "./TypeParameterDeclaration";
2323
export * from "./TypePredicateNode";
24+
export * from "./TypeQueryNode";
2425
export * from "./TypeReferenceNode";
2526
export * from "./UnionTypeNode";

packages/ts-morph/src/factories/kindToWrapperMappings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ export const kindToWrapperMappings: { [key: number]: unknown; } = {
167167
[SyntaxKind.TypeOperator]: compiler.TypeOperatorTypeNode,
168168
[SyntaxKind.TypeParameter]: compiler.TypeParameterDeclaration,
169169
[SyntaxKind.TypePredicate]: compiler.TypePredicateNode,
170+
[SyntaxKind.TypeQuery]: compiler.TypeQueryNode,
170171
[SyntaxKind.TypeReference]: compiler.TypeReferenceNode,
171172
[SyntaxKind.UnionType]: compiler.UnionTypeNode,
172173
[SyntaxKind.VariableDeclaration]: compiler.VariableDeclaration,
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { SyntaxKind } from "@ts-morph/common";
2+
import { expect } from "chai";
3+
import { TypeQueryNode } from "../../../../compiler";
4+
import { getInfoFromText } from "../../testHelpers";
5+
6+
describe(nameof(TypeQueryNode), () => {
7+
function getTypeQueryNode(text: string) {
8+
const { sourceFile } = getInfoFromText(text);
9+
return sourceFile.getFirstDescendantByKindOrThrow(SyntaxKind.TypeQuery);
10+
}
11+
12+
describe(nameof<TypeQueryNode>(n => n.getExprName), () => {
13+
it("should get", () => {
14+
expect(getTypeQueryNode("const test: typeof Test").getExprName().getText(), "Test");
15+
});
16+
});
17+
});

packages/ts-morph/wrapped-nodes.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ The disadvantage to a node not being wrapped is that it won't have helper method
66

77
## Exist
88

9-
**Total:** 204
9+
**Total:** 205
1010

1111
* [ArrayBindingPattern](src/compiler/ast/binding/ArrayBindingPattern.ts)
1212
* :heavy_check_mark: elements
@@ -486,6 +486,8 @@ The disadvantage to a node not being wrapped is that it won't have helper method
486486
* :heavy_check_mark: assertsModifier
487487
* :heavy_check_mark: parameterName
488488
* :heavy_check_mark: type
489+
* [TypeQueryNode](src/compiler/ast/type/TypeQueryNode.ts)
490+
* :heavy_check_mark: exprName
489491
* [TypeReferenceNode](src/compiler/ast/type/TypeReferenceNode.ts)
490492
* :heavy_check_mark: typeName
491493
* [UnaryExpression](src/compiler/ast/expression/UnaryExpression.ts)
@@ -514,7 +516,7 @@ The disadvantage to a node not being wrapped is that it won't have helper method
514516

515517
## Not Exist
516518

517-
**Total:** 56
519+
**Total:** 55
518520

519521
* Bundle
520522
* CallChain
@@ -565,7 +567,6 @@ The disadvantage to a node not being wrapped is that it won't have helper method
565567
* TransientIdentifier
566568
* TsConfigSourceFile
567569
* TypeOperatorNode
568-
* TypeQueryNode
569570
* UnparsedPrepend
570571
* UnparsedPrologue
571572
* UnparsedSection

0 commit comments

Comments
 (0)