Giter VIP home page Giter VIP logo

tsunami's Introduction

How to Use From VSCode:

  1. Install tsunami-code from the vscode extension market
  2. Open a typescript project.
  3. Run (tsu) Import Symbol
  4. Enjoy!

How to Use From The CLI:

  1. Run npm install -g @derander/tsunami
  2. Use tsunami-imports aFile.ts anotherFile.tsx aThirdFile.ts 'src/\*\*/\*.ts'
  3. Enjoy!

About:

Tsunami is a TypeScript analysis project built on top of the typescript compiler's interfaces. Features:

Auto-Import

Tsunami indexes the exports of the project it's executed in (as well as the exports of its dependencies) in order to determine the symbols that are available for import. It is capable of providing CodeEdits that import these symbols.

Move Symbol refactoring

Tsunami can re-write all imports in a project to reflect a symbols move from ModuleA to ModuleB. For example, it can rewrite all instances of:

import { a } from "../foo";

to

import { a } from "../../bar";

while respecting relative paths properly.

Import Formatting (coalescing, ordering)

Export indexing

Tsunami can answer the question "what symbols are available for import?" for arbitrary typescript modules.

tsunami's People

Contributors

andymoreland avatar crazytoucan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

tsunami's Issues

Windows issues

tsunami-code 0.5.1
VScode 1.8.1
Windows 10

I have few problems which makes this plugin totally unusable on Windows:

  1. When importing symbol it rewrites all existing relative paths from ../../path/to/file to ..\..\path\to\file
  2. Importing some symbol from project is resulting to absolute path name instead of relative one

Completion popup is annyoing

Thanks for your plugin, with latest changes it works great on windows. I have few more issues now:

  1. Popup appears inside // comments
  2. Popup appears inside string literals "" or ''
  3. Popup appears inside destructuring expressions
  4. Property access expression. To reproduce this case hide TS completion popup (by moving cursor or pressing esc) then try to type again to complete statement. The popup will mix object properties with import completions.
  5. It should not suggest import completion if there is local variable with same name as exported element.
    May be there are few more contexts which are not making sense for completion import.

Also please make an option to disable import completion popup if these issues are hard to resolve (in this case it's better to wait for native TS auto-import implementation) .

VScode 1.8.1
Tsunami-vscode 0.5.2
Windows 10

Remove trailing /index from imports in moduleResolution: node

In my project, I have folders which have an index.ts which re-export all "public" symbols from that folder. I want my imports to come from that folder when applicable:

// module/index.ts
export interface Foo {
  bar: string;
}

// other/file.ts
// current import emit:
import { Foo } from "../module/index";
// expected import emit:
import { Foo } from "../module";

Support importing from one-level nested files

I have a package that exposes "namespaces" as one-level nested folders:

import { sym } from "mypackage";
import { AOptions } from "mypackage/modulea";
import { BOptions } from "mypackage/moduleb";

The second two imports above are not accessible from the root package, so Tsunami is unable to provide those import suggestions. In practice, they're implemented as root-level modulea.d.ts and moduleb.d.ts files.

In general, importing from not-package-root seems unideal. Perhaps this can go in a .tsunami file with hints for downstream projects, or a custom package.json key that Tsunami looks for?

vscode word completion adds the suffix

If I have something like: FooBar and put my cursor in between the B and the a to import FooBar, it will not remove the suffix properly and give me FooBarar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.