150 KiB
Change Log
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
12.0.0 (2021-08-27)
Bug Fixes
- deno: avoid importing code using unstable APIs (2a0789c) - Thanks @wojpawlik!
Features
- Typescript 4.4 support (63c255b)
BREAKING CHANGES
- Upgraded to TS 4.4.
11.0.3 (2021-07-11)
Bug Fixes
- #1171 - Ensure the program is not sometimes reset when inspecting a symbol (a41b7b5)
- #1164 - getting a type, manipulating, then inspecting the type may cause source file to no longer exist in project (d8a651e)
11.0.1 (2021-05-27)
Bug Fixes
Node.isReferenceFindableNode(node)should returntruefor a constructor declaration. (b8b0a39)
11.0.0 (2021-05-26)
Features
- #1156 - Add
ReferenceFindableNodetoConstructorDeclaration. (e192d41) - TypeScript 4.3 Support (cd426a0)
BREAKING CHANGES
- Upgraded to TS 4.3.
10.1.0 (2021-05-15)
Bug Fixes
- Handle comma separated definitions with DefinitionInfo#getDeclarationNode (#1158) (a390e94) - Thanks @IgorMinar!
Features
- #1157 - Add
Node#asKind(kind: SyntaxKind)andNode#asKindOrThrow(kind: SyntaxKind)methods. (58bb5cc) - Add MappedTypeNode Wrapper - Only navigation methods for now (#1146) (f74a9e2) (6b6f1f4) - Thanks @nicdard!
10.0.2 (2021-03-22)
- Reduce dependencies.
10.0.1 (2021-02-24)
Bug Fixes
- Fix ts-morph declaration file. (e51eb0a)
10.0.0 (2021-02-24)
Bug Fixes
- #889 - Fix internal root directory check to work on windows. (6b2963c)
- #926 -
ExportedDeclarationsshould includeSourceFileand fixed handling of namespace exports. (b6bda27)
Features
- #916 - Type - Add literal related helper properties. (fd0acc8)
- #924 - NamespaceDeclaration -> ModuleDeclaration (3dd5c72)
- Add
Node#getFlags(). (b9769c2) - Add isKnownTypesPackageName option (#909) (398d946)
- Bundle typescript package in ts-morph/common (#934) (1cccd02)
- Upgrade to TS 4.2 (8dacc4f)
BREAKING CHANGES
- Upgraded to TS 4.2 (see TypeScript blog for breaking changes).
- ts-morph did not properly support some ambient and all shorthand ambient module declarations. Now
NamespaceDeclarationisModuleDeclaration. You will need to rename anything that references "Namespace" and change it to "Module". - The
ExportedDeclarationsunion type now properly includesSourceFile. It previously could have done that anyway and your code might not have handled it. - TypeScript is now bundled with ts-morph. You may still access TypeScript via
import { ts } from "ts-morph"as you should have been doing anyway. - The lib files/lib.d.ts files are now served from memory regardless of the file system host. If you want the old behaviour, specify a
libFolderPathin theProjectconstructor's options.
9.1.0 (2020-11-26)
Features
- Add Directory#getProject() (bef39b8)
- Support providing file paths to
getRelativePathToandgetRelativePathToAsModuleSpecifier. (df43d12)
9.0.0 (2020-11-21)
Bug Fixes
Previously ts-morph was incorrectly resolving files based on rootDir and rootDirs, but according to the nicely updated tsconfig documentation, these options have nothing to do with file resolution (read more). If you run into any trouble, try using "include": ["./your-source-dir"] at the top level of the config file instead of "rootDir": ["./your-source-dir"] in compiler options or please open an issue.
Code Refactoring
- #838 -
addFilesFromTsConfigis now inverted toskipAddingFilesFromTsConfig. Default behaviour is the same. (1fda310)
Features
- #858 - Remove
BooleanLiteraland replace withTrueLiteralandFalseLiteral. (97f0873) - #885 - Upgrade to TS 4.1 (d5395f6)
Performance Improvements
- #881 - Implement
getProjectVersiononLanguageServiceHost(#884) (916ffb4, 646f797) - Thanks @geremih!
BREAKING CHANGES
- Upgraded to TS 4.1.
addFilesFromTsConfigis now inverted toskipAddingFilesFromTsConfig. Default behaviour is the same.
This was done to make the option align with the other options.
BooleanLiteralis now a type alias ofTrueLiteralandFalseLiteral. This was done to match the same change made in the compiler API.
8.2.0 (2020-11-12)
Features
- Add
Project#getConfigFileParsingDiagnostics. (3f9f252)
8.1.2 (2020-10-12)
Bug Fixes
8.1.1 (2020-09-21)
Bug Fixes
8.1.0 (2020-08-25)
Features
- #803 - Standardize nodes with
getExpression()method to beExpressionedNodes. (3550cbf) - Add JSDocDeprecatedTag. (d73c480)
8.0.0 (2020-08-20)
Bug Fixes
Features
- #855 - Add Author, Callback, Enum, Implements JSDoc tags (f5b4bc9) - Thanks @ilyaulyanov!
- #857 - Upgrade to TypeScript 4.0 (67017f9)
BREAKING CHANGES
-
Upgraded to TypeScript 4.0
-
TupleTypeNode#getElementTypeNodes()is nowgetElements()to match the change in the compiler API.
7.3.0 (2020-08-11)
Features
7.2.0 (2020-08-09)
Bug Fixes
Features
- Add quotations around enum members with invalid names (#839) (affc253) Thanks @jeswr!
- Implement JSDocReadonlyTag and others (abbf208)
7.1.3 (2020-07-20)
Bug Fixes
7.1.2 (2020-06-18)
Bug Fixes
7.1.1 (2020-06-04)
Bug Fixes
- #823 - SourceFile#replaceWithText would sometimes throw when previous code had syntax errors. (cc66fc0)
7.1.0 (2020-05-16)
Bug Fixes
- #817 - Fix addJsDoc failing when there's no non-whitespace/asterisk characters in the jsdoc. (6ba8f5a)
Features
7.0.3 (2020-04-26)
Bug Fixes
7.0.2 (2020-04-08)
Performance Improvements
7.0.1 (2020-03-29)
Bug Fixes
7.0.0 (2020-02-23)
Bug Fixes
- #778 - Fixes error being thrown when inserting after a jsdoc and the jsdoc is the last member or statement. (e069eff)
- #783 - Fix broken documentation links on npm. (c997339)
Code Refactoring
- Only support Node 10+. (2339210)
Features
- #779 - Implement JSDocTemplateTag and JSDocThisTag. (9bfc32e)
- #782 - Add
Node#getProject()(35f6bcf) - Support TypeScript 3.8. (a2785b4)
BREAKING CHANGES
- Only Node 10+ has full support. Some functionality might not work on older versions of Node.
- Update to TypeScript 3.8.
6.0.2 (2019-12-08)
Bug Fixes
- Fix incorrect count when getting line count.
6.0.1 (2019-12-07)
I unpublished 6.0.0 and published this version instead.
Bug Fixes
JSDocTag#getStructure()was not including newlines at the start in the text. (543c7e6)Structuresshould containJSDocTagStructure(f9f8bbc)- Fix JSDoc being printed without blank lines. (8a84ddf)
- Fix JSDocTag printing an immediate text newline with a trailing whitespace. (be44781)
- Fix JSDocTag#getStructure() not returning the whole tag text. (c096d30)
6.0.0 (2019-12-07)
Bug Fixes
- common: Fix running in the browser. (7d81e98)
- Fix bug where
Project#getRootDirectories()might return a directory not in the project. (e9878b1) - Getting symbol exports by name should call
ts.escapeLeadingUnderscoreson the name. (d2694ba)
Code Refactoring
- #767 - Rename
StructureTypeGuards->Structure(b28ed73) FileSystemHost#globis now asynchronous. AglobSyncmethod was added. (942db7a)
Features
- #764 - Prefer writing single line JS docs. Add JSDoc#isMultiLine(). (59c8d38)
- bootstrap: Rename addSourceFiles -> addSourceFilesByPaths to match ts-morph. (439a0d5)
- #710 - Manipulation error now throws a custom error object. (a8881d7)
- #741 -
Directory#getSourceFilesnow accepts globs. (b78cd39) - #750 - Creating an in-memory file system now loads the lib files by default. (b1ff3ef)
- #750 - The virtual file system host will have lib files loaded by default. (8a8cf93)
- #760 - Move TypeGuards to be static members of Node (methods still exist on TypeGuards, but will be removed later). (9b1e659), closes #728
- #763 - Add Directory#clear(). (df93db3)
- #765 - Add QuestionDotTokenableNode. (b620848)
SourceFile#applyTextChangesnow accepts objects of typets.TextChange. (e72c3f0)- Add
getTypeExpressionOrThrow()toJSDocReturnTagandJSDocPropertyLikeTag(8102360) - Add
JSDoc#insertTagsand similar methods. (67a2a66) - Add
JSDocTag#remove(). (8b037aa) - Add
JSDocTag#setTagName(688b783) - Add JSDocTagStructure. (aab3e9c)
- Expose
InMemoryFileSystemHost. (2176f2c) - Rename
useVirtualFileSystemtouseInMemoryFileSystem(b69750c) - Support declare keyword on class properties. (7a0c1ab)
- Upgrade to code-block-writer 10.1.0. (5eaf5ff)
- Wrap
BigIntLiteral. (85eaa12)
performance
BREAKING CHANGES
JSDoc#setComment(...)and#getComment(...)are nowsetDescription(...)andgetDescription(). They also work according to #764.StructureTypeGuardsis nowStructure.- PropertyDeclarationDeclaration and PropertyDeclarationStructure now can have a
declarekeyword (new in TS 3.7). - JS docs will be written as a single line unless multi-line or starting with a newline. Additionally, getting a JS doc structure will have a newline at the start if the JS doc description is one line, but the JS doc is multi-line.
ProjectOptions#useVirtualFileSystemis nowuseInMemoryFileSystem. This is a more accurate name.- Creating a Project with
useInMemoryFileSystem: truewill now load in the lib files into thenode_modules/typescript/libfolder. - Due to the fix for #702, when using
Project#addSourceFileAtPathsdirectories that do not have an ancestor directory with a source file included in the results will no longer be added to the project. If you want to ensure that a directory and all its subfolders are added, useProject#addDirectoryAtPath(path, { recursive: true }). FileSystemHost#globis now asynchronous and#globSyncwas added.- Renamed
Directory/Project#addExistingSourceFile->addSourceFileAtPath - Renamed
Directory/Project#addExistingSourceFileIfExists->addSourceFileAtPathIfExists - Renamed
Directory/Project#addExistingSourceFiles->addSourceFilesAtPaths - Renamed
Directory/Project#addExistingDirectory->addDirectoryAtPath - Renamed
Directory/Project#addExistingDirectoryIfExists->addDirectoryAtPathIfExists
5.0.0 (2019-11-08)
Features
- #733 - Soft rename addExistingSourceFile-like methods to addSourceFileAtPath-like. (59fc2d5) - Thanks @ChristianIvicevic!
- Support TypeScript 3.7. (d86d034)
- TS 3.7 - Add TypeChecker#getTypeArguments and use that in Type#getTypeArguments. (616ea3e)
- Update implementation for #733. (3613233)
BREAKING CHANGES
- TypePredicateNode#getTypeNode() now possible returns undefined.
- Recommended to use the new
Project#addSourceFileAtPath(path)methods instead of the ones likeProject#addExistingSourceFile(path). The old way will be deprecated in Version 6. - TypeScript 3.7.x support only.
4.3.3 (2019-11-07)
Bug Fixes
- Restrict 4.3 version of library to TS < 3.7 (8ad2d5c)
4.3.2 (2019-10-22)
Bug Fixes
4.3.0 (2019-10-17)
Bug Fixes
Features
- Add
Node#getWidth(true)for including js docs in the width (similar toNode#getStart(true)in the compiler api). (03dda0b)
4.2.0 (2019-10-05)
Bug Fixes
- Fix abstract keyword accidentally being printed before scope. (c7734dc)
- Fix message for Type#getDefaultOrThrow() (ed1ced7)
Features
- #655 - ExpressionNode - Add
getExpressionIfKindmethods. (332fb7e) - #707 - Add
useTrailingCommasmanipulation setting option. (938c05c) - #712 - Add getParentIf and getParentIfOrThrow (9e037b6) (@HoldYourWaffle)
- #717 - Update
forgetNodesCreatedInBlockto allow returning a value. (fda5970) - #722 - Wrap TypePredicateNode. (9af7b34)
- Add
Node#forEachDescendantAsArray(2043ccb)
Performance Improvements
4.1.1 (2019-10-01)
Bug Fixes
- #708 -
getNonWhitespaceStart()should not include the previous node's trailing comment. (380c39b) - #708 - Removing an IfStatement with a preceding else keyword will no longer error. (f886605)
4.1.0 (2019-09-28)
Features
- #709 - Check and display syntax diagnostics when a manipulation error occurs. (07c42b1)
- #703 - Expand TypeGuards.is implementation to include all node kinds. (ae82879) (@lazarljubenovic)
4.0.1 (2019-09-12)
Thanks to @cancerberoSgx for discovering this was a node >= 11 issue.
Bug Fixes
4.0.0 (2019-09-02)
Bug Fixes
- #667 - Fix typo in adding-source-files.md (d635f69)
- #691 - JSDoc.getInnerText would sometimes get the wrong text if the first line content contained an asterisk. (0661508) - Thanks @cancerberoSgx!
- #692 - Fix getParent() for TS 3.6. (37476f8)
Code Refactoring
- #680 - Rename
SourceFile#getReferencedFiles()togetPathReferenceDirectives(). (578adc7) DiagnosticMessageChain#getNext()now returns an array to match TS 3.6. (4943196)- Remove getEmitSkipped() from DirectoryEmitResult because it was not accurate. (f42ff74)
- Rename CompilerExtendedComment to CompilerCommentNode. (e3db1db)
Features
- #666 - Calling
Project#createSourceFilewith an existing file name now suggests to add the overwrite option. (3022bb8) - #669 - Add past parent as second parameter to getParentWhile (287158e) - Thanks @Validark!
- #672 - Add
Type#getPropertyOrThrow(c929c6c) - #680 - Add
SourceFile#getReferencedSourceFiles(),#getNodesReferencingOtherSourceFiles(), and#getLiteralsReferencingOtherSourceFiles(). (c245acc) - Upgrade to code-block-writer 10.0.0. (5708865)
Performance Improvements
BREAKING CHANGES
SourceFile#getReferencedFiles()is nowgetPathReferenceDirectives().
This was done to prevent confusion with upcoming methods in #680. The name was chosen because it is similar to the methods getTypeReferenceDirectives() and getLibReferenceDirectives().
CodeBlockWriter#indentBlockis nowindent.withHangingIndentationis nowhangingIndent.withHangingIndentationUnlessBlockis nowhangingIndentUnlessBlock.DiagnosticMessageChain#getNext()now returns an array to match TS 3.6.DirectoryEmitResult#getEmitSkipped()was removed. Check the output file paths and skipped file paths instead as that's more accurate.CompilerExtendedCommentis now calledCompilerCommentNode.
3.1.3 (2019-07-18)
Bug Fixes
3.1.2 (2019-07-16)
Bug Fixes
- Fix windows glob filepaths problem due to upgrading to latest globby. (e9665a0)
- Update to code-block-writer 9.4.1 (Removes accidentally added chai dependency). (fd6534c)
3.1.1 (2019-07-13)
Bug Fixes
3.1.0 (2019-07-03)
Features
- #657 - Ability to specify the script kind when creating a source file. (cb22219)
- Add DirectoryEmitResult#getSkippedFilePaths(). (e92ea8d)
Bug Fixes
- Emitting a source file not in the program will no longer crash.
3.0.0 (2019-06-29)
Bug Fixes
- #534 - Incorrect type resolution behaviour when providing a tsconfig.json file path and having a different current working directory. (0ecce83)
- #648 - Comment nodes are no longer accidentally returned in some scenarios. (ad4c64c)
- ClassLike and TypeElementMembered nodes would not get the correct "add" index when a comment member node was present. (571ba69)
- Comment node parser now correctly returns comments on next line after tailing comma in object literal expressions. (966acb0)
- Fix issues with
Node#getText({ trimLeadingIndentation: true })indenting more than it should. (a2210de) - ObjectLiteralExpression insert should insert around comment nodes. (c3b9f28), closes #605
- Support nodes that may not have a source file (ex.
globalThisnode returned from a symbol) (b9b0cb0)
Code Refactoring
- #619 - Rename
StructureTypeGuardsmethods to remove wordNodeandDeclarationin certain cases. (92331e1) - #633 -
Node#forEachChildis now aligned with the compiler API (same withforEachDescendant). (27fa43a) SourceFile#getTypeReferenceDirectives()and#getReferencedFiles()better reflects the compiler api. (350bacb)- Remove
renameNodeandrenameLocationsfrom the language service. (72f0e1d) - Rename
ObjectLiteralElementMemberStructurestoObjectLiteralExpressionPropertyStructures. (98f00d2)
Features
- #310 - Add
Symbol#getExportSymbolandTypeChecker#getExportSymbolOfSymbol. (5fce598) - #561 - Add methods
Node#getLocals,#getLocalByName,#getLocalByNameOrThrow(c343de3) - #605 - Add ability to insert comments on enum declarations. (0420ae1)
- #605 - Add insertMember-like methods to
ClassLikeDeclarationBase. (f55850b) - #605 - Add insertMember-like methods to
TypeElementMemberedNode. (93a070d) - #605 - ObjectLiteralExpression#insertProperties and similar methods. (be0f046)
- #625 - Add
writer.withHangingIndent(() => {}). Also better hanging indent printing (a544e55), closes #616 - Add
Writersalias forWriterFunctions. (79c6694) - #636 - Writers.returnStatement should do hanging indent in certain cases. (db6602d)
- #638 - RenameLocation - Support
prefixTextandsuffixTextwhen renaming. (9326100) RenameLocation- AddgetPrefixText()andgetSuffixText()(3cb7a7f)- Add
Node#getSymbolsInScope(meaning)andTypeChecker#getSymbolsInScope(node, meaning). (25ab43d) - Add TypeGuards.isCommentNode. (89125a2)
- Add WriterFunctions.assertion. (37c875e)
- Smart comma insertion when printing comma separated values with comments. (ae62b07)
- Upgrade to code-block-writer 9.4.0.
Performance Improvements
- #615 - Remove some internal regular expressions. (cfce40b)
- Improve performance of
SourceFile#indent()anddeindent(). (17eefea)
BREAKING CHANGES
renameNodeandrenameLocationsare removed from the language service. To be consistent, the language service should not have methods that manipulate nodes.SourceFile#getTypeReferenceDirectives()and#getReferencedFiles()now return the objects similar to what the compiler api returns.Node#forEachChildis now aligned with the compiler API (same withforEachDescendant). These methods now stop when a value is returned in a callback and they will return the returned value.- The
ObjectLiteralElementMemberStructuresalias is now calledObjectLiteralExpressionPropertyStructures. This is a more correct name as an object literal expression has "properties" rather than "members" in the compiler api. - Renamed
StructureTypeGuardsmethods to remove wordNodeandDeclarationin certain cases.
2.3.0 (2019-05-30)
Thanks to @marikaner for implementing the feature in this release!
Features
2.2.0 (2019-05-25)
Features
- #628 - Custom module and type reference directive resolution (c38c77f) - Thanks @DanTsk!
- Add
Project#getModuleResolutionHost()(9085100)
2.1.2 (2019-05-20)
Bug Fixes
- ObjectLiteralExpression methods would not get the correct "add" index when a comment member node was present. (23f9276)
2.1.1 (2019-05-20)
Bug Fixes
- ClassLike and TypeElementMembered nodes would not get the correct "add" index when a comment member node was present. (af41a29)
2.1.0 (2019-04-29)
Bug Fixes
TypeParameterDeclaration#getStructure()should trim leading indentation on contraint and default. (ec971ce)- Mixin type guards should maintain the passed in type. (616c4cc)
Features
- #567 - Update
#getStatement()to work with type guards. (02c8d89) - #614 - Add forEachStructureChild (f8b0f6d)
- Add
StructureTypeGuards. (6138472) - Wrap
ConditionalTypeNode. (5e3e74c) - Wrap
InferTypeNode. (ec4b3f2) - Wrap
ThisTypeNode. (6655c51)
Performance Improvements
- Upgrade to code-block-writer 8.0.0. (218442b)
2.0.0 (2019-04-20)
Bug Fixes
- The code writer did not handle escaping string chars in strings. (a87850e)
Node#getDescendantStatements()is now properly typed as possibly returning anExpression. (9d26400)ReturnTypedNodeandTypedNode's#getStructure()should return the type and return type text without leading indentation. (4d95e64)- DefinitionInfo.getDeclarationNode() should return a source file when the kind is "module" and width equal to the source file. (967206f)
- Do not add trailing whitespace when a jsdoc's description includes a blank line. (cf314da)
- Fix removing class elements on object literal expressions. (4e1464e)
- Getting/inserting statements on a ModuleBlock was throwing an error. (2b8adad)
isOverload()should returntruefor abstract methods. (558cdd1)
Chores
EnumMember#getStructure()no longer returns#valueand will only return#initializer. (ed25348)
Code Refactoring
- FileSystemHost.isCaseSensitive() is now required in implementations. (015a124)
- InitializerGetExpressionableNode is now InitializerExpressionGetableNode for consistency. (27c25c9)
- Remove
VariableDeclarationListStructureandVariableDeclarationList#setand#getStructure(e6953ed) - Remove InitializerSetExpressionableNode. (990c3c1)
- Removed default export from library. (f127cf4)
- Renamed
Type#getArrayType()toType#getArrayElementType(). (56b4935)
Features
- #470 - Node - Ability to get text without leading indentation. (cd380fa)
- #514 - Add Node#forEachChildAsArray() (ba4cd7a)
- #563 - ParameterDeclaration now implements BindingNamedNode instead of DeclarationNamedNode. (debd09b)
- #573 - ModuledNode#getExportedDeclarations() now returns a map. (752aaf1)
- #575 - Extended comments (a9cc491)
- #581 - TraversalControl - Add ability to return a value. (d072b63)
- #587 - SourceFile#getLineAndColumnAtPos (b987657) - Thanks @cancerberoSgx!
- #588 - Move
ChildOrderableNodetoStatement. (b5ff9ad) - #595 - Add SourceFile#fixUnusedIdentifiers (e4b1b64) - @cancerberoSgx
- #596 - Add
CombinedCodeAction#applyChanges()(2566d53) - #601 - Add
RefactorEditInfo#applyChanges()(ca0ca8c) - @cancerberoSgx - #603 - Make
emitasync and add newemitSync(8a8c1c7) - #606 -
Symbol#getXByName-like methods are nowSymbol#getX. (08f0710) #addStatements/#insertStatementsnow also accepts an array of strings or writer functions. (d1c361a)- Ability to add/insert statement structures. (faaa2cd)
- Add
Type#getArrayElementTypeOrThrow()(cfd420e) - Add ClassMemberStructures, InterfaceMemberStructures, and Structures type aliases. (3af3d32)
- Add ObjectLiteralElement. (a40a46d)
- getName() should always just return the name node text. (968c13c)
- Removed
Project#applyFileTextChanges(). AddedFileTextChanges#applyChanges(). (4c62acb) - Replace
StatementedNodewith new.statementsproperty / Add trivia properties to structures (5f4943b) - Wrap ClassElement. (73ecfb1)
reactor
BREAKING CHANGES
- The default export was removed. Use the named
Projectexport from now on. - ModuledNode#getExportedDeclarations() now returns a map with a key as the export name and the value as an array of declarations that are exported.
-
- Removed
BodyableNodeStructure,BodiedNodeStructure,ModuledNodeStructure.
- Removed
- Removed
.bodyText,.classes,.enumsproperties on structures. Replaced with.statementsproperty. - Comments are parsed as children in certain scenarios. See #575 for more details.
Type#getArrayType()is nowType#getArrayElementType(). This was renamed to better reflect what the method does.-
- ParameterDeclaration now implements BindingNamedNode instead of DeclarationNamedNode.
EnumMember#getStructure()no longer returns the#valueand will only return#initializer.#valueshould be seen as more of a convenience property for setting the initializer.Symbol#getXByName-like methods were renamed toSymbol#getX.Project#applyFileTextChanges()has moved toFileTextChanges#applyChanges().SourceFile#getLineNumberAtPosis nowSourceFile#getLineAndColumnAtPos- JsxText#containsOnlyWhiteSpaces() is now #containsOnlyTriviaWhiteSpaces().
FileSystemHostrequiresrealpathSync. - Removed
VariableDeclarationListStructureandVariableDeclarationList#setand#getStructure. This was done to simplify the structures. - The library now targets ES2015.
JsxAttributeStructureandJsxSpreadAttributeStructureare now differentiated based on their.kindproperty.JsxElementStructureandJsxSelfClosingElementStructureare now differentiated based on their.kindproperty.- FileSystemHost.isCaseSensitive() is now required in implementations.
- Removed DeclarationNamedNode.
- InitializerSetExpressionableNode was removed and merged with InitializerExpressionableNode.
- InitializerGetExpressionableNode was renamed to InitializerExpressionGetableNode.
- getName() always returns the name node text and now never throws.
1.3.2 (2019-03-30)
Bug Fixes
1.3.1 (2019-03-17)
Bug Fixes
- Depend on a specific version of code-block-writer. (ccfe90e)
1.3.0 (2019-03-03)
Bug Fixes
- #394 - Handle inconsistent file path casings on case insensitive file systems. (f7f6a3c)
- #557 - ExportableNode#isNamedExport() should work when named export is done via export statement. (7e18296)
- #560 - Type#isEnum() and isEnumLiteral() would not always return correct values. (98c82bc)
Features
- #553 - VariableDeclaration now has read exportable methods like isDefaultExport(). (0991e96)
- Add VariableDeclaration#getVariableStatement() (bba33ee)
1.2.0 (2019-02-21)
Thanks to @Pineapples and @schiller-manuel for their contributions for this release!
Bug Fixes
Features
- #535 - Add getTypeExpression() to JSDocReturnTag and JSDocTypeTag (61b71b3) (@Pineapples)
- #538 - Add Type#isAny() (1d3c2bb) (@schiller-manuel)
- #541 - Add TypeChecker#getResolvedSignature() (cf5104d) @schiller-manuel
- #543 - Wrap IndexedAccessTypeNode. (a1d5696)
- #547 - Wrap JSDocSignature and JSDocType. (9e1b0b2)
- #542 - Add Signature#getDeclaration(). (d2bc498) (@schiller-manuel)
- Add aliases CallLikeExpression and JsxOpeningLikeElement. (030c6df)
- Add Type#isUnknown() (30bb042)
- Add WriterFunctions - objectType, unionType, intersectionType (d10877f)
- Wrap JSDocFunctionType. (8965da3)
1.1.0 (2019-02-14)
Thanks to @Pineapples for implementing these features!
Features
- #530 - Add JSDocTypeExpression (ddc1dd3)
- #532 - Expose isBracketed on JSDocPropertyLikeTag (1acc955)
1.0.0 (2019-02-02)
Features
BREAKING CHANGES
- Library was renamed to ts-morph.
ts-simple-ast 21.0.3 (2019-01-31)
ts-simple-ast 21.0.2 (2019-01-28)
Bug Fixes
- tsconfig.json with "include" and "rootDir" would not have files correctly resolved. (b5b9af8)
ts-simple-ast 21.0.1 (2019-01-28)
Bug Fixes
- Project#getSourceFileOrThrow - Improve error message when the source file can't be found. (811ce1c)
ts-simple-ast 21.0.0 (2019-01-11)
Features
- #176 - Support transformations using the compiler API (
Node#transform(...)) (3b39edb) - #511 - createSourceFile - Added ability to pass in a writer function. (9a04103)
- #518 - Add SourceFile#fixMissingImports() (28d12e3)
- #520 - Search object and array binding patterns when looking for a node by a name. (20239d7)
- #522 - Project should not return implicitly resolved files and directories in most scenarios. (73c5a39)
- #523 - Resolved node_module source files or directories are no longer returned from Project#getSourceFiles() and getDirectories() (6cf2d40)
- Add FileTextChanges#getSourceFile() (85deec7)
- Add LanguageService#getCombinedCodeFix(...) (ef9f3a3)
Performance Improvements
- #498 - OfKind and ByKind methods should use ts.forEachChild when appropriate. (5c249bf)
- Make internal Es5HashSet O(1) instead of O(n) for lookups. (a12a92c)
BREAKING CHANGES
- Source files implicitly resolved in the node_modules directory are no longer returned by
Project#getSourcesFiles()andgetDirectories(). Either add them to the project explicitly or navigate to them via methods like.getSourceFile("node_modules/library/pathToFile.d.ts")or.getDirectory("node_modules"). - Implicitly resolved files and directories are no longer returned when calling
project.getSourceFiles()orproject.getDirectories(). They can be added by callingproject.addExistingSourceFiles(...)-like methods orproject.addExistingDirectory(...). These source files and directories are still accessible when specifying their path though (ex.project.getSourceFile("node_modules/typescript/lib/typescript.d.ts")) node.getFirstChildByKindandnode.getChildrenOfKindnow search the parsed tree via.forEachChild(...)when specifying a parsed node's syntax kind. Previously it would only search the results ofnode.getChildren().
ts-simple-ast 20.0.0 (2018-12-08)
Code Refactoring
- Remove JSDocTag.getAtToken(). (20ccd0a)
Features
BREAKING CHANGES
JSDocTag.getAtToken()was removed becausejsDocTag.atTokenno longer exists in ts 3.2.
ts-simple-ast 19.1.0 (2018-12-04)
Bug Fixes
- #507 - CompilerNodeToWrappedType sometimes resolved to any. (91e0e1e) - Huge thank you to @Gerrit0 for the help on this one.
Features
- #506 - Get variable statement by a declaration's name. (6b94548)
- #508 - Expose Node.forgetDescendants. (ee87eac)
ts-simple-ast 19.0.0 (2018-11-14)
Bug Fixes
- sourceFile.isFromExternalLibrary() would become out of date after a manipulation. (43c6149)
Code Refactoring
- Project now accepts file system host on the options object rather than as a parameter. (7f892fb)
- The
Optionsinterface was renamed toProjectOptions(15316a3)
Features
- #492 - Resolve dependencies when constructing a project and providing a tsconfig. (548ae43)
- Add SourceFile.isInNodeModules() (0a1817c)
Performance Improvements
- Reuse the old program when creating a new one. (6dc60f8)
BREAKING CHANGES
- The
Optionsinterface was renamed toProjectOptions. This was so it's less ambiguous. - The Project constructor changed to accept a file system host on the first options object parameter rather than as its own parameter.
- Referenced source files in module specifiers and references are now added to the project when constructing a project and providing a tsconfig. To revert back to the old behaviour, provide the
skipFileDependencyResolutionoption and set it to true.
ts-simple-ast 18.1.0 (2018-11-11)
Bug Fixes
- forEachDescendant would error when the node in the callback parameter was forgotten. (152c785)
Features
Thanks to @cancerberoSgx for both these features!
- #488 - LanguageService - getSuggestionDiagnostics, getEditsForRefactor, getCodeFixesAtPosition (9e42b10)
- #491 Project - applyFileTextChanges (4de796c)
ts-simple-ast 18.0.1 (2018-11-10)
Bug Fixes
ts-simple-ast 18.0.0 (2018-10-28)
Bug Fixes
- #482 - Import and export declaration should not include quotes in module specifier in structure (92c7f46 - @cancerberoSgx)
- #483 -
getDerivedClasses()fails when there exists an interface that extends the class (2bbcec5 - @brianzinn) - #484 - organizeImports() would sometimes throw. (447bcfc)
- ParameterDeclaration.getScope() should return public for readonly parameter properties with an implicit scope. (c430eb4)
Code Refactoring
JSDocTag.getName()should be.getTagName()(c362510)
Features
- #467 - Move some ClassDeclaration functionality into ClassLikeDeclarationBase. (fdb5f42)
- #467 - Wrap ClassExpression. (92f4be3)
- #469 - ClassDeclaration - Add "Extract interface" (8b19131)
- #471 - Add
Project.formatDiagnosticsWithColorAndContext(diagnostics)(3056a1e) - #472 - Add getBodyText() to BodiedNode and BodyableNode (e41c278)
- #473 - MethodDeclaration should extend QuestionTokenableNode. (674d3d2)
- Add
JSDocPropertyLikeTag.getName()and.getNameNode()(9804627) - Wrap ModuleBlock. (1507c8d)
- Wrap NamedImports and NamedExports. (6a17fe8)
BREAKING CHANGES
JSDocTag's.getName()is now.getTagName(). This was necessary because.getName()should return aJSDocPropertyLikeTag's name.
ts-simple-ast 17.1.1 (2018-10-20)
Bug Fixes
ts-simple-ast 17.1.0 (2018-10-14)
Features
- #148, #320 - Add WriterFunctions.object. (dab4cfb)
- Add
Project.getAmbientModules(),.getAmbientModule(name: string), and.getAmbientModuleOrThrow(name: string)(7f89eea)
ts-simple-ast 17.0.1 (2018-10-13)
Bug Fixes
ts-simple-ast 17.0.0 (2018-10-12)
Bug Fixes
- Project.getSourceFileOrThrow() should always output the passed in string in the error message. (c81081e)
- Write more with hanging indents (#461) (687e467)
Code Refactoring
- Remove CompilerNodeBrandPropertyNamesType. (ac0040e)
Features
- #153 - Ability to insert named exports and imports with a writer. (aa5617e)
- #400 - Symbol - Add global exports. (2bbeff9)
- #445 - SourceFile, Directory - Add moveToDirectory and copyToDirectory. (fc806da)
- #449 - Wrap ImportClause. (c66ed65)
- #454 - Wrap NamespaceImport. (001e7d0)
- #456 - Relax ts dependency to 3.0.1 and 3.0.3. (1029f75)
- ArrayLiteralExpression - Add ability to add elements with writer for each element. (1f8b1cb)
- Better error message when using a forgotten node. (762254f)
- Support TypeScript 3.1.1 and 3.1.3. (1598b96)
BREAKING CHANGES
- Removed CompilerNodeBrandPropertyNamesType.
- More declarations are being written with hanging indents.
ts-simple-ast 16.0.4 (2018-10-10)
Bug Fixes
- Removing last modifier should not remove preceding comments. (3aa9390)
ts-simple-ast 16.0.3 (2018-10-08)
Bug Fixes
ts-simple-ast 16.0.2 (2018-10-01)
Bug Fixes
- Export Project as named export to match declaration file. (f529801)
- Fix
sourceFile.getExportedDeclarations()returning import identifiers in some scenarios (295ea4a)
ts-simple-ast 16.0.1 (2018-09-30)
Bug Fixes
- More robust directory creation. (21ccc2e)
ts-simple-ast 16.0.0 (2018-09-30)
Bug Fixes
- #437 - Fix
findReferencesAsNodeshaving an undefined entry when the reference is within a string literal. (06943a9) - WeakCache and KeyValueCache weren't falling back to support ES5. (eec9add)
Code Refactoring
- #429 - IndexSignatureDeclaration - Return type should be nullable. (bab0860)
- #441 - Make "XExtensionType" type aliases internal. (9ad6372)
Features
- #436 - Add support for import and exports to NamespaceDeclaration (65d4bf2)
- #439 - Improve type guards to use extension type for mixins. (1ca6dd3)
- #443 Better support for
globalnamespace declarations (d89fd96) - Add
.getSignature()method to nodes that have a return type. (f65c529) - Upgrade to TypeScript 3.0.3. (c38f5c2)
Performance Improvements
- #435 - Memoize only before source file manipulation for some wrapped language service source file dependent objects. (ad06259)
BREAKING CHANGES
- Upgraded to TS 3.0.3, which has some breaking changes in it from 3.0.1.
- IndexSignatureDeclaration's return type is now nullable to reflect what's done in the compiler API.
- The "XExtensionType" type aliases are now internal. They were hidden because they're not useful outside the library and only create noise in the named exports.
NamespaceDeclaration.setHasNamespaceKeywordandsetHasModuleKeywordare nowsetDeclarationKind(kind: NamespaceDeclarationKind).NamespaceDeclarationStructure.hasModuleKeywordandhasNamespaceKeywordare nowdeclarationKind.
ts-simple-ast 15.1.0 (2018-09-24)
Features
- #431 - Allow passing in a module specifier string to .getImportDeclaration and .getExportDeclaration (20b45d2)
ts-simple-ast 15.0.2 (2018-09-23)
Bug Fixes
- Fix node.findReferencesAsNodes() not returning references in initializers. (cfeba04)
ts-simple-ast 15.0.1 (2018-09-22)
Bug Fixes
- Fix getting an ambient class' structure. (48c92b5)
- Fix inserting get and set accessors in an ambient context. (a282765)
- Fix printing and getting structure of FunctionDeclaration in ambient contexts. (9940658)
- Fix some issues in generated ts definitions. (0d2c00d)
- Getting TypeAliasDeclaration structure should use the type node and not the type. (aea96a3)
- IndexSignatureDeclaration.getStructure() should use the node text and not the type text. (61f1345)
ts-simple-ast 15.0.0 (2018-09-22)
Bug Fixes
- #420 - Setting enum, namespace, or type alias as a default export should be done with a separate export assignment. (e81412c)
- #424 - UTF-8 bom causes incorrect indentation to be inserted. (c4a63a1)
- ImportSpecifier and ExportSpecifier - Specifying an empty string to setAlias should not crash. (a7beb66)
Code Refactoring
- ImportDeclaration.setDefaultImport should not rename. (f425bd8)
- JsxTagNamedNode.getTagName() is now getTagNameNode() for consistency. (36d4907)
- Remove accidentally exposed properties on errors. (caa7e68)
- Remove typeParameter.getConstraintNode() and .getDefaultNode() (e84c374)
Features
- #418 - Add new .set methods and deprecate .fill (da40d99)
- #423 - Add node.getText(true) for getting text with js docs. (0522510)
- #45 / #346 - Add .getStructure() (2d7351c) -- Huge thanks to @cancerberoSgx for all his help on this one!
- #46 - Ability to set node from a structure using .set methods (22d4753)
- Add ExportAssignment.setExpression (0c6fcf0)
- Add ExportAssignment.setIsExportEquals. (43d3d84)
- Add ExportDeclaration.removeModuleSpecifier() (b64c665)
- Add ExportSpecifier.getName() (b6357c6)
- Add ExpressionedNode.setExpression (12e0ca7)
- Add ImportDeclaration.removeDefaultImport() (87dd9cf)
- Add ImportDeclaration.renameDefaultImport. (1ba29be)
- Add JsxAttribute .setInitializer & .removeInitializer (9436954)
- Add JsxSpreadAttribute.setExpression (532131f)
- Hide "Specific" structures in declaration file. (db55c33)
- ImportDeclaration.setDefaultImport should remove the default import when providing an empty string. (f81f90a)
- ImportSpecifier and ExportSpecifier - .setAlias(...) does not the usages. (5f2f7c8)
- ImportSpecifier and ExportSpecifier - Add .removeAlias(). (b594113)
- ImportSpecifier and ExportSpecifier - Add removeAliasWithRename() (576db34)
- ImportSpecifier and ExportSpecifier - Renamed .setAlias to .renameAlias (0f446b6)
BREAKING CHANGES
- Some properties on thrown errors were removed. See commit for details.
- TypeParameterDeclaration's getConstraintNode() and getDefaultNode() are deprecated. Use getConstraint() and getDefault().
- JsxTagNamedNode.getTagName() is now .getTagNameNode()
- ImportDeclaration.setDefaultImport no longer renames the identifier. Use
.renameDefaultImportinstead. - .setAlias(...) does not rename the usages.
- .setAlias(...) is now .renameAlias(...).
.fill(...)is now.set(...)and will replace existing nodes.- Change to jsx spread attribute structure.
ts-simple-ast 14.4.5 (2018-09-15)
Bug Fixes
- #421 - "Adding a child to an empty namespace with dot notation in the name causes brace to be lost" (0b73d4f)
- Abstract methods were incorrectly returning true for .isOverload() (ef29ee1)
- Fix crashes when dealing with statemented nodes that don't have a body. (7a08ab1)
ts-simple-ast 14.4.4 (2018-09-15)
Bug Fixes
- #421 - "Adding a child to an empty namespace with dot notation in the name causes brace to be lost" (0b73d4f)
- Abstract methods were incorrectly returning true for .isOverload() (ef29ee1)
ts-simple-ast 14.4.3 (2018-09-07)
Bug Fixes
- #414 - insertText() not working for namespace declaration (ee1fa55)
- #415 - Fix "typeRoots" compiler option not working. (5e4cd08)
ts-simple-ast 14.4.2 (2018-08-27)
Bug Fixes
ts-simple-ast 14.4.1 (2018-08-27)
Bug Fixes
ts-simple-ast 14.4.0 (2018-08-26)
Features
- #126 - Ability to emit to memory. (4f6fb5a)
- #409 - Add ability to specify custom transformers when emitting. (644eba5)
- Export errors. (#402) (b719ed8)
ts-simple-ast 14.3.0 (2018-08-25)
Bug Fixes
- Use ReadonlyArray for array inputs. (2a5ed73)
Features
- #380 - Expose options to rename in comments and strings (29592c7)
- #390 - Add Node.getFirstAncestor and getFirstAncestorOrThrow methods. (f83be80)
- #406 - Wrap ParenthesizedTypeNode. (9429704)
- #74 - Add more "OrThrow" methods. (2d5c94d)
- Use readonly arrays for file globs (#401) (c96d987)
Performance Improvements
ts-simple-ast 14.2.1 (2018-08-25)
Bug Fixes
ts-simple-ast 14.2.0 (2018-08-22)
Features
- Symbol - Add .getMembers(), .getMemberByName(name), and .getMemberByNameOrThrow(name). (6fb28b4)
ts-simple-ast 14.1.1 (2018-08-22)
Bug Fixes
Docs
ts-simple-ast 14.1.0 (2018-08-19)
Features
- Ability to add js docs with a writer function directly from the method. (4ad9614)
ts-simple-ast 14.0.1 (2018-08-19)
Bug Fixes
- DocumentRegistry - Ensure any file paths sent from the compiler api are normalized. (1c06559)
ts-simple-ast 14.0.0 (2018-08-18)
Bug Fixes
- #345 - ArrowFunction should be a FunctionLikeDeclaration. (b3ea86f)
- BindingNamedNode should support BindingName. (611ea99)
Code Refactoring
- Deprecate
project/sourceFile.getDiagnostics()andprogram.getPreEmitDiagnostics(). (7e1a21b)
Features
- #381 - getParent() and getParentOrThrow() return the correct type based on the type of the current node. (efa7616)
- Add
program.getGlobalDiagnostics(). (a03d257)
Performance Improvements
BREAKING CHANGES
project/sourceFile.getDiagnostics()andprogram.getPreEmitDiagnostics()no longer exist. Useproject/sourceFile.getPreEmitDiagnostics().- Removed ability to set a specific target for specific source files (all files are stored in a ts.DocumentRegistry now so that's not possible).
BindingNamedNodenow correctly may also return aBindingName.
ts-simple-ast 13.0.0 (2018-08-06)
Bug Fixes
Features
- #347 - Add .skip() and .up() method to
forEachDescendant. (361bcaf) - #369 - FunctionDeclaration should have an optional name. (176825d)
- #383 - Update to TS 3.0 (547eb3d)
- Deprecate renameName on ImportSpecifier and ExportSpecifier. (f94eed9)
- Deprecated node.getStartColumn() and node.getEndColumn(). Renamed sourceFile.getColumnAtPos(pos) to getLengthFromLineStartAtPos(pos). (d8b61b6)
- Rename CompilerApiNodeBrandPropertyNamesType to CompilerNodeBrandPropertyNamesType. (1eb6a86)
- Rename sourceFile.getLineNumberFromPos(pos) to getLineNumberAtPos(pos) (fa5849a)
- Renamed getAliasIdentifier() to getAliasNode() on ImportSpecifier and ExportSpecifier. (e97de72)
BREAKING CHANGES
- getImplementations()[i].getNode() now returns the identifier instead of the parent node. This was based on a change in the compiler api.
- Renamed sourceFile.getLineNumberFromPos(pos) to getLineNumberAtPos(pos) for consistency.
- node.getStartColumn() and node.getEndColumn() was removed. Renamed sourceFile.getColumnAtPos(pos) to getLengthFromLineStartAtPos(pos) for correctness.
- getAliasIdentifier() on ImportSpecifier and ExportSpecifier is now getAliasNode() for consistency.
- renameName on ImportSpecifier and ExportSpecifier is now deprecated. Use
importSpecifier.getNameNode().rename(newName). - CompilerApiNodeBrandPropertyNamesType is now CompilerNodeBrandPropertyNamesType for consistency.
- FunctionDeclaration now has an optional name to support cases where it does (ex.
export default function() {})
ts-simple-ast 12.7.2 (2018-07-24)
Bug Fixes
- #374 - Surround parameter in parenthesis when there is none and setting its initializer, type, or adding a question token. (847dab6)
ts-simple-ast 12.7.1 (2018-07-24)
Bug Fixes
ts-simple-ast 12.7.0 (2018-07-18)
Features
ts-simple-ast 12.6.2 (2018-07-17)
Bug Fixes
ts-simple-ast 12.6.1 (2018-07-16)
Bug Fixes
- #365 - Replacing text of an identifier deep in a property access expression would throw. (4a7b1e2)
- #364 - More browser fixes (thanks @cancerberoSgx)
ts-simple-ast 12.6.0 (2018-07-16)
Bug Fixes
- #362 - SyntaxList.insertChildText(...) would throw when not inserting to the child syntax list. (738fb47)
- Should properly add statements to a case or default clause with a block. (65d96bc)
Features
- #339 - Add Directory.addExistingSourceFiles(...). (bb5cd6e)
- #355 - Add
getLengthFromLineStartAtPosto replacegetColumnAtPosin next major. (e82cdff) - #363 - Add type guard overloads to methods with a condition for a node. (21da2fc)
ts-simple-ast 12.5.4 (2018-07-14)
Bug Fixes
- #362 - SyntaxList.insertChildText(...) would throw when not inserting to the child syntax list. (738fb47)
- Should properly add statements to a case or default clause with a block. (65d96bc)
ts-simple-ast 12.5.3 (2018-07-12)
Bug Fixes
- #361 - Conditionally import "globby" to allow using library in browser (thanks @cancerberoSgx!)
ts-simple-ast 12.5.2 (2018-07-12)
Bug Fixes
ts-simple-ast 12.5.1 (2018-07-06)
Bug Fixes
ts-simple-ast 12.5.0 (2018-07-02)
Bug Fixes
- #354 - Support using ts-morph in the browser without mocking "fs" or "fs-extra" (795fe55)
- BooleanLiteral#setLiteralValue(value: boolean) should never return undefined. (d1ee709)
- NamespaceDeclaration#getDeclarationKindKeyword should never return undefined. (0b81c00)
Features
- Add JSDocTag#getName(). (0c868e9)
- Add Symbol#getAliasedSymbolOrThrow() and Symbol#getExportByNameOrThrow(name: string). (78c7ea3)
ts-simple-ast 12.4.1 (2018-07-02)
Bug Fixes
- #348 - project.getSourceFiles() would sometimes return multiple instances of the same source file. (8888967)
- #352 - Fixed reading relative files from tsconfig.json with multiple rootDirs (c2e948f) -- Thanks @dzinxed!
ts-simple-ast 12.4.0 (2018-06-10)
Features
- #342 - Finish work on removing property assignment. (9e35623)
- Add ability to add/insert type parameters with a default type node. (cd05c3f)
- Add SourceFile.isFromExternalLibrary (136a2da)
- Add Symbol.getEscapedName() (4360bab)
- Add TypeParameterDeclaration - getConstraintOrThrow() and getDefaultOrThrow() (8e8166b)
- TypeParameterDeclaration - Add .removeDefault() and .removeConstraint() (7a9d329)
- TypeParameterDeclaration - Add .setDefault(text) and .setConstraint(text) (de9d91b)
ts-simple-ast 12.3.0 (2018-06-09)
Features
- #342 - Ability to remove more object literal expression members (e82d45f, 9e35623) -- Thanks @cancerberoSgx for the help!
Bug Fixes
- #340 - Fix insert/remove support for Block (@cancerberoSgx).
ts-simple-ast 12.2.0 (2018-06-04)
Features
- Add Node.getStartColumn(), Node.getEndColumn(), SourceFile.getColumnAtPos(pos). (5119e83)
- Add UserPreferences on sourceFile.organizeImports() (6b0a089)
ts-simple-ast 12.1.0 (2018-06-04)
Features
- Add ImportTypeNode. (3d0203c)
- ImportTypeNode - setArgument and setQualifier (e94bbd4)
- Improvements to CompilerNodeToWrappedType. (384613a)
ts-simple-ast 12.0.0 (2018-06-03)
Code Refactoring
- Remove .getReferencingNodes() found on some nodes and languageService.getDefinitionReferencingNodes() (a20cd4e)
Features
- #302 - Add CompilerNodeToWrappedType. (0ce5af5)
- #304 - Improve getNodeProperty by using condition types. Add CompilerNodeToWrapperMappings. (5bd2926)
- #337 - Add DiagnosticWithLocation. (f1f700e)
- #337 - Add DocumentSpan - getOriginalTextSpan and getOriginalFileName (254bea8)
- #337 - DefinitionInfo now extends DocumentSpan as done in ts 2.9. (c1ff983)
- #338 - Add Diagnostic.getLineNumber() (4cba457)
- Add Type: isUnionOrIntersection, isClass, and isClassOrInterface. (12c4710)
- Add UserPreferences and new organizeImports parameter (a7864f1)
- Update to TypeScript 2.9. (da45aae)
BREAKING CHANGES
getNodePropertyfunctionality requires TS 2.8 or greater due to mapped types.- DefinitionInfo.getNode() is now DefinitionInfo.getDeclarationNode() for compatibility with DocumentSpan.
- getReferencingNodes and getDefinitionReferencingNodes are both renamed to .findReferencesAsNodes(). This is so the method is more discoverable in auto complete when looking at .findReferences().
- Renamed all Type.isXType() methods to Type.isX() to match what's done in the compiler api and to remove needless repetition in name.
- Updating to TypeScript 2.9 introduces some changes in behaviour and breaking changes in the compiler API declaration file.
ts-simple-ast 11.3.0 (2018-06-01)
Features
- Add .findReferencesAsNodes() to deprecate .getReferencingNodes() in next major. (a8a731a)
ts-simple-ast 11.2.2 (2018-06-01)
Bug Fixes
- #336 - Calling .remove() incorrectly removes next sibling's leading comments. (aab1c1b)
- sourceFile.getTrailingTriviaEnd() should return the end position of the source file. (ff6b3b3)
ts-simple-ast 11.2.1 (2018-05-28)
Bug Fixes
- #335 - addStatements would throw if the containing block was only indented a portion of an indentation level. (c93104c)
ts-simple-ast 11.2.0 (2018-05-08)
Features
- #251 - Add importDeclaration.removeNamespaceImport() and .getNamespaceImportOrThrow() (0250138)
- Add ImportDeclaration.getImportClause() and .getImportClauseOrThrow() (8d99c27)
- Node.preprendWhitespace(textOrWriterFunction) and .appendWhitespace(textOrWriterFunction) (a43cb65)
- Update code-block-writer version. Adds .tab(), .tabIfLastNot(), and .isLastTab(). (903b8ac)
ts-simple-ast 11.1.1 (2018-05-05)
Bug Fixes
ts-simple-ast 11.1.0 (2018-05-01)
Features
- Ability to add/insert an argument with a writer. (e1bcb6a)
- Ability to set a DecoratorStructure's arguments using a writer function. (585793c)
- Ability to set a IndexSignatureDeclaration's return type using a writer function. (0d6526d)
- Ability to set a JSDoc's description in a structure by using a writer. (0250ae1)
- Ability to set a PropertyAssignment's initializer using a writer function. (b633937)
- Ability to set a return type with a writer. (3db81f8)
- Ability to set a SourceFileStructure's bodyText using a writer function. (792c530)
- Ability to set a SpreadAssignmentStructure's expression using a writer function. (e7e0158)
- Ability to set a type with a writer. (5dc3565)
ts-simple-ast 11.0.0 (2018-04-29)
Bug Fixes
- #312 - StatementedNode uses inconsistent source for child count. (67a22b9)
- Directory.copy should not update module specifiers pointing to other files in the directory being copied. (09244f9)
Chores
- Update FileSystemHost to have move and copy methods. (4401755)
- Update to code-block-writer 7.0.0. (7121e0d)
Code Refactoring
- code-block-writer is now a named export. (412482c)
- createDirectory will not throw if the directory exists. (7be9dba)
- Remove Directory.remove() (0ba8ba0)
- Remove getRelativePathToSourceFile and getRelativePathToSourceFileAsModuleSpecifier. (734b7a0)
- Remove Identifier.getDefinitionReferencingNodes() (2b1446a)
- Removed ExportAssignmentStructure.isEqualsExport (0b098a5)
- Rename AddDirectoryOptions to DirectoryAddOptions (ccd1627)
- Rename CreateSourceFileOptions to SourceFileCreateOptions and AddSourceFileOptions to SourceFileAddOptions. (0a39f15)
Features
- #256 - Add Directory.copyImmediately. (f2b01dc)
- #256 - Add Directory.move(...) (29b776a)
- #256 - Add Directory.moveImmediately. (255d01c)
- #311 - Allow providing a string instead of a JSDoc structure. (a0b16e6)
- #320 - Add ability to set initializer in a structure with a writer function. (20e51ed)
- #324 - Added ClassDeclaration.insertConstructors() and addConstructors(). (2aefd93)
- Ability to set an initializer's text using a writer. (2c1a9e5)
- Add Directory.forget(). Will deprecate Directory.remove() in next major. (f584d20)
- ImportDeclaration.getDefaultImportOrThrow() (499c741)
- Upgrade from TypeScript 2.8.1 to 2.8.3. (106e17e)
BREAKING CHANGES
- ClassDeclarationStructure.ctor is renamed ctors. It accepts multiple constructors now. Additionally, insertConstructor and addConstructor on ClassDeclaration does not remove the existing constructor if it exists.
- Directory.copy correctly does not update module specifiers pointing to other files in the directory being copied.
- Updated to code-block-writer 7.0.0. The writer methods
newLineIfLastNotNewLine,blankLineIfLastNotBlankLine, andspaceIfLastNotSpace, are removed. Use the shorter method names likespaceIfLastNot. - AddDirectoryOptions -> DirectoryAddOptions
- CreateSourceFileOptions -> SourceFileCreateOptions, AddSourceFileOptions -> SourceFileAddOptions
- The FileSystemHost interface now has move and copy methods.
- code-block-writer is now exported as a named export from the library (
CodeBlockWriter). - Directory.remove() is now Directory.forget() for consistency with SourceFile.
- SourceFile.getRelativePathToSourceFile and getRelativePathToSourceFileAsModuleSpecifier is now getRelativePathTo and getRelativePathAsModuleSpecifierTo respectively.
- ExportAssignmentStructure.isEqualsExport is now isExportEquals. This was incorrectly named.
- Identifier.getDefinitionReferencingNodes() is now getReferencingNodes().
- createDirectory will not throw if the directory exists.
ts-simple-ast 10.5.0 (2018-04-20)
Bug Fixes
- Fix getting the relative path as a module specifier to the index file in the root directory. (80ba49c)
Features
- #317 - Make Identifier a ReferenceFindableNode. (652d00d)
- Add
Directory.getRelativePathAsModuleSpecifierToandgetRelativePathTo(5d5fa08) - Add SourceFile.getRelativePathTo and getRelativePathAsModuleSpecifierTo. (04f91eb)
ts-simple-ast 10.4.0 (2018-04-18)
Features
ts-simple-ast 10.3.3 (2018-04-17)
Bug Fixes
- #125 - Inserting a namespace or class into an ambient module/namespace should not write as non-ambient. (a3c6291)
- #316 - Getting references between source files was broken when the importHelpers compiler option was true. (701e936)
ts-simple-ast 10.3.2 (2018-04-15)
Bug Fixes
- #104 - Fix documentation with compile errors. (9d16ab4)
- ExportAssignmentStructure.isEqualsExport should be isExportEquals. Deprecated until next major. (1189352)
- ExportDeclaration.addNamedExport method overload was a duplicate of the other one. (3715875)
ts-simple-ast 10.3.1 (2018-04-15)
Bug Fixes
- #308 - Should not insert before the BOM. (07a2a51)
- #314 - Fix moved source file not being marked as dirty in reference cache after move. (91b1fbd)
- Should update a module specifier to a source file that was added after the internal reference cache was filled. (d6c02b1)
ts-simple-ast 10.3.0 (2018-04-11)
Features
ts-simple-ast 10.2.0 (2018-04-08)
Lots of performance improvements in this release. These performance improvements may have introduced bugs, so let me know about any issues!
Bug Fixes
- Fix out of date TypeGuards by regenerating them. (23eca82)
Features
- #300 - Fix more nodes to have .findReferences() and .getReferencingNodes() (9ae7383)
- TypeGuards.hasBody(node). (4041dfd)
ts-simple-ast 10.1.0 (2018-04-01)
Bug Fixes
- #219 - Removing the last statement in a default or case clause will cause a double newline. (d46cbd0)
- #261 - sourceFile.getRelativePathToSourceFileAsModuleSpecifier(...) should not strip "index" file name when module resolution is classic. (5ce71ac)
- Update to code-block-writer 6.7.2. (eb5bd38)
Features
- #237 - Add node.getLeadingCommentRanges() and .getTrailingCommentRanges(). (9678b3d)
- #297 - Simpler findReferences() and getDefinitions() that only returns nodes. (4048116)
- Add Node.getLeadingTriviaWidth(). (09bdd01)
- Add Node.getTrailingTriviaEnd() and .getTrailingTriviaWidth() (98cd0b0)
- Add Program.getEmitModuleResolutionKind(). (447573f)
- Add Project.createWriter(). (914f503)
ts-simple-ast 10.0.0 (2018-03-29)
Bug Fixes
- Change formatting settings insertSpaceAfterSemicolonInForStatements to be true by default. (b74dfd9)
- Setting string literal value by string should escape newlines and quote chars. (d68b6b9)
- Should escape quote char in passed in string to EnumMember.setValue(...); (7134702)
- Should write initializer if provided in EnumMemberStructure. (35095dc)
Code Refactoring
- addDirectoryIfExists -> addExistingDirectoryIfExists (6bb08cd)
- Project & Directory, addSourceFileIfExists -> addExistingSourceFileIfExists. (18caa1c)
- Renamed QuoteType to QuoteKind. (964571a)
Features
- #154 - Configuration for spaces surrounding named imports and exports. (76ce4ad)
- #268 - Ancestor directories are now lazily loaded. (1169b54)
- #273 - Add overwrite option to createSourceFile. (ddcd03e)
- #286 - Populate all directories as specified in tsconfig.json (206e795)
- #287 - Descendant directories are populated based on file globs passed to addExistingSourceFiles (402d395)
- #291 - Add Type: isNumberLiteral, isStringLiteral(), and isBooleanLiteral(). (10e40cb)
- #293 - Upgrade to TypeScript 2.8.1 (16e5962)
- #294 - Add sourceFile.organizeImports() (4f3b2ff)
- #294 - Wrap languageService.organizeImports(...). (154bf2e)
- #295 - ClassDeclaration now has a nullable name. (96b9857)
- Add ImportDeclaration & ExportDeclaration .getModuleSpecifierValue(). (1785054)
- Add new project.compilerOptions property that has the ability to change the compiler options. (4da80ba)
- Add SourceFile.getLanguageVersion(). Language version is now specific to file. (117433e)
- Add sourceFile.getReferencingLiteralsInOtherSourceFiles(). (9f009cf)
- Add type.isEnumLiteralType() and type.isLiteral() (56b26f8)
- addExistingDirectory and addDirectoryExists now has a recursive option. (45efb2f)
- Rename VariableDeclarationType to VariableDeclarationKind. (ce52ce3)
Performance Improvements
BREAKING CHANGES
- addDirectoryIfExists is now addExistingDirectoryIfExists for consistency with addExistingDirectory.
.getName()and.getNameNode()on ClassDeclaration can now possibly return undefined (ex.export default class { ... }).- VariableDeclarationType is now VariableDeclarationKind. .getDeclarationType() is now .getDeclarationKind()
This was done to reduce confusion with the word "Type".
- QuoteType is now QuoteKind.
This was done to make it consistent with NewLineKind.
- ScriptTarget was moved from manipulation settings to be stored exclusively in the compiler options.
getReferencingImportAndExportDeclarations()was removed. UsegetReferencingNodesInOtherSourceFiles().ImportDeclaration&ExportDeclaration.getModuleSpecifier()now returns the StringLiteral. Use.getModuleSpecifierValue()for the previous behaviour.- Project & Directory's addSourceFileIfExists is now addExistingSourceFileIfExists.
This was done for consistency with addExistingSourceFile.
- Requesting an ancestor directory will no longer return undefined if it is an ancestor of a "root" directory.
ts-simple-ast 9.5.0 (2018-03-23)
Features
- Add new getImportStringLiterals() method. (a1b967f)
ts-simple-ast 9.4.2 (2018-03-19)
Bug Fixes
- Syntax kind to node mappings should include aliased kind names. (5c7109e)
ts-simple-ast 9.4.1 (2018-03-19)
Bug Fixes
- Internally use the first name when getting the SyntaxKind name. (cfab227)
ts-simple-ast 9.4.0 (2018-03-18)
Features
- #276 - Improvements to moving source files. (dd03789)
- #279 - Add StatementedNode.getDescendantStatements(). (3b8b093)
- #279 - Move .getDescendantStatements() to Node and improve performance. (e397aa2)
- #280 - Add setLiteralValue to more literals. (38c1570)
- Ability to easily check if an external module reference is relative. (f8676f0)
- Ability to easily get an ImportEqualsDeclaration and ExternalModuleReference's referenced source file. (c6d7c7b)
- Add ImportEqualsDeclaration.setExternalModuleReference(...). (e3396d3)
- Add StringLiteral.setLiteralValue(...). (8d5ff33)
ts-simple-ast 9.3.0 (2018-03-17)
Features
- #250 - Accept strings for named imports and exports. (8867b71)
- #278 - Add Type.isTupleType (d7c3c3d)
- Add more type guards. (4a1a92d)
- Add Type.getConstraint() and getDefault(). (8850266)
- Add Type.getTupleElements(). (8c5dafc)
ts-simple-ast 9.2.0 (2018-03-17)
Features
- #240 - Ability to add/insert JSX attributes. (e2b4a99)
- #240 - Ability to remove JSX attributes. (1bf7642)
- Add getAttribute to JsxOpeningElement and JsxSelfClosingElement. (7dbe0f7)
- Add getAttributeOrThrow for jsx nodes with attributes. (93a0fbd)
- Add type.isStringType and type.isNumberType. (66eecde)
ts-simple-ast 9.1.0 (2018-03-13)
Bug Fixes
- Project.getSourceFile - Getting a source file by relative path should work. (d117ecc)
Features
- TextInsertableNode - Add removeText() overload with no parameters. (a4b5ef1)
ts-simple-ast 9.0.1 (2018-03-12)
Bug Fixes
- Fix intended method name. (cbdee2e)
ts-simple-ast 9.0.0 (2018-03-11)
Bug Fixes
- ExportableNode.isExported() takes into account all possible ways for a node to be exported from a file. (ad07c33)
- Project.getSourceFile should normalize the passed in path. (c765b16)
Code Refactoring
- Uses a WeakMap for wrapped Symbols, Types, etc. Internally created an Es5WeakMap. (177dfe6)
Features
- Align ClassDeclaration more with the compiler. (9b64bb5)
BREAKING CHANGES
- Removed Symbol.equals(symbol). You can use === to compare symbols now.
- ClassDeclaration.getMembers() no longer returns parameter properties.
ts-simple-ast 8.2.4 (2018-03-08)
Bug Fixes
ts-simple-ast 8.2.3 (2018-03-08)
Bug Fixes
ts-simple-ast 8.2.2 (2018-03-06)
Bug Fixes
ts-simple-ast 8.2.1 (2018-03-01)
Bug Fixes
- #265 - Fix error thrown getting members in class containing semicolon terminated constructor & method declarations. (dfb979f)
ts-simple-ast 8.2.0 (2018-02-28)
Features
- Add project.manipulationSettings.getEditorSettings() (mostly used internally for the default) (af82884)
- Add JsxElement setBodyText and setBodyTextInline. (1420786)
- Add languageService.getIdentationAtPosition(...) (4de5f82)
- Upgrade to code-block-writer 6.6.0 (34c39a9)
- Uses the language service to figure out the indentation level when writing. (76f9531)
ts-simple-ast 8.1.0 (2018-02-24)
Features
- #259 - Wrap TypeLiteralNode. (d479100)
- Add support for strict property initialization (exclamation token). (1e787f2)
- sourceFile.getBaseNameWithoutExtension() (09a63d9)
- sourceFile.getExtension() (3906902)
ts-simple-ast 8.0.0 (2018-02-19)
Bug Fixes
- Blank line would be inserted when calling an addXs method and providing an empty array in some scenarios. (dfbf940)
- getRelativePathToSourceFileAsModuleSpecifier() should return
../instead of./../when going back a directory. (a7954fa) - sourceFile.copy should return the current source file when copying to its own path. (6e737e7)
Code Refactoring
- file-system: Preparing for having the ability to queue deletions. (83e45f0)
Features
- #199 - Add SourceFile.move(...), .getReferencingSourceFiles(), and .getReferencingImportAndExportDeclarations(). (f22db6c)
- Deletes do not happen on the file system until
.save()is called on the mainastobject. (d208cfd) - ImportDeclaration and ExportDeclaration - isModuleSpecifierRelative() (2ef3064)
- setModuleSpecifier accepts a source file. (c2a4d9a)
- SourceFile - copyImmediately and moveImmediately along with sync methods. (4183769)
- sourceFile.copy() will automatically update the new source file's import & export declarations' module specifiers if necessary. (e48949e)
BREAKING CHANGES
-
- project.saveUnsavedSourceFiles() is now project.save()
- Directory.saveUnsavedSourceFiles() is now Directory.save()
- file-system: SourceFile/Directory: delete() and deleteSync() are now deleteImmediately() and deleteImmediatelySync().
ts-simple-ast 7.1.0 (2018-02-15)
Bug Fixes
- Fix scenario where adding a modifier would throw when there was an jsdoc on the parent in some scenarios. (1fbcee6)
- Insert functions with a declaration keyword without a body. (c64009d)
Features
- #252 - Add Type.isNullable. (f2dfd1f)
- Add functions and variables to typescript declaration file. (451840b)
- Add ts.Node brand to prevent using ts.Nodes created outside the ts named export. (ab7c353)
- BodyableNode - addBody, removeBody, hasBody (3f4175e)
ts-simple-ast 7.0.1 (2018-02-14)
Bug Fixes
- Fix ts compiler types not being exported from declaration file. (0755aa2)
ts-simple-ast 7.0.0 (2018-02-14)
Code Refactoring
- #232 - HeritageClause: getTypes() -> getTypeNodes() (ef5a369)
- ClassDeclaration & InterfaceDeclaration: getAllMembers -> getMembers (cdb186a)
- getImport -> getImportDeclaration. (acd9d70)
- Rename toggleDeclareKeyword to setHasDeclareKeyword for consistency. (0cecefe)
Features
BREAKING CHANGES
- HeritageClause getTypes() renamed to getTypeNodes().
It was incorrectly named originally.
- ClassDeclaration & InterfaceDeclaration getAllMembers() renamed to getMembers().
- sourceFile.getImport is now getImportDeclaration for consistency.
- Access the TypeScript compiler via
import {ts} from "ts-morph"; - NewLineKind is now the TypeScript compiler's enum.
- toggleDeclareKeyword is now setHasDeclareKeyword.
ts-simple-ast 6.13.0 (2018-02-12)
Bug Fixes
- Writing a statemented node would not respect the manipulation settings. (179e327)
- Writing enum member value that's a string should be surrounded in quotes. (d5da5b6)
Features
ts-simple-ast 6.12.0 (2018-02-10)
Features
ts-simple-ast 6.11.1 (2018-02-09)
Bug Fixes
- #244 - Fixes setOrder() bug where verify fails incorrectly. (c7bec28)
- Fix failing ts 2.4 test for IndexSignatureDeclaration. (654e5c2)
ts-simple-ast 6.11.0 (2018-02-09)
Features
ts-simple-ast 6.10.0 (2018-02-07)
Features
- Wrap more type nodes. (9211350)
ts-simple-ast 6.9.0 (2018-02-04)
Bug Fixes
Features
- Add Node.getEndLineNumber() (f00ca4c)
- Add Symbol.getValueDeclaration() (91da111)
- Improve inserting to ArrayLiteralExpressions. (b2e991f)
ts-simple-ast 6.8.0 (2018-02-01)
Features
ts-simple-ast 6.7.0 (2018-01-28)
Bug Fixes
- type-guards: A few nodes were not returning true for some type guards. (f2f64b6)
Features
- Add CallSignatureDeclaration. (3067c2b)
- Add ClassDeclaration - getExtendsOrThrow() and getBaseClassOrThrow. (3e24db4)
- Add ExternalModuleReference and ImportEqualsDeclaration. (c140982), closes #225
- StatementedNode - getStatement(condition) and getStatementByKind(kind). (db34a13)
ts-simple-ast 6.6.0 (2018-01-27)
Bug Fixes
- ClassDeclaration.getBaseClass should return the base class when using mixins. (b455c60)
- Exceptions occurring when synchronously calling forgetNodesCreatedInBlock weren't being thrown. (82798c1)
Features
- #138 - getInitializerIfKind improvement. (e0b88ba)
- Add SourceFile getRelativePathToSourceFile and getRelativePathToSourceFileAsModuleSpecifier. (99e8585)
- Node.getStartLineNumber and SourceFile.getLineNumberFromPos. (64178fa)
ts-simple-ast 6.5.0 (2018-01-26)
Bug Fixes
- The wrapped Type should be a TypeParameter when it is a ts.TypeParameter. (23e7e94)
Features
ts-simple-ast 6.4.0 (2018-01-21)
Features
- #231 - Node.formatText() - Format individual nodes. (34f61ea)
- InterfaceDeclaration - getBaseTypes() and getBaseDeclarations() (9785eeb)
ts-simple-ast 6.3.0 (2018-01-20)
Bug Fixes
- ExportableNode.setIsExported should not remove a default export on a different line. (fe0bcc0)
- Fixes setting node as a default export in ambientable situation would throw. (66ac7e6)
- Some interfaces were missing from being exported from the main file. (5330aba)
Features
- ExportSpecifier - getLocalTargetSymbol() and getLocalTargetDeclarations() (30eff42)
- ImportDeclaration & ExportDeclaration - getModuleSpecifierSourceFile (a42d6a1)
- SourceFile - getExportedDeclarations() (61663aa)
- TypeGuards.hasName(node) (efed188)
ts-simple-ast 6.2.0 (2018-01-14)
Bug Fixes
- Removing a member throws when surrounding members have JS docs. (fdc64c9)
Features
- Node .getStart & .getStartLinePos - add includeJsDocComment. (af8bb55)
ts-simple-ast 6.1.0 (2018-01-14)
Bug Fixes
- Fix JSDocParameterTag not being wrapped. (7363481)
- Fix TypeAssertion not being wrapped. (58fc48c)
- Less strict ClassDeclaration getBaseClass (033deb8)
- TypeGuards utility was missing some nodes. (3ddca5d)
Features
- #187 - Added TypeGuards.hasExpression. (6e37480)
- Add .getType() to InterfaceDeclaration and ClassDeclaration. (3c8ca33)
- Add JSDocableNode to ExpressionStatement and LabeledStatement. (00c2a89), closes #193
ts-simple-ast 6.0.1 (2018-01-13)
Bug Fixes
- Accidentally released with no jsdocs. (cf58690)
ts-simple-ast 6.0.0 (2018-01-13)
Bug Fixes
- #203 - Source file will now be marked as "saved" when updating from file system. (65f22ac)
- #218 - Throw an error when a node is constructed outside the library. (74fa8c1)
- Virtual file system properly handles multiple globs. (74aaca7)
Code Refactoring
- project.addExistingSourceFiles now takes either a single glob or multiple globs passed as an array. (fb5b930)
Features
- #7 - Ability to import files from tsconfig. (b538537)
- #7 - Some fixes to importing files from tsconfig. (2a95bc2)
- #7 - Specified compiler options and tsconfig path are both used to determine added files. (20e7b77)
- Support multiple globs when getting source files. (bb935d9)
BREAKING CHANGES
- Use an array when passing in multiple file globs to project.addExistingSourceFiles. This better expresses the intent of this method call.
- Files are added based on the tsconfig by default.
getCompilerOptionsFromTsConfignow returns an object that includes the diagnostics.
ts-simple-ast 5.6.0 (2018-01-13)
Features
- #103 - ClassDeclaration: Add .getBaseTypes() and .getBaseClass() (e84252b)
- #204 - Add IfStatement. (095eb24)
- #204 - Add IterationStatement, Do, ForIn, ForOf, For, While (ce40dee)
- #204 - Add WithStatement. (215383a)
- #213 - Add NoSubstitutionTemplateLiteral. (e0fd583)
- Add printNode utility function and Node.print() (d6c2313)
ts-simple-ast 5.5.0 (2018-01-11)
Thanks once again to thanks to @dicarlo2 for implementing a lot of new expression classes.
Features
- #103 - ClassDeclaration: Add .getBaseTypes() and .getBaseClass() (e84252b)
- #204 - Add IfStatement. (095eb24)
- #204 - Add IterationStatement, Do, ForIn, ForOf, For, While (ce40dee)
- #204 - Add WithStatement. (215383a)
- #213 - Add NoSubstitutionTemplateLiteral. (e0fd583)
ts-simple-ast 5.4.0 (2018-01-10)
All statement nodes are wrapped thanks to @dicarlo2!
Features
- #204 - Add IfStatement. (095eb24)
- #204 - Add IterationStatement, Do, ForIn, ForOf, For, While (ce40dee)
- #204 - Add WithStatement. (215383a)
ts-simple-ast 5.3.2 (2018-01-06)
Bug Fixes
ts-simple-ast 5.3.1 (2018-01-02)
Bug Fixes
- Directory.getSourceFile should only return source files currently existing within the cache. (8db2d84)
ts-simple-ast 5.3.0 (2018-01-02)
Bug Fixes
- #137 - Improve error message when manipulation throws error. (34620f0)
- Changing from namespace to module keyword and vice versa will now change the node kind. (38dc73b)
Features
- #200 - Add BooleanLiteral. (6cc7917)
- #201 - Add BinaryExpression. (71a75bf)
- Add Directory.getDescendantDirectories. (d576acb)
ts-simple-ast 5.2.0 (2017-12-26)
Features
- Ability to get source file from directory based on relative or absolute path. (fb72396)
ts-simple-ast 5.1.0 (2017-12-26)
Features
- Add overwrite option to source file and directory copy. (0741180)
ts-simple-ast 5.0.0 (2017-12-26)
Bug Fixes
- #195 - Fixes emitting directory crashes when directory does not exist. (57c3381)
- #196 - Fixes directory.copy() crashing when directory already exists. (def2992)
Code Refactoring
- #181 Rename DocumentationableNode to JSDocableNode. (59a254e)
- Getting and inserting/adding imports method names now includes "Declaration". (97812cf)
Features
- #177 - Ability to use virtual file system. (ae27f5b)
- #191 - Add SourceFile.getEmitOutput(). (1707a7d)
- #194 - Add async version of forget block. (c73dd05)
- Ability to get a directory from directory based on a relative path. (b7714c5)
- Add addDirectoryIfExists and addSourceFileIfExists (0ff4ff2)
- Add project.getFileSystem() (3364349)
- Add ExportAssignment. (f2b346b)
BREAKING CHANGES
- All import methods on SourceFile have been renamed to include "declaration" (ex. getImports() -> getImportDeclarations()). This was done for consistency with getExports() -> getExportDeclarations().
- getDocs(), insertDoc(), etc. have been renamed to getJsDocs(), insertJsDoc(), etc...
- All export methods on SourceFile have been renamed to include "declaration" (ex. getExports() -> getExportDeclarations())
ts-simple-ast 4.2.1 (2017-12-23)
Bug Fixes
- For consistency, directory path should be relative to its path and not the parent. (f832035)
ts-simple-ast 4.2.0 (2017-12-23)
Bug Fixes
- #192 - Fix forget block crashes when removing node. (3f195ea)
- getDiagnostics() should return the syntactic, semantic, and declaration diagnostics. (5ea5cfc)
- Lazily create program and type checker when necessary. (77b3889)
Features
- #184 - Ability to copy directories. (18f1e7b)
- #185 - Ability to save all descendant files in a directory. (334f20b)
- Add project.getPreEmitDiagnostics() (a561994)
- Add SourceFile.getPreEmitDiagnostics (d1ea9eb)
- Emit a directory. (3cb455c)
- Program - getSyntacticDiagnostics, getSemanticDiagnostics, getDeclarationDiagnostics, getPreEmitDiagnostics (56b5f58)
- Support TS 2.4, 2.5, and 2.6 (57c87f8)
- Wrap LanguageService.getEmitOutput(...). (40ecc32)
ts-simple-ast 4.1.0 (2017-12-19)
Bug Fixes
- replaceWithText should include the js docs if they exist. (304a86a)
Features
ts-simple-ast 4.0.1 (2017-12-17)
Bug Fixes
- createDirectory should throw if the directory exists. (93a9da2)
ts-simple-ast 4.0.0 (2017-12-17)
Code Refactoring
Features
- #169 - Directories. (332c44d)
- #173 - SemicolonToken type guard. (77d600a)
- #174 - Getting a source file by name or condition walks directories. (e4f4b45)
BREAKING CHANGES
- Renamed methods for creating & adding source files. See #170 for details.
ts-simple-ast 3.2.0 (2017-12-12)
Features
- #166 - Add ReturnStatement. (23eccf1)
- #168 - Add SourceFile.refreshFromFileSystem() (9ddcdd4)
- Add Node.getSymbolOrThrow() (6abbe7f)
- Add SourceFile.getDirectoryPath(). (708f3bb)
- Get exports from symbol. (c815955)
ts-simple-ast 3.1.0 (2017-12-10)
Features
- #164 - Support ExpressionStatements. (d7d48a1)
- Support deleting a file from the file system. (326b6e0)
ts-simple-ast 3.0.2 (2017-12-10)
Bug Fixes
- manipulation: Brace possibly placed at wrong indentation when manipulating comma & newline separated node. (5318c0f)
ts-simple-ast 3.0.1 (2017-12-09)
ts-simple-ast 3.0.0 (2017-12-09)
Bug Fixes
- ShorthandPropertyAssignment.removeObjectAssignmentInitializer was incorrectly returning undefined. (62e2971)
Code Refactoring
Features
- #131 - Ability to add statements within blocks. (f2bb4de)
- #145 - Add JSDoc.getInnerText - Returns text without surrounding comment. (a62cec4)
- #161 - Rename getDocumentationCommentNodes to getDocNodes (d29820f)
- #42 - Ability to pass in type checker to wrapped node. (62b377f)
- #59 - Get parameter, type parameter, or decorator by name. (f889515)
BREAKING CHANGES
- Removed DocumentationableNode.getDocumentationComment.
- getDocumentationCommentNodes is now getDocNodes.
- createWrappedNode's signature changed.
ts-simple-ast 2.0.0 (2017-12-08)
Features
- #37 - Add StringLiteral.getQuoteType (adad446)
- SourceFile.formatText uses the formatting API. (02e3feb), closes #157 #158
BREAKING CHANGES
- StringChar renamed to QuoteType. Manipulation setting's getStringChar() renamed to getQuoteType().
This was done for consistency.
- SourceFile.formatText now takes a FormatCodeSettings argument.
ts-simple-ast 1.3.0 (2017-12-05)
Bug Fixes
Features
- Upgrade to code-block-writer 6.2.0 (155f935)
ts-simple-ast 1.2.0 (2017-12-04)
Bug Fixes
Features
- Add isInStringAtPos to Node. (cfcf256)
ts-simple-ast 1.1.0 (2017-12-03)
Features
ts-simple-ast 1.0.0 (2017-11-28)
Bug Fixes
- Renamed setIsOptional to setHasQuestionToken for consistency. (ac45bba)
BREAKING CHANGES
- QuestionTokenableNode.setIsOptional is now setHasQuestionToken.
ts-simple-ast 0.99.0 (2017-11-28)
Features
- Manipulation: #65 - Setting and removing initializers from (Shorthand)PropertyAssignments (dc3a61c)
- Node: Getting child of node at index. (cb0a800)
ts-simple-ast 0.98.0 (2017-11-27)
Features
Performance Improvements
- Don't internally add nodes to the cache so often for common navigation methods. (7efc147)