-
Notifications
You must be signed in to change notification settings - Fork 1.5k
feat: implement standard schema spec #3080
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
base: master
Are you sure you want to change the base?
Conversation
Hi, thanks for that great PR, this seems properly implemented, I just have some doubts about async validation. It seems they advise against it, but only because of zod constraints if I got it right? I guess that'll lead to a few surprises for users. |
@Marsup from the type definition Would it make sense to check if there are external async and do an async validation only in that case? |
That's usually up to the schema creator to decide, but an error will be thrown if an async schema is called with the sync method. Since the advent of async/await, I've honestly been thinking of sunsetting the sync api, as it's now so easy to use promises, but it seems to go against their recommendations. I guess joi could have an api that surfaces externals if that helps. |
zod seems to support async validation with the standard schema: https://github.com/colinhacks/zod/pull/3850/files#diff-f025de6d5c2512a8f3d95968437eb61a2bb34c012ca364ee2ed65adcef828b86R53 We could always use the async validation, that would:
Or if we have an easy way to check if the schema contains an external with an async method we could call the async validation only in that case. What do you think? |
b0d69b9
to
19e7d0d
Compare
19e7d0d
to
a91efc3
Compare
@Marsup I updated the logic + added tests to support |
const settings = Common.defaults; | ||
|
||
const result = internals.entry(value, schema, settings); | ||
if (result.mainstay.externals.length) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure this is the best way to detect if there are externals 🤔
Implements standard-schema.
Fixes #3078