diff --git a/.changeset/twenty-spies-eat.md b/.changeset/twenty-spies-eat.md new file mode 100644 index 0000000..f9e0588 --- /dev/null +++ b/.changeset/twenty-spies-eat.md @@ -0,0 +1,5 @@ +--- +"@cambis/silverstan": patch +--- + +Remove spread operators from DisallowMethodCallOnUnsafeDataObjectRule. diff --git a/.husky/pre-commit b/.husky/pre-commit index d24fdfc..1525982 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,2 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" - -npx lint-staged diff --git a/composer.json b/composer.json index 2ad9c84..e6fcee0 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ "phpstan/phpstan-phpunit": "^2.0", "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.6", - "rector/rector": "2.2.4", + "rector/rector": "^2.3", "shipmonk/composer-dependency-analyser": "^1.7", "silverstripe/assets": "^2.3", "silverstripe/cms": "^5.2", diff --git a/ecs.php b/ecs.php index 20c8b04..126c692 100644 --- a/ecs.php +++ b/ecs.php @@ -2,6 +2,7 @@ declare(strict_types=1); +use PhpCsFixer\Fixer\Import\OrderedImportsFixer; use PhpCsFixer\Fixer\Operator\NewWithParenthesesFixer; use PhpCsFixer\Fixer\Operator\NotOperatorWithSuccessorSpaceFixer; use SlevomatCodingStandard\Sniffs\Namespaces\ReferenceUsedNamesOnlySniff; @@ -26,6 +27,16 @@ 'allowFallbackGlobalConstants' => false, ] ) + ->withConfiguredRule( + OrderedImportsFixer::class, + [ + 'imports_order' => [ + 'class', + 'function', + 'const', + ], + ] + ) ->withPreparedSets( common: true, psr12: true, diff --git a/lint-staged.config.js b/lint-staged.config.js index f1e4c2c..fa720f6 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,11 +1,12 @@ /** @type {import('lint-staged').Config} */ module.exports = { - '*.php': [ - 'php vendor/bin/parallel-lint --colors --blame', - 'php vendor/bin/rector process --ansi', - 'php vendor/bin/ecs check --fix --ansi', + '*.php': (filenames) => [ + `php vendor/bin/parallel-lint src tests --colors --blame ${filenames.join(' ')}`, + `php vendor/bin/rector process --dry-run --ansi ${filenames.join(' ')}`, + `php vendor/bin/ecs check --fix --ansi ${filenames.join(' ')}`, + 'php vendor/bin/phpstan analyse --ansi --memory-limit=-1', ], '!(e2e/*/composer.json)composer.json': [ - 'composer normalize --ansi' + 'composer normalize --ansi', ], }; diff --git a/src/Rule/MethodCall/DisallowMethodCallOnUnsafeDataObjectRule.php b/src/Rule/MethodCall/DisallowMethodCallOnUnsafeDataObjectRule.php index 5ffe03a..560a907 100644 --- a/src/Rule/MethodCall/DisallowMethodCallOnUnsafeDataObjectRule.php +++ b/src/Rule/MethodCall/DisallowMethodCallOnUnsafeDataObjectRule.php @@ -6,9 +6,6 @@ use Cambis\Silverstan\Normaliser\Normaliser; use Cambis\Silverstan\Type\ObjectType\UnsafeObjectType; -use Cambis\Silverstan\Type\TypeSpecifyingExtension\DataObjectDeleteTypeSpecifyingExtension; -use Cambis\Silverstan\Type\TypeSpecifyingExtension\DataObjectExistsTypeSpecifyingExtension; -use Cambis\Silverstan\Type\TypeSpecifyingExtension\DataObjectWriteTypeSpecifyingExtension; use Cambis\Silverstan\ValueObject\ClassAllowedMethodCall; use Override; use PhpParser\Node; @@ -35,9 +32,12 @@ * @var string[] */ private const DEFAULT_ALLOWED_METHODS_CALLS = [ - ...DataObjectDeleteTypeSpecifyingExtension::SUPPORTED_METHODS, - ...DataObjectExistsTypeSpecifyingExtension::SUPPORTED_METHODS, - ...DataObjectWriteTypeSpecifyingExtension::SUPPORTED_METHODS, + 'delete', + 'exists', + 'isInDB', + 'publishRecursive', + 'publishSingle', + 'write', ]; /** diff --git a/src/Type/TypeSpecifyingExtension/DataObjectDeleteTypeSpecifyingExtension.php b/src/Type/TypeSpecifyingExtension/DataObjectDeleteTypeSpecifyingExtension.php index b48aecf..a0b6a9d 100644 --- a/src/Type/TypeSpecifyingExtension/DataObjectDeleteTypeSpecifyingExtension.php +++ b/src/Type/TypeSpecifyingExtension/DataObjectDeleteTypeSpecifyingExtension.php @@ -25,6 +25,7 @@ final class DataObjectDeleteTypeSpecifyingExtension implements MethodTypeSpecify { /** * @var string[] + * @api */ public const SUPPORTED_METHODS = [ 'delete', diff --git a/src/Type/TypeSpecifyingExtension/DataObjectExistsTypeSpecifyingExtension.php b/src/Type/TypeSpecifyingExtension/DataObjectExistsTypeSpecifyingExtension.php index 1238114..ce6f678 100644 --- a/src/Type/TypeSpecifyingExtension/DataObjectExistsTypeSpecifyingExtension.php +++ b/src/Type/TypeSpecifyingExtension/DataObjectExistsTypeSpecifyingExtension.php @@ -25,6 +25,7 @@ final class DataObjectExistsTypeSpecifyingExtension implements MethodTypeSpecify { /** * @var string[] + * @api */ public const SUPPORTED_METHODS = [ 'exists', diff --git a/src/Type/TypeSpecifyingExtension/DataObjectWriteTypeSpecifyingExtension.php b/src/Type/TypeSpecifyingExtension/DataObjectWriteTypeSpecifyingExtension.php index 1836882..9b8c992 100644 --- a/src/Type/TypeSpecifyingExtension/DataObjectWriteTypeSpecifyingExtension.php +++ b/src/Type/TypeSpecifyingExtension/DataObjectWriteTypeSpecifyingExtension.php @@ -25,6 +25,7 @@ final class DataObjectWriteTypeSpecifyingExtension implements MethodTypeSpecifyi { /** * @var string[] + * @api */ public const SUPPORTED_METHODS = [ 'publishRecursive', diff --git a/src/TypeResolver/ValueObject/ResolvedTypes.php b/src/TypeResolver/ValueObject/ResolvedTypes.php deleted file mode 100644 index f4a801d..0000000 --- a/src/TypeResolver/ValueObject/ResolvedTypes.php +++ /dev/null @@ -1,16 +0,0 @@ -