-
-
Notifications
You must be signed in to change notification settings - Fork 594
Description
Description
Since the spec discourages the use of example in favor of examples on schema objects, it would be nice if we didn't lose the @example JSDoc when the user follows that recommendation.
Proposal
I suggest one of two alternatives:
Approach 1 - use the first example
Since one might reasonably expect that examples will often only have one element, we can check if schemaObject.examples is an array (and not a Map of Example Objects, as it would be for other components) in src/transform/components-object.ts and copy the first element of it to example, if no example property is already present. This will preserve the current functionality as folks migrate from the use of example to examples without interfering with any other uses of examples.
Note that you can technically do this with the transform function, but it relies on modifying the schemaObject that is passed into the transform function by reference, which one has no reason to expect will continue to work. Personally, I'd consider that just a workaround.
Approach 2 - multiple @example tags
Since JSDoc allows multiple @example tags, we can check if schemaObject.examples is an array in src/lib/ts.ts, and if it is, output each element in the array as a separate @example tag. Since other components of the OpenAPI definition use a Map of Example Objects rather than an array, we should only affect JSON Schema output, and will include all examples, which might be more in line with what a user would expect.
Extra
- I’m willing to open a PR (see CONTRIBUTING.md)