Skip to content

Latest commit

 

History

History
2564 lines (1572 loc) · 163 KB

CHANGELOG.md

File metadata and controls

2564 lines (1572 loc) · 163 KB

Change Log

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

21.0.0 (2023-12-02)

Features

  • ProjectOptions::defaultCompilerOptions (#1460) (b5dee3d)
  • add interface and type literal getters & setters (#1473) (339f685)
  • add wrapped method for getShorthandAssignmentValueSymbol to TypeChecker (#1456) (1d8b382)
  • TypeScript 5.3 (#1476) (010a269)

Performance Improvements

  • use path.exists functions that don't throw internally when not exists (#1478) (432f43f)

BREAKING CHANGES

  • Upgraded to TS 5.3
  • Underlying @ts-morph/common file system methods return undefined instead of throwing when not exists (for perf).
  • Private fields are actually private (default build requires private fields).

20.0.0 (2023-09-11)

Bug Fixes

  • support dynamic type imports in getReferencedSourceFiles() (#1436) (7207de1)

Features

BREAKING CHANGES

  • Upgraded to TS 5.2

19.0.0 (2023-06-14)

Features

  • add IsVoid method to Type (#1398) (f837790)
  • add JSDocable to ExportAssignment (#1397) (611c8b6)
  • upgrade to TS 5.1 (#1415) (46e50b0)
  • fix: allow .tranform to work with Nodes from another parsed sourcefile (#1417) (225ff58)

BREAKING CHANGES

  • Upgraded to TS 5.1, which has Jsx namespaces.

18.0.0 (2023-03-22)

Bug Fixes

Features

BREAKING CHANGES

  • Upgraded to TS 5.0.2

17.0.1 (2022-11-21)

Bug Fixes

  • revert rollup from v3 to v2 to fix esModuleInterop: true (#1358) (5c544a2)

17.0.0 (2022-11-19)

Bug Fixes

  • getOverloads for a class method should take into account if static (#1337) (f927d01), closes #1298
  • ImportEqualsDeclaration should be exportable (#1336) (7680bae)
  • named import/export specifier structures were missing isTypeOnly (#1347) (6b88a0b)

Features

BREAKING CHANGES

  • Upgraded to TS 4.9

16.0.0 (2022-09-03)

Features

BREAKING CHANGES

  • Upgraded to TS 4.8
  • Decorators are now modifiers due to TS 4.8
  • ts.createX functions seem almost completely deprecated in TS 4.8, so make sure to update your code to use the traversal.context.createX functions instead
  • Type#isArray() returns true for readonly arrays

15.1.0 (2022-06-03)

Bug Fixes

  • DocumentSpan should attempt to load the source file if it's not loaded yet (#1291) (1eda69c)
  • included symlinked directories when reading a directory (#1290) (f1b4ea2)

Features

15.0.0 (2022-05-24)

Bug Fixes

  • transform() - ensure comments on nodes with only added synthetic leading comments show up in output (abc840d), closes #1273
  • ensure leading and trailing trivia for overloads ends up in output (0d043b5), closes #1244
  • common: deleting directories didn't work on Node (163de40), closes #1249
  • handle undefined in comment node type guards (#1275) (452cff3)
  • transform should take into account the node changing kinds (75c4a75), closes #1248

Features

  • add Node#isKind(kind) type guard (#1271) (79ab80f)
  • add factory property to traversal control (d4c5a35)
  • add helper properties on TemplateLiteralTypeNode. (1a8de49), closes #1266
  • upgrade to TypeScript 4.7 (#1281) (ae797d8)

BREAKING CHANGES

  • transform now returns a Node instead of this because the returned node could be the replaced node.
  • Upgraded to TS 4.7. Please review changes to typescript.d.ts in #1281.

14.0.0 (2022-03-02)

Features

BREAKING CHANGES

  • AssertEntry#value is now an expression

13.0.3 (2022-01-22)

Bug Fixes

13.0.2 (2021-11-23)

Bug Fixes

  • prevent in-memory /node_modules/typescript/lib folder getting saved to the file system sometimes (a655c65)

13.0.1 (2021-11-22)

Bug Fixes

  • Regression in getReferencingNodesInOtherSourceFiles with source files not marked as in the project (7504aed), closes #1227 #1195
  • Surface read file errors instead of ignoring them (760fe8c)
  • Align getScriptSnapshot compiler host libFileMap behaviour with readFile (9e84d72)

13.0.0 (2021-11-20)

Bug Fixes

  • Do not throw an error if decorator expr is wrapped in a paren expr (c77db30), closes #1214

Chores

  • Target ES2018 instead of ES2015 (519b139)

Code Refactoring

  • Node.isXNode(node) static type guard methods are now Node.isX(node) (e5bcba9), closes #1166
  • Remove already deprecated WriterFunctions and TypeGuards exports. (be87373)

Features

  • Add AssertClause and AssertEntry (#1224) (bcf694f)
  • Add Node.hasStructure type guard. (0f7d9be)
  • Change readDirSync to return directory entries instead of file paths (f22a50d)
  • Make Structure.isX function more flexible (a54dd69), closes #1219
  • Type only methods for ImportSpecifier and ExportSpecifier (e93c96e)
  • TypeScript 4.5 support (#1220) (526e0dd)
  • Wrap more JS doc nodes (5107999)

BREAKING CHANGES

  • Node.isXNode(node) static type guard methods are now Node.isX(node) to reduce verbosity.
  • Targeting ES2018 instead of ES2015
  • Upgraded to TS 4.5
  • Removed already deprecated WriterFunctions and TypeGuards exports. Use Writers and Node instead.
  • readDirSync now returns directory entries.

12.2.0 (2021-11-02)

Features

12.1.0 (2021-10-30)

Bug Fixes

  • Support renaming a property to a private identifier (bf377b6), closes #1198
  • TypeArguments on decorator structure should output type arguments (ad4fdbd)

Features

12.0.0 (2021-08-27)

Bug Fixes

Features

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 return true for a constructor declaration. (b8b0a39)

11.0.0 (2021-05-26)

Features

  • #1156 - Add ReferenceFindableNode to ConstructorDeclaration. (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) and Node#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 - ExportedDeclarations should include SourceFile and 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 NamespaceDeclaration is ModuleDeclaration. You will need to rename anything that references "Namespace" and change it to "Module".
  • The ExportedDeclarations union type now properly includes SourceFile. 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 libFolderPath in the Project constructor's options.

9.1.0 (2020-11-26)

Features

  • Add Directory#getProject() (bef39b8)
  • Support providing file paths to getRelativePathTo and getRelativePathToAsModuleSpecifier. (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 - addFilesFromTsConfig is now inverted to skipAddingFilesFromTsConfig. Default behaviour is the same. (1fda310)

Features

  • #858 - Remove BooleanLiteral and replace with TrueLiteral and FalseLiteral. (97f0873)
  • #885 - Upgrade to TS 4.1 (d5395f6)

Performance Improvements

BREAKING CHANGES

  • Upgraded to TS 4.1.
  • addFilesFromTsConfig is now inverted to skipAddingFilesFromTsConfig. Default behaviour is the same.

This was done to make the option align with the other options.

  • BooleanLiteral is now a type alias of TrueLiteral and FalseLiteral. 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

  • #867 - Inspecting and manipulating new expressions without parenthesis would throw. (1e5c9c0)

8.1.0 (2020-08-25)

Features

  • #803 - Standardize nodes with getExpression() method to be ExpressionedNodes. (3550cbf)
  • Add JSDocDeprecatedTag. (d73c480)

8.0.0 (2020-08-20)

Bug Fixes

Features

BREAKING CHANGES

  • Upgraded to TypeScript 4.0

  • TupleTypeNode#getElementTypeNodes() is now getElements() to match the change in the compiler API.

7.3.0 (2020-08-11)

Features

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 enum members with invalid names (#839) (affc253) Thanks @jeswr!
  • 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)