All Versions
51
Latest Version
Avg Release Cycle
78 days
Latest Release
774 days ago
Changelog History
Page 3
Changelog History
Page 3
-
v1.2.2 Changes
June 17, 2017- โ Added new middleware traits
MiddlewareFromScalar
andMiddlewareToScalar
. They provide a way to transform all scalar values from middleware (#249, #248). This have some advantages since middleware can be disable, chained together and has access to context information. Huge thanks to @BjRo and @Axxiss for helping with the feature design and implementation! - โ Added new middleware trait
MiddlewareExtension
(#256). It provides an easy way to add extensions from middleware. - ๐ Improved error message for
All fields within a Type should have unique names!
(#247). It now includes type and field information. - ๐ Fixed helper methods for operation lookup in
ast.Document
.
- โ Added new middleware traits
-
v1.2.1 Changes
May 18, 2017- ๐ Fixed
MeasureQueryDepth
reducer not keeping the largest depth found (#245, #246). Big thanks @Eluinhost for this contribution! - Easier way to create
Args
(#243). Big thanks @vishalkuo for this contribution! - More options to render a schema (#241). This improvement is especially useful for apps that use relay modern.
- ๐ Fixed
-
v1.2.0 Changes
April 29, 2017- ๐ Provide convenient functions for IDL-based schema materialization and validation (#240). For more info see the "Query Validation" section of documentation. Improvements include:
- Introduced Schema.buildStubFromAst that builds a schema with a stub Query type
- Introduced Schema.buildDefinitions that builds a list of definitions based on IDL AST (without a schema)
- Introduced Document.emptyStub as a most basic, but valid document stub
- Introduced alias query1 + query2 for document merge
- โ Add
Fetcher.deferSeqOptExplicit
or similar to explicitly getSeq[Option[T]]
in the result (#230) - ๐ Fixed scalar aliases when they are used with variables or schema is extended (#237)
- Preserve IDL directives at schema materialization time and use them in schema comparator (#236). This also adds
Vector[ast.Directive]
to all relevant schema definitions which may be extremely useful for future features and schema analysis - ๐ Improve syntax error reporting for
graphql
macro (#235) - ๐ Improve
Int
,BigInt
andLong
scalar value handling (#234) - ๐ Propagate updated value through middleware's
afterField
(#233). For more info see the "Middleware" section of documentation. - Forbid 'true', 'false' and 'null' as names for Enum value (#239)
- ๐ Provide convenient functions for IDL-based schema materialization and validation (#240). For more info see the "Query Validation" section of documentation. Improvements include:
-
v1.1.0 Changes
March 11, 2017- โ Added scalar type alias support (#225, #210). For more info see the "Scalar Type Alias" section of documentation.
- Greatly improved
AstVisitor
(#214). It now includes helper methods to traverse and transform an AST with type info and state. Sangria now integrates with macro-visit which was specifically written to traverse and transform ASTs which are similar to sangria's. For more info see the "AstVisitor" section of documentation. - โ Added
DocumentAnalyzer
andSchemaBasedDocumentAnalyzer
that contain a lot of helper methods to analyze query. This includes newly introduceddeprecatedUsages
andintrospectionUsages
(#211, #207, #212). For more info see brand new "Query And Schema Analysis" section of documentation. - โ Added
QueryReducer.hasIntrospection
andQueryReducer.rejectIntrospection
that rejects queries which contain introspection fields (#211). This may be useful for production environments where introspection can potentially be abused. - โ Added
Context.isIntrospection
andsangria.introspection.isIntrospection
helper methods to easily distinguish between introspection types and fields in middleware and query reducers. - โ Added
QueryReducer.measureDepth
andQueryReducer.rejectMaxDepth
rejects queries that are deeper than provided threshold (In contrast toExecutor.execute(maxQueryDepth = ...)
, query reducer does it at query analysis time before actual execution). - โ Added
derive*
macro settings (TransformFieldNames
andTransformInputFieldNames
) to transform field names. (#215) Big thanks to @ostronom for this contribution. - โ Added ability to represent complex relations in Fetch API (#220).
- โก๏ธ
ExecutionScheme.Extended
now returns updated user context for mutations (#209). - ๐ Improved handling of tailing comments when rendering query AST (#219).
- โ Added aliases for
graphql
/graphqlInput
macros:gql
/gqlInp
- Using
Vector
instead ofList
for all AST nodes now. This is a minor breaking change.
-
v1.0.0 Changes
January 16, 2017- โ Added
Action.sequence
combinator to compose a list ofLeafAction
s in a singleLeadAction
that can be returned from aresolve
function (#206) - ๐ Support of
Option[Id]
inFetcher.deferOpt
(#205) - Implicit conversion from
Future[Deferred[A]]
toAction
does not work (#201) - Disallow creation of object types with empty list of fields (#200)
- SimpleFetcherCache does not cache Relation (#194)
- Fetching Relation Typing (#193)
- Helper method
sangroia.schema.action
is replaced withAction.apply
andLeafAction.apply
- โ Added
-
v1.0.0-RC5 Changes
November 28, 2016- Uphold spec for non-validation names not beginning with
__
(spec-change) (#189) - Field cache does not consider output object polymorphism (#190)
- โ Added
QueryReducer.measureDepth
andQueryReducer.rejectMaxDepth
query reducers (#191).maxQueryDepth
argument was available for a long time onExecutor
, but in contrast to new query reducers, it measures depth along side of the execution. With query reducers it happens before query execution, thus allow to reject the query execution entirely. - FetcherDeferredOpt does not extends DeferredOpt (#188)
- Invalid operation name now be considered a client-side error and now implements
QueryAnalysisError
(#186, #187). Big thanks to @mattfenwick for working on this one!
- Uphold spec for non-validation names not beginning with
-
v1.0.0-RC4 Changes
November 20, 2016๐ Sangria v1.0.0-RC4 is fully compliant with "October 2016" version of the GraphQL specification.
- ๐ฅ In presence of explicit
null
value, the default will not be used (#185) (spec change). Breaking change! Arguments with default values are no longer treated as non-optional arguments. ThoughArgs
still preserves existing semantics (default is still applied, even in presence of explicitnull
). The same is true for input objects and optional input object fields with default values. - โ Added
Args.withArgs
andArgs.argDefinedInQuery
convenience methods. - Validation rule for unique directives per location (#179).
- Enforces input coercion rules (#177).
MiddlewareQueryContext
andExecutionResult
now contain information about validation and query reducers' execution time (validationTiming
,queryReducerTiming
)Middleware.fieldError
was not called in all possible exceptional situations (#184).- ๐ New
QueryParser.parseInputWithVariables
provides a way to parse input values with variables. - ๐ Various bugfixes in error handing of deferred values and null/undefined value handling.
- ๐ฅ In presence of explicit
-
v1.0.0-RC3 Changes
November 05, 2016- Cross compile to scala 2.12 and scala 2.11 (#182, #183)
- ๐ Schema comparator (#169, #165). It helps to compare different schemas or different versions of the same schema. It also provides an information whether particular change is a breaking change. This is a great example of GraphQL type system potential. For more info see the "Schema Comparator" section of documentation.
- ๐ Improve handling of
NaN
andinfinity
values (#167, #168)
- Cross compile to scala 2.12 and scala 2.11 (#182, #183)
-
v1.0.0-RC2 Changes
October 10, 2016- Capture original exceptions only if necessary (based on the
ExecutionScheme
) - ๐ Fixed issue with duplicate errors appearing during sequential query execution (mutations)
- Capture original exceptions only if necessary (based on the
-
v1.0.0-RC1 Changes
October 08, 2016Towards 1.0!
- ๐ Stream-based subscriptions (#98, #166). For more info see the "Stream-based Subscriptions" section of documentation.
- ๐ High-level Fetch API for deferred value resolution (#164). For more info see the "High-level Fetch API" section of documentation.
- ๐ Huge improvements in deferred value resolution (#161). Here is just an example of how batching algorithm is improved in comparison to previous version. For more info see the "Deferred Value Resolution" section of documentation. It got a lot of new content.
- ๐ Introduced
ExecutionScheme
. It allows to change the result type of an exaction. So now you can get some meta-information about a query execution itself, and not only theFuture
of marshaled result. For more info see the "Alternative Execution Scheme" section of documentation. Minor breaking changes:
DeferredResolver
andDeferred
are moved tosangria.execution.deferred
package.DeferredResolver.resolve
method signature is changes a bit (2 new arguments were added). Here is the new signature:
def resolve(deferred: Vector[Deferred[Any]], ctx: Ctx, queryState: Any)(implicit ec: ExecutionContext): Vector[Future[Any]]