JSPM

  • Created
  • Published
  • Downloads 131
  • Score
    100M100P100Q78038F
  • License MIT

High level TypeScript Compiler API and refactor tools based on ts-morph (ex ts-simple-ast) library

Package Exports

  • ts-simple-ast-extra

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ts-simple-ast-extra) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ts-simple-ast-extra

High level TypeScript Compiler API and TypeScript/JavaScript refactor APIs based on ts-morph (ex ts-simple-ast) library.

Contents

Summary

  • Browser support (out of the box)

  • Many APIs for project's code refactors.

    • in general based on TypeScript built in code fixes and refactors
    • Easy to use.
    • Configurable
    • Composable
    • Have tests but use at your own risk
  • APIs useful to me that unfortunately are out of topic to pull them to in ts-morph like astPath or generalNode abstraction or

  • utilities related with TypeScript Plugin development like abstract types, Tests Helpers, AST, repeated code, codefixes generic structure, etc

  • Access to not so public areas of TypeScript APIs or some encapsulated hacks

Install

npm install ts-simple-ast-extra

Usage

NOTE: Currently, although there is API documentation I would say the best source of documentation are the test.

  • There are many different kind of APIs. Each file in src implements a "topic".
  • Each file or "topic" has a test at spec folder using the same name. At the beggining there is alwasys a simple usage src/refactor contain many interesting code refactors at the project level

Refactors

In general they have the same API, you pass a SourceFile and the Project (they need access to the LanguageService):

addBracesToArrowFunctions

import {Project, addBracesToArrowFunctions} from 'ts-simple-ast-extra'
const project = new Project()
const f = project.createSourceFile('f1.ts',  `
  const c = a => a+1
  export f = (b:number h: Date[])=>null
`)
addBracesToArrowFunctions(project, f)
console.log(f.getText())
/*
const c = a => { 
  return a + 1; 
} 
export f = (b:number h: Date[])=>{ 
  return null; 
}
*/

format

import {Project, format} from 'ts-simple-ast-extra'
const project = new Project()
const file = project.createSourceFile('f2.ts',  `
function f(){
alert(1);
log(2,function(){
return 1+g(a=>{
return 2
}              )
}    );
}`)
const output = format({
  file,
  project,
  trailingSemicolons: 'never',
  indentSize: 2,
})
console.log(f.getText())
/*
function f() {
  alert(1)
  log(2, function() {
    return 1 + g(a => {
      return 2
    })
  })
}
*/

API docs

See API docs

CHANGELOG

CHANGELOG.md

TODO

TODO.md

  • ../typescript-ast-util - similar objectives but independent on any library accessing directly TypeScript API