From 691c2c816ea574eab667268eca85a1d9046ea599 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Sun, 25 May 2025 14:53:53 -0500 Subject: [PATCH] chore(deps-dev): remove Psalm --- .gitattributes | 2 - .github/workflows/continuous-integration.yml | 3 - CONTRIBUTING.md | 5 +- README.md | 1 - composer.json | 10 +- composer.lock | 1051 +---------------- psalm-baseline.xml | 175 --- psalm.xml | 22 - src/BinaryUtils.php | 4 - src/Builder/BuilderCollection.php | 10 +- src/Builder/DefaultUuidBuilder.php | 2 +- src/Builder/DegradedUuidBuilder.php | 4 +- src/Builder/FallbackBuilder.php | 4 +- src/Builder/UuidBuilderInterface.php | 4 +- src/Codec/CodecInterface.php | 10 +- src/Codec/GuidStringCodec.php | 2 +- src/Codec/OrderedTimeCodec.php | 9 +- src/Codec/StringCodec.php | 6 +- src/Codec/TimestampFirstCombCodec.php | 10 +- src/Codec/TimestampLastCombCodec.php | 2 +- src/Converter/Number/BigNumberConverter.php | 10 +- .../Number/DegradedNumberConverter.php | 2 +- .../Number/GenericNumberConverter.php | 16 +- src/Converter/NumberConverterInterface.php | 18 +- src/Converter/Time/BigNumberTimeConverter.php | 2 +- src/Converter/Time/DegradedTimeConverter.php | 2 +- src/Converter/Time/GenericTimeConverter.php | 2 +- src/Converter/Time/PhpTimeConverter.php | 3 +- src/Converter/Time/UnixTimeConverter.php | 2 +- src/Converter/TimeConverterInterface.php | 6 +- src/DegradedUuid.php | 2 +- src/DeprecatedUuidInterface.php | 2 +- src/DeprecatedUuidMethodsTrait.php | 2 +- src/FeatureSet.php | 1 - src/Fields/FieldsInterface.php | 4 +- src/Fields/SerializableFieldsTrait.php | 6 +- src/Generator/DefaultNameGenerator.php | 1 - src/Generator/NameGeneratorInterface.php | 2 - src/Generator/PeclUuidNameGenerator.php | 1 - src/Guid/Fields.php | 2 +- src/Guid/Guid.php | 2 +- src/Guid/GuidBuilder.php | 4 +- src/Lazy/LazyUuidFromString.php | 186 +-- src/Math/BrickMathCalculator.php | 2 +- src/Math/CalculatorInterface.php | 2 +- src/Nonstandard/Fields.php | 2 +- src/Nonstandard/Uuid.php | 2 +- src/Nonstandard/UuidBuilder.php | 4 +- src/Nonstandard/UuidV6.php | 2 +- .../Dce/SystemDceSecurityProvider.php | 5 +- src/Provider/Node/NodeProviderCollection.php | 3 - src/Provider/Node/SystemNodeProvider.php | 10 +- src/Rfc4122/Fields.php | 4 +- src/Rfc4122/FieldsInterface.php | 2 +- src/Rfc4122/MaxTrait.php | 2 +- src/Rfc4122/MaxUuid.php | 2 +- src/Rfc4122/NilTrait.php | 2 +- src/Rfc4122/NilUuid.php | 2 +- src/Rfc4122/TimeTrait.php | 2 +- src/Rfc4122/UuidBuilder.php | 4 +- src/Rfc4122/UuidInterface.php | 2 +- src/Rfc4122/UuidV1.php | 2 +- src/Rfc4122/UuidV2.php | 2 +- src/Rfc4122/UuidV3.php | 4 +- src/Rfc4122/UuidV4.php | 2 +- src/Rfc4122/UuidV5.php | 4 +- src/Rfc4122/UuidV6.php | 2 +- src/Rfc4122/UuidV7.php | 2 +- src/Rfc4122/UuidV8.php | 2 +- src/Rfc4122/Validator.php | 6 +- src/Rfc4122/VariantTrait.php | 2 +- src/Rfc4122/VersionTrait.php | 2 +- src/Type/Decimal.php | 6 +- src/Type/Hexadecimal.php | 4 +- src/Type/Integer.php | 11 +- src/Type/NumberInterface.php | 2 +- src/Type/Time.php | 4 +- src/Type/TypeInterface.php | 2 +- src/Uuid.php | 62 +- src/UuidFactory.php | 25 - src/UuidFactoryInterface.php | 16 +- src/UuidInterface.php | 8 +- src/Validator/GenericValidator.php | 6 +- src/Validator/ValidatorInterface.php | 6 +- src/functions.php | 6 - tests/benchmark/UuidSerializationBench.php | 6 +- tests/benchmark/UuidStringConversionBench.php | 15 +- tests/static-analysis/UuidIsImmutable.php | 9 - tests/static-analysis/UuidIsNeverEmpty.php | 4 +- tests/static-analysis/stubs.php | 4 - 90 files changed, 153 insertions(+), 1741 deletions(-) delete mode 100644 psalm-baseline.xml delete mode 100644 psalm.xml diff --git a/.gitattributes b/.gitattributes index baa3232..455e1e0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -19,8 +19,6 @@ /phpstan-tests.neon export-ignore /phpstan.neon.dist export-ignore /phpunit.xml.dist export-ignore -/psalm-baseline.xml export-ignore -/psalm.xml export-ignore /resources/ export-ignore /SECURITY.md export-ignore /tests/ export-ignore diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index e0d28d5..7c6e099 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -63,9 +63,6 @@ jobs: - name: "Statically analyze code (PHPStan)" run: "composer phpstan -- --ansi" - - name: "Statically analyze code (Psalm)" - run: "composer psalm -- --shepherd" - benchmark: name: "Benchmark" needs: ["coding-standards", "static-analysis"] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 75d91f5..8535a9e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,9 +129,8 @@ composer phpcbf ### Static Analysis -This project uses a combination of [PHPStan](https://github.com/phpstan/phpstan) -and [Psalm](https://github.com/vimeo/psalm) to provide static analysis of PHP -code. +This project uses [PHPStan](https://github.com/phpstan/phpstan) to provide +static analysis of PHP code. CaptainHook will run static analysis checks before committing. diff --git a/README.md b/README.md index 0db8149..eab624d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,6 @@ Read License Build Status Codecov Code Coverage - Psalm Type Coverage

