Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support JSON-schema as an input format #729

Open
ssalbdivad opened this issue Apr 24, 2023 · 7 comments · May be fixed by #1159
Open

Support JSON-schema as an input format #729

ssalbdivad opened this issue Apr 24, 2023 · 7 comments · May be fixed by #1159
Assignees

Comments

@ssalbdivad
Copy link
Member

This would be a large feature allowing JSON schemas as an alternative definition format, that would be statically validated and inferred, similarly to the primary TS-based syntax.

Some additional investigation is needed to determine what roadblocks we might hit (I'm not deeply familiar with JSON schema), but it seems to be structurally quite straightforward, so it should lend itself well to a parse-based approach like ArkType.

@transitive-bullshit
Copy link

I think this would be super useful for OpenAPI support, which is where OpenAI Plugins are headed.

For context, I'm considering between zod vs arktype for a framework I'm building, and I'm leaning towards zod because a lot more devs are using it today, but I could definitely see myself using arktype in the future – especially if it played nicely with JSON schema / OpenAPIs.

In my case, I'd ideally want arktype to convert from JSON schema and to JSON schema as an intermediate layer focused on TS DX.

Thanks for all your great OSS work btw! 🙏

@ssalbdivad
Copy link
Member Author

Our new TypeNode system could support something like this in a fairly straightforward way by implementing multiple input output formats.

Something most people probably don't know about ArkType is that it includes a full type system that can compare any two types for assignability, which means its internal representation of your types is richer than what can be represented using JSON schema. You'd lose certain optimizations like being able to validate unions based on a set of discriminants, but I agree it would still be incredibly valuable as an I/O format and a standard.

We'll do our best to prioritize this!

@thelinuxlich
Copy link

Actually what I would love is to convert Arktype to JSON-Schema so I can write Arktype contracts that go straight to swagger

@ssalbdivad
Copy link
Member Author

@thelinuxlich Definitely plan to support an output format as well, but haven't actually documented that yet. Would you be willing to create a new issue so we can track compiling to JSON schema?

@ssalbdivad
Copy link
Member Author

@ecyrbe mentioned he built a static JSON Schema parser for TypeMatic🔥

Would be great if we could integrate somehow so we don't duplicate work in the ecosystem! Let's make sure to investigate this before we start work on this.

@TizzySaurus
Copy link
Contributor

Definitely plan to support an output format as well, but haven't actually documented that yet. Would you be willing to create a new issue so we can track compiling to JSON schema?

Since it hasn't been noted here, ArkType to JSON Schema is being tracked in #776 for anyone interested.

@TizzySaurus
Copy link
Contributor

Forgot to mention this, but for tracking purposes my work on this is currently blocked by #1033.

@TizzySaurus TizzySaurus linked a pull request Oct 2, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In progress
Development

Successfully merging a pull request may close this issue.

4 participants