diff --git a/packages/upgrade/src/Forms/FixGetSetClosureTypesRector.php b/packages/upgrade/src/Rectors/FixGetSetClosureTypesRector.php similarity index 97% rename from packages/upgrade/src/Forms/FixGetSetClosureTypesRector.php rename to packages/upgrade/src/Rectors/FixGetSetClosureTypesRector.php index 76ad8e9e40..cf0c00172a 100644 --- a/packages/upgrade/src/Forms/FixGetSetClosureTypesRector.php +++ b/packages/upgrade/src/Rectors/FixGetSetClosureTypesRector.php @@ -1,6 +1,6 @@ + */ + public function getChanges(): array + { + return [ + 'Filament\\PluginServiceProvider' => 'Spatie\\LaravelPackageTools\\PackageServiceProvider', + 'Filament\\Resources\\RelationManagers\\BelongsToManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager', + 'Filament\\Resources\\RelationManagers\\HasManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager', + 'Filament\\Resources\\RelationManagers\\HasManyThroughRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager', + 'Filament\\Resources\\RelationManagers\\MorphManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager', + 'Filament\\Resources\\RelationManagers\\MorphToManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager', + ]; + } + + public function getNodeTypes(): array + { + return [Class_::class]; + } + + public function refactor(Node $node): ?Node + { + /** @var Class_ $node */ + $changes = $this->getChanges(); + + foreach ($changes as $parentClassToRemove => $parentClassToAdd) { + if (! $this->isName($node->extends, $parentClassToRemove)) { + continue; + } + + $node->extends = new Name("\\{$parentClassToAdd}"); + + return $node; + } + + return null; + } + + public function getRuleDefinition(): RuleDefinition + { + return new RuleDefinition( + 'Replace the parent class with another', + [ + new CodeSample( + 'MembersRelationManager extends BelongsToManyRelationManager', + 'MembersRelationManager extends RelationManager', + ), + ] + ); + } +} diff --git a/packages/upgrade/src/SecondaryToGrayColorRector.php b/packages/upgrade/src/Rectors/SecondaryToGrayColorRector.php similarity index 97% rename from packages/upgrade/src/SecondaryToGrayColorRector.php rename to packages/upgrade/src/Rectors/SecondaryToGrayColorRector.php index 93ba69efe9..9ef749dbf1 100644 --- a/packages/upgrade/src/SecondaryToGrayColorRector.php +++ b/packages/upgrade/src/Rectors/SecondaryToGrayColorRector.php @@ -1,6 +1,6 @@ rules([ - FixGetSetClosureTypesRector::class, - MoveImportedClassesRector::class, - SecondaryToGrayColorRector::class, - SimpleMethodChangesRector::class, - SimplePropertyChangesRector::class, + Rectors\FixGetSetClosureTypesRector::class, + Rectors\MoveImportedClassesRector::class, + Rectors\ReplaceParentClassRector::class, + Rectors\SecondaryToGrayColorRector::class, + Rectors\SimpleMethodChangesRector::class, + Rectors\SimplePropertyChangesRector::class, + ]); + + $rectorConfig->ruleWithConfiguration(RemoveTraitUseRector::class, [ + 'Filament\\Http\\Livewire\\Concerns\\CanNotify', + 'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanCreateRecords', + 'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanDeleteRecords', + 'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanEditRecords', + 'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanViewRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanAssociateRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanAttachRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanCreateRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanDeleteRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanDetachRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanDisassociateRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanEditRecords', + 'Filament\\Resources\\RelationManagers\\Concerns\\CanViewRecords', ]); $rectorConfig->ruleWithConfiguration(