Skip to content

Latest commit

 

History

History
2663 lines (1317 loc) · 140 KB

CHANGELOG.md

File metadata and controls

2663 lines (1317 loc) · 140 KB

Change Log

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

7.2.0 (2020-08-09)

Bug Fixes

  • #840 - Correctly add name to class without name and with extends or implements. (ed764a7)

Features

  • add quotations around enums with invalid names (#839) (affc253)
  • Implement JSDocReadonlyTag and others (abbf208)

7.1.3 (2020-07-20)

Bug Fixes

  • #835 - Do not create a parent directory when checking if it exists. (698a169)

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

  • #808 - Unwrap would throw an error if body starts or ends with comments. (eba6037)

7.0.2 (2020-04-08)

Performance Improvements

  • manipulation: #807 - Optimise getTextFromTextChanges performance (d6f461f) - Thanks @killagu!

7.0.1 (2020-03-29)

Bug Fixes

  • #799 - Support renaming anonymous class declarations (253a43f)

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

Features

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)
  • Structures should contain JSDocTagStructure (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.escapeLeadingUnderscores on the name. (d2694ba)

Code Refactoring

  • #767 - Rename StructureTypeGuards -> Structure (b28ed73)
  • FileSystemHost#glob is now asynchronous. A globSync method 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#getSourceFiles now 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#applyTextChanges now accepts objects of type ts.TextChange. (e72c3f0)
  • Add getTypeExpressionOrThrow() to JSDocReturnTag and JSDocPropertyLikeTag (8102360)
  • Add JSDoc#insertTags and similar methods. (67a2a66)
  • Add JSDocTag#remove(). (8b037aa)
  • Add JSDocTag#setTagName (688b783)
  • Add JSDocTagStructure. (aab3e9c)
  • Expose InMemoryFileSystemHost. (2176f2c)
  • Rename useVirtualFileSystem to useInMemoryFileSystem (b69750c)
  • Support declare keyword on class properties. (7a0c1ab)
  • Upgrade to code-block-writer 10.1.0. (5eaf5ff)
  • Wrap BigIntLiteral. (85eaa12)

performance

  • #702 - Fix Project#addSourceFileAtPaths being needlessly slow in some scenarios. (6db6f60)

BREAKING CHANGES

  • JSDoc#setComment(...) and #getComment(...) are now setDescription(...) and getDescription(). They also work according to #764.
  • StructureTypeGuards is now Structure.
  • PropertyDeclarationDeclaration and PropertyDeclarationStructure now can have a declare keyword (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#useVirtualFileSystem is now useInMemoryFileSystem. This is a more accurate name.
  • Creating a Project with useInMemoryFileSystem: true will now load in the lib files into the node_modules/typescript/lib folder.
  • Due to the fix for #702, when using Project#addSourceFileAtPaths directories 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, use Project#addDirectoryAtPath(path, { recursive: true }).
  • FileSystemHost#glob is now asynchronous and #globSync was 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 like Project#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

  • #745 - Inserting a member when a comment was the last member would throw. (d83c031)

4.3.0 (2019-10-17)

Bug Fixes

  • #735 - An unwrappable node would throw an error on unwrap if it had a leading comment. (2cc4796)

Features

  • Add Node#getWidth(true) for including js docs in the width (similar to Node#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

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

4.0.1 (2019-09-12)

Thanks to @cancerberoSgx for discovering this was a node >= 11 issue.

Bug Fixes

  • #685 - Fix applyTextChanges in node 11 and 12. (e72b124)

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() to getPathReferenceDirectives(). (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#createSourceFile with 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 now getPathReferenceDirectives().

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#indentBlock is now indent. withHangingIndentation is now hangingIndent. withHangingIndentationUnlessBlock is now hangingIndentUnlessBlock.
  • 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.
  • CompilerExtendedComment is now called CompilerCommentNode.

3.1.3 (2019-07-18)

Bug Fixes

  • #665 - Getting descendants where jsx was used in a non-jsx file would throw an error. (fa3c3bb)

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. globalThis node returned from a symbol) (b9b0cb0)

Code Refactoring

  • #619 - Rename StructureTypeGuards methods to remove word Node and Declaration in certain cases. (92331e1)
  • #633 - Node#forEachChild is now aligned with the compiler API (same with forEachDescendant). (27fa43a)
  • SourceFile#getTypeReferenceDirectives() and #getReferencedFiles() better reflects the compiler api. (350bacb)
  • Remove renameNode and renameLocations from the language service. (72f0e1d)
  • Rename ObjectLiteralElementMemberStructures to ObjectLiteralExpressionPropertyStructures. (98f00d2)

Features

  • #310 - Add Symbol#getExportSymbol and TypeChecker#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 Writers alias for WriterFunctions. (79c6694)
  • #636 - Writers.returnStatement should do hanging indent in certain cases. (db6602d)
  • #638 - RenameLocation - Support prefixText and suffixText when renaming. (9326100)
  • RenameLocation - Add getPrefixText() and getSuffixText() (3cb7a7f)
  • Add Node#getSymbolsInScope(meaning) and TypeChecker#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() and deindent(). (17eefea)

BREAKING CHANGES

  • renameNode and renameLocations are 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#forEachChild is now aligned with the compiler API (same with forEachDescendant). These methods now stop when a value is returned in a callback and they will return the returned value.
  • The ObjectLiteralElementMemberStructures alias is now called ObjectLiteralExpressionPropertyStructures. This is a more correct name as an object literal expression has "properties" rather than "members" in the compiler api.
  • Renamed StructureTypeGuards methods to remove word Node and Declaration in 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

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 an Expression. (9d26400)
  • ReturnTypedNode and TypedNode'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 return true for abstract methods. (558cdd1)

Chores

  • EnumMember#getStructure() no longer returns #value and will only return #initializer. (ed25348)

Code Refactoring

  • FileSystemHost.isCaseSensitive() is now required in implementations. (015a124)
  • InitializerGetExpressionableNode is now InitializerExpressionGetableNode for consistency. (27c25c9)
  • Remove VariableDeclarationListStructure and VariableDeclarationList#set and #getStructure (e6953ed)
  • Remove InitializerSetExpressionableNode. (990c3c1)
  • Removed default export from library. (f127cf4)
  • Renamed Type#getArrayType() to Type#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 ChildOrderableNode to Statement. (b5ff9ad)
  • #595 - Add SourceFile#fixUnusedIdentifiers (e4b1b64) - @cancerberoSgx
  • #596 - Add CombinedCodeAction#applyChanges() (2566d53)
  • #601 - Add RefactorEditInfo#applyChanges() (ca0ca8c) - @cancerberoSgx
  • #603 - Make emit async and add new emitSync (8a8c1c7)
  • #606 - Symbol#getXByName-like methods are now Symbol#getX. (08f0710)
  • #addStatements/#insertStatements now 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(). Added FileTextChanges#applyChanges(). (4c62acb)
  • Replace StatementedNode with new .statements property / Add trivia properties to structures (5f4943b)
  • Wrap ClassElement. (73ecfb1)

reactor

BREAKING CHANGES

  • The default export was removed. Use the named Project export 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 .bodyText, .classes, .enums properties on structures. Replaced with .statements property.
  • Comments are parsed as children in certain scenarios. See #575 for more details.
  • Type#getArrayType() is now Type#getArrayElementType(). This was renamed to better reflect what the method does.
    • ParameterDeclaration now implements BindingNamedNode instead of DeclarationNamedNode.
  • EnumMember#getStructure() no longer returns the #value and will only return #initializer. #value should be seen as more of a convenience property for setting the initializer.
  • Symbol#getXByName-like methods were renamed to Symbol#getX.
  • Project#applyFileTextChanges() has moved to FileTextChanges#applyChanges().
  • SourceFile#getLineNumberAtPos is now SourceFile#getLineAndColumnAtPos
  • JsxText#containsOnlyWhiteSpaces() is now #containsOnlyTriviaWhiteSpaces(). FileSystemHost requires realpathSync.
  • Removed VariableDeclarationListStructure and VariableDeclarationList#set and #getStructure. This was done to simplify the structures.
  • The library now targets ES2015.
  • JsxAttributeStructure and JsxSpreadAttributeStructure are now differentiated based on their .kind property.
  • JsxElementStructure and JsxSelfClosingElementStructure are now differentiated based on their .kind property.
  • 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

  • #591 - Limit to TS < 3.4 for ts-morph version 1 (f20e473)

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

  • #548 - Getting JS doc descendants by kind should find nodes. (2fd7cac)

Features

1.1.0 (2019-02-14)

Thanks to @Pineapples for implementing these features!

Features

1.0.0 (2019-02-02)

Features

  • #527 - Adding namespace with quotes defaults to ambient module. (fadeeea)

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() and getDirectories(). 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() or project.getDirectories(). They can be added by calling project.addExistingSourceFiles(...)-like methods or project.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.getFirstChildByKind and node.getChildrenOfKind now search the parsed tree via .forEachChild(...) when specifying a parsed node's syntax kind. Previously it would only search the results of node.getChildren().

ts-simple-ast 20.0.0 (2018-12-08)

Code Refactoring

  • Remove JSDocTag.getAtToken(). (20ccd0a)

Features

  • #505 - TypeParameteredNodeStructure - Accept strings (a11ff0a)
  • Support TS 3.2. (e800f8b)

BREAKING CHANGES

  • JSDocTag.getAtToken() was removed because jsDocTag.atToken no 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 Options interface was renamed to ProjectOptions (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 Options interface was renamed to ProjectOptions. 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 skipFileDependencyResolution option 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

  • #493 - Renaming sometimes renamed at wrong text location. (1f4316e)

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 a JSDocPropertyLikeTag's name.

ts-simple-ast 17.1.1 (2018-10-20)

Bug Fixes

  • #468 - Removing class members should not assume it's in a class. (2c4db99)

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

  • #464 - printNode should get the source file from the passed in node if it exists. (3a77dbc)

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

  • #460 - Calling setHasDeclareKeyword on interfaces and type aliases should modify them. (7d7c8e2)

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 findReferencesAsNodes having 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 global namespace 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.setHasNamespaceKeyword and setHasModuleKeyword are now setDeclarationKind(kind: NamespaceDeclarationKind). NamespaceDeclarationStructure.hasModuleKeyword and hasNamespaceKeyword are now declarationKind.

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 .renameDefaultImport instead.
  • .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

  • #413 - .addExistingSourceFiles(...) will occasionally error for certain file globs. (15a6027)

ts-simple-ast 14.4.1 (2018-08-27)

Bug Fixes

  • #410 - sourceFile.getExportedDeclarations() throws exception if file is empty (8d563ac)

ts-simple-ast 14.4.0 (2018-08-26)

Features

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

  • #397 - Fix type.getProperties() sometimes throwing an error. (8078772)

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() and program.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

  • #393 - Use DocumentRegistry when creating language service. (d879071)

BREAKING CHANGES

  • project/sourceFile.getDiagnostics() and program.getPreEmitDiagnostics() no longer exist. Use project/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).
  • BindingNamedNode now correctly may also return a BindingName.

ts-simple-ast 13.0.0 (2018-08-06)

Bug Fixes

  • #345 - ArrowFunction should be a FunctionLikeDeclaration. (b3ea86f)

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

  • #373 - Fix setType when only a question or exclamation token exists. (15d6a24)

ts-simple-ast 12.7.0 (2018-07-18)

Features

ts-simple-ast 12.6.2 (2018-07-17)

Bug Fixes

  • #366 - Should be able to add a question token to a node without a type. (c43c1e7)

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 getLengthFromLineStartAtPos to replace getColumnAtPos in 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

  • #359 - Fix problems when manipulating within forEachChild or forEachDescendant. (bc124ed)

ts-simple-ast 12.5.1 (2018-07-06)

Bug Fixes

  • #356 - Setting method as abstract in structure should not write method body. (8f70df2)

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

Bug Fixes

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

  • getNodeProperty functionality 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, and spaceIfLastNotSpace, are removed. Use the shorter method names like spaceIfLastNot.
  • 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.getRelativePathAsModuleSpecifierTo and getRelativePathTo (5d5fa08)
  • Add SourceFile.getRelativePathTo and getRelativePathAsModuleSpecifierTo. (04f91eb)

ts-simple-ast 10.4.0 (2018-04-18)

Features

  • #317 - Make Identifier a ReferenceFindableNode. (652d00d)

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

  • #306 - Add Node.forEachChild and Node.forEachDescendant (9eabe57)

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

  • #283 - Do not temporarily wrap new tree when doing a manipulation. (824819f)

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. Use getReferencingNodesInOtherSourceFiles().
  • 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

  • #271 - Fix SourceFile.move not deleting previous file on file system. (a4dfda9)

ts-simple-ast 8.2.3 (2018-03-08)

Bug Fixes

  • #270 - Fix relative path file globs not working when using .getSourceFiles(...) (fa19352)

ts-simple-ast 8.2.2 (2018-03-06)

Bug Fixes

  • #262 - Write public keyword when specified. (6258c0e)

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 main ast object. (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

  • #249 - Remove TypeScript compiler peer dependency. (db9f0fc)

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

  • #245 - IndexSignatureDeclaration - Add support for readonly keyword. (2624f8b)

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

ts-simple-ast 6.9.0 (2018-02-04)

Bug Fixes

  • #239 - Fix JSDoc.getInnerText() stripping leading spaces. (b9c56de)

Features

  • Add Node.getEndLineNumber() (f00ca4c)
  • Add Symbol.getValueDeclaration() (91da111)
  • Improve inserting to ArrayLiteralExpressions. (b2e991f)

ts-simple-ast 6.8.0 (2018-02-01)

Features

  • Add Node.getFullStart (9d44185)
  • Upgrade support to TypeScript 2.7. (dab428a)

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

  • Add Node.getType() (2f15bd9)
  • Add Type.isTypeParameter type guard. (02c591f)

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. getCompilerOptionsFromTsConfig now 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

ts-simple-ast 5.4.0 (2018-01-10)

All statement nodes are wrapped thanks to @dicarlo2!

Features

ts-simple-ast 5.3.2 (2018-01-06)

Bug Fixes

  • #203 - Source file will now be marked as "saved" when updating from file system. (fa0dd2c)

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

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

  • #180 - Directory - isAncestorOf and isDescendantOf (7b259d9)

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

BREAKING CHANGES

  • Renamed methods for creating & adding source files. See #170 for details.

ts-simple-ast 3.2.0 (2017-12-12)

Features

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

  • #160 - Remove DocumentationableNode.getDocumentationComment (54c94b1)

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

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

  • #150 - Fix SourceFile.addImport not using the specified string char. (e704330)

Features

  • Upgrade to code-block-writer 6.2.0 (155f935)

ts-simple-ast 1.2.0 (2017-12-04)

Bug Fixes

  • #149 - "SourceFile.formatText() should respect indentation settings" (b0b9e53)

Features

  • Add isInStringAtPos to Node. (cfcf256)

ts-simple-ast 1.1.0 (2017-12-03)

Features

  • #65 - Navigation and manipulation of object literal expressions. (d9d1621)

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)