loopbackio / loopbackio/loopback-next
Define a required parameter using a sugar API
- Dominant language
- TypeScript
- Stars
- 5.1k
- Forks
- 1.1k
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 27
Description
At the moment, it is not possible to use `@param` shortcuts like `@param.query.string` to define a required parameter.
One has to use `@param` directly (but don't have to specify the type since LB4 can infer the type from TypeScript metadata). For example:
```ts
@param({name: 'format', in: 'query', required: true}) format?: string
```
Ideally, I would like LB4 to provide the following syntax for annotating parameters as required:
```ts
@param.query.string('format', {required: true}) format?: string
```
## Acceptance criteria
- [ ] Modify all `@param.SOURCE.TYPE()` shortcuts (and possibly other similar shortucts) to accept a new optional argument of type `Partial` and use the provided properties to enhance (or amend) the spec generated by the decorator.
- [ ] Modify `@param.array()` in a similar way, the new optional argument will be the fourth arg.
- [ ] Modify `@param.query.object()` similarly, the new optional argument will be the third arg.
- [ ] Verify that the API documentation is able to pick up the changes
---
## 🎆 Hacktoberfest 2020
Greetings :wave: to all Hacktoberfest 2020 participants!
Here are few tips 👀 to make your start easier, see also #6456:
- Before you start working on this issue, please leave a comment to let others know.
- If you are new to GitHub pull requests, then you can learn about the process in [Submitting a pull request to LoopBack 4](https://loopback.io/doc/en/lb4/submitting_a_pr.html).
- If this is your first contribution to LoopBack, then please take a look at our [Developer guide](https://loopback.io/doc/en/lb4/code-contrib-lb4.html)
- Feel free to ask for help in `#loopback-contributors` channel, you can join our Slack workspace [here](https://join.slack.com/t/loopbackio/shared_invite/zt-8lbow73r-SKAKz61Vdao~_rGf91pcsw).
Contributor guide
Research direction
Start by locating the TypeScript implementations of the @param.SOURCE.TYPE(), @param.array(), and @param.query.object() shortcuts, then inspect how their generated ParameterObject specifications are exposed to API documentation. Update the shortcuts to accept the stated optional properties and verify that the documentation reflects them, including required parameters.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- openapi, typescript
- Domain
- api, documentation
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100