-
-
Notifications
You must be signed in to change notification settings - Fork 81
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
Add Zod and Effect Schema support for better DX #136
Comments
Did you see this? https://tinybase.org/guides/schemas-and-persistence/schema-based-typing/ When you use the 'with-schemas' versions of the definitions, you get inferred APIs based on the JSON. Let me know if that is what you had in mind or how it could be improved! |
Ok, I'll try that one! Thanks |
Assuming that's an OK approach, can I close out this issue? |
Ok! It worked :) However I was thinking of making the schemas more "modern" and "common" along most used practices around the corner. There are multiple ways to write a schema in TS, and it may be a good idea to support multiple ways since it is common for the developer to prefer the syntax that one is already using in the project. For instance, Drizzle supports three different schema tastes: So it might make sense to support all, or some of them. Also, considering that TinyBase schema types are very simple, perhaps doing the schema typing as Typia or Deepkit might work well enough. So instead of having this: const tablesSchema = {
pets: {
species: {type: 'string'}
sold: {type: 'boolean'}
total: {type: 'number'}
},
} as const; We could just have: const tablesSchema = {
pets: {
species: string
sold: boolean
total: number
},
} as const; |
Providing |
My new stake is: Add schema adapters for the following libraries
Social proof: Since Effect Schema has became the defacto standard for the data layer in LoFi libraries, I believe it to be a no-brainer to add support for it. Star HistoryEffect 3.0 GA has just been released so its getting traction. |
OK, I think we could have a go at this, though of course it will be a limited dialect of what most of these other schemas are capable of. One question is whether this should be a dev-/build-time process (to create a TinyBase schema from these others) or something that can just be handled at runtime. I need to get familiar with all of these and what common pattern might work. (Hence I'm going to say it'll be after 5.0...!) |
Looking at how other libraries solve the problem might be a hint: https://github.com/drizzle-team/drizzle-orm/tree/main/drizzle-zod If performance becomes an issue, a dev/build time process can be added later. |
I am going to focus on schemas in 5.1 and 5.2. Hang in there! |
+1 for typebox support. You can see some differences it has with zod in the comments linked here - colinhacks/zod#2482 A typebox integration would also be preferable for anyone building servers with Fastify where typebox is the blessed schema provider. |
Is your feature request related to a problem? Please describe.
The whole thing of defining a schema in a JSON file its a bit outdated compared to modern solutions.
Describe the solution you'd like
We are talking about something along the lines of [Kubb's Infer], Typia, Zod and Effect Schema.
This would definitely improve the DX as a whole for TypeScript developers.
The text was updated successfully, but these errors were encountered: