Open Xe opened 1 year ago
I think we definitely need a way for applications to define types and easily make those types available.
I've been debating two options:
For case 2, you could imagine creating your types under a github repo, let's say org/types-repo
And after you've published that repo you can now write the following config:
import { Config } from "github.com/org/types-repo/config.ts";
export default {
foo: "bar",
} satisfies Config;
Would approach 2 also address your use case? Or are there reasons why you would prefer one approach vs the other?
I'd prefer embedding things directly into the application because adding a URL means that trying to validate configs in an environment like Nix builds (where there is no network stack) is nontrivial/annoying.
I've been playing with TySON and I've been liking where this can go. I would like to be able to have my application ship a "config drive" or something in the form of an io.FS/embed.FS that's pre-baked with the type definitions. This would let me ship the types by default so I can write TySON configs like this:
What do you think about this? Shipping the types to editors would probably be a little bit hard, but I think it could be doable with some legwork.