Skip to content

New unaliasedPath field in ResolveInfo is removed when constructing Lighthouse ResolveInfo #2650

@ChrisExP

Description

@ChrisExP

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]
+                : [])
         );
     }

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementA feature or improvement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions