cytoscape.js icon indicating copy to clipboard operation
cytoscape.js copied to clipboard

TypeScript Definition for Cytoscape.js - It is being worked on now!

Open Cyberider opened this issue 9 years ago • 58 comments

For any of you that use or are thinking of using TypeScript to strengthen your JS coding there is s TS definition file project in the works.

Fabian-Schmidt (not me) is working on it at: https://github.com/Fabian-Schmidt/DefinitelyTyped/tree/master/cytoscape

I use TypeScript so I'm excited to be able to use cytoscape.js with TypeScript.

Rick

Cyberider avatar Jul 15 '15 15:07 Cyberider

I'm in the process of completing the work of Fabian-Schmidt.

I'll try to get everything upstream by the end of August, but the process of branching and merging is still new to me, so a delay is possible.

In the meantime, feel free to bug me for the latest version.

Regards, KB5000

Killbot5000 avatar Aug 24 '15 10:08 Killbot5000

If it helps:

In the discussion at: https://github.com/borisyankov/DefinitelyTyped/issues/4763 @maxkfranz offers a JSON spec of the API.

Between that and this project: https://github.com/horiuchi/dtsgenerator (TypeScript d.ts file generate from JSON Schema file)

Can you get the JSON spec to generate the d.ts definition file?

Cyberider avatar Aug 24 '15 15:08 Cyberider

Would you mind it I made this a typed-typings? https://github.com/typed-typings The advantages are described here... https://github.com/typings/typings/issues/322

phreed avatar Jun 23 '16 18:06 phreed

What is your typed-typings? A curated list of typed definitions?

