{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added utility {\ttfamily is\+Compiler\+Option\+Enabled}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30915}{}\doxysection{2.\+28.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30915}
Typeguards are now split into multiple submodules for each version of Type\+Script (starting with 2.\+8.\+0). That means you can now import directly from {\ttfamily \char`\"{}tsutils/typeguard/2.\+8\char`\"{}} to get compatible declaraton files for Type\+Script@2.\+8. For more information please read the relevant section in \mbox{\hyperlink{md_sfcode_node_modules_tsutils_README}{README.md}}.

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added typeguards\+: {\ttfamily is\+Tuple\+Type}, {\ttfamily is\+Optional\+Type\+Node}, {\ttfamily is\+Rest\+Type\+Node}, {\ttfamily is\+Synthetic\+Expression} (currently available from {\ttfamily \char`\"{}tsutils/typeguard/3.\+0\char`\"{}})
\item added utility {\ttfamily is\+Strict\+Compiler\+Option\+Enabled}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30916}{}\doxysection{2.\+27.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30916}
Avoid crash caused by removed function in {\ttfamily typescript@3.\+0.\+0}.\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30917}{}\doxysection{2.\+27.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30917}
Added support for Type\+Script@3.\+0.\+0 nightly builds.\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30918}{}\doxysection{2.\+27.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30918}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily get\+IIFE} utility
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30919}{}\doxysection{2.\+26.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30919}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily for\+Each\+Comment} and {\ttfamily for\+Each\+Token\+With\+Trivia} no longer duplicate comments around missing nodes
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30920}{}\doxysection{2.\+26.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30920}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item fixed crash in {\ttfamily has\+Side\+Effects} with tagged template literal without substitution\+: {\ttfamily tag\`{}template\`{}}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30921}{}\doxysection{2.\+26.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30921}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added typeguard {\ttfamily is\+Literal\+Type\+Node}
\item added support for type imports (`type T = import(\textquotesingle{}foo'){\ttfamily ) to}find\+Imports{\ttfamily via}Import\+Kind.\+Import\+Type\`{}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30922}{}\doxysection{2.\+25.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30922}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily collect\+Variable\+Usage}\+: fixed name lookup in function signatures to match runtime behavior. Note that this is not completely fixed in Type\+Script, yet. See\+: \href{https://github.com/Microsoft/TypeScript/issues/22825}{\texttt{ Microsoft/\+Type\+Script\#22825}} and \href{https://github.com/Microsoft/TypeScript/issues/22769}{\texttt{ Microsoft/\+Type\+Script\#22769}}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30923}{}\doxysection{2.\+25.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30923}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added utilities\+: {\ttfamily is\+Statement\+In\+Ambient\+Context} and {\ttfamily is\+Ambient\+Module\+Block}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30924}{}\doxysection{2.\+24.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30924}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added typeguards for typescript@2.\+8\+: {\ttfamily is\+Conditional\+Type\+Node}, {\ttfamily is\+Infer\+Type\+Node}, {\ttfamily is\+Conditional\+Type}, {\ttfamily is\+Instantiable\+Type}, {\ttfamily is\+Substitution\+Type}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30925}{}\doxysection{2.\+23.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30925}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added typeguard {\ttfamily is\+For\+In\+Or\+Of\+Statement}
\end{DoxyItemize}

{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item correctly handle comments in generic JSX elements\+: {\ttfamily $<$My\+Component$<$string$>$/$\ast$comment$\ast$/$>$$<$/\+My\+Component$>$}
\item fixed a bug with false positive trailing comments at the end of JSX self closing element\+: {\ttfamily $<$div$>$$<$br/$>$/$\ast$no comment$\ast$/$<$/div$>$}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30926}{}\doxysection{2.\+22.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30926}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily collect\+Variable\+Usage}\+: handle Conditional\+Types and {\ttfamily infer T}, which will be introduced in Type\+Script@2.\+8.\+0 and are already available in nightly builds
\item {\ttfamily is\+Literal\+Type} no longer returns true for {\ttfamily ts.\+Type\+Flags.\+Boolean\+Literal} as this is not a {\ttfamily ts.\+Literal\+Type}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30927}{}\doxysection{2.\+22.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30927}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily ends\+Control\+Flow}\+:
\begin{DoxyItemize}
\item handle loops that might not even run a single iteration
\item handle constant boolean conditions in loops and if
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30928}{}\doxysection{2.\+22.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30928}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily is\+Falsy\+Type} utility
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30929}{}\doxysection{2.\+21.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30929}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item fixed compile error with {\ttfamily typescript@2.\+8.\+0-\/dev}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30930}{}\doxysection{2.\+21.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30930}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily is\+Reassignment\+Target}\+: handle type assertions and non-\/null assertion
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30931}{}\doxysection{2.\+21.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30931}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily for\+Each\+Declared\+Variable} uses a more precise type for the callback parameter to make it useable again with typescript@2.\+7.\+1
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily is\+Unique\+ESSymbol\+Type} typeguard
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30932}{}\doxysection{2.\+20.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30932}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily is\+Thenable\+Type} utility
\item added {\ttfamily union\+Type\+Parts} utility
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30933}{}\doxysection{2.\+19.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30933}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily for\+Each\+Comment}, {\ttfamily get\+Comment\+At\+Position} and {\ttfamily is\+Position\+In\+Comment}\+: skip shebang ({\ttfamily \#! something}) to not miss following comments at the start of the file
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30934}{}\doxysection{2.\+19.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30934}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily Wrapped\+Ast} interface that models the type of a wrapped Source\+File more accurate
\item added {\ttfamily get\+Wrapped\+Node\+At\+Position} utiltiy that takes a {\ttfamily Node\+Wrap} and returns the most deeply nested Node\+Wrap that contains the given position
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30935}{}\doxysection{2.\+18.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30935}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Control\+Flow\+End} accepts Block\+Like as argument
\end{DoxyItemize}