ramsey/uuid is a PHP library for generating and working with universally unique diff --git a/composer.json b/composer.json index 83a0020..9f2cd4f 100644 --- a/composer.json +++ b/composer.json @@ -32,8 +32,7 @@ "phpstan/phpstan-phpunit": "^1.1", "phpunit/phpunit": "^8.5 || ^9", "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "squizlabs/php_codesniffer": "^3.5" }, "replace": { "rhumsaa/uuid": "self.version" @@ -77,10 +76,7 @@ } }, "scripts": { - "analyze": [ - "@phpstan", - "@psalm" - ], + "analyze": "@phpstan", "build:clean": "git clean -fX build/", "lint": "parallel-lint src tests", "lint:paths": "parallel-lint", @@ -93,13 +89,11 @@ ], "phpunit": "phpunit --verbose --colors=always", "phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage", - "psalm": "psalm --show-info=false --config=psalm.xml", "test": [ "@lint", "@phpbench", "@phpcs", "@phpstan", - "@psalm", "@phpunit" ] } diff --git a/composer.lock b/composer.lock index ed60ee5..371a2bb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "023f5fd1392acd8688a8372107dc5c99", + "content-hash": "8a871cc8547137334b735ea98dd9cc28", "packages": [ { "name": "brick/math", @@ -226,172 +226,6 @@ } ], "packages-dev": [ - { - "name": "amphp/amp", - "version": "v2.6.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ], - "psr-4": { - "Amp\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "https://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-02-20T17:52:18+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\ByteStream\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-03-30T17:13:30+00:00" - }, { "name": "captainhook/captainhook", "version": "5.10.11", @@ -530,297 +364,6 @@ }, "time": "2022-01-28T04:35:22+00:00" }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-01-17T14:14:24+00:00" - }, - { - "name": "composer/pcre", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T20:21:48+00:00" - }, - { - "name": "composer/semver", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-01T19:23:25+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v0.7.2", @@ -896,43 +439,6 @@ }, "time": "2022-02-04T12:51:07+00:00" }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "time": "2019-12-04T15:06:13+00:00" - }, { "name": "doctrine/annotations", "version": "1.13.3", @@ -1420,107 +926,6 @@ ], "time": "2021-12-13T16:54:56+00:00" }, - { - "name": "felixfbecker/advanced-json-rpc", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "shasum": "" - }, - "require": { - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0", - "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AdvancedJsonRpc\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "A more advanced JSONRPC implementation", - "support": { - "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", - "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" - }, - "time": "2021-06-11T22:34:44+00:00" - }, - { - "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpstan/phpstan": "*", - "squizlabs/php_codesniffer": "^3.1", - "vimeo/psalm": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "LanguageServerProtocol\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "PHP classes for the Language Server Protocol", - "keywords": [ - "language", - "microsoft", - "php", - "server" - ], - "support": { - "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" - }, - "time": "2022-03-02T22:36:06+00:00" - }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.1", @@ -1883,57 +1288,6 @@ ], "time": "2022-03-03T13:19:32+00:00" }, - { - "name": "netresearch/jsonmapper", - "version": "v4.0.0", - "source": { - "type": "git", - "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", - "squizlabs/php_codesniffer": "~3.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JsonMapper": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@cweiske.de", - "homepage": "http://github.com/cweiske/jsonmapper/", - "role": "Developer" - } - ], - "description": "Map nested JSON structures onto PHP classes", - "support": { - "email": "cweiske@cweiske.de", - "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" - }, - "time": "2020-12-01T19:48:11+00:00" - }, { "name": "nikic/php-parser", "version": "v4.15.1", @@ -1990,59 +1344,6 @@ }, "time": "2022-09-04T07:30:47+00:00" }, - { - "name": "openlss/lib-array2xml", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "LSS": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Bryan Tong", - "email": "bryan@nullivex.com", - "homepage": "https://www.nullivex.com" - }, - { - "name": "Tony Butler", - "email": "spudz76@gmail.com", - "homepage": "https://www.nullivex.com" - } - ], - "description": "Array2XML conversion library credit to lalit.org", - "homepage": "https://www.nullivex.com", - "keywords": [ - "array", - "array conversion", - "xml", - "xml conversion" - ], - "support": { - "issues": "https://github.com/nullivex/lib-array2xml/issues", - "source": "https://github.com/nullivex/lib-array2xml/tree/master" - }, - "time": "2019-03-29T20:06:56+00:00" - }, { "name": "paragonie/random-lib", "version": "v2.0.1", @@ -2800,166 +2101,6 @@ ], "time": "2022-07-19T19:52:39+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, { "name": "phpstan/extension-installer", "version": "1.1.0", @@ -5782,89 +4923,6 @@ ], "time": "2022-05-24T11:49:31+00:00" }, - { - "name": "symfony/polyfill-php80", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-10T07:21:04+00:00" - }, { "name": "symfony/process", "version": "v6.0.11", @@ -6143,113 +5201,6 @@ ], "time": "2021-07-28T10:34:58+00:00" }, - { - "name": "vimeo/psalm", - "version": "4.27.0", - "source": { - "type": "git", - "url": "https://github.com/vimeo/psalm.git", - "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/faf106e717c37b8c81721845dba9de3d8deed8ff", - "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.4.2", - "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", - "dnoegel/php-xdg-base-dir": "^0.1.1", - "ext-ctype": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.13", - "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.25", - "webmozart/path-util": "^2.3" - }, - "provide": { - "psalm/psalm": "self.version" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", - "ext-curl": "*", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0 || ^6.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "suggest": { - "ext-curl": "In order to send data to shepherd", - "ext-igbinary": "^2.0.5 is required, used to serialize caching data" - }, - "bin": [ - "psalm", - "psalm-language-server", - "psalm-plugin", - "psalm-refactor", - "psalter" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev", - "dev-3.x": "3.x-dev", - "dev-2.x": "2.x-dev", - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ], - "psr-4": { - "Psalm\\": "src/Psalm/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Brown" - } - ], - "description": "A static analysis tool for finding errors in PHP applications", - "keywords": [ - "code", - "inspection", - "php" - ], - "support": { - "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.27.0" - }, - "time": "2022-08-31T13:47:09+00:00" - }, { "name": "webmozart/assert", "version": "1.11.0", diff --git a/psalm-baseline.xml b/psalm-baseline.xml deleted file mode 100644 index a571c8e..0000000 --- a/psalm-baseline.xml +++ /dev/null @@ -1,175 +0,0 @@ - - - - - DegradedUuid - new DegradedTimeConverter() - - - $this - $this - - - - - - $this - - - - - $this - $this - - - - - BigNumberConverter - - - - - $this - $this - - - - - BigNumberTimeConverter - - - - - $calculator - $dceSecurityGenerator - $numberConverter - $timeConverter - $timeGenerator - - - - - uuid_generate_md5 - uuid_generate_sha1 - uuid_parse - - - - - $this - $this - $this - - - - - $this - $this - $this - - - - - shell_exec('id -g') - shell_exec('id -u') - shell_exec('net user %username% | findstr /b /i "Local Group Memberships"') - shell_exec('whoami /user /fo csv /nh') - shell_exec('wmic group get name,sid | findstr /b /i ' . escapeshellarg($firstGroup)) - - - - - $macs - - - $macs[] - - - - - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - - - - - NonstandardUuidV6 - - - - - unserialize - - - - - unserialize - - - - - __construct - - - - - DeprecatedUuidMethodsTrait - - - getFactory - getFactory - getFactory - getFactory - getFactory - getFactory - - - unserialize - - - - - $this->codec - $this->codec - $this->codec - $this->isDefaultFeatureSet - $this->nameGenerator - $this->numberConverter - $this->uuidBuilder - - - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - $this - - - diff --git a/psalm.xml b/psalm.xml deleted file mode 100644 index 04cb32c..0000000 --- a/psalm.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/BinaryUtils.php b/src/BinaryUtils.php index fb8ba9a..5502cf8 100644 --- a/src/BinaryUtils.php +++ b/src/BinaryUtils.php @@ -28,8 +28,6 @@ class BinaryUtils * variant is applied * * @return int The 16-bit clock sequence multiplexed with the UUID variant - * - * @psalm-pure */ public static function applyVariant(int $clockSeq): int { @@ -50,8 +48,6 @@ class BinaryUtils * * @return int The 16-bit time_hi field of the timestamp multiplexed with * the UUID version number - * - * @psalm-pure */ public static function applyVersion(int $timeHi, int $version): int { diff --git a/src/Builder/BuilderCollection.php b/src/Builder/BuilderCollection.php index 9df3110..b0765c0 100644 --- a/src/Builder/BuilderCollection.php +++ b/src/Builder/BuilderCollection.php @@ -27,7 +27,7 @@ use Traversable; /** * A collection of UuidBuilderInterface objects * - * @deprecated this class has been deprecated, and will be removed in 5.0.0. The use-case for this class comes from + * @deprecated this class has been deprecated and will be removed in 5.0.0. The use-case for this class comes from * a pre-`phpstan/phpstan` and pre-`vimeo/psalm` ecosystem, in which type safety had to be mostly enforced * at runtime: that is no longer necessary, now that you can safely verify your code to be correct, and use * more generic types like `iterable` instead. @@ -41,11 +41,6 @@ class BuilderCollection extends AbstractCollection return UuidBuilderInterface::class; } - /** - * @psalm-mutation-free - * @psalm-suppress ImpureMethodCall - * @psalm-suppress InvalidTemplateParam - */ public function getIterator(): Traversable { return parent::getIterator(); @@ -56,9 +51,6 @@ class BuilderCollection extends AbstractCollection * * @param string $serialized The serialized PHP string to unserialize into * a UuidInterface instance - * - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint - * @psalm-suppress RedundantConditionGivenDocblockType */ public function unserialize($serialized): void { diff --git a/src/Builder/DefaultUuidBuilder.php b/src/Builder/DefaultUuidBuilder.php index 7c4a6f8..dcac0fb 100644 --- a/src/Builder/DefaultUuidBuilder.php +++ b/src/Builder/DefaultUuidBuilder.php @@ -19,7 +19,7 @@ use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; /** * @deprecated Transition to {@see Rfc4122UuidBuilder}. * - * @psalm-immutable + * @immutable */ class DefaultUuidBuilder extends Rfc4122UuidBuilder { diff --git a/src/Builder/DegradedUuidBuilder.php b/src/Builder/DegradedUuidBuilder.php index 20b3842..41523cf 100644 --- a/src/Builder/DegradedUuidBuilder.php +++ b/src/Builder/DegradedUuidBuilder.php @@ -26,7 +26,7 @@ use Ramsey\Uuid\UuidInterface; * @deprecated DegradedUuid instances are no longer necessary to support 32-bit * systems. Transition to {@see DefaultUuidBuilder}. * - * @psalm-immutable + * @immutable */ class DegradedUuidBuilder implements UuidBuilderInterface { @@ -52,8 +52,6 @@ class DegradedUuidBuilder implements UuidBuilderInterface * @param string $bytes The byte string from which to construct a UUID * * @return DegradedUuid The DegradedUuidBuild returns an instance of Ramsey\Uuid\DegradedUuid - * - * @psalm-pure */ public function build(CodecInterface $codec, string $bytes): UuidInterface { diff --git a/src/Builder/FallbackBuilder.php b/src/Builder/FallbackBuilder.php index ba5f31f..aa58ae6 100644 --- a/src/Builder/FallbackBuilder.php +++ b/src/Builder/FallbackBuilder.php @@ -23,7 +23,7 @@ use Ramsey\Uuid\UuidInterface; * FallbackBuilder builds a UUID by stepping through a list of UUID builders * until a UUID can be constructed without exceptions * - * @psalm-immutable + * @immutable */ class FallbackBuilder implements UuidBuilderInterface { @@ -42,8 +42,6 @@ class FallbackBuilder implements UuidBuilderInterface * @param string $bytes The byte string from which to construct a UUID * * @return UuidInterface an instance of a UUID object - * - * @psalm-pure */ public function build(CodecInterface $codec, string $bytes): UuidInterface { diff --git a/src/Builder/UuidBuilderInterface.php b/src/Builder/UuidBuilderInterface.php index 8e58b2b..74196e2 100644 --- a/src/Builder/UuidBuilderInterface.php +++ b/src/Builder/UuidBuilderInterface.php @@ -20,7 +20,7 @@ use Ramsey\Uuid\UuidInterface; /** * A UUID builder builds instances of UuidInterface * - * @psalm-immutable + * @immutable */ interface UuidBuilderInterface { @@ -32,8 +32,6 @@ interface UuidBuilderInterface * * @return UuidInterface Implementations may choose to return more specific * instances of UUIDs that implement UuidInterface - * - * @psalm-pure */ public function build(CodecInterface $codec, string $bytes): UuidInterface; } diff --git a/src/Codec/CodecInterface.php b/src/Codec/CodecInterface.php index 85f8a7e..82814cc 100644 --- a/src/Codec/CodecInterface.php +++ b/src/Codec/CodecInterface.php @@ -19,7 +19,7 @@ use Ramsey\Uuid\UuidInterface; /** * A codec encodes and decodes a UUID according to defined rules * - * @psalm-immutable + * @immutable */ interface CodecInterface { @@ -29,9 +29,7 @@ interface CodecInterface * @param UuidInterface $uuid The UUID for which to create a hexadecimal * string representation * - * @return string Hexadecimal string representation of a UUID - * - * @psalm-return non-empty-string + * @return non-empty-string Hexadecimal string representation of a UUID */ public function encode(UuidInterface $uuid): string; @@ -41,9 +39,7 @@ interface CodecInterface * @param UuidInterface $uuid The UUID for which to create a binary string * representation * - * @return string Binary string representation of a UUID - * - * @psalm-return non-empty-string + * @return non-empty-string Binary string representation of a UUID */ public function encodeBinary(UuidInterface $uuid): string; diff --git a/src/Codec/GuidStringCodec.php b/src/Codec/GuidStringCodec.php index 04872e0..05b55be 100644 --- a/src/Codec/GuidStringCodec.php +++ b/src/Codec/GuidStringCodec.php @@ -26,7 +26,7 @@ use function substr; * * @see Guid * - * @psalm-immutable + * @immutable */ class GuidStringCodec extends StringCodec { diff --git a/src/Codec/OrderedTimeCodec.php b/src/Codec/OrderedTimeCodec.php index 0798ebc..3c06804 100644 --- a/src/Codec/OrderedTimeCodec.php +++ b/src/Codec/OrderedTimeCodec.php @@ -41,7 +41,7 @@ use function substr; * * @link https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/ Storing UUID Values in MySQL * - * @psalm-immutable + * @immutable */ class OrderedTimeCodec extends StringCodec { @@ -49,10 +49,7 @@ class OrderedTimeCodec extends StringCodec * Returns a binary string representation of a UUID, with the timestamp * fields rearranged for optimized storage * - * @inheritDoc - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + * @return non-empty-string */ public function encodeBinary(UuidInterface $uuid): string { @@ -67,7 +64,7 @@ class OrderedTimeCodec extends StringCodec $bytes = $uuid->getFields()->getBytes(); - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + /** @var non-empty-string */ return $bytes[6] . $bytes[7] . $bytes[4] . $bytes[5] . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3] diff --git a/src/Codec/StringCodec.php b/src/Codec/StringCodec.php index 95f38d2..1785787 100644 --- a/src/Codec/StringCodec.php +++ b/src/Codec/StringCodec.php @@ -33,7 +33,7 @@ use function substr; * * @link http://tools.ietf.org/html/rfc4122 * - * @psalm-immutable + * @immutable */ class StringCodec implements CodecInterface { @@ -62,9 +62,7 @@ class StringCodec implements CodecInterface } /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + * @return non-empty-string */ public function encodeBinary(UuidInterface $uuid): string { diff --git a/src/Codec/TimestampFirstCombCodec.php b/src/Codec/TimestampFirstCombCodec.php index 0e0042d..3722738 100644 --- a/src/Codec/TimestampFirstCombCodec.php +++ b/src/Codec/TimestampFirstCombCodec.php @@ -46,14 +46,12 @@ use function substr_replace; * * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys * - * @psalm-immutable + * @immutable */ class TimestampFirstCombCodec extends StringCodec { /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + * @return non-empty-string */ public function encode(UuidInterface $uuid): string { @@ -70,9 +68,7 @@ class TimestampFirstCombCodec extends StringCodec } /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + * @return non-empty-string */ public function encodeBinary(UuidInterface $uuid): string { diff --git a/src/Codec/TimestampLastCombCodec.php b/src/Codec/TimestampLastCombCodec.php index 4856dea..ffc8674 100644 --- a/src/Codec/TimestampLastCombCodec.php +++ b/src/Codec/TimestampLastCombCodec.php @@ -44,7 +44,7 @@ namespace Ramsey\Uuid\Codec; * * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys * - * @psalm-immutable + * @immutable */ class TimestampLastCombCodec extends StringCodec { diff --git a/src/Converter/Number/BigNumberConverter.php b/src/Converter/Number/BigNumberConverter.php index 99b88b3..6952cda 100644 --- a/src/Converter/Number/BigNumberConverter.php +++ b/src/Converter/Number/BigNumberConverter.php @@ -23,7 +23,7 @@ use Ramsey\Uuid\Math\BrickMathCalculator; * * @deprecated Transition to {@see GenericNumberConverter}. * - * @psalm-immutable + * @immutable */ class BigNumberConverter implements NumberConverterInterface { @@ -34,19 +34,11 @@ class BigNumberConverter implements NumberConverterInterface $this->converter = new GenericNumberConverter(new BrickMathCalculator()); } - /** - * @inheritDoc - * @psalm-pure - */ public function fromHex(string $hex): string { return $this->converter->fromHex($hex); } - /** - * @inheritDoc - * @psalm-pure - */ public function toHex(string $number): string { return $this->converter->toHex($number); diff --git a/src/Converter/Number/DegradedNumberConverter.php b/src/Converter/Number/DegradedNumberConverter.php index c9cfa68..4dbb38a 100644 --- a/src/Converter/Number/DegradedNumberConverter.php +++ b/src/Converter/Number/DegradedNumberConverter.php @@ -18,7 +18,7 @@ namespace Ramsey\Uuid\Converter\Number; * @deprecated DegradedNumberConverter is no longer necessary for converting * numbers on 32-bit systems. Transition to {@see GenericNumberConverter}. * - * @psalm-immutable + * @immutable */ class DegradedNumberConverter extends BigNumberConverter { diff --git a/src/Converter/Number/GenericNumberConverter.php b/src/Converter/Number/GenericNumberConverter.php index 043c3c4..933c146 100644 --- a/src/Converter/Number/GenericNumberConverter.php +++ b/src/Converter/Number/GenericNumberConverter.php @@ -22,7 +22,7 @@ use Ramsey\Uuid\Type\Integer as IntegerObject; * GenericNumberConverter uses the provided calculator to convert decimal * numbers to and from hexadecimal values * - * @psalm-immutable + * @immutable */ class GenericNumberConverter implements NumberConverterInterface { @@ -30,25 +30,11 @@ class GenericNumberConverter implements NumberConverterInterface { } - /** - * @inheritDoc - * @psalm-pure - * @psalm-return numeric-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ public function fromHex(string $hex): string { return $this->calculator->fromBase($hex, 16)->toString(); } - /** - * @inheritDoc - * @psalm-pure - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ public function toHex(string $number): string { /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ diff --git a/src/Converter/NumberConverterInterface.php b/src/Converter/NumberConverterInterface.php index b33ec31..4487182 100644 --- a/src/Converter/NumberConverterInterface.php +++ b/src/Converter/NumberConverterInterface.php @@ -18,24 +18,20 @@ namespace Ramsey\Uuid\Converter; * A number converter converts UUIDs from hexadecimal characters into * representations of integers and vice versa * - * @psalm-immutable + * @immutable */ interface NumberConverterInterface { /** - * Converts a hexadecimal number into an string integer representation of + * Converts a hexadecimal number into a string integer representation of * the number * * The integer representation returned is a string representation of the - * integer, to accommodate unsigned integers greater than PHP_INT_MAX. + * integer to accommodate unsigned integers greater than PHP_INT_MAX. * * @param string $hex The hexadecimal string representation to convert * - * @return string String representation of an integer - * - * @psalm-return numeric-string - * - * @psalm-pure + * @return numeric-string String representation of an integer */ public function fromHex(string $hex): string; @@ -47,11 +43,7 @@ interface NumberConverterInterface * must be a numeric string to accommodate unsigned integers greater * than PHP_INT_MAX. * - * @return string Hexadecimal string - * - * @psalm-return non-empty-string - * - * @psalm-pure + * @return non-empty-string Hexadecimal string */ public function toHex(string $number): string; } diff --git a/src/Converter/Time/BigNumberTimeConverter.php b/src/Converter/Time/BigNumberTimeConverter.php index b6bca9e..3986b9c 100644 --- a/src/Converter/Time/BigNumberTimeConverter.php +++ b/src/Converter/Time/BigNumberTimeConverter.php @@ -25,7 +25,7 @@ use Ramsey\Uuid\Type\Time; * * @deprecated Transition to {@see GenericTimeConverter}. * - * @psalm-immutable + * @immutable */ class BigNumberTimeConverter implements TimeConverterInterface { diff --git a/src/Converter/Time/DegradedTimeConverter.php b/src/Converter/Time/DegradedTimeConverter.php index cdc2875..bcf967b 100644 --- a/src/Converter/Time/DegradedTimeConverter.php +++ b/src/Converter/Time/DegradedTimeConverter.php @@ -18,7 +18,7 @@ namespace Ramsey\Uuid\Converter\Time; * @deprecated DegradedTimeConverter is no longer necessary for converting * time on 32-bit systems. Transition to {@see GenericTimeConverter}. * - * @psalm-immutable + * @immutable */ class DegradedTimeConverter extends BigNumberTimeConverter { diff --git a/src/Converter/Time/GenericTimeConverter.php b/src/Converter/Time/GenericTimeConverter.php index f6b60ab..68024c4 100644 --- a/src/Converter/Time/GenericTimeConverter.php +++ b/src/Converter/Time/GenericTimeConverter.php @@ -30,7 +30,7 @@ use const STR_PAD_LEFT; * GenericTimeConverter uses the provided calculator to calculate and convert * time values * - * @psalm-immutable + * @immutable */ class GenericTimeConverter implements TimeConverterInterface { diff --git a/src/Converter/Time/PhpTimeConverter.php b/src/Converter/Time/PhpTimeConverter.php index 66009f1..326f2c3 100644 --- a/src/Converter/Time/PhpTimeConverter.php +++ b/src/Converter/Time/PhpTimeConverter.php @@ -38,7 +38,7 @@ use const STR_PAD_RIGHT; * available to the PHP programming language to provide facilities for * converting parts of time into representations that may be used in UUIDs * - * @psalm-immutable + * @immutable */ class PhpTimeConverter implements TimeConverterInterface { @@ -92,7 +92,6 @@ class PhpTimeConverter implements TimeConverterInterface // Check to see whether we've overflowed the max/min integer size. // If so, we will default to a different time converter. - /** @psalm-suppress RedundantCondition */ if (!is_int($uuidTime)) { return $this->fallbackConverter->calculateTime( $seconds->toString(), diff --git a/src/Converter/Time/UnixTimeConverter.php b/src/Converter/Time/UnixTimeConverter.php index 4d6d0a8..1cd2e26 100644 --- a/src/Converter/Time/UnixTimeConverter.php +++ b/src/Converter/Time/UnixTimeConverter.php @@ -30,7 +30,7 @@ use const STR_PAD_LEFT; * UnixTimeConverter converts Unix Epoch timestamps to/from hexadecimal values * consisting of milliseconds elapsed since the Unix Epoch * - * @psalm-immutable + * @immutable */ class UnixTimeConverter implements TimeConverterInterface { diff --git a/src/Converter/TimeConverterInterface.php b/src/Converter/TimeConverterInterface.php index 1e84807..19ba8c7 100644 --- a/src/Converter/TimeConverterInterface.php +++ b/src/Converter/TimeConverterInterface.php @@ -21,7 +21,7 @@ use Ramsey\Uuid\Type\Time; * A time converter converts timestamps into representations that may be used * in UUIDs * - * @psalm-immutable + * @immutable */ interface TimeConverterInterface { @@ -38,8 +38,6 @@ interface TimeConverterInterface * associated with the time to calculate * * @return Hexadecimal The full UUID timestamp as a Hexadecimal value - * - * @psalm-pure */ public function calculateTime(string $seconds, string $microseconds): Hexadecimal; @@ -51,8 +49,6 @@ interface TimeConverterInterface * since UTC 00:00:00.00, 15 October 1582. * * @return Time An instance of {@see Time} - * - * @psalm-pure */ public function convertTime(Hexadecimal $uuidTimestamp): Time; } diff --git a/src/DegradedUuid.php b/src/DegradedUuid.php index 9166042..f38e391 100644 --- a/src/DegradedUuid.php +++ b/src/DegradedUuid.php @@ -18,7 +18,7 @@ namespace Ramsey\Uuid; * @deprecated DegradedUuid is no longer necessary to represent UUIDs on 32-bit * systems. Transition typehints to {@see UuidInterface}. * - * @psalm-immutable + * @immutable */ class DegradedUuid extends Uuid { diff --git a/src/DeprecatedUuidInterface.php b/src/DeprecatedUuidInterface.php index ac01a79..c7639cd 100644 --- a/src/DeprecatedUuidInterface.php +++ b/src/DeprecatedUuidInterface.php @@ -20,7 +20,7 @@ use Ramsey\Uuid\Converter\NumberConverterInterface; /** * This interface encapsulates deprecated methods for ramsey/uuid * - * @psalm-immutable + * @immutable */ interface DeprecatedUuidInterface { diff --git a/src/DeprecatedUuidMethodsTrait.php b/src/DeprecatedUuidMethodsTrait.php index d3fbb0c..a3c624e 100644 --- a/src/DeprecatedUuidMethodsTrait.php +++ b/src/DeprecatedUuidMethodsTrait.php @@ -32,7 +32,7 @@ use const STR_PAD_LEFT; * * @deprecated This trait and its methods will be removed in ramsey/uuid 5.0.0. * - * @psalm-immutable + * @immutable */ trait DeprecatedUuidMethodsTrait { diff --git a/src/FeatureSet.php b/src/FeatureSet.php index b9af869..8ed764b 100644 --- a/src/FeatureSet.php +++ b/src/FeatureSet.php @@ -212,7 +212,6 @@ class FeatureSet $this->numberConverter = $this->buildNumberConverter($calculator); $this->timeConverter = $this->buildTimeConverter($calculator); - /** @psalm-suppress RedundantPropertyInitializationCheck */ if (isset($this->timeProvider)) { $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); } diff --git a/src/Fields/FieldsInterface.php b/src/Fields/FieldsInterface.php index f1b7a29..4c0289c 100644 --- a/src/Fields/FieldsInterface.php +++ b/src/Fields/FieldsInterface.php @@ -17,11 +17,11 @@ namespace Ramsey\Uuid\Fields; use Serializable; /** - * UUIDs are comprised of unsigned integers, the bytes of which are separated + * UUIDs consist of unsigned integers, the bytes of which are separated * into fields and arranged in a particular layout defined by the specification * for the variant * - * @psalm-immutable + * @immutable */ interface FieldsInterface extends Serializable { diff --git a/src/Fields/SerializableFieldsTrait.php b/src/Fields/SerializableFieldsTrait.php index 3d36b6f..2310f7d 100644 --- a/src/Fields/SerializableFieldsTrait.php +++ b/src/Fields/SerializableFieldsTrait.php @@ -23,7 +23,7 @@ use function strlen; /** * Provides common serialization functionality to fields * - * @psalm-immutable + * @immutable */ trait SerializableFieldsTrait { @@ -57,8 +57,6 @@ trait SerializableFieldsTrait * Constructs the object from a serialized string representation * * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall */ public function unserialize(string $data): void { @@ -71,8 +69,6 @@ trait SerializableFieldsTrait /** * @param array{bytes?: string} $data - * - * @psalm-suppress UnusedMethodCall */ public function __unserialize(array $data): void { diff --git a/src/Generator/DefaultNameGenerator.php b/src/Generator/DefaultNameGenerator.php index 7303e9f..88fe41f 100644 --- a/src/Generator/DefaultNameGenerator.php +++ b/src/Generator/DefaultNameGenerator.php @@ -26,7 +26,6 @@ use function hash; */ class DefaultNameGenerator implements NameGeneratorInterface { - /** @psalm-pure */ public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string { try { diff --git a/src/Generator/NameGeneratorInterface.php b/src/Generator/NameGeneratorInterface.php index cc43dd0..e064952 100644 --- a/src/Generator/NameGeneratorInterface.php +++ b/src/Generator/NameGeneratorInterface.php @@ -31,8 +31,6 @@ interface NameGeneratorInterface * @param string $hashAlgorithm The hashing algorithm to use * * @return string A binary string - * - * @psalm-pure */ public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string; } diff --git a/src/Generator/PeclUuidNameGenerator.php b/src/Generator/PeclUuidNameGenerator.php index 6a6d1ae..6cabbf8 100644 --- a/src/Generator/PeclUuidNameGenerator.php +++ b/src/Generator/PeclUuidNameGenerator.php @@ -30,7 +30,6 @@ use function uuid_parse; */ class PeclUuidNameGenerator implements NameGeneratorInterface { - /** @psalm-pure */ public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string { $uuid = match ($hashAlgorithm) { diff --git a/src/Guid/Fields.php b/src/Guid/Fields.php index 0fc5d1c..3afb0d8 100644 --- a/src/Guid/Fields.php +++ b/src/Guid/Fields.php @@ -41,7 +41,7 @@ use const STR_PAD_LEFT; * * @see Guid * - * @psalm-immutable + * @immutable */ final class Fields implements FieldsInterface { diff --git a/src/Guid/Guid.php b/src/Guid/Guid.php index b3ed096..0af0210 100644 --- a/src/Guid/Guid.php +++ b/src/Guid/Guid.php @@ -46,7 +46,7 @@ use Ramsey\Uuid\Uuid; * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid .NET Guid Struct * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid.tobytearray .NET Guid.ToByteArray Method * - * @psalm-immutable + * @immutable */ final class Guid extends Uuid { diff --git a/src/Guid/GuidBuilder.php b/src/Guid/GuidBuilder.php index c036bb2..b979197 100644 --- a/src/Guid/GuidBuilder.php +++ b/src/Guid/GuidBuilder.php @@ -27,7 +27,7 @@ use Throwable; * * @see Guid * - * @psalm-immutable + * @immutable */ class GuidBuilder implements UuidBuilderInterface { @@ -50,8 +50,6 @@ class GuidBuilder implements UuidBuilderInterface * @param string $bytes The byte string from which to construct a UUID * * @return Guid The GuidBuilder returns an instance of Ramsey\Uuid\Guid\Guid - * - * @psalm-pure */ public function build(CodecInterface $codec, string $bytes): UuidInterface { diff --git a/src/Lazy/LazyUuidFromString.php b/src/Lazy/LazyUuidFromString.php index c0b47bb..87583e9 100644 --- a/src/Lazy/LazyUuidFromString.php +++ b/src/Lazy/LazyUuidFromString.php @@ -41,16 +41,13 @@ use function substr; * @internal this type is used internally for performance reasons, and is not supposed to be directly referenced * in consumer libraries. * - * @psalm-immutable + * @immutable * * Note: the {@see FieldsInterface} does not declare methods that deprecated API * relies upon: the API has been ported from the {@see \Ramsey\Uuid\Uuid} definition, * and is deprecated anyway. * Note: the deprecated API from {@see \Ramsey\Uuid\Uuid} is in use here (on purpose): it will be removed * once the deprecated API is gone from this class too. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod */ final class LazyUuidFromString implements UuidInterface { @@ -59,13 +56,12 @@ final class LazyUuidFromString implements UuidInterface private ?UuidInterface $unwrapped = null; /** - * @psalm-param non-empty-string $uuid + * @param non-empty-string $uuid */ public function __construct(private string $uuid) { } - /** @psalm-pure */ public static function fromBytes(string $bytes): self { $base16Uuid = bin2hex($bytes); @@ -89,9 +85,7 @@ final class LazyUuidFromString implements UuidInterface } /** - * @return array{string: string} - * - * @psalm-return array{string: non-empty-string} + * @return array{string: non-empty-string} */ public function __serialize(): array { @@ -101,9 +95,7 @@ final class LazyUuidFromString implements UuidInterface /** * {@inheritDoc} * - * @param string $data - * - * @psalm-param non-empty-string $data + * @param non-empty-string $data */ public function unserialize(string $data): void { @@ -111,10 +103,7 @@ final class LazyUuidFromString implements UuidInterface } /** - * @param array{string?: string} $data - * - * @psalm-param array{string?: non-empty-string} $data - * @psalm-suppress UnusedMethodCall + * @param array{string?: non-empty-string} $data */ public function __unserialize(array $data): void { @@ -127,7 +116,6 @@ final class LazyUuidFromString implements UuidInterface $this->unserialize($data['string']); } - /** @psalm-suppress DeprecatedMethod */ public function getNumberConverter(): NumberConverterInterface { return ($this->unwrapped ?? $this->unwrap()) @@ -135,9 +123,7 @@ final class LazyUuidFromString implements UuidInterface } /** - * {@inheritDoc} - * - * @psalm-suppress DeprecatedMethod + * @inheritDoc */ public function getFieldsHex(): array { @@ -145,98 +131,84 @@ final class LazyUuidFromString implements UuidInterface ->getFieldsHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getClockSeqHiAndReservedHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getClockSeqHiAndReservedHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getClockSeqLowHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getClockSeqLowHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getClockSequenceHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getClockSequenceHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getDateTime(): DateTimeInterface { return ($this->unwrapped ?? $this->unwrap()) ->getDateTime(); } - /** @psalm-suppress DeprecatedMethod */ public function getLeastSignificantBitsHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getLeastSignificantBitsHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getMostSignificantBitsHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getMostSignificantBitsHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getNodeHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getNodeHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getTimeHiAndVersionHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getTimeHiAndVersionHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getTimeLowHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getTimeLowHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getTimeMidHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getTimeMidHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getTimestampHex(): string { return ($this->unwrapped ?? $this->unwrap()) ->getTimestampHex(); } - /** @psalm-suppress DeprecatedMethod */ public function getUrn(): string { return ($this->unwrapped ?? $this->unwrap()) ->getUrn(); } - /** @psalm-suppress DeprecatedMethod */ public function getVariant(): ?int { return ($this->unwrapped ?? $this->unwrap()) ->getVariant(); } - /** @psalm-suppress DeprecatedMethod */ public function getVersion(): ?int { return ($this->unwrapped ?? $this->unwrap()) @@ -258,16 +230,9 @@ final class LazyUuidFromString implements UuidInterface return $this->uuid === $other->toString(); } - /** - * {@inheritDoc} - * - * @psalm-suppress MoreSpecificReturnType - * @psalm-suppress LessSpecificReturnStatement we know that {@see self::$uuid} is a non-empty string, so - * we know that {@see hex2bin} will retrieve a non-empty string too. - */ public function getBytes(): string { - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ + /** @var non-empty-string */ return (string) hex2bin(str_replace('-', '', $this->uuid)); } @@ -310,22 +275,15 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getClockSeqHiAndReserved(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getClockSeqHiAndReserved() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getClockSeqHiAndReserved()->toString()); } /** @@ -334,22 +292,15 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getClockSeqLow(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getClockSeqLow() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getClockSeqLow()->toString()); } /** @@ -358,33 +309,21 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getClockSequence(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getClockSeq() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getClockSeq()->toString()); } /** * @deprecated This method will be removed in 5.0.0. There is no direct * alternative, but the same information may be obtained by splitting * in half the value returned by {@see UuidInterface::getHex()}. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getLeastSignificantBits(): string { @@ -398,11 +337,6 @@ final class LazyUuidFromString implements UuidInterface * @deprecated This method will be removed in 5.0.0. There is no direct * alternative, but the same information may be obtained by splitting * in half the value returned by {@see UuidInterface::getHex()}. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getMostSignificantBits(): string { @@ -418,22 +352,15 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getNode()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getNode(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getNode() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getNode()->toString()); } /** @@ -442,22 +369,15 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getTimeHiAndVersion(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getTimeHiAndVersion() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getTimeHiAndVersion()->toString()); } /** @@ -466,22 +386,15 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getTimeLow(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getTimeLow() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getTimeLow()->toString()); } /** @@ -490,22 +403,15 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getTimeMid(): string { $instance = ($this->unwrapped ?? $this->unwrap()); - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getTimeMid() - ->toString() - ); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); + + return $instance->getNumberConverter()->fromHex($fields->getTimeMid()->toString()); } /** @@ -514,23 +420,19 @@ final class LazyUuidFromString implements UuidInterface * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()} * and use the arbitrary-precision math library of your choice to * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall */ public function getTimestamp(): string { $instance = ($this->unwrapped ?? $this->unwrap()); + $fields = $instance->getFields(); + assert($fields instanceof \Ramsey\Uuid\Rfc4122\FieldsInterface); if ($fields->getVersion() !== 1) { throw new UnsupportedOperationException('Not a time-based UUID'); } - return $instance->getNumberConverter() - ->fromHex($fields->getTimestamp()->toString()); + return $instance->getNumberConverter()->fromHex($fields->getTimestamp()->toString()); } public function toUuidV1(): UuidV1 @@ -555,18 +457,8 @@ final class LazyUuidFromString implements UuidInterface return $instance; } - /** - * @psalm-suppress ImpureMethodCall the retrieval of the factory is a clear violation of purity here: this is a - * known pitfall of the design of this library, where a value object contains - * a mutable reference to a factory. We use a fixed factory here, so the violation - * will not have real-world effects, as this object is only instantiated with the - * default factory settings/features. - * @psalm-suppress InaccessibleProperty property {@see $unwrapped} is used as a cache: we don't expose it to the - * outside world, so we should be fine here. - */ private function unwrap(): UuidInterface { - return $this->unwrapped = (new UuidFactory()) - ->fromString($this->uuid); + return $this->unwrapped = (new UuidFactory())->fromString($this->uuid); } } diff --git a/src/Math/BrickMathCalculator.php b/src/Math/BrickMathCalculator.php index f065acd..b3ffdaa 100644 --- a/src/Math/BrickMathCalculator.php +++ b/src/Math/BrickMathCalculator.php @@ -27,7 +27,7 @@ use Ramsey\Uuid\Type\NumberInterface; /** * A calculator using the brick/math library for arbitrary-precision arithmetic * - * @psalm-immutable + * @immutable */ final class BrickMathCalculator implements CalculatorInterface { diff --git a/src/Math/CalculatorInterface.php b/src/Math/CalculatorInterface.php index f03645d..75ca006 100644 --- a/src/Math/CalculatorInterface.php +++ b/src/Math/CalculatorInterface.php @@ -21,7 +21,7 @@ use Ramsey\Uuid\Type\NumberInterface; /** * A calculator performs arithmetic operations on numbers * - * @psalm-immutable + * @immutable */ interface CalculatorInterface { diff --git a/src/Nonstandard/Fields.php b/src/Nonstandard/Fields.php index 5dfe610..2a8a3d3 100644 --- a/src/Nonstandard/Fields.php +++ b/src/Nonstandard/Fields.php @@ -40,7 +40,7 @@ use const STR_PAD_LEFT; * Internally, this class represents the fields together as a 16-byte binary * string. * - * @psalm-immutable + * @immutable */ final class Fields implements FieldsInterface { diff --git a/src/Nonstandard/Uuid.php b/src/Nonstandard/Uuid.php index 715f825..5810b5f 100644 --- a/src/Nonstandard/Uuid.php +++ b/src/Nonstandard/Uuid.php @@ -22,7 +22,7 @@ use Ramsey\Uuid\Uuid as BaseUuid; /** * Nonstandard\Uuid is a UUID that doesn't conform to RFC 4122 * - * @psalm-immutable + * @immutable */ final class Uuid extends BaseUuid { diff --git a/src/Nonstandard/UuidBuilder.php b/src/Nonstandard/UuidBuilder.php index 82efd40..f431c71 100644 --- a/src/Nonstandard/UuidBuilder.php +++ b/src/Nonstandard/UuidBuilder.php @@ -25,7 +25,7 @@ use Throwable; /** * Nonstandard\UuidBuilder builds instances of Nonstandard\Uuid * - * @psalm-immutable + * @immutable */ class UuidBuilder implements UuidBuilderInterface { @@ -49,8 +49,6 @@ class UuidBuilder implements UuidBuilderInterface * * @return Uuid The Nonstandard\UuidBuilder returns an instance of * Nonstandard\Uuid - * - * @psalm-pure */ public function build(CodecInterface $codec, string $bytes): UuidInterface { diff --git a/src/Nonstandard/UuidV6.php b/src/Nonstandard/UuidV6.php index 7497dd1..49efbf4 100644 --- a/src/Nonstandard/UuidV6.php +++ b/src/Nonstandard/UuidV6.php @@ -34,7 +34,7 @@ use Ramsey\Uuid\Uuid as BaseUuid; * @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft * @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs * - * @psalm-immutable + * @immutable */ class UuidV6 extends BaseUuid implements UuidInterface { diff --git a/src/Provider/Dce/SystemDceSecurityProvider.php b/src/Provider/Dce/SystemDceSecurityProvider.php index d5b6cf0..e37f205 100644 --- a/src/Provider/Dce/SystemDceSecurityProvider.php +++ b/src/Provider/Dce/SystemDceSecurityProvider.php @@ -141,10 +141,7 @@ class SystemDceSecurityProvider implements DceSecurityProviderInterface */ private function getOs(): string { - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var string $phpOs - */ + /** @var string $phpOs */ $phpOs = constant('PHP_OS'); return strtoupper(substr($phpOs, 0, 3)); diff --git a/src/Provider/Node/NodeProviderCollection.php b/src/Provider/Node/NodeProviderCollection.php index 1b979fa..5a7bab4 100644 --- a/src/Provider/Node/NodeProviderCollection.php +++ b/src/Provider/Node/NodeProviderCollection.php @@ -40,9 +40,6 @@ class NodeProviderCollection extends AbstractCollection * * @param string $serialized The serialized PHP string to unserialize into * a UuidInterface instance - * - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint - * @psalm-suppress RedundantConditionGivenDocblockType */ public function unserialize($serialized): void { diff --git a/src/Provider/Node/SystemNodeProvider.php b/src/Provider/Node/SystemNodeProvider.php index a03c93b..27f7a68 100644 --- a/src/Provider/Node/SystemNodeProvider.php +++ b/src/Provider/Node/SystemNodeProvider.php @@ -104,10 +104,7 @@ class SystemNodeProvider implements NodeProviderInterface return ''; } - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var string $phpOs - */ + /** @var string $phpOs */ $phpOs = constant('PHP_OS'); ob_start(); @@ -151,10 +148,7 @@ class SystemNodeProvider implements NodeProviderInterface { $mac = ''; - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var string $phpOs - */ + /** @var string $phpOs */ $phpOs = constant('PHP_OS'); if (strtoupper($phpOs) === 'LINUX') { diff --git a/src/Rfc4122/Fields.php b/src/Rfc4122/Fields.php index 9acf810..345efb0 100644 --- a/src/Rfc4122/Fields.php +++ b/src/Rfc4122/Fields.php @@ -31,12 +31,12 @@ use function unpack; use const STR_PAD_LEFT; /** - * RFC 4122 variant UUIDs are comprised of a set of named fields + * RFC 4122 variant UUIDs consist of a set of named fields * * Internally, this class represents the fields together as a 16-byte binary * string. * - * @psalm-immutable + * @immutable */ final class Fields implements FieldsInterface { diff --git a/src/Rfc4122/FieldsInterface.php b/src/Rfc4122/FieldsInterface.php index 2241cf5..e96f0af 100644 --- a/src/Rfc4122/FieldsInterface.php +++ b/src/Rfc4122/FieldsInterface.php @@ -35,7 +35,7 @@ use Ramsey\Uuid\Type\Hexadecimal; * * @link http://tools.ietf.org/html/rfc4122#section-4.1 RFC 4122, § 4.1: Format * - * @psalm-immutable + * @immutable */ interface FieldsInterface extends BaseFieldsInterface { diff --git a/src/Rfc4122/MaxTrait.php b/src/Rfc4122/MaxTrait.php index dedb727..9bdbb10 100644 --- a/src/Rfc4122/MaxTrait.php +++ b/src/Rfc4122/MaxTrait.php @@ -22,7 +22,7 @@ namespace Ramsey\Uuid\Rfc4122; * * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.10 Max UUID * - * @psalm-immutable + * @immutable */ trait MaxTrait { diff --git a/src/Rfc4122/MaxUuid.php b/src/Rfc4122/MaxUuid.php index e5ffa72..7143885 100644 --- a/src/Rfc4122/MaxUuid.php +++ b/src/Rfc4122/MaxUuid.php @@ -20,7 +20,7 @@ use Ramsey\Uuid\Uuid; * The max UUID is special form of UUID that is specified to have all 128 bits * set to one * - * @psalm-immutable + * @immutable */ final class MaxUuid extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/NilTrait.php b/src/Rfc4122/NilTrait.php index 9a9774d..8bbe13e 100644 --- a/src/Rfc4122/NilTrait.php +++ b/src/Rfc4122/NilTrait.php @@ -22,7 +22,7 @@ namespace Ramsey\Uuid\Rfc4122; * * @link https://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID * - * @psalm-immutable + * @immutable */ trait NilTrait { diff --git a/src/Rfc4122/NilUuid.php b/src/Rfc4122/NilUuid.php index c49b994..831378e 100644 --- a/src/Rfc4122/NilUuid.php +++ b/src/Rfc4122/NilUuid.php @@ -20,7 +20,7 @@ use Ramsey\Uuid\Uuid; * The nil UUID is special form of UUID that is specified to have all 128 bits * set to zero * - * @psalm-immutable + * @immutable */ final class NilUuid extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/TimeTrait.php b/src/Rfc4122/TimeTrait.php index 5d939fa..8d9ab27 100644 --- a/src/Rfc4122/TimeTrait.php +++ b/src/Rfc4122/TimeTrait.php @@ -26,7 +26,7 @@ use const STR_PAD_LEFT; /** * Provides common functionality for getting the time from a time-based UUID * - * @psalm-immutable + * @immutable */ trait TimeTrait { diff --git a/src/Rfc4122/UuidBuilder.php b/src/Rfc4122/UuidBuilder.php index 2c2677d..10489d4 100644 --- a/src/Rfc4122/UuidBuilder.php +++ b/src/Rfc4122/UuidBuilder.php @@ -30,7 +30,7 @@ use Throwable; /** * UuidBuilder builds instances of RFC 4122 UUIDs * - * @psalm-immutable + * @immutable */ class UuidBuilder implements UuidBuilderInterface { @@ -63,8 +63,6 @@ class UuidBuilder implements UuidBuilderInterface * @param string $bytes The byte string from which to construct a UUID * * @return Rfc4122UuidInterface UuidBuilder returns instances of Rfc4122UuidInterface - * - * @psalm-pure */ public function build(CodecInterface $codec, string $bytes): UuidInterface { diff --git a/src/Rfc4122/UuidInterface.php b/src/Rfc4122/UuidInterface.php index e80f33b..e046dff 100644 --- a/src/Rfc4122/UuidInterface.php +++ b/src/Rfc4122/UuidInterface.php @@ -22,7 +22,7 @@ use Ramsey\Uuid\UuidInterface as BaseUuidInterface; * * @link https://tools.ietf.org/html/rfc4122 RFC 4122 * - * @psalm-immutable + * @immutable */ interface UuidInterface extends BaseUuidInterface { diff --git a/src/Rfc4122/UuidV1.php b/src/Rfc4122/UuidV1.php index 515c038..85816f1 100644 --- a/src/Rfc4122/UuidV1.php +++ b/src/Rfc4122/UuidV1.php @@ -25,7 +25,7 @@ use Ramsey\Uuid\Uuid; * Gregorian time, or version 1, UUIDs include timestamp, clock sequence, and node * values that are combined into a 128-bit unsigned integer * - * @psalm-immutable + * @immutable */ final class UuidV1 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/UuidV2.php b/src/Rfc4122/UuidV2.php index c8ccbe4..218bb42 100644 --- a/src/Rfc4122/UuidV2.php +++ b/src/Rfc4122/UuidV2.php @@ -48,7 +48,7 @@ use function hexdec; * @link https://pubs.opengroup.org/onlinepubs/9629399/apdxa.htm DCE 1.1: RPC, Appendix A * @link https://github.com/google/uuid Go package for UUIDs (includes DCE implementation) * - * @psalm-immutable + * @immutable */ final class UuidV2 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/UuidV3.php b/src/Rfc4122/UuidV3.php index deaa54e..63aa9c5 100644 --- a/src/Rfc4122/UuidV3.php +++ b/src/Rfc4122/UuidV3.php @@ -22,10 +22,10 @@ use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; use Ramsey\Uuid\Uuid; /** - * Version 3 UUIDs are named-based, using combination of a namespace and name + * Version 3 UUIDs are named-based, using a combination of a namespace and name * that are hashed into a 128-bit unsigned integer using MD5 * - * @psalm-immutable + * @immutable */ final class UuidV3 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/UuidV4.php b/src/Rfc4122/UuidV4.php index 2e57246..3a2eb81 100644 --- a/src/Rfc4122/UuidV4.php +++ b/src/Rfc4122/UuidV4.php @@ -25,7 +25,7 @@ use Ramsey\Uuid\Uuid; * Random, or version 4, UUIDs are randomly or pseudo-randomly generated 128-bit * integers * - * @psalm-immutable + * @immutable */ final class UuidV4 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/UuidV5.php b/src/Rfc4122/UuidV5.php index 2ef6ab3..28ff460 100644 --- a/src/Rfc4122/UuidV5.php +++ b/src/Rfc4122/UuidV5.php @@ -22,10 +22,10 @@ use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; use Ramsey\Uuid\Uuid; /** - * Version 5 UUIDs are named-based, using combination of a namespace and name + * Version 5 UUIDs are named-based, using a combination of a namespace and name * that are hashed into a 128-bit unsigned integer using SHA1 * - * @psalm-immutable + * @immutable */ final class UuidV5 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/UuidV6.php b/src/Rfc4122/UuidV6.php index 7e37433..c243f23 100644 --- a/src/Rfc4122/UuidV6.php +++ b/src/Rfc4122/UuidV6.php @@ -22,7 +22,7 @@ use Ramsey\Uuid\Nonstandard\UuidV6 as NonstandardUuidV6; * * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.6 UUID Version 6 * - * @psalm-immutable + * @immutable */ final class UuidV6 extends NonstandardUuidV6 implements UuidInterface { diff --git a/src/Rfc4122/UuidV7.php b/src/Rfc4122/UuidV7.php index 5b524c4..03e9d4b 100644 --- a/src/Rfc4122/UuidV7.php +++ b/src/Rfc4122/UuidV7.php @@ -27,7 +27,7 @@ use Ramsey\Uuid\Uuid; * * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.7 UUID Version 7 * - * @psalm-immutable + * @immutable */ final class UuidV7 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/UuidV8.php b/src/Rfc4122/UuidV8.php index 78b0290..3607279 100644 --- a/src/Rfc4122/UuidV8.php +++ b/src/Rfc4122/UuidV8.php @@ -32,7 +32,7 @@ use Ramsey\Uuid\Uuid; * * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.8 UUID Version 8 * - * @psalm-immutable + * @immutable */ final class UuidV8 extends Uuid implements UuidInterface { diff --git a/src/Rfc4122/Validator.php b/src/Rfc4122/Validator.php index e82a11e..96d0abc 100644 --- a/src/Rfc4122/Validator.php +++ b/src/Rfc4122/Validator.php @@ -23,7 +23,7 @@ use function str_replace; /** * Rfc4122\Validator validates strings as UUIDs of the RFC 4122 variant * - * @psalm-immutable + * @immutable */ final class Validator implements ValidatorInterface { @@ -31,9 +31,7 @@ final class Validator implements ValidatorInterface . '[1-8][0-9A-Fa-f]{3}-[ABab89][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}\z'; /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + * @return non-empty-string */ public function getPattern(): string { diff --git a/src/Rfc4122/VariantTrait.php b/src/Rfc4122/VariantTrait.php index 1041de5..910cf4d 100644 --- a/src/Rfc4122/VariantTrait.php +++ b/src/Rfc4122/VariantTrait.php @@ -29,7 +29,7 @@ use const STR_PAD_LEFT; /** * Provides common functionality for handling the variant, as defined by RFC 4122 * - * @psalm-immutable + * @immutable */ trait VariantTrait { diff --git a/src/Rfc4122/VersionTrait.php b/src/Rfc4122/VersionTrait.php index 0195e46..2e2fc07 100644 --- a/src/Rfc4122/VersionTrait.php +++ b/src/Rfc4122/VersionTrait.php @@ -19,7 +19,7 @@ use Ramsey\Uuid\Uuid; /** * Provides common functionality for handling the version, as defined by RFC 4122 * - * @psalm-immutable + * @immutable */ trait VersionTrait { diff --git a/src/Type/Decimal.php b/src/Type/Decimal.php index acc5e75..dd8d2ce 100644 --- a/src/Type/Decimal.php +++ b/src/Type/Decimal.php @@ -31,7 +31,7 @@ use function str_starts_with; * To support values as true decimals and not as floats or doubles, we store the * decimals as strings. * - * @psalm-immutable + * @immutable */ final class Decimal implements NumberInterface { @@ -103,8 +103,6 @@ final class Decimal implements NumberInterface * Constructs the object from a serialized string representation * * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall */ public function unserialize(string $data): void { @@ -113,8 +111,6 @@ final class Decimal implements NumberInterface /** * @param array{string?: string} $data - * - * @psalm-suppress UnusedMethodCall */ public function __unserialize(array $data): void { diff --git a/src/Type/Hexadecimal.php b/src/Type/Hexadecimal.php index bf71ec4..132b4e0 100644 --- a/src/Type/Hexadecimal.php +++ b/src/Type/Hexadecimal.php @@ -28,7 +28,7 @@ use function substr; * returned from ramsey/uuid methods as strings are truly hexadecimal and not some * other kind of string. * - * @psalm-immutable + * @immutable */ final class Hexadecimal implements TypeInterface { @@ -74,8 +74,6 @@ final class Hexadecimal implements TypeInterface * Constructs the object from a serialized string representation * * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall */ public function unserialize(string $data): void { diff --git a/src/Type/Integer.php b/src/Type/Integer.php index 50dac99..4851b56 100644 --- a/src/Type/Integer.php +++ b/src/Type/Integer.php @@ -33,12 +33,12 @@ use function substr; * To support large integers beyond PHP_INT_MAX and PHP_INT_MIN on both 64-bit * and 32-bit systems, we store the integers as strings. * - * @psalm-immutable + * @immutable */ final class Integer implements NumberInterface { /** - * @psalm-var numeric-string + * @var numeric-string */ private string $value; @@ -55,7 +55,7 @@ final class Integer implements NumberInterface } /** - * @psalm-return numeric-string + * @return numeric-string */ public function toString(): string { @@ -63,7 +63,7 @@ final class Integer implements NumberInterface } /** - * @psalm-return numeric-string + * @return numeric-string */ public function __toString(): string { @@ -92,8 +92,6 @@ final class Integer implements NumberInterface * Constructs the object from a serialized string representation * * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall */ public function unserialize(string $data): void { @@ -147,7 +145,6 @@ final class Integer implements NumberInterface if ($sign === '-' && $value !== '0') { $value = $sign . $value; - /** @psalm-suppress InaccessibleProperty */ $this->isNegative = true; } diff --git a/src/Type/NumberInterface.php b/src/Type/NumberInterface.php index bf4ae9d..d85e103 100644 --- a/src/Type/NumberInterface.php +++ b/src/Type/NumberInterface.php @@ -17,7 +17,7 @@ namespace Ramsey\Uuid\Type; /** * NumberInterface ensures consistency in numeric values returned by ramsey/uuid * - * @psalm-immutable + * @immutable */ interface NumberInterface extends TypeInterface { diff --git a/src/Type/Time.php b/src/Type/Time.php index 0cedb44..e6f6caa 100644 --- a/src/Type/Time.php +++ b/src/Type/Time.php @@ -29,7 +29,7 @@ use function sprintf; * by ramsey/uuid are truly timestamp integers and not some other kind of string * or integer. * - * @psalm-immutable + * @immutable */ final class Time implements TypeInterface { @@ -95,8 +95,6 @@ final class Time implements TypeInterface * Constructs the object from a serialized string representation * * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall */ public function unserialize(string $data): void { diff --git a/src/Type/TypeInterface.php b/src/Type/TypeInterface.php index da2d8b2..d9a31e4 100644 --- a/src/Type/TypeInterface.php +++ b/src/Type/TypeInterface.php @@ -20,7 +20,7 @@ use Serializable; /** * TypeInterface ensures consistency in typed values returned by ramsey/uuid * - * @psalm-immutable + * @immutable */ interface TypeInterface extends JsonSerializable, Serializable { diff --git a/src/Uuid.php b/src/Uuid.php index cce9943..e4af9f4 100644 --- a/src/Uuid.php +++ b/src/Uuid.php @@ -42,14 +42,14 @@ use function substr; /** * Uuid provides constants and static methods for working with and generating UUIDs * - * @psalm-immutable + * @immutable */ class Uuid implements UuidInterface { use DeprecatedUuidMethodsTrait; /** - * When this namespace is specified, the name string is a fully-qualified + * When this namespace is specified, the name string is a fully qualified * domain name * * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs @@ -274,7 +274,7 @@ class Uuid implements UuidInterface } /** - * @psalm-return non-empty-string + * @return non-empty-string */ public function __toString(): string { @@ -366,7 +366,7 @@ class Uuid implements UuidInterface } /** - * @psalm-return non-empty-string + * @return non-empty-string */ public function getBytes(): string { @@ -394,7 +394,7 @@ class Uuid implements UuidInterface } /** - * @psalm-return non-empty-string + * @return non-empty-string */ public function toString(): string { @@ -438,13 +438,6 @@ class Uuid implements UuidInterface * string representation * * @throws InvalidArgumentException - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. */ public static function fromBytes(string $bytes): UuidInterface { @@ -477,13 +470,6 @@ class Uuid implements UuidInterface * string representation * * @throws InvalidArgumentException - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. */ public static function fromString(string $uuid): UuidInterface { @@ -524,24 +510,16 @@ class Uuid implements UuidInterface * @param Hexadecimal $hex Hexadecimal object representing a hexadecimal number * * @return UuidInterface A UuidInterface instance created from the Hexadecimal - * object representing a hexadecimal number + * object representing a hexadecimal number * * @throws InvalidArgumentException - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * @psalm-suppress MixedInferredReturnType,MixedReturnStatement */ public static function fromHexadecimal(Hexadecimal $hex): UuidInterface { $factory = self::getFactory(); if (method_exists($factory, 'fromHexadecimal')) { - /** - * @phpstan-ignore-next-line - * @psalm-suppress UndefinedInterfaceMethod - */ - return self::getFactory()->fromHexadecimal($hex); + return $factory->fromHexadecimal($hex); } throw new BadMethodCallException('The method fromHexadecimal() does not exist on the provided factory'); @@ -556,13 +534,9 @@ class Uuid implements UuidInterface * representation of a 128-bit integer * * @throws InvalidArgumentException - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners */ public static function fromInteger(string $integer): UuidInterface { - /** @psalm-suppress ImpureMethodCall */ return self::getFactory()->fromInteger($integer); } @@ -572,15 +546,9 @@ class Uuid implements UuidInterface * @param string $uuid A string to validate as a UUID * * @return bool True if the string is a valid UUID, false otherwise - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * - * @psalm-assert-if-true =non-empty-string $uuid */ public static function isValid(string $uuid): bool { - /** @psalm-suppress ImpureMethodCall */ return self::getFactory()->getValidator()->validate($uuid); } @@ -641,14 +609,6 @@ class Uuid implements UuidInterface * * @return UuidInterface A UuidInterface instance that represents a * version 3 UUID - * - * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners */ public static function uuid3($ns, string $name): UuidInterface { @@ -675,14 +635,6 @@ class Uuid implements UuidInterface * * @return UuidInterface A UuidInterface instance that represents a * version 5 UUID - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * - * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. */ public static function uuid5($ns, string $name): UuidInterface { diff --git a/src/UuidFactory.php b/src/UuidFactory.php index 1b06ea6..27912bf 100644 --- a/src/UuidFactory.php +++ b/src/UuidFactory.php @@ -240,9 +240,6 @@ class UuidFactory implements UuidFactoryInterface $this->uuidBuilder = $builder; } - /** - * @psalm-mutation-free - */ public function getValidator(): ValidatorInterface { return $this->validator; @@ -261,17 +258,11 @@ class UuidFactory implements UuidFactoryInterface $this->validator = $validator; } - /** - * @psalm-pure - */ public function fromBytes(string $bytes): UuidInterface { return $this->codec->decodeBytes($bytes); } - /** - * @psalm-pure - */ public function fromString(string $uuid): UuidInterface { $uuid = strtolower($uuid); @@ -279,9 +270,6 @@ class UuidFactory implements UuidFactoryInterface return $this->codec->decode($uuid); } - /** - * @psalm-pure - */ public function fromInteger(string $integer): UuidInterface { $hex = $this->numberConverter->toHex($integer); @@ -312,9 +300,6 @@ class UuidFactory implements UuidFactoryInterface return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_TIME); } - /** - * @psalm-pure - */ public function fromHexadecimal(Hexadecimal $hex): UuidInterface { return $this->codec->decode($hex->__toString()); @@ -348,7 +333,6 @@ class UuidFactory implements UuidFactoryInterface /** * @inheritDoc - * @psalm-pure */ public function uuid3($ns, string $name): UuidInterface { @@ -364,7 +348,6 @@ class UuidFactory implements UuidFactoryInterface /** * @inheritDoc - * @psalm-pure */ public function uuid5($ns, string $name): UuidInterface { @@ -439,12 +422,9 @@ class UuidFactory implements UuidFactoryInterface * * @return UuidInterface An instance of UuidInterface, created from the * provided bytes - * - * @psalm-pure */ public function uuid(string $bytes): UuidInterface { - /** @psalm-suppress ImpurePropertyFetch */ return $this->uuidBuilder->build($this->codec, $bytes); } @@ -459,8 +439,6 @@ class UuidFactory implements UuidFactoryInterface * * @return UuidInterface An instance of UuidInterface, created by hashing * together the provided namespace and name - * - * @psalm-pure */ private function uuidFromNsAndName( UuidInterface | string $ns, @@ -485,8 +463,6 @@ class UuidFactory implements UuidFactoryInterface * * @return UuidInterface An instance of UuidInterface, created from the * byte string and version - * - * @psalm-pure */ private function uuidFromBytesAndVersion(string $bytes, int $version): UuidInterface { @@ -507,7 +483,6 @@ class UuidFactory implements UuidFactoryInterface return LazyUuidFromString::fromBytes($bytes); } - /** @psalm-suppress ImpureVariable */ return $this->uuid($bytes); } } diff --git a/src/UuidFactoryInterface.php b/src/UuidFactoryInterface.php index d99fc9d..b555f77 100644 --- a/src/UuidFactoryInterface.php +++ b/src/UuidFactoryInterface.php @@ -20,7 +20,7 @@ use Ramsey\Uuid\Type\Integer as IntegerObject; use Ramsey\Uuid\Validator\ValidatorInterface; /** - * UuidFactoryInterface defines common functionality all `UuidFactory` instances + * UuidFactoryInterface defines the common functionality all `UuidFactory` instances * must implement */ interface UuidFactoryInterface @@ -32,8 +32,6 @@ interface UuidFactoryInterface * * @return UuidInterface A UuidInterface instance created from a binary * string representation - * - * @psalm-pure */ public function fromBytes(string $bytes): UuidInterface; @@ -63,8 +61,6 @@ interface UuidFactoryInterface * * @return UuidInterface A UuidInterface instance created from the string * representation of a 128-bit integer - * - * @psalm-pure */ public function fromInteger(string $integer): UuidInterface; @@ -75,15 +71,11 @@ interface UuidFactoryInterface * * @return UuidInterface A UuidInterface instance created from a hexadecimal * string representation - * - * @psalm-pure */ public function fromString(string $uuid): UuidInterface; /** - * Returns the validator to use for the factory - * - * @psalm-mutation-free + * Returns the validator used by the factory */ public function getValidator(): ValidatorInterface; @@ -138,8 +130,6 @@ interface UuidFactoryInterface * * @return UuidInterface A UuidInterface instance that represents a * version 3 UUID - * - * @psalm-pure */ public function uuid3($ns, string $name): UuidInterface; @@ -160,8 +150,6 @@ interface UuidFactoryInterface * * @return UuidInterface A UuidInterface instance that represents a * version 5 UUID - * - * @psalm-pure */ public function uuid5($ns, string $name): UuidInterface; diff --git a/src/UuidInterface.php b/src/UuidInterface.php index cac9457..33afbab 100644 --- a/src/UuidInterface.php +++ b/src/UuidInterface.php @@ -25,7 +25,7 @@ use Stringable; * A UUID is a universally unique identifier adhering to an agreed-upon * representation format and standard for generation * - * @psalm-immutable + * @immutable */ interface UuidInterface extends DeprecatedUuidInterface, @@ -66,7 +66,7 @@ interface UuidInterface extends /** * Returns the binary string representation of the UUID * - * @psalm-return non-empty-string + * @return non-empty-string */ public function getBytes(): string; @@ -96,14 +96,14 @@ interface UuidInterface extends /** * Returns the string standard representation of the UUID * - * @psalm-return non-empty-string + * @return non-empty-string */ public function toString(): string; /** * Casts the UUID to the string standard representation * - * @psalm-return non-empty-string + * @return non-empty-string */ public function __toString(): string; } diff --git a/src/Validator/GenericValidator.php b/src/Validator/GenericValidator.php index fd60955..36fb56e 100644 --- a/src/Validator/GenericValidator.php +++ b/src/Validator/GenericValidator.php @@ -22,7 +22,7 @@ use function str_replace; /** * GenericValidator validates strings as UUIDs of any variant * - * @psalm-immutable + * @immutable */ final class GenericValidator implements ValidatorInterface { @@ -32,9 +32,7 @@ final class GenericValidator implements ValidatorInterface private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\z'; /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty + * @return non-empty-string */ public function getPattern(): string { diff --git a/src/Validator/ValidatorInterface.php b/src/Validator/ValidatorInterface.php index 3d4bd6f..f125513 100644 --- a/src/Validator/ValidatorInterface.php +++ b/src/Validator/ValidatorInterface.php @@ -17,16 +17,14 @@ namespace Ramsey\Uuid\Validator; /** * A validator validates a string as a proper UUID * - * @psalm-immutable + * @immutable */ interface ValidatorInterface { /** * Returns the regular expression pattern used by this validator * - * @return string The regular expression pattern this validator uses - * - * @psalm-return non-empty-string + * @return non-empty-string The regular expression pattern this validator uses */ public function getPattern(): string; diff --git a/src/functions.php b/src/functions.php index 1b3ce00..a7a236c 100644 --- a/src/functions.php +++ b/src/functions.php @@ -71,9 +71,6 @@ function v2( * @param string|UuidInterface $ns The namespace (must be a valid UUID) * * @return non-empty-string Version 3 UUID as a string - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners */ function v3($ns, string $name): string { @@ -97,9 +94,6 @@ function v4(): string * @param string|UuidInterface $ns The namespace (must be a valid UUID) * * @return non-empty-string Version 5 UUID as a string - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners */ function v5($ns, string $name): string { diff --git a/tests/benchmark/UuidSerializationBench.php b/tests/benchmark/UuidSerializationBench.php index ea02bbd..a137280 100644 --- a/tests/benchmark/UuidSerializationBench.php +++ b/tests/benchmark/UuidSerializationBench.php @@ -133,8 +133,7 @@ final class UuidSerializationBench /** @var UuidInterface */ private $uuid; /** - * @var UuidInterface[] - * @psalm-var non-empty-list + * @var non-empty-list */ private $promiscuousUuids; /** @var string */ @@ -144,8 +143,7 @@ final class UuidSerializationBench /** @var string */ private $serializedUuid; /** - * @var string[] - * @psalm-var non-empty-list + * @var non-empty-list */ private $serializedPromiscuousUuids; diff --git a/tests/benchmark/UuidStringConversionBench.php b/tests/benchmark/UuidStringConversionBench.php index 303b5ae..d7c098c 100644 --- a/tests/benchmark/UuidStringConversionBench.php +++ b/tests/benchmark/UuidStringConversionBench.php @@ -132,28 +132,23 @@ final class UuidStringConversionBench /** @var UuidInterface */ private $uuid; /** - * @var UuidInterface[] - * @psalm-var non-empty-list + * @var non-empty-list */ private $promiscuousUuids; /** - * @var string - * @psalm-var non-empty-string + * @var non-empty-string */ private $tinyUuidBytes; /** - * @var string - * @psalm-var non-empty-string + * @var non-empty-string */ private $hugeUuidBytes; /** - * @var string - * @psalm-var non-empty-string + * @var non-empty-string */ private $uuidBytes; /** - * @var string[] - * @psalm-var non-empty-list + * @var non-empty-list */ private $promiscuousUuidsBytes; diff --git a/tests/static-analysis/UuidIsImmutable.php b/tests/static-analysis/UuidIsImmutable.php index 6c17348..e6fa5ac 100644 --- a/tests/static-analysis/UuidIsImmutable.php +++ b/tests/static-analysis/UuidIsImmutable.php @@ -29,13 +29,11 @@ use Ramsey\Uuid\UuidInterface; */ final class UuidIsImmutable { - /** @psalm-pure */ public static function pureCompareTo(UuidInterface $a, UuidInterface $b): int { return $a->compareTo($b); } - /** @psalm-pure */ public static function pureEquals(UuidInterface $a, ?object $b): bool { return $a->equals($b); @@ -43,9 +41,6 @@ final class UuidIsImmutable /** * @return mixed[] - * - * @psalm-pure - * @psalm-suppress DeprecatedMethod */ public static function pureGetters(UuidInterface $a): array { @@ -76,8 +71,6 @@ final class UuidIsImmutable /** * @return UuidInterface[]|bool[] - * - * @psalm-pure */ public static function pureStaticUuidApi(): array { @@ -90,7 +83,6 @@ final class UuidIsImmutable ]; } - /** @psalm-pure */ public static function uuid3IsPure(): UuidInterface { return Uuid::uuid3( @@ -99,7 +91,6 @@ final class UuidIsImmutable ); } - /** @psalm-pure */ public static function uuid5IsPure(): UuidInterface { return Uuid::uuid5( diff --git a/tests/static-analysis/UuidIsNeverEmpty.php b/tests/static-analysis/UuidIsNeverEmpty.php index 0ff395f..2fbc1b5 100644 --- a/tests/static-analysis/UuidIsNeverEmpty.php +++ b/tests/static-analysis/UuidIsNeverEmpty.php @@ -22,13 +22,13 @@ use Ramsey\Uuid\UuidInterface; */ final class UuidIsNeverEmpty { - /** @psalm-return non-empty-string */ + /** @return non-empty-string */ public function bytesAreNeverEmpty(UuidInterface $uuid): string { return $uuid->getBytes(); } - /** @psalm-return non-empty-string */ + /** @return non-empty-string */ public function stringIsNeverEmpty(UuidInterface $uuid): string { return $uuid->toString(); diff --git a/tests/static-analysis/stubs.php b/tests/static-analysis/stubs.php index a8e9047..dda2e45 100644 --- a/tests/static-analysis/stubs.php +++ b/tests/static-analysis/stubs.php @@ -16,18 +16,14 @@ if (!defined('UUID_TYPE_RANDOM')) { define('UUID_TYPE_RANDOM', 4); } if (!function_exists('uuid_create')) { - /** @psalm-suppress all */ function uuid_create(int $uuid_type=UUID_TYPE_DEFAULT): string {} // @phpstan-ignore-line } if (!function_exists('uuid_generate_md5')) { - /** @psalm-suppress all */ function uuid_generate_md5(string $uuid_ns, string $name): string {} // @phpstan-ignore-line } if (!function_exists('uuid_generate_sha1')) { - /** @psalm-suppress all */ function uuid_generate_sha1(string $uuid_ns, string $name): string {} // @phpstan-ignore-line } if (!function_exists('uuid_parse')) { - /** @psalm-suppress all */ function uuid_parse(string $uuid): string {} // @phpstan-ignore-line }