Date: Thu, 23 Jun 2016 11:18:21 -0700 From: [email protected] To: [email protected] CC: [email protected]; [email protected] Subject: Re: [cytoscape/cytoscape.js] TypeScript Definition for Cytoscape.js - It is being worked on now! (#1012)

Would you mind it I made this a typed-typings?

https://github.com/typed-typings

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

Cyberider avatar Jun 23 '16 23:06 Cyberider

Whatever way Typescript definitions are published, it would be great if it could be automated on the Cytoscape.js side so that they're automatically kept up to date.

The docmaker.js file generates the HTML version of the docs from docmaker.json. It would be great if a tsdefmaker.js file could be made to output a .d.ts file. That way, everything could be automated with each release.

I'm not an expert an TS or TS defs, so it would be great if someone wanted to make a PR to do this.

Thanks

maxkfranz avatar Jun 24 '16 15:06 maxkfranz

Typed-Typings is similar to DefinitelyTyped except rather than having all the typing definition files in a single git repository they can be placed in a number of places. This also allows for a registry for different versions of the typings.

phreed avatar Jun 24 '16 17:06 phreed

okay, great. Sure, do what you got to do regarding cytoscape.js

Date: Fri, 24 Jun 2016 10:51:49 -0700 From: [email protected] To: [email protected] CC: [email protected]; [email protected] Subject: Re: [cytoscape/cytoscape.js] TypeScript Definition for Cytoscape.js - It is being worked on now! (#1012)

Typed-Typings is similar to DefinitelyTyped except rather than having all the typing definition files in a single git repository they can be placed in a number of places.

This also allows for a registry for different versions of the typings.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

Cyberider avatar Jun 24 '16 20:06 Cyberider

Okay sounds great but I have nothing to do with the cytoscape.js project! I have just expressed a desire to have TS defs for it. Rick

Date: Fri, 24 Jun 2016 08:10:20 -0700 From: [email protected] To: [email protected] CC: [email protected]; [email protected] Subject: Re: [cytoscape/cytoscape.js] TypeScript Definition for Cytoscape.js - It is being worked on now! (#1012)

Whatever way Typescript definitions are published, it would be great if it could be automated on the Cytoscape.js side so that they're automatically kept up to date.

The docmaker.js file generates the HTML version of the docs from docmaker.json. It would be great if docmaker.js could be refashioned into a tsdefmaker.js file to output a .d.ts file. That way, everything could be automated with each release.

I'm not an expert an TS or TS defs, so it would be great if someone wanted to make a PR to do this.

Thanks

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

Cyberider avatar Jun 24 '16 20:06 Cyberider

@phreed Are you still going to publish the typings?

fyi I'm successfully using them in my project, so far so good. Also I've made some significant improvements to them in the Styles/CSS part.

aindlq avatar Jul 12 '16 06:07 aindlq

Pretty soon. I do not need them quite yet for my project.

phreed avatar Jul 12 '16 15:07 phreed

@phreed Would you mind to share me your typed-typings? I am using cytoscape in an angular2 based projects.

Thanks

ktong avatar Jul 20 '16 19:07 ktong

Is there some news about cytoscape typing?

calebeaires avatar Dec 14 '16 15:12 calebeaires

I am continuing to work on them. You can use them in there current state from my github project. I add the following to my package.json file

"devDependencies": {
...
"@types/cytoscape": "github:phreed/ts-typings#cytoscape",
...
}

and then npm install @types/cytoscape or npm install --save-dev github:phreed/ts-typings#cytoscape

phreed avatar Dec 14 '16 17:12 phreed

@phreed very thanks for it!

calebeaires avatar Dec 15 '16 00:12 calebeaires

Wow, nice work @phreed!

Why not PR your work-in-progress to the Typescript Definitions repository DefinitelyTyped so others can help you polish it up?

Cyberider avatar Jan 19 '17 15:01 Cyberider

After https://github.com/cytoscape/cytoscape.js/issues/1012#issuecomment-228372289, why not do PR to this repo and publish them with npm? That would be even better than DefinitelyTyped

felixfbecker avatar Apr 24 '17 21:04 felixfbecker

Unless the process of creating ts defs can be completely automated through the existing docs build, then they won't be maintained in the official repo.

It would be great if someone would create a community npm package. Maybe @phreed would like to publish https://github.com/phreed/ts-typings/tree/cytoscape to npm, or maybe someone could create a new Github repo based on @phreed's work that could centralise community ts defs for Cytoscape.

maxkfranz avatar Apr 24 '17 21:04 maxkfranz

The .d.ts file would have to get updated on interface changes. The alternative would be to actually use TypeScript in this library, which would provide a variety of benefits (type safety => less bugs). In that case .d.ts files would get generated automatically.

The official distribution channel for community typings is through DefinitelyTyped (which gets published to @types on npm).

felixfbecker avatar Apr 24 '17 21:04 felixfbecker

@phreed's defs are for Typed-Typings rather than DefinitelyTyped.

I don't think it's likely that Cytoscape will be rewritten in TS. If the community wants to maintain a separate defs package to support TS users, that's great and we'd be glad to link to it!

maxkfranz avatar Apr 24 '17 21:04 maxkfranz

Afaik there are no typings yet for version 3.0.0? :(

Lambik avatar Apr 27 '17 09:04 Lambik

My plan in May is to update to @types and v3. Alternatively I am considering a Typescript wrapper.

On Thu, Apr 27, 2017, 04:04 Tom Muylle [email protected] wrote:

Afaik there are no typings yet for version 3.0.0? :(

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/cytoscape/cytoscape.js/issues/1012#issuecomment-297657057, or mute the thread https://github.com/notifications/unsubscribe-auth/AAM6vB0CbRCGo0KSF0D6n3camv2qAMhPks5r0FougaJpZM4FZKD3 .

phreed avatar Apr 27 '17 10:04 phreed

@phreed how's it going? Any update?

felixfbecker avatar May 13 '17 02:05 felixfbecker

This is where things are now https://github.com/phreed/ts-typings/tree/cytoscape I am working through the v3 api and should have something in @types within the next couple of days.

phreed avatar May 16 '17 22:05 phreed

I have a draft version for the v3 api. https://github.com/phreed/ts-typings/tree/cytoscape3

phreed avatar May 18 '17 20:05 phreed

I believe what you mention was a change from v2.x to v3.x I have been working on the typings for v3.x here... https://github.com/phreed/ts-typings/blob/cytoscape3/index.d.ts

I have completed a pass through the latest documentation... http://js.cytoscape.org/ ...but there are probably (certainly) errors. I am working though the tests based on the examples in that document now and would welcome any help. My plan is to release this work as part of DefinitelyTyped... https://github.com/phreed/DefinitelyTyped

Thanks

On Wed, May 17, 2017 at 11:15 AM WaynePlummer [email protected] wrote:

Should this:

interface Stylesheet {
    selector: string;
    css: Css.Node | Css.Edge;
}

actually read:

interface Stylesheet {
    selector: string;
    style: Css.Node | Css.Edge;
}

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/cytoscape/cytoscape.js/issues/1012#issuecomment-302141723, or mute the thread https://github.com/notifications/unsubscribe-auth/AAM6vASI5uXqxd9UEy1I8ay2VImpxUanks5r6x0ugaJpZM4FZKD3 .

phreed avatar May 18 '17 20:05 phreed

Should this:

 interface Stylesheet {
     selector: string;
     css: Css.Node | Css.Edge;
 }

actually read:

 interface Stylesheet {
     selector: string;
     style: Css.Node | Css.Edge;
 }

Either works in 2.x or 3.2, but style is preferred and css is now undocumented/deprecated.

maxkfranz avatar May 23 '17 15:05 maxkfranz

Yes, I deleted my original post once I realised that this must be what was going on... but thanks, @phreed and @maxkfranz both for confirming :)

WaynePlummer avatar May 23 '17 15:05 WaynePlummer

I've been looking into automation a bit more and it seems both TS and Flow have some options that might work to more directly integrate type definitions into Cytoscape:

I would lean towards using Flow, because it supports using JSDoc comments to generate the type definition files. It looks like JSDoc (now v3) is much better than it was when this lib was started, so maybe we could use it to generate the docs page as well.

maxkfranz avatar Jun 12 '17 01:06 maxkfranz

TypeScript is way more popular than Flow. Just look at questions asked on StackOverflow:

image

image

image

Flow definitions won't help TypeScript users of course, and TypeScript definitions don't help Flow users. At least in this thread, people asked for TypeScript definitions, not for Flow definitions ;)

felixfbecker avatar Jun 12 '17 07:06 felixfbecker

TS may be more popular than Flow, but JS is more popular than TS by a wide margin. Flow can be used without making semantic changes to the source, whereas it seems TS must make semantic changes to the source. This lib will not use TS or Flow to directly generate definition files unless the source is still just plain JS. It's important that anyone who knows JS can pick up the source in any editor, modify it easily, and run/test it natively on Node without any compilation step. 3.2/unstable uses Babel/ESNext for compatibility with old browsers, for example, but the source can be run directly in Node 6+.

This looks to be possible in Flow, but I don't see any official support notes in the TS docs or the TS issue tracker. If the goal of this ticket is to have productive autocomplete/intellisense in your tooling, it shouldn't matter whether it uses Flow or TS: Your editor can use plugins for both.

I don't have any inherent preference for either tool, but I think if the lib ever supports typings in the source it would have to use JSDoc comments. It's ubiquitous and non-intrusive. Ideally we could support both Flow and TS output via JSDoc comments.

If TS supports JSDoc, then that's great. But I'd like to see docs for it; I didn't find any. If TS doesn't support JSDoc, I think it would be worthwhile for you guys to advocate for it in the TS issue tracker. I think that's the only way there'd be direct support for TS in this lib.

maxkfranz avatar Jun 12 '17 18:06 maxkfranz