{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Control\+Flow\+End} and {\ttfamily ends\+Control\+Flow}\+: correctly handle nested Labeled\+Statements
\item {\ttfamily ends\+Control\+Flow} removed erroneous special case when an Iteration\+Statement is passed as argument whose parent is a Labeled\+Statement.
\begin{DoxyItemize}
\item if you want labels of an Iteration\+Statement (or Switch\+Statement) to be handled, you need to pass the Labeled\+Statement as argument.
\item \+:warning\+: this fix may change the returned value if you relied on the buggy behavior
\end{DoxyItemize}
\end{DoxyItemize}

{\bfseries{Deprecations\+:}}


\begin{DoxyItemize}
\item deprecated overload of {\ttfamily get\+Control\+Flow\+End} that contains the {\ttfamily label} parameter. This parameter is no longer used and should no longer be passed to the function.
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30936}{}\doxysection{2.\+17.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30936}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Control\+Flow\+End} and {\ttfamily ends\+Control\+Flow} (\#22)
\begin{DoxyItemize}
\item Throw\+Statements inside {\ttfamily try} are filtered out if there is a {\ttfamily catch} clause
\item Try\+Statements with {\ttfamily catch} only end control flow if {\ttfamily try} AND {\ttfamily catch} definitely end control flow
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30937}{}\doxysection{2.\+17.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30937}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily kind} property to {\ttfamily Node\+Wrap}
\item added {\ttfamily get\+Control\+Flow\+End} to public API
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30938}{}\doxysection{2.\+16.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30938}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily is\+Decorator} and {\ttfamily is\+Call\+Like\+Expression} typeguards
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30939}{}\doxysection{2.\+15.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30939}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily convert\+Ast} utility to produce a flattened and wrapped version of the AST
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30940}{}\doxysection{2.\+14.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30940}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added {\ttfamily is\+Delete\+Expression}
\item added {\ttfamily get\+Line\+Break\+Style}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30941}{}\doxysection{2.\+13.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30941}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item fixed name of {\ttfamily is\+Jsx\+Fragment}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30942}{}\doxysection{2.\+13.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30942}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added support for {\ttfamily Jsx\+Fragment} introduced in typescript@2.\+6.\+2
\item added corresponding typeguard functions
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30943}{}\doxysection{2.\+12.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30943}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily ends\+Control\+Flow}
\begin{DoxyItemize}
\item added missing logic for labeled statement, iteration statements and try-\/catch
\item added missing logic for {\ttfamily break} and {\ttfamily continue} with labels
\item take all jump statements into account, not only the last statement
\end{DoxyItemize}
\item {\ttfamily is\+Valid\+Identifier} and {\ttfamily is\+Valid\+Numeric\+Literal} handle irregular whitespace
\item {\ttfamily find\+Imports} searches in ambient modules inside regular {\ttfamily .ts} files (not only {\ttfamily .d.\+ts})
\item {\ttfamily can\+Have\+Js\+Doc} is now a typeguard
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30944}{}\doxysection{2.\+12.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30944}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily for\+Each\+Token\+With\+Trivia}
\begin{DoxyItemize}
\item handles irregular whitespace and no longer visits some tokens twice
\item correctly calculates the range of Jsx\+Text
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30945}{}\doxysection{2.\+12.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30945}
{\bfseries{API-\/\+Changes\+:}}


