Automattic\WooCommerce\Vendor\GraphQL\Utils

BreakingChangesFinder::findInterfacesAddedToObjectTypespublic staticWC 1.0

Method of the class: BreakingChangesFinder{}

No Hooks.

Returns

Array. Change>

Usage

$result = BreakingChangesFinder::findInterfacesAddedToObjectTypes( $oldSchema, $newSchema ): array;
$oldSchema(Schema) (required)
.
$newSchema(Schema) (required)
.

BreakingChangesFinder::findInterfacesAddedToObjectTypes() code WC 10.9.4

public static function findInterfacesAddedToObjectTypes(
    Schema $oldSchema,
    Schema $newSchema
): array {
    $oldTypeMap = $oldSchema->getTypeMap();
    $newTypeMap = $newSchema->getTypeMap();
    $interfacesAddedToObjectTypes = [];

    foreach ($newTypeMap as $typeName => $newType) {
        $oldType = $oldTypeMap[$typeName] ?? null;
        if (
            ! $oldType instanceof ObjectType && ! $oldType instanceof InterfaceType
            || ! $newType instanceof ObjectType && ! $newType instanceof InterfaceType
        ) {
            continue;
        }

        $oldInterfaces = $oldType->getInterfaces();
        $newInterfaces = $newType->getInterfaces();
        foreach ($newInterfaces as $newInterface) {
            $interfaceWasAdded = true;
            foreach ($oldInterfaces as $oldInterface) {
                if ($oldInterface->name === $newInterface->name) {
                    $interfaceWasAdded = false;
                }
            }

            if ($interfaceWasAdded) {
                $interfacesAddedToObjectTypes[] = [
                    'type' => self::DANGEROUS_CHANGE_IMPLEMENTED_INTERFACE_ADDED,
                    'description' => "{$newInterface->name} added to interfaces implemented by {$typeName}.",
                ];
            }
        }
    }

    return $interfacesAddedToObjectTypes;
}