Giter VIP home page Giter VIP logo

Comments (4)

mcollina avatar mcollina commented on August 20, 2024

Would you like to send a Pull Request to address this issue? Remember to add unit tests.

from fluent-json-schema.

thezzisu avatar thezzisu commented on August 20, 2024

I've seen this in fluent-schema's code:
https://github.com/fastify/fluent-schema/blob/b5a5c80334529a2febcc4b3a54b35f5680752e3a/src/BaseSchema.js#L180

/**
   * Required has to be chained to a property:
   * Examples:
   * - S.prop('prop').required()
   * - S.prop('prop', S.number()).required()
   * - S.required(['foo', 'bar'])

But in the README.md it's used like this:

.prop(
    'email',
    S.string()
      .format(S.FORMATS.EMAIL)
      .required() // <- It's not chained to `prop` call !
  )

I'm wondering which one is correct?

from fluent-json-schema.

aboutlo avatar aboutlo commented on August 20, 2024

The correct schema is:

    S.object()
      .prop(
        'perm',
        S.object()
          .required()
          .prop('admin', S.boolean())
          .prop('comment', S.boolean())
      )
      .valueOf()

If you put required() after a property definition it's attached to the last property declared ( comment in this case )

The README is correct because in the case of the String.format('EMAIL').required() there isn't a property so we attach required to the root element.

Given that I agree the README is a bit misleading perhaps we could put String.required().format('EMAIL') to be more consistent. Also, we could add in the main example a required object so we can show the correct syntax.

from fluent-json-schema.

thezzisu avatar thezzisu commented on August 20, 2024

Thanks very much! I'll close this issue now.

from fluent-json-schema.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.