From d77dc9c062cba00b0d711776508284f7e6d808ad Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 02:17:08 -0400 Subject: [PATCH 01/10] babel-traverse: Allow use of visitors with custom state types in calls to traverse --- types/babel-traverse/index.d.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index df420c17bd..211770d76d 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -8,9 +8,10 @@ import * as t from 'babel-types'; export type Node = t.Node; -export default function traverse(parent: Node | Node[], opts?: TraverseOptions, scope?: Scope, state?: any, parentPath?: NodePath): void; +export default function traverse(parent: Node | Node[], opts: TraverseOptions, scope: Scope, state: S, parentPath?: NodePath): void; +export default function traverse(parent: Node | Node[], opts: TraverseOptions, scope?: Scope, state?: any, parentPath?: NodePath): void; -export interface TraverseOptions extends Visitor { +export interface TraverseOptions extends Visitor { scope?: Scope; noScope?: boolean; } @@ -353,7 +354,8 @@ export class NodePath { buildCodeFrameError(msg: string, Error?: new (msg: string) => TError): TError; - traverse(visitor: Visitor, state?: any): void; + traverse(visitor: Visitor, state: T): void; + traverse(visitor: Visitor): void; set(key: string, node: Node): void; From 920bf98cd87fbf36be60ac1ff302cdcfa8a5d63e Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 02:18:04 -0400 Subject: [PATCH 02/10] babel-traverse: Denote that path keys may be indexes --- types/babel-traverse/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index 211770d76d..738f60f3df 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -340,7 +340,7 @@ export class NodePath { listKey: string; inList: boolean; parentKey: string; - key: string; + key: string | number; node: T; scope: Scope; type: string; From 38cf733222102bd30f73f0f2862ff1233952ab0a Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 02:20:14 -0400 Subject: [PATCH 03/10] babel-traverse: Denote proper return types for getFunctionParent/getStatementParent and add missing getAllPrevSiblings/getAllNextSiblings --- types/babel-traverse/index.d.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index 738f60f3df..c3d7b1d819 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -374,10 +374,10 @@ export class NodePath { find(callback: (path: NodePath) => boolean): NodePath; /** Get the parent function of the current path. */ - getFunctionParent(): NodePath; + getFunctionParent(): NodePath; /** Walk up the tree until we hit a parent node path in a list. */ - getStatementParent(): NodePath; + getStatementParent(): NodePath; /** * Get the deepest common ancestor and then from it, get the earliest relationship path @@ -584,7 +584,9 @@ export class NodePath { getCompletionRecords(): NodePath[]; - getSibling(key: string): NodePath; + getSibling(key: string | number): NodePath; + getAllPrevSiblings(): NodePath[]; + getAllNextSiblings(): NodePath[]; get(key: string, context?: boolean | TraversalContext): NodePath; From 361f4949ac881c66ce93def5e537bd33dac8ff39 Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 04:12:50 -0400 Subject: [PATCH 04/10] babel-types: Infer return types on NodePath.get using the keys/values of the type of node the path represents --- types/babel-traverse/index.d.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index c3d7b1d819..e1cfbfa49b 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Troy Gerwien // Marvin Hagemeister // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.9 import * as t from 'babel-types'; export type Node = t.Node; @@ -588,7 +588,8 @@ export class NodePath { getAllPrevSiblings(): NodePath[]; getAllNextSiblings(): NodePath[]; - get(key: string, context?: boolean | TraversalContext): NodePath; + get(key: K, context?: boolean | TraversalContext): T[K] extends (Node | null | undefined)[] ? NodePath[] : T[K] extends Node | null | undefined ? NodePath : never; + get(key: string, context?: boolean | TraversalContext): NodePath | NodePath[]; getBindingIdentifiers(duplicates?: boolean): Node[]; From 3b237ad2dddc7c66cfb8907bd1d2a2032254ece6 Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 04:13:44 -0400 Subject: [PATCH 05/10] babel-traverse: Add missing typed overload of traverse on Scope --- types/babel-traverse/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index e1cfbfa49b..e979844adb 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -26,6 +26,7 @@ export class Scope { bindings: { [name: string]: Binding; }; /** Traverse node with current scope and path. */ + traverse(node: Node | Node[], opts: TraverseOptions, state: S): void; traverse(node: Node | Node[], opts?: TraverseOptions, state?: any): void; /** Generate a unique identifier and add it to the current scope. */ From 5c76c6db99c046815fc6d1ff5797f44c328a6879 Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 04:14:50 -0400 Subject: [PATCH 06/10] babel-traverse: Make the type of NodePath.type include null if the NodePath can contain a null node --- types/babel-traverse/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index e979844adb..9fb6bd99c2 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -344,7 +344,7 @@ export class NodePath { key: string | number; node: T; scope: Scope; - type: string; + type: T extends undefined | null ? string | null : string; typeAnnotation: object; getScope(scope: Scope): Scope; From 28a15301ba8398437dd0a0303c7b27e6daf2e894 Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 04:15:10 -0400 Subject: [PATCH 07/10] babel-traverse: Add missing willIMaybeExecuteBefore on NodePath --- types/babel-traverse/index.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index 9fb6bd99c2..12c5bd0f55 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -540,6 +540,9 @@ export class NodePath { /** Get the source code associated with this node. */ getSource(): string; + /** Check if the current path will maybe execute before another path */ + willIMaybeExecuteBefore(path: NodePath): boolean; + // ------------------------- context ------------------------- call(key: string): boolean; From 8a68eebb8cfe87f911473511f160486f2eba0f3e Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 04:15:51 -0400 Subject: [PATCH 08/10] babel-traverse: Add Ryan Petrich to authors list --- types/babel-traverse/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index 12c5bd0f55..be85de0475 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -2,6 +2,7 @@ // Project: https://github.com/babel/babel/tree/master/packages/babel-traverse // Definitions by: Troy Gerwien // Marvin Hagemeister +// Ryan Petrich // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.9 From 49d2f9d924250667ec0dcc2a24b48adabad48082 Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 05:57:10 -0400 Subject: [PATCH 09/10] babel-traverse: Fix lint warnings --- types/babel-traverse/index.d.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index be85de0475..9be09f7655 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -593,7 +593,10 @@ export class NodePath { getAllPrevSiblings(): NodePath[]; getAllNextSiblings(): NodePath[]; - get(key: K, context?: boolean | TraversalContext): T[K] extends (Node | null | undefined)[] ? NodePath[] : T[K] extends Node | null | undefined ? NodePath : never; + get(key: K, context?: boolean | TraversalContext): + T[K] extends Array ? Array> : + T[K] extends Node | null | undefined ? NodePath : + never; get(key: string, context?: boolean | TraversalContext): NodePath | NodePath[]; getBindingIdentifiers(duplicates?: boolean): Node[]; From c972d79ad2f1d8b9f3aca76e9ff67c55fab537de Mon Sep 17 00:00:00 2001 From: Ryan Petrich Date: Mon, 11 Jun 2018 05:57:50 -0400 Subject: [PATCH 10/10] babel-traverse: Update all babel-related packages to require TypeScript 2.8 (so that tests pass) --- types/babel-core/index.d.ts | 2 +- types/babel-generator/index.d.ts | 2 +- types/babel-template/index.d.ts | 2 +- types/babel-traverse/index.d.ts | 2 +- types/babel-types/index.d.ts | 2 +- types/babel-webpack-plugin/index.d.ts | 2 +- types/babelify/index.d.ts | 2 +- types/babylon-walk/index.d.ts | 2 +- types/babylon/index.d.ts | 2 +- types/istanbul-lib-instrument/index.d.ts | 2 +- types/prettier/index.d.ts | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/types/babel-core/index.d.ts b/types/babel-core/index.d.ts index de09b2a91f..3a6da1b49d 100644 --- a/types/babel-core/index.d.ts +++ b/types/babel-core/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Troy Gerwien // Marvin Hagemeister // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import * as t from 'babel-types'; export { t as types }; diff --git a/types/babel-generator/index.d.ts b/types/babel-generator/index.d.ts index 2e34d158fc..8afeca4cd1 100644 --- a/types/babel-generator/index.d.ts +++ b/types/babel-generator/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Troy Gerwien // Johnny Estilles // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import * as t from 'babel-types'; diff --git a/types/babel-template/index.d.ts b/types/babel-template/index.d.ts index 467b0193e7..50b759c3f5 100644 --- a/types/babel-template/index.d.ts +++ b/types/babel-template/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Troy Gerwien // Marvin Hagemeister // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import { BabylonOptions } from 'babylon'; import * as t from 'babel-types'; diff --git a/types/babel-traverse/index.d.ts b/types/babel-traverse/index.d.ts index 9be09f7655..5c18c3ff29 100644 --- a/types/babel-traverse/index.d.ts +++ b/types/babel-traverse/index.d.ts @@ -4,7 +4,7 @@ // Marvin Hagemeister // Ryan Petrich // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.9 +// TypeScript Version: 2.8 import * as t from 'babel-types'; export type Node = t.Node; diff --git a/types/babel-types/index.d.ts b/types/babel-types/index.d.ts index 8c892a3ca0..47068c3481 100644 --- a/types/babel-types/index.d.ts +++ b/types/babel-types/index.d.ts @@ -5,7 +5,7 @@ // Marvin Hagemeister // Boris Cherny // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 export interface Comment { value: string; diff --git a/types/babel-webpack-plugin/index.d.ts b/types/babel-webpack-plugin/index.d.ts index 3f16d154ac..6f85bae2cc 100644 --- a/types/babel-webpack-plugin/index.d.ts +++ b/types/babel-webpack-plugin/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/simlrh/babel-webpack-plugin // Definitions by: Jed Fox // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import { Plugin } from 'webpack'; import { TransformOptions } from 'babel-core'; diff --git a/types/babelify/index.d.ts b/types/babelify/index.d.ts index f394d2ba44..ca90ae9d4c 100644 --- a/types/babelify/index.d.ts +++ b/types/babelify/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: TeamworkGuy2 // Marvin Hagemeister // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 /// diff --git a/types/babylon-walk/index.d.ts b/types/babylon-walk/index.d.ts index 02c3f39d10..43c9c1bf3a 100644 --- a/types/babylon-walk/index.d.ts +++ b/types/babylon-walk/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/pugjs/babylon-walk // Definitions by: Marek Buchar // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import * as babelTypes from 'babel-types'; diff --git a/types/babylon/index.d.ts b/types/babylon/index.d.ts index eb22f30c13..07eb74bb32 100644 --- a/types/babylon/index.d.ts +++ b/types/babylon/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Troy Gerwien // Marvin Hagemeister // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 import { File, Expression } from 'babel-types'; diff --git a/types/istanbul-lib-instrument/index.d.ts b/types/istanbul-lib-instrument/index.d.ts index e1d4e813f9..1b749a893c 100644 --- a/types/istanbul-lib-instrument/index.d.ts +++ b/types/istanbul-lib-instrument/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/istanbuljs/istanbuljs // Definitions by: Jason Cheatham // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.4 +// TypeScript Version: 2.8 import { FileCoverage, FileCoverageData, Range } from 'istanbul-lib-coverage'; import { RawSourceMap } from 'source-map'; diff --git a/types/prettier/index.d.ts b/types/prettier/index.d.ts index 7d6621d69b..881ca6b182 100644 --- a/types/prettier/index.d.ts +++ b/types/prettier/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/prettier/prettier // Definitions by: Ika // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 export type AST = any; export type Doc = doc.builders.Doc;