530 lines
13 KiB
Markdown
530 lines
13 KiB
Markdown
|
# 2.29.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* added utility `isCompilerOptionEnabled`
|
||
|
|
||
|
# 2.28.0
|
||
|
|
||
|
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
|
||
|
|
||
|
# 2.14.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* added `isDeleteExpression`
|
||
|
* added `getLineBreakStyle`
|
||
|
|
||
|
# 2.13.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* fixed name of `isJsxFragment`
|
||
|
|
||
|
# 2.13.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* added support for `JsxFragment` introduced in typescript@2.6.2
|
||
|
* added corresponding typeguard functions
|
||
|
|
||
|
# 2.12.2
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `endsControlFlow`
|
||
|
* added missing logic for labeled statement, iteration statements and try-catch
|
||
|
* added missing logic for `break` and `continue` with labels
|
||
|
* take all jump statements into account, not only the last statement
|
||
|
* `isValidIdentifier` and `isValidNumericLiteral` handle irregular whitespace
|
||
|
* `findImports` searches in ambient modules inside regular `.ts` files (not only `.d.ts`)
|
||
|
* `canHaveJsDoc` is now a typeguard
|
||
|
|
||
|
# 2.12.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `forEachTokenWithTrivia`
|
||
|
* handles irregular whitespace and no longer visits some tokens twice
|
||
|
* correctly calculates the range of JsxText
|
||
|
|
||
|
# 2.12.0
|
||
|
|
||
|
**API-Changes:**
|
||
|
|
||
|
* deprecated `ImportOptions` if favor of the new `ImportKind` enum
|
||
|
|
||
|
# 2.11.2
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `parseJsDocOfNode`: set correct `pos`, `end` and `parent` properties. Also affects `getJsDoc` of `EndOfFileToken`
|
||
|
|
||
|
# 2.11.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `collectVariableUsage`: correctly consider catch binding as block scoped declaration inside catch block
|
||
|
|
||
|
# 2.11.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `getJsDoc` now correctly returns JsDoc for `EndOfFileToken`
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* added utility `parseJsDocOfNode`
|
||
|
|
||
|
# 2.10.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* added utility `findImports` to find all kinds of imports in a source file
|
||
|
|
||
|
# 2.9.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* added typeguard `isMappedTypeNode`
|
||
|
* added utilities `canHaveJsDoc` and `getJsDoc`
|
||
|
|
||
|
# 2.8.2
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `collectVariableUsage`: handle global augmentation like other module augmentations
|
||
|
|
||
|
# 2.8.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* Support `typescript@2.5.1` with optional catch binding
|
||
|
* `collectVariableUsage` fixed a bug where method decorator had method's parameters in scope
|
||
|
|
||
|
# 2.8.0
|
||
|
|
||
|
* Compatibility with the latest typescript nightly
|
||
|
* Added `getIdentifierText` to unescape identifiers across typescript versions
|
||
|
|
||
|
# 2.7.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `isReassignmentTarget` don't return `true` for right side of assignment
|
||
|
|
||
|
# 2.7.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added `isReassignmentTarget` utility
|
||
|
|
||
|
# 2.6.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `getDeclarationDomain` now returns `undefined` for Parameter in IndexSignature
|
||
|
* `collectVariableUsage` ignores Parameter in IndexSignature
|
||
|
|
||
|
# 2.6.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `collectVariableUsage`:
|
||
|
* don't merge imports with global declarations
|
||
|
* treat everything in a declaration file as exported if there is no explicit `export {};`
|
||
|
* `isExpressionValueUsed`: handle destructuring in `for...of`
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added `getModifier` utility
|
||
|
* Added `DeclarationDomain.Import` to distinguish imports from other declarations
|
||
|
|
||
|
# 2.5.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `collectVariableUsage` ignore jump labels as in `break label;`
|
||
|
|
||
|
# 2.5.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `isFunctionWithBody` handles constructor overload correctly.
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Implemented `isExpressionValueUsed` to check whether the result of an expression is actually used.
|
||
|
* Implemented `getDeclarationDomain` to determine if a given declaration introduces a new symbol in the value or type domain.
|
||
|
|
||
|
**`collectVariableUses` is now usable**
|
||
|
|
||
|
* no longer ignores signatures and its parameters
|
||
|
* don't merge declarations and uses across domains
|
||
|
* no longer marks exceptions in catch clause or parameter properties as exported
|
||
|
* fixed exports of namespaces
|
||
|
* fixed scoping of ClassExpression name
|
||
|
* correcly handle ambient namespaces and module augmentations
|
||
|
* fixed how `: typeof foo` is handled for parameters and function return type
|
||
|
* **still WIP**: `export {Foo as Bar}` inside ambient namespaces and modules
|
||
|
|
||
|
# 2.4.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `getLineRanges`: `contentLength` now contains the correct line length when there are multiple consecutive line break characters
|
||
|
* `getTokenAtPosition`: don't match tokens that end at the specified position (because that's already outside of their range)
|
||
|
* deprecated the misnamed `isModfierFlagSet`, use the new `isModifierFlagSet` instead
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added typeguard: `isJsDoc`
|
||
|
* Added experimental scope and usage analysis (`getUsageDomain` and `collectVariableUsage`)
|
||
|
|
||
|
# 2.3.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `forEachComment` no longer omits some comments when callback returns a truthy value
|
||
|
* `isPositionInComment` fixed false positive inside JSXText
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added utility: `getCommentAtPosition`
|
||
|
|
||
|
# 2.2.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* Fixed bit value of `SideEffectOptions.JsxElement` to be a power of 2
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added utilities: `getTokenAtPosition` and `isPositionInComment`
|
||
|
|
||
|
# 2.1.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added typeguard `isExpression`
|
||
|
* Added utilities: `hasSideEffects`, `getDeclarationOfBindingElement`
|
||
|
|
||
|
# 2.0.0
|
||
|
|
||
|
**Breaking Changes:**
|
||
|
|
||
|
* Dropped compatibility with `typescript@<2.1.0`
|
||
|
* Removed misnamed `isNumericliteral`, use `isNumericLiteral` instead (notice the uppercase L)
|
||
|
* Removed `isEnumLiteralType` which will cause compile errors with typescript@2.4.0
|
||
|
* Refactored directory structure: all imports that referenced subdirectories (e.g. `require('tsutils/src/typeguard')` will be broken
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* New directory structure allows imports of typeguards or utils independently, e.g. (`require('tsutils/typeguard')`)
|
||
|
|
||
|
# 1.9.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `isObjectFlagSet` now uses the correct `objectFlags` property
|
||
|
|
||
|
# 1.9.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `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`
|
||
|
|
||
|
**Features**:
|
||
|
|
||
|
* Added typeguards for types
|
||
|
* Added utilities for flag checking: `isNodeFlagSet`, `isTypeFlagSet`, `isSymbolFlagSet`,`isObjectFlagSet`, `isModifierFlagSet`
|
||
|
|
||
|
# 1.8.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Support peer dependency of typescript nightlies of 2.4.0
|
||
|
* Added typeguards: `isJsxAttributes`, `isIntersectionTypeNode`, `isTypeOperatorNode`, `isTypePredicateNode`, `isTypeQueryNode`, `isUnionTypeNode`
|
||
|
|
||
|
# 1.7.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `isFunctionScopeBoundary` now handles Interfaces, TypeAliases, FunctionSignatures, etc
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added utilities: `isThisParameter`, `isSameLine` and `isFunctionWithBody`
|
||
|
|
||
|
# 1.6.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Add `isValidPropertyAccess`, `isValidNumericLiteral` and `isValidPropertyName`
|
||
|
|
||
|
# 1.5.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Add `isValidIdentifier`
|
||
|
|
||
|
# 1.4.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Add `contentLength` property to the result of `getLineRanges`
|
||
|
|
||
|
# 1.3.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `canHaveLeadingTrivia`:
|
||
|
* Fix property access on undefined parent reference
|
||
|
* Fixes: [palantir/tslint#2330](https://github.com/palantir/tslint/issues/2330)
|
||
|
* `hasOwnThisReference`: now includes accessors on object literals
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Typeguards:
|
||
|
* isTypeParameterDeclaration
|
||
|
* isEnitityName
|
||
|
|
||
|
# 1.2.2
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* `hasOwnThisReference`:
|
||
|
* exclude overload signatures of function declarations
|
||
|
* add method declarations on object literals
|
||
|
|
||
|
# 1.2.1
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* Fix name of `isNumericLiteral`
|
||
|
|
||
|
# 1.2.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Typeguards:
|
||
|
* isEnumMember
|
||
|
* isExpressionWithTypeArguments
|
||
|
* isImportSpecifier
|
||
|
* Utilities:
|
||
|
* isJsDocKind, isTypeNodeKind
|
||
|
* Allow typescript@next in peerDependencies
|
||
|
|
||
|
# 1.1.0
|
||
|
|
||
|
**Bugfixes:**
|
||
|
|
||
|
* Fix isBlockScopeBoundary: Remove WithStatement, IfStatment, DoStatement and WhileStatement because they are no scope boundary whitout a block.
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Added more typeguards:
|
||
|
* isAssertionExpression
|
||
|
* isEmptyStatement
|
||
|
* isJsxAttributeLike
|
||
|
* isJsxOpeningLikeElement
|
||
|
* isNonNullExpression
|
||
|
* isSyntaxList
|
||
|
* Utilities:
|
||
|
* getNextToken, getPreviousToken
|
||
|
* hasOwnThisReference
|
||
|
* getLineRanges
|
||
|
|
||
|
# 1.0.0
|
||
|
|
||
|
**Features:**
|
||
|
|
||
|
* Initial implementation of typeguards
|
||
|
* Utilities:
|
||
|
* getChildOfKind
|
||
|
* isNodeKind, isAssignmentKind
|
||
|
* hasModifier, isParameterProperty, hasAccessModifier
|
||
|
* getPreviousStatement, getNextStatement
|
||
|
* getPropertyName
|
||
|
* forEachDestructuringIdentifier, forEachDeclaredVariable
|
||
|
* getVariableDeclarationKind, isBlockScopedVariableDeclarationList, isBlockScopedVariableDeclaration
|
||
|
* isScopeBoundary, isFunctionScopeBoundary, isBlockScopeBoundary
|
||
|
* forEachToken, forEachTokenWithTrivia, forEachComment
|
||
|
* endsControlFlow
|