microsoft / microsoft/typespec
Allow augment decorators to target less specifically
- Dominant language
- Java
- Stars
- 5.9k
- Forks
- 394
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 104
Description
### Clear and concise description of the problem
I have encountered a scenario where I would like to target an augment decorator to all model properties within a namespace or model.
I would like to have multiple entry points that include modifications across a namespace without needing to maintain model property lists in addition to the models themselves.
Presently, if I have a model with a few fields:
```
model foo {
@visibility(Lifecycle.Read)
field1: string
@visibility(Lifecycle.Read)
field2: string
@visibility(Lifecycle.Read)
field2: string
}
```
and I want to have a second entrypoint where the visibility decorator needs to be expanded, I am required to specifically target each field.
```
@@visibility(foo.field1, Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
@@visibility(foo.field2, Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
@@visibility(foo.field3, Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
```
When this becomes a larger namespace, the list of augment decorators becomes a maintenance challenge in conjunction with maintenance of the models.
The suggestion would be to allow for either namespace, model, or wildcard pattern matching for fields to apply the decorator. E.g., any of the following as thought starters:
```
@@visibility(, Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
@@visibility(, Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
@@visibility("/* regex pattern */", Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
```
### Checklist
- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Read the [docs](https://typespec.io/docs/).
- [x] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
Contributor guide
Assessment
This issue has not been assessed yet.