longshotlabs / simpl-schema

A JavaScript schema validation package that supports direct validation of MongoDB update modifier objects
https://www.npmjs.com/package/simpl-schema
MIT License
560 stars 115 forks source link

The `schema` function claims to return an unevaluated definition object, while it returns object with label. #480

Open Monteth opened 1 year ago

Monteth commented 1 year ago

Hello, recently using SimpleSchema, I ran into the following problem; I needed the original object properties passed to the schema constructor parameter. So, I tried to use .schema() on the SimpleSchema object, which should return a raw definition object as stated in the JSDocs, but it returns an object with an evaluated label value.

Docs: https://github.com/longshotlabs/simpl-schema/blob/43d8d3d04f2d61e34b8e746bf1461b2b2bc84f93/src/SimpleSchema.ts#L260-L270

Example

  const schema = new SimpleSchema({
    x: { type: Number },
  })
  schema.getDefinition('x') // returns { type: [ { type: [Function: Number] } ], optional: false, label: 'X' }
  // that's expected to return the evaluated `label` prop

  schema.schema('x') // returns { type: SimpleSchemaGroup { definitions: [ [Object] ] }, optional: false, label: 'X' }
  // return the evaluated 'label' here, even if it wasn't part of the original/raw schema definition.

I think the implementation or documentation of the .schema function should be adjusted, as the label is not a part of the raw definition object in this case, so it shouldn't be returned.

Anyway, is there any way to retrieve the raw object properties right now?

github-actions[bot] commented 1 year ago

Thank you for submitting an issue!

If this is a bug report, please be sure to include, at minimum, example code showing a small schema and any necessary calls with all their arguments, which will reproduce the issue. Even better, you can link to a saved online code editor example, where anyone can immediately run the code and see the issue.

If you are requesting a feature, include a code example of how you imagine it working if it were implemented.

If you need to edit your issue description, click the [...] and choose Edit.

Be patient. This is a free and freely licensed package that I maintain in my spare time. You may get a response in a day, but it could also take a month. If you benefit from this package and would like to see more of my time devoted to it, you can help by sponsoring.