New `unaliasedPath` field in `ResolveInfo` is removed when constructing Lighthouse `ResolveInfo`
Describe the bug
Since version 15.12 of webonyx/graphql-php there has been a new property on the ResolveInfo class, unaliasedPath.
This field is not preserved when building the child ResolveInfo class used by Lighthouse.
Expected behavior/Solution
The unaliasedPath property can be passed up through the parent constructor.
I am happy to create a PR, but I just want some guidance on how it should be done regarding the versioning.
Option 1:
Pass the unaliasedPath constructor parameter to the parent without checking, and force people to use the correct version of webonyx/graphql:
Nuwave\Lighthouse\Execution\ResolveInfo.php
public function __construct(
BaseResolveInfo $baseResolveInfo,
public ArgumentSet $argumentSet,
) {
parent::__construct(
fieldDefinition: $baseResolveInfo->fieldDefinition,
fieldNodes: $baseResolveInfo->fieldNodes,
parentType: $baseResolveInfo->parentType,
path: $baseResolveInfo->path,
schema: $baseResolveInfo->schema,
fragments: $baseResolveInfo->fragments,
rootValue: $baseResolveInfo->rootValue,
operation: $baseResolveInfo->operation,
variableValues: $baseResolveInfo->variableValues,
+ unaliasedPath: $baseResolveInfo->unaliasedPath,
);
}
composer.json
"require": {
...
- "webonyx/graphql-php": "^15"
+ "webonyx/graphql-php": "^15.12.0"
},
Option 2
Check if the property is set so it works with older versions. Something like this:
Nuwave\Lighthouse\Execution\ResolveInfo.php
public function __construct(
BaseResolveInfo $baseResolveInfo,
public ArgumentSet $argumentSet,
) {
parent::__construct(
fieldDefinition: $baseResolveInfo->fieldDefinition,
fieldNodes: $baseResolveInfo->fieldNodes,
parentType: $baseResolveInfo->parentType,
path: $baseResolveInfo->path,
schema: $baseResolveInfo->schema,
fragments: $baseResolveInfo->fragments,
rootValue: $baseResolveInfo->rootValue,
operation: $baseResolveInfo->operation,
variableValues: $baseResolveInfo->variableValues,
+ ...(isset($baseResolveInfo->unaliasedPath)
+ ? ['unaliasedPath' => $baseResolveInfo->unaliasedPath]
+ : [])
);
}
I like option 2, since we can do that without a breaking change. Can you create a pull request for that? You can add a TODO to simplify and bump the version when we work towards a new major version.