Typeguards are now split into multiple submodules for each version of TypeScript (starting with 2.8.0).
That means you can now import directly from `"tsutils/typeguard/2.8"` to get compatible declaraton files for TypeScript@2.8.
For more information please read the relevant section in [README.md](README.md).
**Features:**
* added typeguards: `isTupleType`, `isOptionalTypeNode`, `isRestTypeNode`, `isSyntheticExpression` (currently available from `"tsutils/typeguard/3.0"`)
* added utility `isStrictCompilerOptionEnabled`
# 2.27.2
Avoid crash caused by removed function in `typescript@3.0.0`.
# 2.27.1
Added support for TypeScript@3.0.0 nightly builds.
# 2.27.0
**Features:**
* added `getIIFE` utility
# 2.26.2
**Bugfixes:**
*`forEachComment` and `forEachTokenWithTrivia` no longer duplicate comments around missing nodes
# 2.26.1
**Bugfixes:**
* fixed crash in `hasSideEffects` with tagged template literal without substitution: ``tag`template` ``
# 2.26.0
**Features:**
* added typeguard `isLiteralTypeNode`
* added support for type imports (`type T = import('foo')`) to `findImports` via `ImportKind.ImportType`
# 2.25.1
**Bugfixes:**
*`collectVariableUsage`: fixed name lookup in function signatures to match runtime behavior. Note that this is not completely fixed in TypeScript, yet. See: [Microsoft/TypeScript#22825](https://github.com/Microsoft/TypeScript/issues/22825) and [Microsoft/TypeScript#22769](https://github.com/Microsoft/TypeScript/issues/22769)
# 2.25.0
**Features:**
* added utilities: `isStatementInAmbientContext` and `isAmbientModuleBlock`
# 2.24.0
**Features:**
* added typeguards for typescript@2.8: `isConditionalTypeNode`, `isInferTypeNode`, `isConditionalType`, `isInstantiableType`, `isSubstitutionType`
# 2.23.0
**Features:**
* added typeguard `isForInOrOfStatement`
**Bugfixes:**
* correctly handle comments in generic JSX elements: `<MyComponent<string>/*comment*/></MyComponent>`
* fixed a bug with false positive trailing comments at the end of JSX self closing element: `<div><br/>/*no comment*/</div>`
# 2.22.2
**Bugfixes:**
*`collectVariableUsage`: handle ConditionalTypes and `infer T`, which will be introduced in TypeScript@2.8.0 and are already available in nightly builds
*`isLiteralType` no longer returns true for `ts.TypeFlags.BooleanLiteral` as this is not a `ts.LiteralType`
# 2.22.1
**Bugfixes:**
*`endsControlFlow`:
* handle loops that might not even run a single iteration
* handle constant boolean conditions in loops and if
# 2.22.0
**Features:**
* added `isFalsyType` utility
# 2.21.2
**Bugfixes:**
* fixed compile error with `typescript@2.8.0-dev`
# 2.21.1
**Bugfixes:**
*`isReassignmentTarget`: handle type assertions and non-null assertion
# 2.21.0
**Bugfixes:**
*`forEachDeclaredVariable` uses a more precise type for the callback parameter to make it useable again with typescript@2.7.1
**Features:**
* added `isUniqueESSymbolType` typeguard
# 2.20.0
**Features:**
* added `isThenableType` utility
* added `unionTypeParts` utility
# 2.19.1
**Bugfixes:**
*`forEachComment`, `getCommentAtPosition` and `isPositionInComment`: skip shebang (`#! something`) to not miss following comments at the start of the file
# 2.19.0
**Features:**
* added `WrappedAst` interface that models the type of a wrapped SourceFile more accurate
* added `getWrappedNodeAtPosition` utiltiy that takes a `NodeWrap` and returns the most deeply nested NodeWrap that contains the given position
# 2.18.0
**Features:**
*`getControlFlowEnd` accepts BlockLike as argument
**Bugfixes:**
*`getControlFlowEnd` and `endsControlFlow`: correctly handle nested LabeledStatements
*`endsControlFlow` removed erroneous special case when an IterationStatement is passed as argument whose parent is a LabeledStatement.
* if you want labels of an IterationStatement (or SwitchStatement) to be handled, you need to pass the LabeledStatement as argument.
* :warning: this fix may change the returned value if you relied on the buggy behavior
**Deprecations:**
* deprecated overload of `getControlFlowEnd` that contains the `label` parameter. This parameter is no longer used and should no longer be passed to the function.
# 2.17.1
**Bugfixes:**
*`getControlFlowEnd` and `endsControlFlow` (#22)
* ThrowStatements inside `try` are filtered out if there is a `catch` clause
* TryStatements with `catch` only end control flow if `try` AND `catch` definitely end control flow
# 2.17.0
**Features:**
* added `kind` property to `NodeWrap`
* added `getControlFlowEnd` to public API
# 2.16.0
**Features:**
* added `isDecorator` and `isCallLikeExpression` typeguards
# 2.15.0
**Features:**
* added `convertAst` utility to produce a flattened and wrapped version of the AST
*`getNextToken` no longer omits `EndOfFileToken` when there is no trivia before EOF. That means the only inputs where `getNextToken` returns `undefined` are `SourceFile` and `EndOfFileToken`