\begin{DoxyItemize}
\item deprecated {\ttfamily Import\+Options} if favor of the new {\ttfamily Import\+Kind} enum
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30946}{}\doxysection{2.\+11.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30946}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily parse\+Js\+Doc\+Of\+Node}\+: set correct {\ttfamily pos}, {\ttfamily end} and {\ttfamily parent} properties. Also affects {\ttfamily get\+Js\+Doc} of {\ttfamily End\+Of\+File\+Token}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30947}{}\doxysection{2.\+11.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30947}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily collect\+Variable\+Usage}\+: correctly consider catch binding as block scoped declaration inside catch block
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30948}{}\doxysection{2.\+11.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30948}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Js\+Doc} now correctly returns Js\+Doc for {\ttfamily End\+Of\+File\+Token}
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added utility {\ttfamily parse\+Js\+Doc\+Of\+Node}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30949}{}\doxysection{2.\+10.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30949}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added utility {\ttfamily find\+Imports} to find all kinds of imports in a source file
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30950}{}\doxysection{2.\+9.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30950}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item added typeguard {\ttfamily is\+Mapped\+Type\+Node}
\item added utilities {\ttfamily can\+Have\+Js\+Doc} and {\ttfamily get\+Js\+Doc}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30951}{}\doxysection{2.\+8.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30951}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily collect\+Variable\+Usage}\+: handle global augmentation like other module augmentations
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30952}{}\doxysection{2.\+8.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30952}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item Support {\ttfamily typescript@2.\+5.\+1} with optional catch binding
\item {\ttfamily collect\+Variable\+Usage} fixed a bug where method decorator had method\textquotesingle{}s parameters in scope
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30953}{}\doxysection{2.\+8.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30953}

\begin{DoxyItemize}
\item Compatibility with the latest typescript nightly
\item Added {\ttfamily get\+Identifier\+Text} to unescape identifiers across typescript versions
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30954}{}\doxysection{2.\+7.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30954}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily is\+Reassignment\+Target} don\textquotesingle{}t return {\ttfamily true} for right side of assignment
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30955}{}\doxysection{2.\+7.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30955}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added {\ttfamily is\+Reassignment\+Target} utility
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30956}{}\doxysection{2.\+6.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30956}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Declaration\+Domain} now returns {\ttfamily undefined} for Parameter in Index\+Signature
\item {\ttfamily collect\+Variable\+Usage} ignores Parameter in Index\+Signature
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30957}{}\doxysection{2.\+6.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30957}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily collect\+Variable\+Usage}\+:
\begin{DoxyItemize}
\item don\textquotesingle{}t merge imports with global declarations
\item treat everything in a declaration file as exported if there is no explicit {\ttfamily export \{\};}
\end{DoxyItemize}
\item {\ttfamily is\+Expression\+Value\+Used}\+: handle destructuring in {\ttfamily for...of}
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added {\ttfamily get\+Modifier} utility
\item Added {\ttfamily Declaration\+Domain.\+Import} to distinguish imports from other declarations
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30958}{}\doxysection{2.\+5.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30958}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily collect\+Variable\+Usage} ignore jump labels as in {\ttfamily break label;}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30959}{}\doxysection{2.\+5.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30959}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily is\+Function\+With\+Body} handles constructor overload correctly.
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Implemented {\ttfamily is\+Expression\+Value\+Used} to check whether the result of an expression is actually used.
\item Implemented {\ttfamily get\+Declaration\+Domain} to determine if a given declaration introduces a new symbol in the value or type domain.
\end{DoxyItemize}

$\ast$$\ast${\ttfamily collect\+Variable\+Uses} is now usable$\ast$$\ast$


