diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 7093b9ea..d7de90ee 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -136,4 +136,4 @@ jobs: composer require --dev maglnet/composer-require-checker ^3.0 - name: Run composer-require-checker - run: ./vendor/bin/composer-require-checker + run: ./vendor/bin/composer-require-checker --config-file=./php-require-checker.config.json diff --git a/baseline.xml b/baseline.xml new file mode 100644 index 00000000..59664d13 --- /dev/null +++ b/baseline.xml @@ -0,0 +1,225 @@ + + + + + , + , + , + , + , + , + , + => + => + => + => + => + => + => + public + } + + + + + $ancestor + $classConstant + $classConstant + $classConstant + $constant + $importedTrait + $interface + $interface + $interfaceName + $interfaceName + $interfaceName + $interfaceName + $method + $method + $method + $method + $methodNode + $name + $node + $node + $parentClass + $property + $property + $property + $property + $property + $property + $propertyProperty + $reflectionClass + $reflectionClass + $stmt + $trait + $traitUse + ) + ) + ) + ) + ) + ) + ) + ) + ) + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ? + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + fn + + + + + $node + $node + $stmt + ) + , + , + fn + fn + + + + + => + fn + + + + + $p + , + ... + fn + fn + + + + + $type + $type + ) + ) + , + , + , + : + => + fn + fn + + + + + $implementingClassName + $methodName + ) + , + , + => + => + + + + + $implementingClassName + $instance + , + , + + + + + $type + $type + ) + ) + , + , + , + : + => + fn + fn + + + + + $sourceLocator + ) + , + ... + fn + fn + + + + + : + fn + + + diff --git a/composer.json b/composer.json index 229f91ca..395f8828 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,8 @@ "pagerfanta/pagerfanta": "^1.1", "ray/aop": "^2.10.4", "ray/aura-sql-module": "^1.10", - "ray/di": "^2.12" + "ray/di": "^2.12", + "roave/better-reflection": "^4.0 || 5.0.x-dev" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", @@ -50,8 +51,8 @@ "./vendor/bin/psalm --clear-cache" ], "sa": [ - "./vendor/bin/phpstan analyse -c phpstan.neon", - "psalm --show-info=true" + "psalm --show-info=true", + "./vendor/bin/phpstan analyse -c phpstan.neon" ], "tests": [ "@cs", diff --git a/php-require-checker.config.json b/php-require-checker.config.json new file mode 100644 index 00000000..2dcbd1a7 --- /dev/null +++ b/php-require-checker.config.json @@ -0,0 +1,8 @@ +{ + "symbol-whitelist": [ + "null", "true", "false", + "static", "self", "parent", + "array", "string", "int", "float", "bool", "iterable", "callable", "void", "object", + "Attribute", "ReflectionAttribute", "Roave\\BetterReflection\\Reflector\\DefaultReflector" + ] +} \ No newline at end of file diff --git a/phpcs.xml b/phpcs.xml index f43fa2c0..dd74c95d 100755 --- a/phpcs.xml +++ b/phpcs.xml @@ -1,7 +1,6 @@ @@ -9,7 +8,7 @@ - + @@ -18,42 +17,35 @@ src tests - */tmp/* - */tests/Fake/* + */tests/tmp/* - - - - - - - - - + + - + - - + - - - - + + + + + + + - @@ -64,6 +56,18 @@ + + + + + + + + + + + tests/* + @@ -71,4 +75,11 @@ + + + + + + */Fake/* + */tmp/* diff --git a/phpstan.neon b/phpstan.neon index b8d7bca8..403096e7 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -5,4 +5,5 @@ parameters: - tests excludePaths: - tests/Fake/* + - tests/tmp/* - src/MediaQueryModule.php diff --git a/psalm.xml b/psalm.xml index c29f5771..59b65732 100644 --- a/psalm.xml +++ b/psalm.xml @@ -5,12 +5,12 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" + errorBaseline="baseline.xml" > - diff --git a/src/ClassesInDirectories.php b/src/ClassesInDirectories.php new file mode 100644 index 00000000..81c83d0c --- /dev/null +++ b/src/ClassesInDirectories.php @@ -0,0 +1,60 @@ + $directories + * + * @return Generator + * + * This function code is taken from https://github.com/WyriHaximus/php-list-classes-in-directory/blob/master/src/functions.php + * and modified for roave/better-reflection 5.x + * + * @see https://github.com/WyriHaximus/php-list-classes-in-directory + * @psalm-suppress MixedReturnTypeCoercion + * @phpstan-ignore-next-line/ + */ + public static function list(string ...$directories): iterable + { + /** @var list $directories */ + $sourceLocator = new AggregateSourceLocator([ + new DirectoriesSourceLocator( + $directories, + (new BetterReflection())->astLocator() + ), + // ↓ required to autoload parent classes/interface from another directory than /src (e.g. /vendor) + new AutoloadSourceLocator((new BetterReflection())->astLocator()), + ]); + + if (PHP_VERSION_ID >= 80000) { + foreach ((new DefaultReflector($sourceLocator))->reflectAllClasses() as $class) { + yield $class->getName(); + } + + return; + } + + /** @psalm-suppress all */ + foreach ((new ClassReflector($sourceLocator))->getAllClasses() as $class) { // @phpstan-ignore-line + yield $class->getName(); + } + } +} diff --git a/src/GetClassName.php b/src/GetClassName.php deleted file mode 100644 index 707d6364..00000000 --- a/src/GetClassName.php +++ /dev/null @@ -1,26 +0,0 @@ -getDefaultValue(); } - $object = $this->injector->getInstance($type->getName()); - assert(is_object($object)); + $object = $this->injector->getInstance($type = $type->getName()); // @phpstan-ignore-line return $object; } diff --git a/src/Queries.php b/src/Queries.php index 89ba15da..97a702c2 100644 --- a/src/Queries.php +++ b/src/Queries.php @@ -4,22 +4,11 @@ namespace Ray\MediaQuery; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; -use RecursiveRegexIterator; -use RegexIterator; -use SplFileInfo; - -use function assert; -use function interface_exists; -use function is_dir; -use function sort; - final class Queries { /** * @var list - * @psalm-readonly + * @readonly */ public $classes; @@ -41,44 +30,12 @@ public static function fromClasses(array $mediaQueryClasses): self public static function fromDir(string $queryDir): self { - /** @var array $cache */ - static $cache; - - if (isset($cache[$queryDir])) { - return $cache[$queryDir]; - } - - assert(is_dir($queryDir)); - $getClassName = new GetClassName(); $classes = []; - /** @var SplFileInfo $file */ - foreach (self::files($queryDir) as $file) { - $class = ($getClassName)((string) $file->getRealPath()); - if ($class) { - assert(interface_exists($class)); - $classes[] = $class; - } + $genClasses = ClassesInDirectories::list($queryDir); + foreach ($genClasses as $class) { + $classes[] = $class; } - sort($classes); - $queries = new self($classes); - $cache[$queryDir] = $queries; - - return $queries; - } - - private static function files(string $dir): RegexIterator - { - return new RegexIterator( - new RecursiveIteratorIterator( - new RecursiveDirectoryIterator( - $dir, - /** @psalm-suppress ArgumentTypeCoercion */ - ), - RecursiveIteratorIterator::LEAVES_ONLY - ), - '/^.+\.php$/', - RecursiveRegexIterator::MATCH - ); + return new self($classes); } } diff --git a/tests/Fake/GetClassNameTest.php b/tests/Fake/GetClassNameTest.php deleted file mode 100644 index 442420f8..00000000 --- a/tests/Fake/GetClassNameTest.php +++ /dev/null @@ -1,14 +0,0 @@ -assertSame('', $className); - } -} diff --git a/tests/QueriesTest.php b/tests/QueriesTest.php index 9888b4aa..995a818d 100644 --- a/tests/QueriesTest.php +++ b/tests/QueriesTest.php @@ -8,6 +8,8 @@ use Ray\MediaQuery\FromDir\TodoAddInterface; use Ray\MediaQuery\FromDir\TodoItemInterface; +use function sort; + class QueriesTest extends TestCase { public function testFromClasses(): void @@ -20,6 +22,7 @@ public function testFromClasses(): void public function testFromDir(): void { $mediaQueries = Queries::fromDir(__DIR__ . '/Fake/FromDir'); + sort($mediaQueries->classes); $this->assertSame([ TodoAddInterface::class, TodoItemInterface::class, @@ -29,6 +32,7 @@ public function testFromDir(): void public function testFromDirCache(): void { $mediaQueries = Queries::fromDir(__DIR__ . '/Fake/FromDir'); + sort($mediaQueries->classes); $this->assertSame([ TodoAddInterface::class, TodoItemInterface::class, diff --git a/vendor-bin/tools/composer.lock b/vendor-bin/tools/composer.lock index 2adc701a..3b088c56 100644 --- a/vendor-bin/tools/composer.lock +++ b/vendor-bin/tools/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "amphp/amp", - "version": "v2.6.0", + "version": "v2.6.1", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc" + "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc", - "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc", + "url": "https://api.github.com/repos/amphp/amp/zipball/c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", + "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", "shasum": "" }, "require": { @@ -85,7 +85,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.0" + "source": "https://github.com/amphp/amp/tree/v2.6.1" }, "funding": [ { @@ -93,7 +93,7 @@ "type": "github" } ], - "time": "2021-07-16T20:06:06+00:00" + "time": "2021-09-23T18:43:08+00:00" }, { "name": "amphp/byte-stream", @@ -247,16 +247,16 @@ }, { "name": "composer/semver", - "version": "3.2.5", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" + "reference": "83e511e247de329283478496f7a1e114c9517506" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", + "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", + "reference": "83e511e247de329283478496f7a1e114c9517506", "shasum": "" }, "require": { @@ -308,7 +308,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" + "source": "https://github.com/composer/semver/tree/3.2.6" }, "funding": [ { @@ -324,7 +324,7 @@ "type": "tidelift" } ], - "time": "2021-05-24T12:41:47+00:00" + "time": "2021-10-25T11:34:17+00:00" }, { "name": "composer/xdebug-handler", @@ -833,16 +833,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.12.0", + "version": "v4.13.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/63a79e8daa781cac14e5195e63ed8ae231dd10fd", + "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd", "shasum": "" }, "require": { @@ -883,9 +883,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.1" }, - "time": "2021-07-21T10:44:31+00:00" + "time": "2021-11-03T20:52:16+00:00" }, { "name": "openlss/lib-array2xml", @@ -942,16 +942,16 @@ }, { "name": "pdepend/pdepend", - "version": "2.10.0", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "1fd30f4352b630ad53fec3fd5e8b8ba760f85596" + "reference": "30452fdabb3dfca89f4bf977abc44adc5391e062" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1fd30f4352b630ad53fec3fd5e8b8ba760f85596", - "reference": "1fd30f4352b630ad53fec3fd5e8b8ba760f85596", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/30452fdabb3dfca89f4bf977abc44adc5391e062", + "reference": "30452fdabb3dfca89f4bf977abc44adc5391e062", "shasum": "" }, "require": { @@ -987,7 +987,7 @@ "description": "Official version of pdepend to be handled with Composer", "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.10.0" + "source": "https://github.com/pdepend/pdepend/tree/2.10.1" }, "funding": [ { @@ -995,7 +995,7 @@ "type": "tidelift" } ], - "time": "2021-07-20T09:56:09+00:00" + "time": "2021-10-11T12:15:18+00:00" }, { "name": "phar-io/manifest", @@ -1163,16 +1163,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -1183,7 +1183,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -1213,22 +1214,22 @@ "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/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", "shasum": "" }, "require": { @@ -1236,7 +1237,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -1262,9 +1264,9 @@ "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.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2021-10-02T14:08:47+00:00" }, { "name": "phpmd/phpmd", @@ -1602,23 +1604,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", + "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.13.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -1667,7 +1669,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.8" }, "funding": [ { @@ -1675,7 +1677,7 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2021-10-30T08:01:38+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1920,16 +1922,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.9", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", "shasum": "" }, "require": { @@ -1945,7 +1947,7 @@ "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.7", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -2007,7 +2009,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" }, "funding": [ { @@ -2019,7 +2021,7 @@ "type": "github" } ], - "time": "2021-08-31T06:47:40+00:00" + "time": "2021-09-25T07:38:51+00:00" }, { "name": "psalm/plugin-phpunit", @@ -2079,20 +2081,20 @@ }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -2121,9 +2123,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/log", @@ -2604,16 +2606,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -2662,14 +2664,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -2677,7 +2679,7 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", @@ -3028,7 +3030,6 @@ "type": "github" } ], - "abandoned": true, "time": "2020-09-28T06:45:17+00:00" }, { @@ -3203,16 +3204,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e", + "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e", "shasum": "" }, "require": { @@ -3255,20 +3256,20 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-10-11T04:00:11+00:00" }, { "name": "symfony/config", - "version": "v5.3.4", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4268f3059c904c61636275182707f81645517a37" + "reference": "ac23c2f24d5634966d665d836c3933d54347e5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4268f3059c904c61636275182707f81645517a37", - "reference": "4268f3059c904c61636275182707f81645517a37", + "url": "https://api.github.com/repos/symfony/config/zipball/ac23c2f24d5634966d665d836c3933d54347e5d4", + "reference": "ac23c2f24d5634966d665d836c3933d54347e5d4", "shasum": "" }, "require": { @@ -3318,7 +3319,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.3.4" + "source": "https://github.com/symfony/config/tree/v5.3.10" }, "funding": [ { @@ -3334,7 +3335,7 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2021-10-22T09:06:52+00:00" }, { "name": "symfony/console", @@ -3436,16 +3437,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v5.3.7", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "a665946279f566d94ed5eb98999cfa65c6fa5a78" + "reference": "be833dd336c248ef2bdabf24665351455f52afdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a665946279f566d94ed5eb98999cfa65c6fa5a78", - "reference": "a665946279f566d94ed5eb98999cfa65c6fa5a78", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/be833dd336c248ef2bdabf24665351455f52afdb", + "reference": "be833dd336c248ef2bdabf24665351455f52afdb", "shasum": "" }, "require": { @@ -3504,7 +3505,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.7" + "source": "https://github.com/symfony/dependency-injection/tree/v5.3.10" }, "funding": [ { @@ -3520,7 +3521,7 @@ "type": "tidelift" } ], - "time": "2021-08-02T16:16:27+00:00" + "time": "2021-10-22T18:11:05+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4298,16 +4299,16 @@ }, { "name": "symfony/string", - "version": "v5.3.7", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" + "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", + "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", "shasum": "" }, "require": { @@ -4361,7 +4362,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.7" + "source": "https://github.com/symfony/string/tree/v5.3.10" }, "funding": [ { @@ -4377,7 +4378,7 @@ "type": "tidelift" } ], - "time": "2021-08-26T08:00:08+00:00" + "time": "2021-10-27T18:21:46+00:00" }, { "name": "theseer/tokenizer", @@ -4431,16 +4432,16 @@ }, { "name": "vimeo/psalm", - "version": "4.10.0", + "version": "4.12.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa" + "reference": "e42bc4a23f67acba28a23bb09c348e2ff38a1d87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/916b098b008f6de4543892b1e0651c1c3b92cbfa", - "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/e42bc4a23f67acba28a23bb09c348e2ff38a1d87", + "reference": "e42bc4a23f67acba28a23bb09c348e2ff38a1d87", "shasum": "" }, "require": { @@ -4460,11 +4461,11 @@ "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.12", + "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", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", "webmozart/path-util": "^2.3" }, "provide": { @@ -4482,7 +4483,7 @@ "psalm/plugin-phpunit": "^0.16", "slevomat/coding-standard": "^7.0", "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0", + "symfony/process": "^4.3 || ^5.0 || ^6.0", "weirdan/prophecy-shim": "^1.0 || ^2.0" }, "suggest": { @@ -4530,9 +4531,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.10.0" + "source": "https://github.com/vimeo/psalm/tree/4.12.0" }, - "time": "2021-09-04T21:00:09+00:00" + "time": "2021-11-06T10:31:17+00:00" }, { "name": "webmozart/assert", @@ -4640,6 +4641,7 @@ "issues": "https://github.com/webmozart/path-util/issues", "source": "https://github.com/webmozart/path-util/tree/2.3.0" }, + "abandoned": "symfony/filesystem", "time": "2015-12-17T08:42:14+00:00" } ],