10.0.0-RC4
Pre-release
Pre-release
New changes in RC4
Warning
Please also read https://github.com/rebing/graphql-laravel/blob/master/UPGRADE.md#upgrading-from-9-to-10
Breaking changes
SelectFieldsextracted to separate package https://github.com/rebing/graphql-laravel-select-fields/Rebing\GraphQL\Support\SelectFieldsclass removed from coreRebing\GraphQL\Support\Contracts\WrapTypeinterface removed from coreClosuretype-hint inresolve()no longer auto-injects SelectFields factoryField::selectFieldClass()andField::instanciateSelectFields()removed'selectable' => falseremoved from pagination type metadata fields- Generated query/mutation stubs no longer include SelectFields boilerplate
- Install
rebing/graphql-laravel-select-fieldsto restore all functionality
Added
Rebing\GraphQL\Support\Contracts\ResolverParameterInjectorinterface for extensible resolver DIField::registerParameterInjector()/Field::clearParameterInjectors()for external DI hooks
Changes in RC3
Breaking changes
Privacy::validate()and closure signature changed #1251 / mfn
newmixed $rootfirst parameter, new optional?ResolveInfo $resolveInfofourth parameter,$queryContextnow typed asmixed- Remove
$getSelectFieldsparameter fromField::authorize()#1250 / mfn
it has been non-functional since half a decadeFixed
- Fix
SelectFieldscrashing when field types use callable #1252 / mfn- Fix APQ middleware race condition (TOCTOU) #1253 / mfn
- Fix
OperationParamsnot copyingoriginalInput/readOnly, causing TypeError #1254 / mfn- Fix APQ config not using
config()inside config file #1255 / mfn
Changes in RC2
Breaking changes
Privacy::validate()first parameter renamed from$queryArgsto$fieldArgs— it now receives the field's own arguments instead of root query argumentsSelectFieldsnow identifies wrapper types via theRebing\GraphQL\Support\Contracts\WrapTypemarker interface. Custom pagination types and wrap types used withSelectFieldsmust implement this interface. #1228 / mfnAdded
- Add tracing support with OpenTelemetry driver #1220 / mfn
Rebing\GraphQL\Support\Contracts\WrapTypemarker interface for wrapper types (pagination types and custom wrap types) #1228 / mfnFixed
- Narrow
GraphQL::type()PHPStan return type to(NullableType&Type)|NonNullso consumers can pass it toType::nonNull()without static analysis errors #1221 / mfn- Fix
SelectFieldsforcingselect *for Interface return types instead of selecting only the requested columns #683 / mfn- Fix
SelectFieldsnot calling customquerycallbacks on relation fields insideUnionTypemembers #900 / mfn- Fix cross-field validation rules (
prohibits,required_without,required_if, etc.) not working in nested InputTypes #930 / mfn- Fix
privacyattribute ignored on nested/sub-types by moving enforcement fromSelectFieldsto field resolvers inType::getFields()#1161 / mfn- Fix
SelectFieldsproducing emptySELECTclause for custom wrap types created viaGraphQL::wrapType()#1228 / mfn
Changes in RC1
Breaking changes
- Security hardening: safer defaults for production deployments #1210 / mfn
- Default HTTP method changed from
GET/POSTtoPOSTonly- Batching disabled by default (
batching.default→false)- Introspection disabled by default (
GRAPHQL_DISABLE_INTROSPECTIONenv var)- Default
query_max_depthset to13(was unlimited)- Default
query_max_complexityset to500(was unlimited)- Authorization now runs before validation in field resolver
- Authorization uses strict
=== truecomparisonAdded
- Added `max_batch_size` config option to limit batch query operations
Full Changelog: 10.0.0-RC3...10.0.0-RC4