\begin{DoxyItemize}
\item no longer ignores signatures and its parameters
\item don\textquotesingle{}t merge declarations and uses across domains
\item no longer marks exceptions in catch clause or parameter properties as exported
\item fixed exports of namespaces
\item fixed scoping of Class\+Expression name
\item correcly handle ambient namespaces and module augmentations
\item fixed how {\ttfamily \+: typeof foo} is handled for parameters and function return type
\item {\bfseries{still WIP}}\+: {\ttfamily export \{Foo as Bar\}} inside ambient namespaces and modules
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30960}{}\doxysection{2.\+4.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30960}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Line\+Ranges}\+: {\ttfamily content\+Length} now contains the correct line length when there are multiple consecutive line break characters
\item {\ttfamily get\+Token\+At\+Position}\+: don\textquotesingle{}t match tokens that end at the specified position (because that\textquotesingle{}s already outside of their range)
\item deprecated the misnamed {\ttfamily is\+Modfier\+Flag\+Set}, use the new {\ttfamily is\+Modifier\+Flag\+Set} instead
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added typeguard\+: {\ttfamily is\+Js\+Doc}
\item Added experimental scope and usage analysis ({\ttfamily get\+Usage\+Domain} and {\ttfamily collect\+Variable\+Usage})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30961}{}\doxysection{2.\+3.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30961}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily for\+Each\+Comment} no longer omits some comments when callback returns a truthy value
\item {\ttfamily is\+Position\+In\+Comment} fixed false positive inside JSXText
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added utility\+: {\ttfamily get\+Comment\+At\+Position}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30962}{}\doxysection{2.\+2.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30962}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item Fixed bit value of {\ttfamily Side\+Effect\+Options.\+Jsx\+Element} to be a power of 2
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added utilities\+: {\ttfamily get\+Token\+At\+Position} and {\ttfamily is\+Position\+In\+Comment}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30963}{}\doxysection{2.\+1.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30963}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added typeguard {\ttfamily is\+Expression}
\item Added utilities\+: {\ttfamily has\+Side\+Effects}, {\ttfamily get\+Declaration\+Of\+Binding\+Element}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30964}{}\doxysection{2.\+0.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30964}
{\bfseries{Breaking Changes\+:}}


\begin{DoxyItemize}
\item Dropped compatibility with {\ttfamily typescript@$<$2.\+1.\+0}
\item Removed misnamed {\ttfamily is\+Numericliteral}, use {\ttfamily is\+Numeric\+Literal} instead (notice the uppercase L)
\item Removed {\ttfamily is\+Enum\+Literal\+Type} which will cause compile errors with typescript@2.\+4.\+0
\item Refactored directory structure\+: all imports that referenced subdirectories (e.\+g. `require(\textquotesingle{}tsutils/src/typeguard')\`{} will be broken
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item New directory structure allows imports of typeguards or utils independently, e.\+g. (`require(\textquotesingle{}tsutils/typeguard')\`{})
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30965}{}\doxysection{1.\+9.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30965}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily is\+Object\+Flag\+Set} now uses the correct {\ttfamily object\+Flags} property
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30966}{}\doxysection{1.\+9.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30966}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily get\+Next\+Token} no longer omits {\ttfamily End\+Of\+File\+Token} when there is no trivia before EOF. That means the only inputs where {\ttfamily get\+Next\+Token} returns {\ttfamily undefined} are {\ttfamily Source\+File} and {\ttfamily End\+Of\+File\+Token}
\end{DoxyItemize}

{\bfseries{Features}}\+:


