Skip to content
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

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

Open
Monteth opened this issue Mar 20, 2023 · 1 comment

Comments

@Monteth
Copy link

Monteth commented Mar 20, 2023

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:

/**
* @param [key] One specific or generic key for which to get the schema.
* @returns The entire schema object or just the definition for one key.
*
* Note that this returns the raw, unevaluated definition object. Use `getDefinition`
* if you want the evaluated definition, where any properties that are functions
* have been run to produce a result.
*/
schema (): ResolvedSchemaDefinition
schema (key: string): StandardSchemaKeyDefinition | null
schema (key?: string): ResolvedSchemaDefinition | StandardSchemaKeyDefinition | null {

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
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant