diff --git a/packages/babel-traverse/scripts/generators/asserts.js b/packages/babel-traverse/scripts/generators/asserts.js index 5913aaae0060..c93efbb4173b 100644 --- a/packages/babel-traverse/scripts/generators/asserts.js +++ b/packages/babel-traverse/scripts/generators/asserts.js @@ -8,13 +8,20 @@ export default function generateAsserts() { import type * as t from "@babel/types"; import type NodePath from "../index"; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; +}>; export interface NodePathAssertions {`; for (const type of [...t.TYPES].sort()) { output += ` assert${type}( - opts?: object, + opts?: Opts, ): asserts this is NodePath;`; } diff --git a/packages/babel-traverse/scripts/generators/validators.js b/packages/babel-traverse/scripts/generators/validators.js index 50340de31f33..8f197c6c6577 100644 --- a/packages/babel-traverse/scripts/generators/validators.js +++ b/packages/babel-traverse/scripts/generators/validators.js @@ -9,18 +9,27 @@ import type * as t from "@babel/types"; import type NodePath from "../index"; import type { VirtualTypeNodePathValidators } from "../lib/virtual-types-validator"; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; +}>; + interface BaseNodePathValidators { `; for (const type of [...t.TYPES].sort()) { - output += `is${type}(this: NodePath, opts?: object): this is NodePath;`; + output += `is${type}(this: NodePath, opts?: Opts): this is NodePath;`; } output += ` } export interface NodePathValidators - extends BaseNodePathValidators, VirtualTypeNodePathValidators {} + extends Omit, + VirtualTypeNodePathValidators {} `; return output; diff --git a/packages/babel-traverse/src/path/generated/asserts.d.ts b/packages/babel-traverse/src/path/generated/asserts.d.ts index 6b974533d294..24c21fbfdfeb 100644 --- a/packages/babel-traverse/src/path/generated/asserts.d.ts +++ b/packages/babel-traverse/src/path/generated/asserts.d.ts @@ -5,712 +5,866 @@ import type * as t from "@babel/types"; import type NodePath from "../index"; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; +}>; + export interface NodePathAssertions { - assertAccessor(opts?: object): asserts this is NodePath; + assertAccessor(opts?: Opts): asserts this is NodePath; assertAnyTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertArgumentPlaceholder( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertArrayExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertArrayPattern(opts?: object): asserts this is NodePath; + assertArrayPattern( + opts?: Opts, + ): asserts this is NodePath; assertArrayTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertArrowFunctionExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertAssignmentExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertAssignmentPattern( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertAwaitExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertBigIntLiteral(opts?: object): asserts this is NodePath; - assertBinary(opts?: object): asserts this is NodePath; + assertBigIntLiteral( + opts?: Opts, + ): asserts this is NodePath; + assertBinary(opts?: Opts): asserts this is NodePath; assertBinaryExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertBindExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertBlock(opts?: object): asserts this is NodePath; - assertBlockParent(opts?: object): asserts this is NodePath; + assertBlock(opts?: Opts): asserts this is NodePath; + assertBlockParent( + opts?: Opts, + ): asserts this is NodePath; assertBlockStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertBooleanLiteral( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertBooleanLiteralTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertBooleanTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertBreakStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertCallExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertCatchClause(opts?: object): asserts this is NodePath; - assertClass(opts?: object): asserts this is NodePath; + assertCatchClause( + opts?: Opts, + ): asserts this is NodePath; + assertClass(opts?: Opts): asserts this is NodePath; assertClassAccessorProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertClassBody(opts?: object): asserts this is NodePath; + assertClassBody( + opts?: Opts, + ): asserts this is NodePath; assertClassDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertClassExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertClassImplements( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertClassMethod(opts?: object): asserts this is NodePath; + assertClassMethod( + opts?: Opts, + ): asserts this is NodePath; assertClassPrivateMethod( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertClassPrivateProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertClassProperty(opts?: object): asserts this is NodePath; + assertClassProperty( + opts?: Opts, + ): asserts this is NodePath; assertCompletionStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertConditional(opts?: object): asserts this is NodePath; + assertConditional( + opts?: Opts, + ): asserts this is NodePath; assertConditionalExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertContinueStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDebuggerStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDecimalLiteral( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertDeclaration(opts?: object): asserts this is NodePath; - assertDeclareClass(opts?: object): asserts this is NodePath; + assertDeclaration( + opts?: Opts, + ): asserts this is NodePath; + assertDeclareClass( + opts?: Opts, + ): asserts this is NodePath; assertDeclareExportAllDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclareExportDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclareFunction( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclareInterface( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertDeclareModule(opts?: object): asserts this is NodePath; + assertDeclareModule( + opts?: Opts, + ): asserts this is NodePath; assertDeclareModuleExports( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclareOpaqueType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclareTypeAlias( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclareVariable( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertDeclaredPredicate( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertDecorator(opts?: object): asserts this is NodePath; - assertDirective(opts?: object): asserts this is NodePath; + assertDecorator( + opts?: Opts, + ): asserts this is NodePath; + assertDirective( + opts?: Opts, + ): asserts this is NodePath; assertDirectiveLiteral( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertDoExpression(opts?: object): asserts this is NodePath; + assertDoExpression( + opts?: Opts, + ): asserts this is NodePath; assertDoWhileStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEmptyStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEmptyTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertEnumBody(opts?: object): asserts this is NodePath; + assertEnumBody(opts?: Opts): asserts this is NodePath; assertEnumBooleanBody( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumBooleanMember( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumDefaultedMember( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertEnumMember(opts?: object): asserts this is NodePath; + assertEnumMember( + opts?: Opts, + ): asserts this is NodePath; assertEnumNumberBody( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumNumberMember( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumStringBody( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumStringMember( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertEnumSymbolBody( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExistsTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportAllDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportDefaultDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportDefaultSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportNamedDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportNamespaceSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExportSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertExpression(opts?: object): asserts this is NodePath; + assertExpression( + opts?: Opts, + ): asserts this is NodePath; assertExpressionStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertExpressionWrapper( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertFile(opts?: object): asserts this is NodePath; - assertFlow(opts?: object): asserts this is NodePath; + assertFile(opts?: Opts): asserts this is NodePath; + assertFlow(opts?: Opts): asserts this is NodePath; assertFlowBaseAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertFlowDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertFlowPredicate(opts?: object): asserts this is NodePath; - assertFlowType(opts?: object): asserts this is NodePath; - assertFor(opts?: object): asserts this is NodePath; + assertFlowPredicate( + opts?: Opts, + ): asserts this is NodePath; + assertFlowType(opts?: Opts): asserts this is NodePath; + assertFor(opts?: Opts): asserts this is NodePath; assertForInStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertForOfStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertForStatement(opts?: object): asserts this is NodePath; - assertForXStatement(opts?: object): asserts this is NodePath; - assertFunction(opts?: object): asserts this is NodePath; + assertForStatement( + opts?: Opts, + ): asserts this is NodePath; + assertForXStatement( + opts?: Opts, + ): asserts this is NodePath; + assertFunction(opts?: Opts): asserts this is NodePath; assertFunctionDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertFunctionExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertFunctionParent( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertFunctionTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertFunctionTypeParam( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertGenericTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertIdentifier(opts?: object): asserts this is NodePath; - assertIfStatement(opts?: object): asserts this is NodePath; - assertImmutable(opts?: object): asserts this is NodePath; - assertImport(opts?: object): asserts this is NodePath; + assertIdentifier( + opts?: Opts, + ): asserts this is NodePath; + assertIfStatement( + opts?: Opts, + ): asserts this is NodePath; + assertImmutable( + opts?: Opts, + ): asserts this is NodePath; + assertImport(opts?: Opts): asserts this is NodePath; assertImportAttribute( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertImportDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertImportDefaultSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertImportNamespaceSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertImportOrExportDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertImportSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertIndexedAccessType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertInferredPredicate( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertInterfaceDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertInterfaceExtends( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertInterfaceTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertInterpreterDirective( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertIntersectionTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertJSX(opts?: object): asserts this is NodePath; - assertJSXAttribute(opts?: object): asserts this is NodePath; + assertJSX(opts?: Opts): asserts this is NodePath; + assertJSXAttribute( + opts?: Opts, + ): asserts this is NodePath; assertJSXClosingElement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXClosingFragment( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertJSXElement(opts?: object): asserts this is NodePath; + assertJSXElement( + opts?: Opts, + ): asserts this is NodePath; assertJSXEmptyExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXExpressionContainer( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertJSXFragment(opts?: object): asserts this is NodePath; - assertJSXIdentifier(opts?: object): asserts this is NodePath; + assertJSXFragment( + opts?: Opts, + ): asserts this is NodePath; + assertJSXIdentifier( + opts?: Opts, + ): asserts this is NodePath; assertJSXMemberExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXNamespacedName( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXOpeningElement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXOpeningFragment( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXSpreadAttribute( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertJSXSpreadChild( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertJSXText(opts?: object): asserts this is NodePath; - assertLVal(opts?: object): asserts this is NodePath; + assertJSXText(opts?: Opts): asserts this is NodePath; + assertLVal(opts?: Opts): asserts this is NodePath; assertLabeledStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertLiteral(opts?: object): asserts this is NodePath; + assertLiteral(opts?: Opts): asserts this is NodePath; assertLogicalExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertLoop(opts?: object): asserts this is NodePath; + assertLoop(opts?: Opts): asserts this is NodePath; assertMemberExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertMetaProperty(opts?: object): asserts this is NodePath; - assertMethod(opts?: object): asserts this is NodePath; - assertMiscellaneous(opts?: object): asserts this is NodePath; + assertMetaProperty( + opts?: Opts, + ): asserts this is NodePath; + assertMethod(opts?: Opts): asserts this is NodePath; + assertMiscellaneous( + opts?: Opts, + ): asserts this is NodePath; assertMixedTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertModuleDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertModuleExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertModuleSpecifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertNewExpression(opts?: object): asserts this is NodePath; - assertNoop(opts?: object): asserts this is NodePath; - assertNullLiteral(opts?: object): asserts this is NodePath; + assertNewExpression( + opts?: Opts, + ): asserts this is NodePath; + assertNoop(opts?: Opts): asserts this is NodePath; + assertNullLiteral( + opts?: Opts, + ): asserts this is NodePath; assertNullLiteralTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertNullableTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertNumberLiteral(opts?: object): asserts this is NodePath; + assertNumberLiteral( + opts?: Opts, + ): asserts this is NodePath; assertNumberLiteralTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertNumberTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertNumericLiteral( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertObjectMember(opts?: object): asserts this is NodePath; - assertObjectMethod(opts?: object): asserts this is NodePath; - assertObjectPattern(opts?: object): asserts this is NodePath; + assertObjectMember( + opts?: Opts, + ): asserts this is NodePath; + assertObjectMethod( + opts?: Opts, + ): asserts this is NodePath; + assertObjectPattern( + opts?: Opts, + ): asserts this is NodePath; assertObjectProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectTypeCallProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectTypeIndexer( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectTypeInternalSlot( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectTypeProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertObjectTypeSpreadProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertOpaqueType(opts?: object): asserts this is NodePath; + assertOpaqueType( + opts?: Opts, + ): asserts this is NodePath; assertOptionalCallExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertOptionalIndexedAccessType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertOptionalMemberExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertParenthesizedExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertPattern(opts?: object): asserts this is NodePath; - assertPatternLike(opts?: object): asserts this is NodePath; + assertPattern(opts?: Opts): asserts this is NodePath; + assertPatternLike( + opts?: Opts, + ): asserts this is NodePath; assertPipelineBareFunction( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertPipelinePrimaryTopicReference( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertPipelineTopicExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertPlaceholder(opts?: object): asserts this is NodePath; - assertPrivate(opts?: object): asserts this is NodePath; - assertPrivateName(opts?: object): asserts this is NodePath; - assertProgram(opts?: object): asserts this is NodePath; - assertProperty(opts?: object): asserts this is NodePath; - assertPureish(opts?: object): asserts this is NodePath; + assertPlaceholder( + opts?: Opts, + ): asserts this is NodePath; + assertPrivate(opts?: Opts): asserts this is NodePath; + assertPrivateName( + opts?: Opts, + ): asserts this is NodePath; + assertProgram(opts?: Opts): asserts this is NodePath; + assertProperty(opts?: Opts): asserts this is NodePath; + assertPureish(opts?: Opts): asserts this is NodePath; assertQualifiedTypeIdentifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertRecordExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertRegExpLiteral(opts?: object): asserts this is NodePath; - assertRegexLiteral(opts?: object): asserts this is NodePath; - assertRestElement(opts?: object): asserts this is NodePath; - assertRestProperty(opts?: object): asserts this is NodePath; + assertRegExpLiteral( + opts?: Opts, + ): asserts this is NodePath; + assertRegexLiteral( + opts?: Opts, + ): asserts this is NodePath; + assertRestElement( + opts?: Opts, + ): asserts this is NodePath; + assertRestProperty( + opts?: Opts, + ): asserts this is NodePath; assertReturnStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertScopable(opts?: object): asserts this is NodePath; + assertScopable(opts?: Opts): asserts this is NodePath; assertSequenceExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertSpreadElement(opts?: object): asserts this is NodePath; + assertSpreadElement( + opts?: Opts, + ): asserts this is NodePath; assertSpreadProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertStandardized(opts?: object): asserts this is NodePath; - assertStatement(opts?: object): asserts this is NodePath; - assertStaticBlock(opts?: object): asserts this is NodePath; - assertStringLiteral(opts?: object): asserts this is NodePath; + assertStandardized( + opts?: Opts, + ): asserts this is NodePath; + assertStatement( + opts?: Opts, + ): asserts this is NodePath; + assertStaticBlock( + opts?: Opts, + ): asserts this is NodePath; + assertStringLiteral( + opts?: Opts, + ): asserts this is NodePath; assertStringLiteralTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertStringTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertSuper(opts?: object): asserts this is NodePath; - assertSwitchCase(opts?: object): asserts this is NodePath; + assertSuper(opts?: Opts): asserts this is NodePath; + assertSwitchCase( + opts?: Opts, + ): asserts this is NodePath; assertSwitchStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertSymbolTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSAnyKeyword(opts?: object): asserts this is NodePath; - assertTSArrayType(opts?: object): asserts this is NodePath; + assertTSAnyKeyword( + opts?: Opts, + ): asserts this is NodePath; + assertTSArrayType( + opts?: Opts, + ): asserts this is NodePath; assertTSAsExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSBaseType(opts?: object): asserts this is NodePath; + assertTSBaseType( + opts?: Opts, + ): asserts this is NodePath; assertTSBigIntKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSBooleanKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSCallSignatureDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSConditionalType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSConstructSignatureDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSConstructorType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSDeclareFunction( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSDeclareMethod( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSEntityName(opts?: object): asserts this is NodePath; + assertTSEntityName( + opts?: Opts, + ): asserts this is NodePath; assertTSEnumDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSEnumMember(opts?: object): asserts this is NodePath; + assertTSEnumMember( + opts?: Opts, + ): asserts this is NodePath; assertTSExportAssignment( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSExpressionWithTypeArguments( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSExternalModuleReference( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSFunctionType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSImportEqualsDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSImportType(opts?: object): asserts this is NodePath; + assertTSImportType( + opts?: Opts, + ): asserts this is NodePath; assertTSIndexSignature( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSIndexedAccessType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSInferType(opts?: object): asserts this is NodePath; + assertTSInferType( + opts?: Opts, + ): asserts this is NodePath; assertTSInstantiationExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSInterfaceBody( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSInterfaceDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSIntersectionType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSIntrinsicKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSLiteralType(opts?: object): asserts this is NodePath; - assertTSMappedType(opts?: object): asserts this is NodePath; + assertTSLiteralType( + opts?: Opts, + ): asserts this is NodePath; + assertTSMappedType( + opts?: Opts, + ): asserts this is NodePath; assertTSMethodSignature( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSModuleBlock(opts?: object): asserts this is NodePath; + assertTSModuleBlock( + opts?: Opts, + ): asserts this is NodePath; assertTSModuleDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSNamedTupleMember( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSNamespaceExportDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSNeverKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSNonNullExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSNullKeyword(opts?: object): asserts this is NodePath; + assertTSNullKeyword( + opts?: Opts, + ): asserts this is NodePath; assertTSNumberKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSObjectKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSOptionalType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSParameterProperty( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSParenthesizedType( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSPropertySignature( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSQualifiedName( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSRestType(opts?: object): asserts this is NodePath; + assertTSRestType( + opts?: Opts, + ): asserts this is NodePath; assertTSSatisfiesExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSStringKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSSymbolKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSThisType(opts?: object): asserts this is NodePath; - assertTSTupleType(opts?: object): asserts this is NodePath; - assertTSType(opts?: object): asserts this is NodePath; + assertTSThisType( + opts?: Opts, + ): asserts this is NodePath; + assertTSTupleType( + opts?: Opts, + ): asserts this is NodePath; + assertTSType(opts?: Opts): asserts this is NodePath; assertTSTypeAliasDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSTypeAssertion( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSTypeElement(opts?: object): asserts this is NodePath; - assertTSTypeLiteral(opts?: object): asserts this is NodePath; + assertTSTypeElement( + opts?: Opts, + ): asserts this is NodePath; + assertTSTypeLiteral( + opts?: Opts, + ): asserts this is NodePath; assertTSTypeOperator( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSTypeParameter( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSTypeParameterDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSTypeParameterInstantiation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSTypePredicate( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSTypeQuery(opts?: object): asserts this is NodePath; + assertTSTypeQuery( + opts?: Opts, + ): asserts this is NodePath; assertTSTypeReference( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTSUndefinedKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSUnionType(opts?: object): asserts this is NodePath; + assertTSUnionType( + opts?: Opts, + ): asserts this is NodePath; assertTSUnknownKeyword( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTSVoidKeyword(opts?: object): asserts this is NodePath; + assertTSVoidKeyword( + opts?: Opts, + ): asserts this is NodePath; assertTaggedTemplateExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTemplateElement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTemplateLiteral( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTerminatorless( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertThisExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertThisTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertThrowStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTopicReference( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTryStatement(opts?: object): asserts this is NodePath; + assertTryStatement( + opts?: Opts, + ): asserts this is NodePath; assertTupleExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTupleTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTypeAlias(opts?: object): asserts this is NodePath; + assertTypeAlias( + opts?: Opts, + ): asserts this is NodePath; assertTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTypeCastExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTypeParameter(opts?: object): asserts this is NodePath; + assertTypeParameter( + opts?: Opts, + ): asserts this is NodePath; assertTypeParameterDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertTypeParameterInstantiation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertTypeScript(opts?: object): asserts this is NodePath; + assertTypeScript( + opts?: Opts, + ): asserts this is NodePath; assertTypeofTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertUnaryExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertUnaryLike(opts?: object): asserts this is NodePath; + assertUnaryLike( + opts?: Opts, + ): asserts this is NodePath; assertUnionTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertUpdateExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertUserWhitespacable( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertV8IntrinsicIdentifier( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertVariableDeclaration( - opts?: object, + opts?: Opts, ): asserts this is NodePath; assertVariableDeclarator( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertVariance(opts?: object): asserts this is NodePath; + assertVariance(opts?: Opts): asserts this is NodePath; assertVoidTypeAnnotation( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertWhile(opts?: object): asserts this is NodePath; + assertWhile(opts?: Opts): asserts this is NodePath; assertWhileStatement( - opts?: object, + opts?: Opts, ): asserts this is NodePath; - assertWithStatement(opts?: object): asserts this is NodePath; + assertWithStatement( + opts?: Opts, + ): asserts this is NodePath; assertYieldExpression( - opts?: object, + opts?: Opts, ): asserts this is NodePath; } diff --git a/packages/babel-traverse/src/path/generated/validators.d.ts b/packages/babel-traverse/src/path/generated/validators.d.ts index 470d7c47be62..8854fa3d6c0e 100644 --- a/packages/babel-traverse/src/path/generated/validators.d.ts +++ b/packages/babel-traverse/src/path/generated/validators.d.ts @@ -6,1221 +6,1229 @@ import type * as t from "@babel/types"; import type NodePath from "../index"; import type { VirtualTypeNodePathValidators } from "../lib/virtual-types-validator"; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; +}>; + interface BaseNodePathValidators { isAccessor( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isAnyTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isArgumentPlaceholder( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isArrayExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isArrayPattern( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isArrayTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isArrowFunctionExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isAssignmentExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isAssignmentPattern( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isAwaitExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBigIntLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBinary( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBinaryExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBindExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBlock( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBlockParent( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBlockStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBooleanLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBooleanLiteralTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBooleanTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isBreakStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isCallExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isCatchClause( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClass( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassAccessorProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassImplements( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassMethod( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassPrivateMethod( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassPrivateProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isClassProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isCompletionStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isConditional( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isConditionalExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isContinueStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDebuggerStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDecimalLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareClass( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareExportAllDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareExportDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareFunction( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareInterface( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareModule( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareModuleExports( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareOpaqueType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareTypeAlias( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclareVariable( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDeclaredPredicate( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDecorator( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDirective( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDirectiveLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDoExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isDoWhileStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEmptyStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEmptyTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumBooleanBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumBooleanMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumDefaultedMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumNumberBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumNumberMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumStringBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumStringMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isEnumSymbolBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExistsTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportAllDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportDefaultDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportDefaultSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportNamedDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportNamespaceSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExportSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExpressionStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExpressionWrapper( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFile( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFlow( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFlowBaseAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFlowDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFlowPredicate( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFlowType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFor( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isForInStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isForOfStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isForStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isForXStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFunction( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFunctionDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFunctionExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFunctionParent( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFunctionTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFunctionTypeParam( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isGenericTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isIdentifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isIfStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImmutable( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImport( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImportAttribute( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImportDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImportDefaultSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImportNamespaceSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImportOrExportDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isImportSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isIndexedAccessType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isInferredPredicate( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isInterfaceDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isInterfaceExtends( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isInterfaceTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isInterpreterDirective( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isIntersectionTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSX( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXAttribute( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXClosingElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXClosingFragment( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXEmptyExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXExpressionContainer( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXFragment( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXIdentifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXMemberExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXNamespacedName( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXOpeningElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXOpeningFragment( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXSpreadAttribute( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXSpreadChild( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isJSXText( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isLVal( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isLabeledStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isLogicalExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isLoop( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isMemberExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isMetaProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isMethod( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isMiscellaneous( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isMixedTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isModuleDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isModuleExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isModuleSpecifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNewExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNoop( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNullLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNullLiteralTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNullableTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNumberLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNumberLiteralTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNumberTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isNumericLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectMethod( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectPattern( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectTypeCallProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectTypeIndexer( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectTypeInternalSlot( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectTypeProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isObjectTypeSpreadProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isOpaqueType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isOptionalCallExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isOptionalIndexedAccessType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isOptionalMemberExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isParenthesizedExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPattern( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPatternLike( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPipelineBareFunction( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPipelinePrimaryTopicReference( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPipelineTopicExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPlaceholder( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPrivate( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPrivateName( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isProgram( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isPureish( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isQualifiedTypeIdentifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isRecordExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isRegExpLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isRegexLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isRestElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isRestProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isReturnStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isScopable( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSequenceExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSpreadElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSpreadProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStandardized( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStaticBlock( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStringLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStringLiteralTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStringTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSuper( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSwitchCase( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSwitchStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSymbolTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSAnyKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSArrayType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSAsExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSBaseType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSBigIntKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSBooleanKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSCallSignatureDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSConditionalType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSConstructSignatureDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSConstructorType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSDeclareFunction( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSDeclareMethod( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSEntityName( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSEnumDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSEnumMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSExportAssignment( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSExpressionWithTypeArguments( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSExternalModuleReference( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSFunctionType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSImportEqualsDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSImportType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSIndexSignature( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSIndexedAccessType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSInferType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSInstantiationExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSInterfaceBody( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSInterfaceDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSIntersectionType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSIntrinsicKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSLiteralType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSMappedType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSMethodSignature( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSModuleBlock( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSModuleDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSNamedTupleMember( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSNamespaceExportDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSNeverKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSNonNullExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSNullKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSNumberKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSObjectKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSOptionalType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSParameterProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSParenthesizedType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSPropertySignature( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSQualifiedName( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSRestType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSSatisfiesExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSStringKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSSymbolKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSThisType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTupleType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeAliasDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeAssertion( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeOperator( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeParameter( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeParameterDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeParameterInstantiation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypePredicate( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeQuery( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSTypeReference( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSUndefinedKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSUnionType( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSUnknownKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTSVoidKeyword( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTaggedTemplateExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTemplateElement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTemplateLiteral( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTerminatorless( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isThisExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isThisTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isThrowStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTopicReference( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTryStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTupleExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTupleTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeAlias( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeCastExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeParameter( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeParameterDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeParameterInstantiation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeScript( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isTypeofTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isUnaryExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isUnaryLike( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isUnionTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isUpdateExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isUserWhitespacable( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isV8IntrinsicIdentifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isVariableDeclaration( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isVariableDeclarator( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isVariance( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isVoidTypeAnnotation( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isWhile( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isWhileStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isWithStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isYieldExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; } export interface NodePathValidators - extends BaseNodePathValidators, + extends Omit, VirtualTypeNodePathValidators {} diff --git a/packages/babel-traverse/src/path/lib/virtual-types-validator.ts b/packages/babel-traverse/src/path/lib/virtual-types-validator.ts index 38f157a36008..6da221af4f21 100644 --- a/packages/babel-traverse/src/path/lib/virtual-types-validator.ts +++ b/packages/babel-traverse/src/path/lib/virtual-types-validator.ts @@ -26,66 +26,76 @@ import type * as t from "@babel/types"; const { isCompatTag } = react; import type { VirtualTypeAliases } from "./virtual-types"; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; +}>; + export interface VirtualTypeNodePathValidators { isBindingIdentifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; - isBlockScoped(opts?: object): boolean; + isBlockScoped(opts?: Opts): boolean; /** * @deprecated */ isExistentialTypeParam( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isFlow( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isForAwaitStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; - isGenerated(opts?: object): boolean; + isGenerated(opts?: VirtualTypeAliases["Generated"]): boolean; /** * @deprecated */ - isNumericLiteralTypeAnnotation(opts?: object): void; - isPure(opts?: object): boolean; - isReferenced(opts?: object): boolean; + isNumericLiteralTypeAnnotation( + opts?: VirtualTypeAliases["NumericLiteralTypeAnnotation"], + ): void; + isPure(opts?: VirtualTypeAliases["Pure"]): boolean; + isReferenced(opts?: VirtualTypeAliases["Referenced"]): boolean; isReferencedIdentifier( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isReferencedMemberExpression( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isRestProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isScope( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isSpreadProperty( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; isStatement( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; - isUser(opts?: object): boolean; + isUser(opts?: VirtualTypeAliases["User"]): boolean; isVar( this: NodePath, - opts?: object, + opts?: Opts, ): this is NodePath; } @@ -201,14 +211,23 @@ export function isForAwaitStatement(this: NodePath): boolean { return isForOfStatement(this.node, { await: true }); } -export function isExistentialTypeParam(this: NodePath): void { - throw new Error( - "`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.", - ); -} - -export function isNumericLiteralTypeAnnotation(this: NodePath): void { - throw new Error( - "`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.", - ); +if (!process.env.BABEL_8_BREAKING) { + if (!USE_ESM) { + // eslint-disable-next-line no-restricted-globals + exports.isExistentialTypeParam = function isExistentialTypeParam( + this: NodePath, + ): void { + throw new Error( + "`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.", + ); + }; + + // eslint-disable-next-line no-restricted-globals + exports.isNumericLiteralTypeAnnotation = + function isNumericLiteralTypeAnnotation(this: NodePath): void { + throw new Error( + "`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.", + ); + }; + } } diff --git a/packages/babel-traverse/src/visitors.ts b/packages/babel-traverse/src/visitors.ts index de38c6e19714..c5fc89621021 100644 --- a/packages/babel-traverse/src/visitors.ts +++ b/packages/babel-traverse/src/visitors.ts @@ -331,6 +331,7 @@ function ensureCallbackArrays(obj: Visitor) { function wrapCheck(nodeType: VIRTUAL_TYPES, fn: Function) { const newFn = function (this: unknown, path: NodePath) { + // @ts-expect-error: Expression produces a union type that is too complex to represent. if (path[`is${nodeType}`]()) { return fn.apply(this, arguments); } diff --git a/packages/babel-types/scripts/generators/validators.js b/packages/babel-types/scripts/generators/validators.js index 870423f5bc9b..95577fc18cb1 100644 --- a/packages/babel-types/scripts/generators/validators.js +++ b/packages/babel-types/scripts/generators/validators.js @@ -81,12 +81,12 @@ import shallowEqual from "../../utils/shallowEqual"; import type * as t from "../.."; import deprecationWarning from "../../utils/deprecationWarning"; -type Opts = Partial<{ - [Prop in keyof Object]: Object[Prop] extends t.Node - ? t.Node | Object[Prop] - : Object[Prop] extends t.Node[] - ? t.Node[] | Object[Prop] - : Object[Prop]; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; }>; `; diff --git a/packages/babel-types/src/validators/generated/index.ts b/packages/babel-types/src/validators/generated/index.ts index 0933f7fa883d..4ea3fb808ff9 100644 --- a/packages/babel-types/src/validators/generated/index.ts +++ b/packages/babel-types/src/validators/generated/index.ts @@ -9,12 +9,12 @@ import shallowEqual from "../../utils/shallowEqual"; import type * as t from "../.."; import deprecationWarning from "../../utils/deprecationWarning"; -type Opts = Partial<{ - [Prop in keyof Object]: Object[Prop] extends t.Node - ? t.Node | Object[Prop] - : Object[Prop] extends t.Node[] - ? t.Node[] | Object[Prop] - : Object[Prop]; +type Opts = Partial<{ + [Prop in keyof Obj]: Obj[Prop] extends t.Node + ? t.Node + : Obj[Prop] extends t.Node[] + ? t.Node[] + : Obj[Prop]; }>; export function isArrayExpression(