Comments (6)
I don't like to add a customFormat
method but following @jnv idea we could pass an array e.g. extraFormats
as option something like that:
FluentSchema({extraFormats: ['my-custom-format']}).asString().format('my-custom-format')
In the JSDoc of the format method, we could add the above example
Then in the format implementation, we can merge FORMATS
and extraFormats
to check that the format is supported.
Name wise I don't like too much extraFormats
or customFormats
, but I think it's misleading using formats
someone could think we are overriding the default FORMATS.
Test wise we have do double check that in a nested schema the extraFormats are propagated to the children. It should I did a refactoring in the 0.3.0 version so it should. π€
from fluent-json-schema.
Thanks @aboutlo, support for raw JSON injection is quite a good compromise.
from fluent-json-schema.
I need to dig into the specification but it doesn't seem a good idea to add a flavor. Maybe I'm too careful. Let me think more about that. @mcollina thoughts?
from fluent-json-schema.
IMHO itβs a bad idea, but a lot of people ask/need this. Providing some sort of escape hatch to add this would be good to accept as a PR.
from fluent-json-schema.
The spec says:
Implementations MAY add custom format attributes. Save for agreement between parties, schema authors SHALL NOT expect a peer implementation to support this keyword and/or custom format attributes.
In our case this is useful for reducing boilerplate in schemas within a shared domain. It is more readable to specify a semantic format rather than to repeat pattern
everywhere.
I will be happy to submit a MR if you specify how the API should look.
Beside an additional method, perhaps one could pass an array of custom supported formats to FluentSchema()
, though that could cause a lot of duplication or mistakes during authoring.
from fluent-json-schema.
Moved the discussion here: #55
from fluent-json-schema.
Related Issues (20)
- .id and .required not returning schema object HOT 1
- .raw({ nullable: true }) being inserted in the wrong position HOT 6
- Root level `required` creates invalid schema HOT 8
- Support "dependentrequired" and "dependentSchemas" HOT 5
- Support JSON Schema 2019-09 deprecated value HOT 4
- npm package does not match github repo HOT 3
- additionalProperties schemas causing unexpected behavior when passed to oneOf HOT 3
- How we can omit fields from request body that is not defined in the schema.
- .string() method validate all type values HOT 2
- 100 % code coverage HOT 1
- Set $id after clone HOT 7
- Conditional property is not allowed when using additionalProperties(false) HOT 3
- Unable to import in TS project with "moduleResolution": "NodeNext", HOT 12
- validate GET array of array param HOT 2
- Crashes on import HOT 2
- Nullable false not working HOT 1
- Object schema does not carry properties added by .raw() to a $ref HOT 3
- Object type ignored when nested properties use oneOf and raw HOT 11
- ReferenceError: Cannot access 'User' before initialization HOT 1
- Migrate test suite from `jest` to `node:test` HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fluent-json-schema.