This file contains all the notable changes done to the Ballerina GraphQL package through the releases.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- [#4848] Fix Resolvers not Able to Return Error Reference Types
- [#4859] Fix Service Crashing when Intersection Types are Used as Input Objects
- [#1586] Add Compile Time Schema Generation for Default Parameters
- [#3317] Add Support to Generate GraphQL Schema for Local Service Variable Declaration
- [#3621] Add Support to GraphQL Server Side Caching
- [#4634] Use Aliases in GraphQL Error Path
- [#4911] Make some of the Java classes proper utility classes
- [#2998] Add
@deprecated
Directive Support for Output Object Defined using Record Types - [#4586] Add Support for Printing GraphiQL Url to Stdout
- [#4569] Introduce DataLoader for Ballerina GraphQL
- [#4337] Add Support for Generating Subgraph SDL Schema at Compile Time
- [#4627] Fix Schema Generation Failure when Service has Type Alias
- [#4650] Fix Incorrect Schema Generation when an Annotation Present in a Record Field
- [#4660] Fix GraphiQL Client Endpoint for Secured Listeners
- [#4681] Removed Adding All Possible Federated Directives to SDL String in GraphQL Subgraph
- [#4685] Fix
ID
Scalar Type Treated as a Non Built-in Type - [#4724] Fix Allowing Empty Records as GraphQL Object Types
- [#4799] Fix Not Allowing
map<any>
as Return Type in ReferenceResolver
- [#4630] Deprecate executeWithType() method from graphql:Client
- [#4648] Removed Returning Deprecation Reasons for Non-Deprecated Fields
- [#4801] Make
_service
and_entities
Resources Isolated
- [#4176] Add Support for Input Constraint Validation
- [#4479] Introduce
graphql:__addError()
Function to Add an ErrorDetail into theerrors
Field of a GraphQL Response - [#4202] Add Support for GraphQL Scalar Type ID
- [#4489] Fix Removing Duplicate Fields with Different Arguments without Returning an Error
- [#4566] Fix Compiler Plugin Failure when Returning an Invalid Intersection Type
- [#3234] Add Support for Field Interceptors
- [#4254] Introduce GraphQL Interceptor Configuration
- [#4376] Introduce an API to get Subfields of a
graphql:Field
Object
- [#4364] Fix Compilation Error when GraphQL Package Import has a Prefix
- [#4379] Fix Schema Generation Failure when Import is Missing
- [#4447] Fix non-isolated Function Pointers in Function Calls Within Isolated Functions
- [#4255] Fix Interceptors Returning Invalid Response for Maps
- [#4490] Fix Interceptors Returning Invalid Responses when Alias Present
- [#4120] Add support to GraphQL design view by updating the schema
- [#3504] Add Support for Federation Subgraph
- [#4122] Add Parallel Execution for GraphQL Resolvers
- [#4172] Fix Compilation Failure when Type Alias is Used with Primitive Type
- [#4208] Fix Subscription Payload Returned with Invalid GraphQL Error Format
- [#4286] Fix Invalid Path Returning for Errors in Record Fields
- [#3885] Allow Adding a Single Service Level Interceptor
- [#4206] Skip Additional Validation for Unused Operations in the Document
- [#4237] Exit the Listener When Panic Occurred
- [#3569] Support Multiplexing with graphql-ws Subprotocol
- [#3942] Add Functionality to Send Ping Messages Periodically
- [#3943] Add Functionality to Check for Pong Messages Periodically
- [#3893] Add Support to Access GraphQL Field Information from Resolvers
- [#3865] Fix Incomplete Type Info Given in Compiler Errors Issued from GraphQL Compiler Plugin
- [#3721] Fix Passing Incorrect Values when a Resolver Method has an Enum as Input Parameter
- [#4038] Fix
__typename
Introspection not Working on Introspection Types - [#3337] Fix Allowing the use of non-distinct Service Objects as GraphQL Interfaces
- [#3430] Parallelise GraphQL Document Validation
- [#3870] Add Service Error Handling Section to the Spec
- [#3709] Add Input Default Values Section to the Spec
- [#3941] Remove Support for Non-Compliant Subscription Requests
- [#3977] Remove Limitation on GraphQL Context Object Parameter Order
- [#2891] Add Support for Disabling Introspection Queries
- [#3289] Support GraphQL interface with ballerina distinct object type
- [#3230] Add Service Interceptor Execution for Record Fields, Maps & Tables
- [#2913] Support Interfaces Implementing Interfaces
- [#3233] Add Service Level Interceptor Support for GraphQL Subscriptions
- [#3294] Fix GraphQL Dynamic Listener Is Not Working for Module Level Service Declaration
- [#3375] Fix Multiple Subscription Endpoints with the Same GraphQL Listener is Not Working
- [#3355] Fix Not Identifying Error Type as an Invalid Input Type
- [#3545] Fix Subscription Operations Allowed Before Server Has Acknowledged the Connection
- [#3556] Fix Returning Table from a Resolver Resulting in Runtime Error
- [#3565] Fix Service Incorrectly Closing Connection when a Stream Returns an Error
- [#3548] Fix Socket Connection Gets Closed when the Operation is Complete or If there is an Error
- [#3466] Fix Resolver Returning Null when a Record has a Service Object as its Field
- [#3579] Resolver Produces Null when Resolver Returns a Record Containing a Map of Service Objects as its Field
- [#3062] Fix Allow to Attach a Service with Subscription to a HTTP2 Based Listener
- [#3628] Fix Compilation Failure when Other Annotations are Present
- [#3646] Fix Returning Incorrect Validation Errors for Input Object Fields with Default Values
- [#3661] Fix Stream not Closing After the Completion of the Subscription Operation
- [#3062] Improve Compilation Error Messages To Be More Specific
- [#2848] All the Errors Are Reported for a Given Document in a Single Response
- [#3431] Introduce GraphQL Client Configuration
- [#3463] Updated API Docs to Reflect Slack to Discord Migration
- [#3791] Add Cause to GraphQL Payload Binding Error
- [#2898] Support Deprecation Support in GraphQL Services
- [#2001] Support GraphQL Interceptors for Query and Mutation operations
- [#3260] Log the Errors Returned from the Resolvers
- [#3069] Fix Enums with String Values Return String Value for Enum Name
- [#3067] Fix Single Quote Character Included in Field and Argument Names
- [#3068] Fix Anonymous Records Crashing the Service
- [#3115] Fix Not Initializing Context per Request in GraphQL Subscriptions
- [#3227] Fix Service Crashing when Map Field Does not Contain the Provided Key
- [#2897] Fix GraphiQL Schema not Generating for Default Values
- [#2897] Fix Invalid introspection response for fields with default value
- [#3173] Improve the Error Message for Using Anonymous Records as Types
- [#3288] Rename the GraphiQL config
enable
toenabled
- [#1936] Integrate GraphiQL Client into GraphQL Package
- [#2532] Introduce GraphQL Subscription Support
- [#2698] Support GraphQL Documentation
- [#2640] Fix inter-dependent fragments returning stack overflow error
- [#2649] Fix incorrectly invalidating
decimal
type inputs - [#2656] Fix compiler plugin crash when recursive record type definitions present
- [#2696] Fix not Allowing to Pass
null
as Variable Input Value - [#2733] Fix incorrectly validating listener init parameters when
check
expression is present - [#2746] Fix incorrectly allowing record types as union type members
- [#2076] Refactor GraphQL error messages
- [#2500] Fix returning NPE when multiple file uploading
- [#2518] Fix Intermittently Skipping Fields when Executing Resources
- [#2552] Fix returning error when querying a union type includes a field returns an object
- [#2571] Fix Service Crashing when Fields Return Nullable, Union Type Arrays
- [#2578] Fix Incorrect Response Returning for GraphQL Scalar Type Arrays
- [#2598] Fix Resolving Union Type Names Incorrectly when the Field is Nullable
- [#2437] Pass
http:RequestContext
object to thegraphql:Context
Init Function - [#2465] Disallow path parameters in GraphQL resource functions
- [#2480] Fix Input Object type variables return type cast error
- [#2481] Fix ignoring type validation of variables in a list
- [#2488] Validate the Record Filed Types when the Input Type is a Record
- [#1988] Fix Fields Missing from the Response when an Error Occurred
- [#2041] Fix Invalid Type Inferring for List Element Types
- [#2042] Fix NON_NULL Fields Returning null Value
- [#2018] Fix Ignoring Parser Invalidation of Variable Usages in Variable Definitions
- [#2356] Fix Service Detach Function Always Detaching the Latest Attached Service
- [#1634] Add Alias Support
- [#1361] Add Variable Support
- [#1492] Add Mutation Support
- [#1723] Add Type Name Introspection
- [#1704] Add Block String Support
- [#1365] Add Input Object Support
- [#1906] Add Context Support
- [#1622] Invalidate Returning any or anydata from GraphQL Resource Functions
- [#1688] Fix GraphQL Query Includes Unknown Fragments Returning an Error
- [#1728] Fix Introspection not Working for
__type
- [#1730] Fix Validating
__schema
Field Disregarding the Position - [#1818] Fix NON_NULL Type Inputs with Default Values Shown as Nullable
- [#1879] Fix Nullable Record Fields Identifying as NON_NULL Fields
- [#1845] Fix not Allowing to Pass
null
as Input Value - [#1803] Fix Not Allowing NON_NULL Type in Variable Definitions
- [#1911] Fix Variable Default Value With Invalid Type Retuning Error
- [#1912] Fix Nullable Variables Return Error when Value is not Present
- [#1912] GraphQL auth errors are not in proper format
- [#1953] Fix Allowing Record Fields to Have Invalid Types
- [#1983] Fix Not Allowing Int Value as Default Value in Float Type Variables
- [#1984] Fix Not Allowing to Pass Default Value to Enum Type Variables
- [#1990] Fix Accepting Enum Value as Default Value in String Type Variables
- [#1998] Fix Ignoring Parameters after Context Parameter
- [#2003] Fix Failing Input Object Validation with Null Values
- [#1190] Make GraphQL Resource Execution Non-Blocking
- [#1218] Set
BAD_REQUEST
status code for responses with document validation errors - [#1507] Add Path Entry to the Error Detail
- [#1447] Fix Returning Empty Values when Fragments Inside Fragments Querying Service Object
- [#1429] Fix Compiler Plugin Crashes when a Service has a Field
- [#1277] Fix Fields Missing when a Query Having Duplicate Fields
- [#1497] Fix GraphQL Parser not Parsing Float Values with Exp Values
- [#1489] Fix Input Value Coercion When Int Values Passed to Float Arguments
- [#1508] Fix Incorrectly Validating Invalid Operation Names when a Single Operation is Present in the Document
- [#1505] Fix Field Order Not Maintained in the GraphQL Response
- [#1526] Fix Parser Skipping Some Characters from Comments
- [#1576] Fix Incorrect Response Order in GraphQL Response
- [#1566] Make Locations Field an Optional Field in Error Details
- [#1608] Fix Empty Queries Validated at the Listener
- [#1307] Returning Union of Service Types from a Resource
- [#1244] Add Inline Fragment Support
- [#1336] Implement declarative auth design for GraphQL module
- [#1265] Support Optional Type Input Arguments
- [#1270] Add Compile Time Validation for Resource Function Names
- [#1329] Improve Introspection Validation and Execution
- [#1330] Added Missing Fields of GraphQL Schema-Related Record Types
- [#1339] Improve Input Parameter Validation Logic in Compiler Plugin
- [#1344] Improve Return Type Validation Logic in Compiler Plugin
- [#1348] Add Validation to Return Type Service Class Definitions in Compiler Plugin
- [#998] Use Included Record Parameters for Listener Config
- [#1350] Allow Optional Enums to be Resource Function Input Parameters
- [#1382] Decouple the Engine and the Listener
- [#1386] Make HttpService an Isolated Object
- [#1398] Rename the ServiceConfiguration Record to ServiceConfig
- [#1305] Allow Enum as an Input Parameter
- [#1250] Fix Hanging the Service when Returning Array
- [#1274] Fix Recursive Type Reference Causing Stack Overflow
- [#1252] Fix Incorrect Behavior in Validation EnumValues Field
- [#1269] Fix Validating Incorrect Arguments as Valid
- [#1268] Fix Incorrect Validation for Fields in Service Types
- [#1266] Fix Incorrect Validation for Input Parameters with Default Value
- [#1321] Fix Invalid Wrapping of List Types
- [#1332] Add Missing Arguments for Introspection Fields
- [#1331] Fix Showing Incorrect Location in Fragment Error Response
- [#1347] Fix Incorrect Behavior when Input Value is an Enum
- [#1312] Fix Query Depth Ignoring the Depth of Fragments in GraphQL Documents
- [#1368] Fix Crashing the Schema Generation when a Union Type not Having a Name
- [#1370] Fix Service Hanging When Returning an Enum Array
- [#1391] Fix Union of Service Types Returning all the Members
- [#1378] Fix Hierarchical Paths With Same Leaf Fields Returning Incorrect Values
- [#1407] Fix Returning Incorrect Type Names for Intersection Types
- [#1410] Fix Inline Fragments Returning Non-requested Fields
- [#1413] Fix Incorrectly validating Duplicate Operations
- [#1224] Fragment Support
- [#1000] Enum Support
- [#999] Map Support
- [#1091] Compiler plugin validations for GraphQL services
- [#1001] Support Union Types
- [#912] Support Optional Types in Resource Functions
- [#743] Improve Type Name Display in Error Messages