graphieros / vue-data-ui

An open source user-empowering data visualization Vue 3 components library for eloquent data storytelling
https://vue-data-ui.graphieros.com/
MIT License
1.08k stars 50 forks source link

[PROPOSAL]: Re-write with native TypeScript support #89

Closed michealroberts closed 3 weeks ago

michealroberts commented 1 month ago

Firstly, looks like an awesome library. Some of the visualizations on the website are amazing. 🚀 Props to you @graphieros


However, the dist bundled types are awkward to work with. They seem to be correct, however, not being able to, e.g.,:

import { type Config, VueUiXy } from "vue-data-ui";

Is leading to some tense situations with the TS language tools and compiler, e.g.: I've copied the base graph example from the builder here: https://vue-data-ui.graphieros.com/chart-builder

However, the types are awkward to derive:

Screenshot 2024-10-23 at 17 07 21

So, it leaves me in a quandry. Use a second rate library with first class TypeScript support, e.g., @unovis, or request that we discuss migrating the codebase to use .ts rather than a declaration file which is awkward to maintain and prone to breaking between minor and patch versions.

I am more than happy to offer up my services to help do this, as well as reconfigure the build process to output .d.ts and .cjs/.mjs/.js files.

Let me know your thoughts ...

graphieros commented 1 month ago

Hey @michealroberts :)

Before I answer, have you tried importing the proper types for this use case ?

import { VueUiXy, type VueUiXyConfig, type VueUiXyDatasetItem } from "vue-data-ui" 
michealroberts commented 1 month ago

Yes, I have also tried the above ... but certain values from the documentation are missing:

Screenshot 2024-10-23 at 17 30 22
graphieros commented 1 month ago

Yeah, that attribute is missing from the type def. I would need to recheck the whole .d.ts file

But without this kind of mishap wouldn't it be sufficient ?

michealroberts commented 1 month ago

Yeh it's an awesome library ... I just think these mishaps happen because of the lack of explicit types close to the code ... the minute you have to maintain something external to where something is, the more problematic it will become ...

michealroberts commented 1 month ago

I'm more than happy to dedicate a day to this effort ...

graphieros commented 1 month ago

To check the .d.ts file, or to use lang="ts" on all components ? The latter is a massive undertaking

graphieros commented 1 month ago

@michealroberts listen I'm gonna start by cleaning up the .d.ts. There are quite a bunch of mishaps. Maybe we can talk about your proposal through a different medium ?

graphieros commented 1 month ago

@michealroberts v2.3.37 was published, with major type cleanup.