\begin{DoxyItemize}
\item Added typeguards for types
\item Added utilities for flag checking\+: {\ttfamily is\+Node\+Flag\+Set}, {\ttfamily is\+Type\+Flag\+Set}, {\ttfamily is\+Symbol\+Flag\+Set},{\ttfamily is\+Object\+Flag\+Set}, {\ttfamily is\+Modifier\+Flag\+Set}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30967}{}\doxysection{1.\+8.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30967}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Support peer dependency of typescript nightlies of 2.\+4.\+0
\item Added typeguards\+: {\ttfamily is\+Jsx\+Attributes}, {\ttfamily is\+Intersection\+Type\+Node}, {\ttfamily is\+Type\+Operator\+Node}, {\ttfamily is\+Type\+Predicate\+Node}, {\ttfamily is\+Type\+Query\+Node}, {\ttfamily is\+Union\+Type\+Node}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30968}{}\doxysection{1.\+7.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30968}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily is\+Function\+Scope\+Boundary} now handles Interfaces, Type\+Aliases, Function\+Signatures, etc
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added utilities\+: {\ttfamily is\+This\+Parameter}, {\ttfamily is\+Same\+Line} and {\ttfamily is\+Function\+With\+Body}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30969}{}\doxysection{1.\+6.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30969}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Add {\ttfamily is\+Valid\+Property\+Access}, {\ttfamily is\+Valid\+Numeric\+Literal} and {\ttfamily is\+Valid\+Property\+Name}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30970}{}\doxysection{1.\+5.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30970}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Add {\ttfamily is\+Valid\+Identifier}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30971}{}\doxysection{1.\+4.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30971}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Add {\ttfamily content\+Length} property to the result of {\ttfamily get\+Line\+Ranges}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30972}{}\doxysection{1.\+3.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30972}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily can\+Have\+Leading\+Trivia}\+:
\begin{DoxyItemize}
\item Fix property access on undefined parent reference
\item Fixes\+: \href{https://github.com/palantir/tslint/issues/2330}{\texttt{ palantir/tslint\#2330}}
\end{DoxyItemize}
\item {\ttfamily has\+Own\+This\+Reference}\+: now includes accessors on object literals
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Typeguards\+:
\begin{DoxyItemize}
\item is\+Type\+Parameter\+Declaration
\item is\+Enitity\+Name
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30973}{}\doxysection{1.\+2.\+2}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30973}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item {\ttfamily has\+Own\+This\+Reference}\+:
\begin{DoxyItemize}
\item exclude overload signatures of function declarations
\item add method declarations on object literals
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30974}{}\doxysection{1.\+2.\+1}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30974}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item Fix name of {\ttfamily is\+Numeric\+Literal}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30975}{}\doxysection{1.\+2.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30975}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Typeguards\+:
\begin{DoxyItemize}
\item is\+Enum\+Member
\item is\+Expression\+With\+Type\+Arguments
\item is\+Import\+Specifier
\end{DoxyItemize}
\item Utilities\+:
\begin{DoxyItemize}
\item is\+Js\+Doc\+Kind, is\+Type\+Node\+Kind
\end{DoxyItemize}
\item Allow typescript@next in peer\+Dependencies
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30976}{}\doxysection{1.\+1.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30976}
{\bfseries{Bugfixes\+:}}


\begin{DoxyItemize}
\item Fix is\+Block\+Scope\+Boundary\+: Remove With\+Statement, If\+Statment, Do\+Statement and While\+Statement because they are no scope boundary whitout a block.
\end{DoxyItemize}

{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Added more typeguards\+:
\begin{DoxyItemize}
\item is\+Assertion\+Expression
\item is\+Empty\+Statement
\item is\+Jsx\+Attribute\+Like
\item is\+Jsx\+Opening\+Like\+Element
\item is\+Non\+Null\+Expression
\item is\+Syntax\+List
\end{DoxyItemize}
\item Utilities\+:
\begin{DoxyItemize}
\item get\+Next\+Token, get\+Previous\+Token
\item has\+Own\+This\+Reference
\item get\+Line\+Ranges
\end{DoxyItemize}
\end{DoxyItemize}\hypertarget{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30977}{}\doxysection{1.\+0.\+0}\label{md_sfcode_node_modules_tsutils_CHANGELOG_autotoc_md30977}
{\bfseries{Features\+:}}


\begin{DoxyItemize}
\item Initial implementation of typeguards
\item Utilities\+:
\begin{DoxyItemize}
\item get\+Child\+Of\+Kind
\item is\+Node\+Kind, is\+Assignment\+Kind
\item has\+Modifier, is\+Parameter\+Property, has\+Access\+Modifier
\item get\+Previous\+Statement, get\+Next\+Statement
\item get\+Property\+Name
\item for\+Each\+Destructuring\+Identifier, for\+Each\+Declared\+Variable
\item get\+Variable\+Declaration\+Kind, is\+Block\+Scoped\+Variable\+Declaration\+List, is\+Block\+Scoped\+Variable\+Declaration
\item is\+Scope\+Boundary, is\+Function\+Scope\+Boundary, is\+Block\+Scope\+Boundary
\item for\+Each\+Token, for\+Each\+Token\+With\+Trivia, for\+Each\+Comment
\item ends\+Control\+Flow 
\end{DoxyItemize}
\end{DoxyItemize}