Comments (3)
necromancer_mode_on
Can we revive this discussion?
allowing a field to be tersely deprecated and avoiding less good cases like using empty strings to indicate deprecation or something along those lines
Since the current @deprecated
directive definition has a default value, feels like terseness is not a problem anymore? One can always deprecate using just the directive:
type Query {
foo: Int @deprecated
}
We could make reason
non-nullable in SDL:
directive @deprecated(
# note how reason is non-nullable here
reason: String! = "No longer supported"
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | ENUM_VALUE
This will also forbid such possibly confusing declarations:
type Query {
# is this deprecated? If yes, why? how is it different than the default "No longer supported"?
foo: Int @deprecated(reason: null)
}
Introspection would keep nullable deprecationReason
:
type __Field {
name: String!
description: String
args(includeDeprecated: Boolean = false): [__InputValue!]!
type: __Type!
# remove (or deprecate 😄 `isDeprecated`)
# isDeprecated: Boolean!
# keep the current behaviour for deprecationReason
"the deprecation reason if the field is deprecated or null if the field is not deprecated"
deprecationReason: String
}
Looks like graphql-js is also taking that route and deprecating isDeprecated
internally: graphql/graphql-js#2700
Thoughts?
from graphql-spec.
The current reason for this is that deprecationReason
is optional, regardless of if a field is deprecated or not, allowing a field to be tersely deprecated and avoiding less good cases like using empty strings to indicate deprecation or something along those lines.
I also felt like it was more clear to have the isDeprecated
field, otherwise it seemed easy to misread the list of fields and assume deprecation was always possible.
If we decide to change this though, I would expect that decision to also include making description
non-nullable. It's non-nullable for the same reason this semi-redundancy exists.
from graphql-spec.
Closing this aging issue.
from graphql-spec.
Related Issues (20)
- GraphQL Mutation how to make fields optional to update fields only by selection and generate schema HOT 1
- [RFC] Non-existent request field operator HOT 8
- (Graphql-schema) Cannot query field "closeDiscussion" on type "Mutation" HOT 1
- GraphQL spec is contradictory: can selection sets be empty or not? HOT 1
- Allow to return Input Object types HOT 1
- Formalize Global Object Identification.
- Grammar should have single root node HOT 2
- [Feature request]: Support non-list variables for list arguments HOT 9
- Redundant field aliases identical to field names
- Document Level Directives HOT 7
- Coercing Variable Values when hasValue is not true and defaultValue does NOT exist HOT 7
- Strawman: mention of non-self-describing responses
- why not allow directive on field argument ? HOT 2
- On specifying ordered vs unordered enum definitions HOT 5
- Casting Error in GraphQL C# Library HOT 2
- Is there a reason graphql floats do not support Infinity and NaN? HOT 3
- Composite types is not clearly defined HOT 1
- Unclear spec for array with fragments HOT 1
- What must be the result of executing only one fragment on a list of union or interface type? HOT 3
- Interface conditions fragments may not be used across spreads, discouraging reusability HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql-spec.