From 98d7a1469aeea04faaeb0a814bcad9fdf5280523 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Wed, 10 May 2023 19:38:20 +0200 Subject: [PATCH 01/23] chore: update package name --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 1ebcffb..4f8c8b9 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "quant-php/quant", + "name": "quant/quant", "type": "library", "description": "PHP library", "keywords": ["framework"], From 998cd3ffbc5d5ddbdcf28286eb59c082d94018c2 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 19:43:54 +0200 Subject: [PATCH 02/23] refactor: update AccessorTrait in Core-package register quant/phpstan as extension --- .../Core/Tests/Trait/AccessorTraitTest.php | 30 ++-- src/Quant/Core/Tests/Trait/Resources/A.php | 12 -- src/Quant/Core/Tests/Trait/Resources/B.php | 17 +- src/Quant/Core/Tests/Trait/Resources/C.php | 12 ++ .../Trait/Resources/ClassHasAttributes.php | 13 -- src/Quant/Core/Trait/AccessorTrait.php | 67 +++++--- src/Quant/Core/composer.json | 14 +- src/Quant/Core/composer.lock | 152 +++++++++++++++--- src/Quant/Core/phpstan.neon | 3 +- 9 files changed, 221 insertions(+), 99 deletions(-) diff --git a/src/Quant/Core/Tests/Trait/AccessorTraitTest.php b/src/Quant/Core/Tests/Trait/AccessorTraitTest.php index e615b6c..8eb01de 100644 --- a/src/Quant/Core/Tests/Trait/AccessorTraitTest.php +++ b/src/Quant/Core/Tests/Trait/AccessorTraitTest.php @@ -94,6 +94,8 @@ public function testGetProtectedPropertyOnA(): void $this->expectException(BadMethodCallException::class); $inst = $this->createA(); + + /* @phpstan-ignore-next-line */ $inst->getProtectedVar(); } @@ -101,6 +103,8 @@ public function testSetProtectedPropertyOnA(): void { $this->expectException(BadMethodCallException::class); $inst = $this->createA(); + + /* @phpstan-ignore-next-line */ $inst->setProtectedVar("foo"); } @@ -134,22 +138,24 @@ public function testC(): void "foo" => "Hello World" ]; - $inst = $this->createC($args_1); + $c = $this->createC($args_1); - $inst->setPrivateVar(123); - $this->assertSame(123, $inst->getPrivateVar()); + $c->setPrivateVar(123); + $this->assertSame(123, $c->getPrivateVar()); + + $this->assertNotSame("updated", $c->proxyProtectedVar()); + $c->setProxyProtectedVar("updated"); + $this->assertSame("updated", $c->proxyProtectedVar()); - $this->assertNotSame("updated", $inst->proxyProtectedVar()); - $inst->setProxyProtectedVar("updated"); - $this->assertSame("updated", $inst->proxyProtectedVar()); + $this->assertNotSame("new value", $c->getGuarded()); + $c->setGuarded("new value"); + $this->assertSame("new value", $c->getGuarded()); - $this->assertNotSame("new value", $inst->getGuarded()); - $inst->setGuarded("new value"); - $this->assertSame("new value", $inst->getGuarded()); + $this->assertNotSame("new value", $c->getProtectedGuard()); + $c->setProtectedGuard("will be ignored"); + $this->assertSame("protected guard", $c->getProtectedGuard()); - $this->assertNotSame("new value", $inst->getProtectedGuard()); - $inst->setProtectedGuard("will be ignored"); - $this->assertSame("protected guard", $inst->getProtectedGuard()); + $this->assertInstanceOf(A::class, $c->proxyAProtectedVar()); } diff --git a/src/Quant/Core/Tests/Trait/Resources/A.php b/src/Quant/Core/Tests/Trait/Resources/A.php index fc60a14..c6c1ec1 100644 --- a/src/Quant/Core/Tests/Trait/Resources/A.php +++ b/src/Quant/Core/Tests/Trait/Resources/A.php @@ -20,18 +20,6 @@ use ValueError; /** - * @method A setPrivateVar(int $b) - * @method int getPrivateVar() - * @method A setFoo(string $a) - * @method A setFoobar(string $b) - * @method string getFoo() - * @method string getProtectedVar() - * @method A setProtectedVar(string $a) - * @method A setValueErrorTrigger(int $a). - * @method bool isBool() - * @method string getNotBool() - * @method A setProtectedGuard(string $s) - * @method string getProtectedGuard() */ class A { diff --git a/src/Quant/Core/Tests/Trait/Resources/B.php b/src/Quant/Core/Tests/Trait/Resources/B.php index 53e6cb1..74f4d14 100644 --- a/src/Quant/Core/Tests/Trait/Resources/B.php +++ b/src/Quant/Core/Tests/Trait/Resources/B.php @@ -17,29 +17,14 @@ use Quant\Core\Attribute\Setter; use Quant\Core\Lang\Modifier; -/** - * @method string getGuarded() - * @method B setGuarded(string $f) - * - * @method bool isValid() - * @method B setValid(bool $b) - * - * @method string getFoobar() - * @method B setFoobar(string $s) - * - * @method B setPublicGuard(string $s) - * @method string getPublicGuard() - * - */ class B extends A { - /* @phpstan-ignore-next-line */ #[Getter(Modifier::PRIVATE)] #[Setter(Modifier::PRIVATE)] private bool $valid = false; #[Getter] #[Setter] public string $foobar = "Ok"; - /* @phpstan-ignore-next-line */ + #[Setter(Modifier::PUBLIC)] #[Getter(Modifier::PUBLIC)] private string $guarded = ""; /* @phpstan-ignore-next-line */ diff --git a/src/Quant/Core/Tests/Trait/Resources/C.php b/src/Quant/Core/Tests/Trait/Resources/C.php index 8e6e668..2c5aeb6 100644 --- a/src/Quant/Core/Tests/Trait/Resources/C.php +++ b/src/Quant/Core/Tests/Trait/Resources/C.php @@ -22,4 +22,16 @@ protected function applyProtectedGuard(string $f): string { return "protected guard"; } + + protected function proxyApplyPublicGuard(): string + { + $b = new B(""); + return $b->applyPublicGuard(""); + } + + public function proxyAProtectedVar(): A + { + $b = new B(""); + return $b->setProtectedVar($b->applyProtectedGuard("k")); + } } diff --git a/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php b/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php index b920016..3d92e79 100644 --- a/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php +++ b/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php @@ -18,19 +18,6 @@ use Quant\Core\Attribute\Getter; use Quant\Core\Attribute\Setter; -/** - * @method ClassHasAttributes setFoo(string $a) - * @method string getFoo() - * - * @method ClassHasAttributes setFoobar(string $b) - * @method string getFoobar() - * - * @method ClassHasAttributes setSnafu(string $b) - * @method string getSnafu() - * - * @method ClassHasAttributes setBar(string $b) - * @method string getBar() - */ #[Getter] #[Setter] class ClassHasAttributes diff --git a/src/Quant/Core/Trait/AccessorTrait.php b/src/Quant/Core/Trait/AccessorTrait.php index ea3cb6a..061300c 100644 --- a/src/Quant/Core/Trait/AccessorTrait.php +++ b/src/Quant/Core/Trait/AccessorTrait.php @@ -14,12 +14,14 @@ namespace Quant\Core\Trait; use BadMethodCallException; +use Closure; use Quant\Core\Lang\Modifier; use Quant\Core\Attribute\Getter; use Quant\Core\Attribute\Setter; use ReflectionClass; use ReflectionParameter; use ReflectionProperty; +use ReflectionType; use TypeError; use ValueError; @@ -31,12 +33,14 @@ trait AccessorTrait private const IS = "is"; /** - * @var array|string>> + * @var array|null */ private ?array $setterCache = null; /** - * @var array|string>> + * @var array|null */ private ?array $getterCache = null; @@ -67,13 +71,16 @@ public function __call($method, $args): mixed } } else { if (($propertyCfg = $this->isCallable($isBooleanGetter ? self::IS : self::GET, $property))) { - - /** - * @var string $decl - */ - $decl = $propertyCfg["decl"]; - $fn = \Closure::bind(fn ($property) => $this->{$property}, $this, $decl); - return $fn($property); + if ($propertyCfg["propertyModifier"] === ReflectionProperty::IS_PRIVATE) { + /** + * @var string $decl + */ + $decl = $propertyCfg["decl"]; + $fn = Closure::bind(fn ($property) => $this->{$property}, $this, $decl); + return $fn($property); + } + + return $this->{$property}; } } } @@ -85,7 +92,8 @@ public function __call($method, $args): mixed /** * @param string $accessType * @param string $property - * @return false|array|string> + * + * @return false|array{accessorModifier: Modifier, propertyType: string, propertyModifier: int, decl: string} */ private function isCallable(string $accessType, string $property): false|array { @@ -102,7 +110,7 @@ private function isCallable(string $accessType, string $property): false|array return false; } - $type = $propertyCfg["type"]; + $type = $propertyCfg["propertyType"]; if ( $type === "bool" && $accessType === self::GET || $type !== "bool" && $accessType === self::IS @@ -110,7 +118,7 @@ private function isCallable(string $accessType, string $property): false|array return false; } - $accessLevel = $propertyCfg["args"][0] ?? Modifier::PUBLIC; + $accessLevel = $propertyCfg["accessorModifier"]; /* @phpstan-ignore-next-line */ if ($accessLevel === Modifier::PROTECTED || $accessLevel === Modifier::PRIVATE) { @@ -118,7 +126,10 @@ private function isCallable(string $accessType, string $property): false|array if ( /* @phpstan-ignore-next-line */ - $accessLevel === Modifier::PROTECTED && !($this instanceof $bt[2]["class"]) + $accessLevel === Modifier::PROTECTED && ($this instanceof $propertyCfg["decl"]) && + + /* @phpstan-ignore-next-line */ + !is_a($bt[2]["class"], $propertyCfg["decl"], true) ) { return false; } @@ -137,7 +148,7 @@ private function isCallable(string $accessType, string $property): false|array /** * @param string $property * @param mixed $value - * @param array|string> $propertyCfg + * @param array{accessorModifier: Modifier, propertyType: string, propertyModifier: int, decl: string} $propertyCfg * @return void * */ @@ -155,13 +166,17 @@ private function applyFromSetter(string $property, mixed $value, array $property } elseif (method_exists($declaringClass, $applier)) { // if the applier was not found, it is possible that it was declared // as private in the property's declaring class - $fn = \Closure::bind(fn ($value) => $this->{$applier}($value), $this, $declaringClass); + $fn = Closure::bind(fn ($value) => $this->{$applier}($value), $this, $declaringClass); $newValue = $fn($newValue); } - // $propertyCfg["property"]->setValue($this, $newValue); - $fn = \Closure::bind(fn ($newValue) => $this->{$property} = $newValue, $this, $declaringClass); - $fn($newValue); + if ($propertyCfg["propertyModifier"] === ReflectionProperty::IS_PRIVATE) { + // $propertyCfg["property"]->setValue($this, $newValue); + $fn = Closure::bind(fn ($newValue) => $this->{$property} = $newValue, $this, $declaringClass); + $fn($newValue); + } else { + $this->{$property} = $newValue; + } } @@ -184,7 +199,7 @@ private function applyProperties(array $args): void /** * @param string $propertyName - * @return array|string>|false + * @return array{accessorModifier: Modifier, propertyType: string, propertyModifier: int, decl: string}|false */ private function hasSetterAttribute(string $propertyName): array|false { @@ -198,7 +213,7 @@ private function hasSetterAttribute(string $propertyName): array|false /** * @param string $propertyName - * @return array|string>|false + * @return array{accessorModifier: Modifier, propertyType: string, propertyModifier: int, decl: string}|false */ private function hasGetterAttribute(string $propertyName): array|false { @@ -211,7 +226,8 @@ private function hasGetterAttribute(string $propertyName): array|false /** - * @return array|string>> + * @return array */ private function cachePropertiesWithAccessorAttribute(string $accessorClass): array { @@ -236,11 +252,16 @@ private function cachePropertiesWithAccessorAttribute(string $accessorClass): ar } if (!empty($accessorAttribute) && ($property instanceof ReflectionProperty)) { + $modArgs = $accessorAttribute[0]->getArguments(); + $accessorModifier = $modArgs ? + ($modArgs[0] instanceof Modifier ? $modArgs[0] : Modifier::PUBLIC) : Modifier::PUBLIC; + $propBag[$propertyName] = [ - "args" => $accessorAttribute[0]->getArguments() ?: [], + "accessorModifier" => $accessorModifier, /*__toString vs getName */ /* @phpstan-ignore-next-line */ - "type" => $property->getType()?->getName(), + "propertyType" => $property->getType()?->getName(), + "propertyModifier" => $property->getModifiers(), "decl" => $property->getDeclaringClass()->getName() ]; } diff --git a/src/Quant/Core/composer.json b/src/Quant/Core/composer.json index 0c65f94..6d90cac 100644 --- a/src/Quant/Core/composer.json +++ b/src/Quant/Core/composer.json @@ -3,7 +3,7 @@ "type": "library", "description": "Low-level API providing contracts and base implementations for PHP projects.", "keywords": ["framework"], - "homepage": "https://quant-php.dev", + "homepage": "https://quant-php.dev/docs/packages/quant/core", "license": "MIT", "authors": [ { @@ -20,7 +20,10 @@ "phpunit/phpunit": "^10.1", "phpstan/phpstan": "^1.10", "squizlabs/php_codesniffer": "^3.7", - "phpbench/phpbench": "^1.2@dev" + "phpbench/phpbench": "^1.2@dev", + "doctrine/annotations": "2.0.x-dev", + "phpstan/extension-installer": "^1.3", + "quant/phpstan": "dev-main" }, "autoload": { "psr-4": { "Quant\\Core\\": "" }, @@ -28,5 +31,10 @@ "/Tests/" ] }, - "minimum-stability": "dev" + "minimum-stability": "dev", + "config": { + "allow-plugins": { + "phpstan/extension-installer": true + } + } } diff --git a/src/Quant/Core/composer.lock b/src/Quant/Core/composer.lock index 77788ef..36bac48 100644 --- a/src/Quant/Core/composer.lock +++ b/src/Quant/Core/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": "d74397db985b88d40fd78a6f347b766d", + "content-hash": "c4cbcbe3ba984283ff5d1414c86374d0", "packages": [], "packages-dev": [ { @@ -592,18 +592,67 @@ ], "time": "2023-03-24T08:52:55+00:00" }, + { + "name": "phpstan/extension-installer", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", + "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin", + "phpstan/extension-installer": { + "ignore": [ + "phpstan/phpstan-phpunit" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" + }, + "time": "2023-04-18T13:08:02+00:00" + }, { "name": "phpstan/phpstan", "version": "1.11.x-dev", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "0a6a7d6f2900c1d47c5a58ef36fe34e78ed4adcd" + "reference": "ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0a6a7d6f2900c1d47c5a58ef36fe34e78ed4adcd", - "reference": "0a6a7d6f2900c1d47c5a58ef36fe34e78ed4adcd", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2", + "reference": "ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2", "shasum": "" }, "require": { @@ -653,7 +702,7 @@ "type": "tidelift" } ], - "time": "2023-05-13T14:21:23+00:00" + "time": "2023-05-17T14:16:06+00:00" }, { "name": "phpunit/php-code-coverage", @@ -989,12 +1038,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a115d481e5187401d814ec8754fd5709ec2a49b4" + "reference": "f100f0c168df5c34ea3d71de47eb6f812efa521b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a115d481e5187401d814ec8754fd5709ec2a49b4", - "reference": "a115d481e5187401d814ec8754fd5709ec2a49b4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f100f0c168df5c34ea3d71de47eb6f812efa521b", + "reference": "f100f0c168df5c34ea3d71de47eb6f812efa521b", "shasum": "" }, "require": { @@ -1083,7 +1132,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T05:17:48+00:00" + "time": "2023-05-16T14:07:34+00:00" }, { "name": "psr/cache", @@ -1243,6 +1292,71 @@ }, "time": "2021-07-14T16:46:02+00:00" }, + { + "name": "quant/phpstan", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/quant-php/phpstan.git", + "reference": "99babc96ed86ad5c042cbc2a5b4229fc08e0fded" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quant-php/phpstan/zipball/99babc96ed86ad5c042cbc2a5b4229fc08e0fded", + "reference": "99babc96ed86ad5c042cbc2a5b4229fc08e0fded", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": "^8.2" + }, + "require-dev": { + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.1", + "quant/core": "dev-main", + "squizlabs/php_codesniffer": "^3.7" + }, + "default-branch": true, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Quant\\PHPStan\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thorsten Suckow-Homberg", + "email": "thorsten@suckow-homberg.de", + "homepage": "https://thorsten.suckow-homberg.de" + } + ], + "description": "phpstan extensions for quant", + "homepage": "https://quant-php.dev/docs/packages/quant/phpstan", + "keywords": [ + "PHPStan", + "extension", + "quant" + ], + "support": { + "issues": "https://github.com/quant-php/phpstan/issues", + "source": "https://github.com/quant-php/phpstan/tree/main" + }, + "time": "2023-05-18T16:52:05+00:00" + }, { "name": "sebastian/cli-parser", "version": "dev-main", @@ -2251,12 +2365,12 @@ "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "a26c071d00b415bba26cedd8f835fca6288cf6b9" + "reference": "2dc7b5981488502fed92df99c1460530d741e666" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/a26c071d00b415bba26cedd8f835fca6288cf6b9", - "reference": "a26c071d00b415bba26cedd8f835fca6288cf6b9", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2dc7b5981488502fed92df99c1460530d741e666", + "reference": "2dc7b5981488502fed92df99c1460530d741e666", "shasum": "" }, "require": { @@ -2301,7 +2415,7 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2023-05-07T04:45:11+00:00" + "time": "2023-05-18T08:37:09+00:00" }, { "name": "symfony/console", @@ -2309,12 +2423,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ea11261501f3b6afa1e782648e2a870af0a13c48" + "reference": "ce1cfc744b890cb2e658702770565c9c2a8abc4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ea11261501f3b6afa1e782648e2a870af0a13c48", - "reference": "ea11261501f3b6afa1e782648e2a870af0a13c48", + "url": "https://api.github.com/repos/symfony/console/zipball/ce1cfc744b890cb2e658702770565c9c2a8abc4c", + "reference": "ce1cfc744b890cb2e658702770565c9c2a8abc4c", "shasum": "" }, "require": { @@ -2391,7 +2505,7 @@ "type": "tidelift" } ], - "time": "2023-05-05T10:58:01+00:00" + "time": "2023-05-15T08:49:32+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3326,7 +3440,9 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "phpbench/phpbench": 20 + "phpbench/phpbench": 20, + "doctrine/annotations": 20, + "quant/phpstan": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/src/Quant/Core/phpstan.neon b/src/Quant/Core/phpstan.neon index cd505e3..af9b958 100644 --- a/src/Quant/Core/phpstan.neon +++ b/src/Quant/Core/phpstan.neon @@ -4,5 +4,4 @@ parameters: - vendor - /*/Benchmarks/* paths: - - . - + - . \ No newline at end of file From df96e70a1203e39e8839080ad261102095a58404 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 19:45:47 +0200 Subject: [PATCH 03/23] chore(docs): update Readme for Core-package --- src/Quant/Core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Quant/Core/README.md b/src/Quant/Core/README.md index 8368e1b..0ddd859 100644 --- a/src/Quant/Core/README.md +++ b/src/Quant/Core/README.md @@ -18,7 +18,7 @@ $ composer require quant/core ## Resources -* [Documentation](https://www.quant-php.dev/docs/api/packages/quant/core) +* [Documentation](https://www.quant-php.dev/docs/packages/quant/core) * [Report issues](https://github.com/quant-php/quant/issues) and [send Pull Requests](https://github.com/quant-php/quant/pulls) in the [main quant repository](https://github.com/quant-php/quant) From cc75a4cd1123166f17189bab225ec6d09ddfff36 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 19:52:13 +0200 Subject: [PATCH 04/23] fix(tests): tests fail since resources cannot be loaded --- .../PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php | 2 +- .../Properties/QuantAccessorAttributeReadWriteExtensionTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php b/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php index a99f0b4..b07501a 100644 --- a/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php +++ b/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php @@ -36,7 +36,7 @@ class AccessorMethodReflectionTest extends PHPStanTestCase */ public function testAccessorMethodReflection(): void { - include_once(__DIR__ . "../../data/ParentA.php"); + include_once(__DIR__ . "/../../data/ParentA.php"); $tests = [ [ diff --git a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php index 2c6730d..1b13e60 100644 --- a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php @@ -35,7 +35,7 @@ public function testRule(): void { $tip = 'See: https://phpstan.org/developing-extensions/always-read-written-properties'; - $this->analyse([__DIR__ . "../../../Data/A.php"], [ + $this->analyse([__DIR__ . "/../../../Data/A.php"], [ [ "Property Quant\PHPStan\Tests\Data\A::\$neverRead is never read, only written.", 37, From efcc0baf4d4a10cf71d530f9ae6eb26593a036bc Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 20:57:58 +0200 Subject: [PATCH 05/23] fix: tests fail due to lowercase directory spelling --- .../PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php b/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php index b07501a..1643045 100644 --- a/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php +++ b/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php @@ -36,7 +36,7 @@ class AccessorMethodReflectionTest extends PHPStanTestCase */ public function testAccessorMethodReflection(): void { - include_once(__DIR__ . "/../../data/ParentA.php"); + include_once(__DIR__ . "/../../Data/ParentA.php"); $tests = [ [ From af7d11ac3939b0797dd52147dad6693e04fe8250 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 21:07:53 +0200 Subject: [PATCH 06/23] fix(tests): relative directory mismatch --- .../PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php | 2 +- .../Properties/QuantAccessorAttributeReadWriteExtensionTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php b/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php index 1643045..06434d9 100644 --- a/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php +++ b/src/Quant/PHPStan/Tests/Reflection/AccessorMethodReflectionTest.php @@ -36,7 +36,7 @@ class AccessorMethodReflectionTest extends PHPStanTestCase */ public function testAccessorMethodReflection(): void { - include_once(__DIR__ . "/../../Data/ParentA.php"); + include_once(__DIR__ . "/../Data/ParentA.php"); $tests = [ [ diff --git a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php index 1b13e60..1fc1415 100644 --- a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php @@ -35,7 +35,7 @@ public function testRule(): void { $tip = 'See: https://phpstan.org/developing-extensions/always-read-written-properties'; - $this->analyse([__DIR__ . "/../../../Data/A.php"], [ + $this->analyse([__DIR__ . "/../../Data/A.php"], [ [ "Property Quant\PHPStan\Tests\Data\A::\$neverRead is never read, only written.", 37, From a0181231de8f9d721d2263bf604e7ed2e05d0cd3 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 23:08:39 +0200 Subject: [PATCH 07/23] refactor: update read/write extension to consider quant attributes on class level refs quant-php/phpstan#22 --- ...antAccessorAttributeReadWriteExtension.php | 16 ++++++++ src/Quant/PHPStan/Tests/Data/D.php | 38 +++++++++++++++++++ ...ccessorAttributeReadWriteExtensionTest.php | 13 +++++++ 3 files changed, 67 insertions(+) create mode 100644 src/Quant/PHPStan/Tests/Data/D.php diff --git a/src/Quant/PHPStan/Rules/Properties/QuantAccessorAttributeReadWriteExtension.php b/src/Quant/PHPStan/Rules/Properties/QuantAccessorAttributeReadWriteExtension.php index bed07e4..922787e 100644 --- a/src/Quant/PHPStan/Rules/Properties/QuantAccessorAttributeReadWriteExtension.php +++ b/src/Quant/PHPStan/Rules/Properties/QuantAccessorAttributeReadWriteExtension.php @@ -13,6 +13,8 @@ namespace Quant\PHPStan\Rules\Properties; +use PHPStan\BetterReflection\Reflection\Adapter\FakeReflectionAttribute; +use PHPStan\BetterReflection\Reflection\Adapter\ReflectionAttribute; use PHPStan\Reflection\PropertyReflection; use PHPStan\Rules\Properties\ReadWritePropertiesExtension; use Quant\Core\Attribute\Getter; @@ -67,8 +69,22 @@ protected function isQuantAttributed(PropertyReflection $property, string $prope return false; } + if ($this->hasQuantAttributes($reflectionClass->getAttributes())) { + return true; + } + $attributes = $reflectionProperty->getAttributes(); + return $this->hasQuantAttributes($attributes); + } + + /** + * @param array $attributes + * + * @return bool + */ + protected function hasQuantAttributes(array $attributes): bool + { foreach ($attributes as $attribute) { if (in_array($attribute->getName(), [Setter::class, Getter::class])) { return true; diff --git a/src/Quant/PHPStan/Tests/Data/D.php b/src/Quant/PHPStan/Tests/Data/D.php new file mode 100644 index 0000000..2289c00 --- /dev/null +++ b/src/Quant/PHPStan/Tests/Data/D.php @@ -0,0 +1,38 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\PHPStan\Tests\Data; + +use Quant\Core\Attribute\Getter; +use Quant\Core\Attribute\Setter; +use Quant\Core\Lang\Modifier; +use Quant\Core\Trait\AccessorTrait; + +#[Getter(Modifier::PROTECTED)] +#[Setter] +class D +{ + use AccessorTrait; + + private string $foo; + + private string $bar; +} + + +class ChildD extends D +{ + private string $foo; + + private string $bar; +} diff --git a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php index 1fc1415..e8f0cc2 100644 --- a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php @@ -47,6 +47,19 @@ public function testRule(): void $tip ] ]); + + $this->analyse([__DIR__ . "/../../Data/D.php"], [ + [ + "Property Quant\PHPStan\Tests\Data\ChildD::\$foo is unused.", + 35, + $tip + ], + [ + "Property Quant\PHPStan\Tests\Data\ChildD::\$bar is unused.", + 37, + $tip + ] + ]); } public static function getAdditionalConfigFiles(): array From 9a9a9e22215e09fe0aa07a452e5331f22b5a313b Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 23:33:31 +0200 Subject: [PATCH 08/23] fix: quant/phpstan not considering class-level attributes refs quant-php/quant#22 --- .../QuantAccessorMethodReflectionExtension.php | 11 ++++++++--- src/Quant/PHPStan/Tests/Data/D.php | 8 ++++++++ .../QuantAccessorMethodReflectionExtensionTest.php | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php b/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php index 8cabde3..0f9c00b 100644 --- a/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php +++ b/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php @@ -100,9 +100,8 @@ protected function getPropertyConfig(ClassReflection $classReflection, string $m { $reflectionClass = new ReflectionClass($classReflection->getName()); - $propName = ""; - $prefix = "get"; $propName = lcfirst(substr($methodName, 3)); + $prefix = "get"; switch (true) { case (str_starts_with($methodName, "set")): @@ -123,6 +122,8 @@ protected function getPropertyConfig(ClassReflection $classReflection, string $m return null; } + $classAttributes = $reflectionClass->getAttributes($prefix === "set" ? Setter::class : Getter::class); + if ($reflectionClass->hasProperty($propName)) { $reflectionProperty = $reflectionClass->getProperty($propName); @@ -131,7 +132,11 @@ protected function getPropertyConfig(ClassReflection $classReflection, string $m return null; } - $attributes = $reflectionProperty->getAttributes($prefix === "set" ? Setter::class : Getter::class); + if (empty($classAttributes)) { + $attributes = $reflectionProperty->getAttributes($prefix === "set" ? Setter::class : Getter::class); + } else { + $attributes = $classAttributes; + } if (empty($attributes)) { return null; diff --git a/src/Quant/PHPStan/Tests/Data/D.php b/src/Quant/PHPStan/Tests/Data/D.php index 2289c00..79cae57 100644 --- a/src/Quant/PHPStan/Tests/Data/D.php +++ b/src/Quant/PHPStan/Tests/Data/D.php @@ -35,4 +35,12 @@ class ChildD extends D private string $foo; private string $bar; + + public function run() + { + $d = new D(); + $d->getFoo(); + + $d->setBar("value")->getFoo(); + } } diff --git a/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php b/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php index 4db5aaf..1976ebc 100644 --- a/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php @@ -47,5 +47,8 @@ public function testRule(): void ["Call to an undefined method Quant\PHPStan\Tests\Data\B::notExisting().", 65], ["Call to an undefined method Quant\PHPStan\Tests\Data\A::notExisting().", 69] ]); + + $this->analyse([__DIR__ . "../../Data/D.php"], [ + ]); } } From 4eebb198c70357deedbba115faa4057975224ac3 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 18 May 2023 23:46:25 +0200 Subject: [PATCH 09/23] chore(style): move classes into individual files according to coding standards --- src/Quant/PHPStan/Tests/Data/ChildD.php | 29 +++++++++++++++++++ src/Quant/PHPStan/Tests/Data/D.php | 16 ---------- ...tAccessorMethodReflectionExtensionTest.php | 3 ++ ...ccessorAttributeReadWriteExtensionTest.php | 6 ++-- 4 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 src/Quant/PHPStan/Tests/Data/ChildD.php diff --git a/src/Quant/PHPStan/Tests/Data/ChildD.php b/src/Quant/PHPStan/Tests/Data/ChildD.php new file mode 100644 index 0000000..eb070b7 --- /dev/null +++ b/src/Quant/PHPStan/Tests/Data/ChildD.php @@ -0,0 +1,29 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\PHPStan\Tests\Data; + +class ChildD extends D +{ + private string $foo; + + private string $bar; + + public function run() + { + $d = new D(); + $d->getFoo(); + + $d->setBar("value")->getFoo(); + } +} diff --git a/src/Quant/PHPStan/Tests/Data/D.php b/src/Quant/PHPStan/Tests/Data/D.php index 79cae57..afd6e16 100644 --- a/src/Quant/PHPStan/Tests/Data/D.php +++ b/src/Quant/PHPStan/Tests/Data/D.php @@ -28,19 +28,3 @@ class D private string $bar; } - - -class ChildD extends D -{ - private string $foo; - - private string $bar; - - public function run() - { - $d = new D(); - $d->getFoo(); - - $d->setBar("value")->getFoo(); - } -} diff --git a/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php b/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php index 1976ebc..76d4f2b 100644 --- a/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php @@ -50,5 +50,8 @@ public function testRule(): void $this->analyse([__DIR__ . "../../Data/D.php"], [ ]); + + $this->analyse([__DIR__ . "../../Data/ChildD.php"], [ + ]); } } diff --git a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php index e8f0cc2..347959a 100644 --- a/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Rules/Properties/QuantAccessorAttributeReadWriteExtensionTest.php @@ -48,15 +48,15 @@ public function testRule(): void ] ]); - $this->analyse([__DIR__ . "/../../Data/D.php"], [ + $this->analyse([__DIR__ . "/../../Data/ChildD.php"], [ [ "Property Quant\PHPStan\Tests\Data\ChildD::\$foo is unused.", - 35, + 18, $tip ], [ "Property Quant\PHPStan\Tests\Data\ChildD::\$bar is unused.", - 37, + 20, $tip ] ]); From 3f6c7c14cbdd578eb23d96b9d1bafab7d999f7bc Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Fri, 19 May 2023 00:00:11 +0200 Subject: [PATCH 10/23] chore(deps): update project dependencies --- composer.json | 9 ++- composer.lock | 122 ++++++++++++++++++++++++++++++++++- phpstan.neon | 1 + src/Quant/Core/composer.lock | 8 +-- 4 files changed, 132 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 23568ca..1afced3 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,9 @@ "require-dev": { "phpunit/phpunit": "^10.1", "phpstan/phpstan": "^1.10", - "squizlabs/php_codesniffer": "^3.7" + "squizlabs/php_codesniffer": "^3.7", + "phpstan/extension-installer": "^1.3", + "quant/phpstan": "dev-main" }, "autoload": { "psr-4": { @@ -31,5 +33,10 @@ "exclude-from-classmap": [ "**/Tests/" ] + }, + "config": { + "allow-plugins": { + "phpstan/extension-installer": true + } } } diff --git a/composer.lock b/composer.lock index 7d063d3..a3f99c3 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": "9accf97b5489da705f32882df7e845ad", + "content-hash": "5eee2c8019db463c0191146c23d5b1e5", "packages": [], "packages-dev": [ { @@ -233,6 +233,55 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpstan/extension-installer", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", + "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin", + "phpstan/extension-installer": { + "ignore": [ + "phpstan/phpstan-phpunit" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" + }, + "time": "2023-04-18T13:08:02+00:00" + }, { "name": "phpstan/phpstan", "version": "1.10.15", @@ -716,6 +765,71 @@ ], "time": "2023-05-11T05:16:22+00:00" }, + { + "name": "quant/phpstan", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/quant-php/phpstan.git", + "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/quant-php/phpstan/zipball/aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", + "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": "^8.2" + }, + "require-dev": { + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.1", + "quant/core": "dev-main", + "squizlabs/php_codesniffer": "^3.7" + }, + "default-branch": true, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Quant\\PHPStan\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thorsten Suckow-Homberg", + "email": "thorsten@suckow-homberg.de", + "homepage": "https://thorsten.suckow-homberg.de" + } + ], + "description": "phpstan extensions for quant", + "homepage": "https://quant-php.dev/docs/packages/quant/phpstan", + "keywords": [ + "PHPStan", + "extension", + "quant" + ], + "support": { + "issues": "https://github.com/quant-php/phpstan/issues", + "source": "https://github.com/quant-php/phpstan/tree/main" + }, + "time": "2023-05-18T21:47:22+00:00" + }, { "name": "sebastian/cli-parser", "version": "2.0.0", @@ -1736,11 +1850,13 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "quant/phpstan": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=8.1", + "php": "^8.2", "composer-runtime-api": ">=2.1" }, "platform-dev": [], diff --git a/phpstan.neon b/phpstan.neon index 764f509..b0f0ebc 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -3,6 +3,7 @@ parameters: excludePaths: - /*/vendor/* - /*/Benchmarks/* + - /*/PHPStan/Tests/Data/* paths: - src diff --git a/src/Quant/Core/composer.lock b/src/Quant/Core/composer.lock index 36bac48..815de8e 100644 --- a/src/Quant/Core/composer.lock +++ b/src/Quant/Core/composer.lock @@ -1298,12 +1298,12 @@ "source": { "type": "git", "url": "https://github.com/quant-php/phpstan.git", - "reference": "99babc96ed86ad5c042cbc2a5b4229fc08e0fded" + "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/quant-php/phpstan/zipball/99babc96ed86ad5c042cbc2a5b4229fc08e0fded", - "reference": "99babc96ed86ad5c042cbc2a5b4229fc08e0fded", + "url": "https://api.github.com/repos/quant-php/phpstan/zipball/aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", + "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", "shasum": "" }, "require": { @@ -1355,7 +1355,7 @@ "issues": "https://github.com/quant-php/phpstan/issues", "source": "https://github.com/quant-php/phpstan/tree/main" }, - "time": "2023-05-18T16:52:05+00:00" + "time": "2023-05-18T21:47:22+00:00" }, { "name": "sebastian/cli-parser", From a1859d780b950c3850efe104ce0e4fc0bf2b3371 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Fri, 19 May 2023 17:44:47 +0200 Subject: [PATCH 11/23] refactor: allow accessors to override class-level attributes --- .../Reflection/QuantAccessorMethodReflectionExtension.php | 6 +++--- src/Quant/PHPStan/Tests/Data/D.php | 1 + .../QuantAccessorMethodReflectionExtensionTest.php | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php b/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php index 0f9c00b..59a6182 100644 --- a/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php +++ b/src/Quant/PHPStan/Reflection/QuantAccessorMethodReflectionExtension.php @@ -132,9 +132,9 @@ protected function getPropertyConfig(ClassReflection $classReflection, string $m return null; } - if (empty($classAttributes)) { - $attributes = $reflectionProperty->getAttributes($prefix === "set" ? Setter::class : Getter::class); - } else { + $attributes = $reflectionProperty->getAttributes($prefix === "set" ? Setter::class : Getter::class); + + if (empty($attributes)) { $attributes = $classAttributes; } diff --git a/src/Quant/PHPStan/Tests/Data/D.php b/src/Quant/PHPStan/Tests/Data/D.php index afd6e16..b22904b 100644 --- a/src/Quant/PHPStan/Tests/Data/D.php +++ b/src/Quant/PHPStan/Tests/Data/D.php @@ -26,5 +26,6 @@ class D private string $foo; + #[Setter(Modifier::PRIVATE)] private string $bar; } diff --git a/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php b/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php index 76d4f2b..8cb33e3 100644 --- a/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php +++ b/src/Quant/PHPStan/Tests/Reflection/QuantAccessorMethodReflectionExtensionTest.php @@ -52,6 +52,7 @@ public function testRule(): void ]); $this->analyse([__DIR__ . "../../Data/ChildD.php"], [ + ["Call to private method setBar() of class Quant\PHPStan\Tests\Data\D.", 27] ]); } } From bc5e8ebd733608db7aee20219161a609f8e01f11 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Fri, 19 May 2023 18:02:08 +0200 Subject: [PATCH 12/23] chore(docs): update README.md --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8a5ff5c..ad99871 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,15 @@ -# quant-php/quant +# quantphp +all-purpose library for a general-purpose scripting language. +quant is a library for PHP >= 8.2. It is a result of [conjoon](https://conjoon.org) and several other open / closed +source projects, where functionality has proven useful to justify a refactoring into a shared library. -## Installation +## Installation ```bash $ composer require quant-php/quant -``` \ No newline at end of file +``` + +## Documentation +The docs for the project can be found at https://quant-php.dev. + From 71ae8c010cb12f073f8fa9b7025b2cc15906ca50 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Fri, 19 May 2023 18:02:59 +0200 Subject: [PATCH 13/23] chore(tests): update phpunit config to consider PHPStan package --- phpunit.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phpunit.xml b/phpunit.xml index 4c3f928..66d3a21 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -13,6 +13,9 @@ ./src/Quant/Core/Tests/ + + ./src/Quant/PHPStan/Tests/ + From a12171d1631c91c351b8c05c7af8555126cd8922 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Fri, 19 May 2023 18:03:32 +0200 Subject: [PATCH 14/23] chore(deps): update package dependencies --- composer.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.lock b/composer.lock index a3f99c3..b3026eb 100644 --- a/composer.lock +++ b/composer.lock @@ -771,12 +771,12 @@ "source": { "type": "git", "url": "https://github.com/quant-php/phpstan.git", - "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652" + "reference": "c3f7f5546a1d2e4ebe6d95a4425190cb2fb05a20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/quant-php/phpstan/zipball/aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", - "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", + "url": "https://api.github.com/repos/quant-php/phpstan/zipball/c3f7f5546a1d2e4ebe6d95a4425190cb2fb05a20", + "reference": "c3f7f5546a1d2e4ebe6d95a4425190cb2fb05a20", "shasum": "" }, "require": { @@ -828,7 +828,7 @@ "issues": "https://github.com/quant-php/phpstan/issues", "source": "https://github.com/quant-php/phpstan/tree/main" }, - "time": "2023-05-18T21:47:22+00:00" + "time": "2023-05-19T15:46:47+00:00" }, { "name": "sebastian/cli-parser", From a9c1a01c82a4b2f4f81a892ddc422a37a3fa1c0d Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Fri, 19 May 2023 18:04:05 +0200 Subject: [PATCH 15/23] refactor: allow attributes on property level to override class level attributes --- src/Quant/Core/Tests/Trait/AccessorTraitTest.php | 15 ++++++++++++++- .../Tests/Trait/Resources/ClassHasAttributes.php | 2 +- src/Quant/Core/Trait/AccessorTrait.php | 5 ++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Quant/Core/Tests/Trait/AccessorTraitTest.php b/src/Quant/Core/Tests/Trait/AccessorTraitTest.php index 8eb01de..f918033 100644 --- a/src/Quant/Core/Tests/Trait/AccessorTraitTest.php +++ b/src/Quant/Core/Tests/Trait/AccessorTraitTest.php @@ -74,11 +74,24 @@ public function testSettersAndGettersForClass(): void $this->assertSame("foo", $inst->getFoo()); $this->assertSame("bar", $inst->getBar()); - $this->assertSame("snafu", $inst->getSnafu()); $this->assertSame("foobar", $inst->getFoobar()); } + public function testGetSnafuModifierOverridden(): void + { + $inst = $this->createClassWithSetterAndGetterAttributes([ + "foo" => "Hello World", + "bar" => "World Hello" + ]); + + $this->expectException(BadMethodCallException::class); + + /* @phpstan-ignore-next-line */ + $inst->getSnafu(); + } + + public function testAccessorTraitWithDifferentValues(): void { $this->expectException(ValueError::class); diff --git a/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php b/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php index 3d92e79..c719b21 100644 --- a/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php +++ b/src/Quant/Core/Tests/Trait/Resources/ClassHasAttributes.php @@ -27,7 +27,7 @@ class ClassHasAttributes #[Setter] public string $foobar = "Ok"; - #[Getter] + #[Getter(Modifier::PRIVATE)] private string $snafu; public function __construct( diff --git a/src/Quant/Core/Trait/AccessorTrait.php b/src/Quant/Core/Trait/AccessorTrait.php index 061300c..da57707 100644 --- a/src/Quant/Core/Trait/AccessorTrait.php +++ b/src/Quant/Core/Trait/AccessorTrait.php @@ -245,10 +245,9 @@ private function cachePropertiesWithAccessorAttribute(string $accessorClass): ar continue; } - $accessorAttribute = $classAccessorAttribute; - + $accessorAttribute = $property->getAttributes($accessorClass); if (empty($accessorAttribute)) { - $accessorAttribute = $property->getAttributes($accessorClass); + $accessorAttribute = $classAccessorAttribute; } if (!empty($accessorAttribute) && ($property instanceof ReflectionProperty)) { From fbcbfa6adaae0304b10cb6a24140ff3a91c8346f Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Thu, 25 May 2023 18:32:11 +0200 Subject: [PATCH 16/23] refactor: add Arrayable- and Equatable-contracts to Core package --- src/Quant/Core/Contract/Arrayable.php | 24 ++++++++++++++++++++++++ src/Quant/Core/Contract/Equatable.php | 19 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/Quant/Core/Contract/Arrayable.php create mode 100644 src/Quant/Core/Contract/Equatable.php diff --git a/src/Quant/Core/Contract/Arrayable.php b/src/Quant/Core/Contract/Arrayable.php new file mode 100644 index 0000000..fe4f8eb --- /dev/null +++ b/src/Quant/Core/Contract/Arrayable.php @@ -0,0 +1,24 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Contract; + +interface Arrayable +{ + /** + * Returns an array representation of an instance of this class. + * + * @return array + */ + public function toArray(): array; +} diff --git a/src/Quant/Core/Contract/Equatable.php b/src/Quant/Core/Contract/Equatable.php new file mode 100644 index 0000000..8fcbcbd --- /dev/null +++ b/src/Quant/Core/Contract/Equatable.php @@ -0,0 +1,19 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Contract; + +interface Equatable +{ + public function equals(Equatable $target): bool; +} From e61b42fe3fe4d84c25a4ba8b3addee087cab7aba Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Sun, 28 May 2023 23:39:42 +0200 Subject: [PATCH 17/23] feat: add contract for Comparable to Core-package --- src/Quant/Core/Contract/Comparable.php | 19 +++++++ .../Core/Tests/Contract/ComparableTest.php | 50 +++++++++++++++++++ .../Core/Tests/Contract/Resources/Money.php | 49 ++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 src/Quant/Core/Contract/Comparable.php create mode 100644 src/Quant/Core/Tests/Contract/ComparableTest.php create mode 100644 src/Quant/Core/Tests/Contract/Resources/Money.php diff --git a/src/Quant/Core/Contract/Comparable.php b/src/Quant/Core/Contract/Comparable.php new file mode 100644 index 0000000..2b18c78 --- /dev/null +++ b/src/Quant/Core/Contract/Comparable.php @@ -0,0 +1,19 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Contract; + +interface Comparable +{ + public function compareTo(Comparable $target): int; +} diff --git a/src/Quant/Core/Tests/Contract/ComparableTest.php b/src/Quant/Core/Tests/Contract/ComparableTest.php new file mode 100644 index 0000000..e058456 --- /dev/null +++ b/src/Quant/Core/Tests/Contract/ComparableTest.php @@ -0,0 +1,50 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Tests; + +use PHPUnit\Framework\TestCase; +use Quant\Core\Tests\Contract\Resources\Money; + +class ComparableTest extends TestCase +{ + public function testComparable(): void + { + $tests = [ + [[10, 40], [10, 20], 1], + [[10, 40], [10, 40], 0], + [[10, 20], [10, 40], -1], + [[9, 20], [8, 40], 1], + [[3, 20], [8, 40], -1], + ]; + + foreach ($tests as $i => $test) { + $aAmount = $test[0][0]; + $aCents = $test[0][1]; + $bAmount = $test[1][0]; + $bCents = $test[1][1]; + $result = $test[2]; + + $moneyA = $this->getComparableClass($aAmount, $aCents); + $moneyB = $this->getComparableClass($bAmount, $bCents); + + $this->assertSame($result, $moneyA->compareTo($moneyB)); + } + } + + + protected function getComparableClass(int $amount, int $cent): Money + { + return new Money($amount, $cent); + } +} diff --git a/src/Quant/Core/Tests/Contract/Resources/Money.php b/src/Quant/Core/Tests/Contract/Resources/Money.php new file mode 100644 index 0000000..347934d --- /dev/null +++ b/src/Quant/Core/Tests/Contract/Resources/Money.php @@ -0,0 +1,49 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Tests\Contract\Resources; + +use Quant\Core\Attribute\Getter; +use Quant\Core\Contract\Comparable; +use Quant\Core\Trait\AccessorTrait; + +class Money implements Comparable +{ + use AccessorTrait; + + public function __construct( + #[Getter] + private int $amount, + #[Getter] + private int $cents + ) { + } + + public function compareTo(Comparable $target): int + { + if (!($target instanceof Money)) { + return 1; + } + + $aAmount = $this->getAmount(); + $bAmount = $target->getAmount(); + + $aCents = $this->getCents(); + $bCents = $target->getCents(); + + + $c = ($aAmount === $bAmount ? 0 : ($aAmount < $bAmount ? -1 : 1)); + + return $c !== 0 ? $c : ($aCents < $bCents ? -1 : ($aCents > $bCents ? 1 : 0)); + } +} From 894a05efe17e58bc4a0e464e36ece72e85110c8e Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Mon, 29 May 2023 00:31:33 +0200 Subject: [PATCH 18/23] feat: add AbstractList to Core-package --- src/Quant/Core/AbstractList.php | 325 +++++++++++++++++++ src/Quant/Core/Tests/AbstractListTest.php | 363 ++++++++++++++++++++++ 2 files changed, 688 insertions(+) create mode 100644 src/Quant/Core/AbstractList.php create mode 100644 src/Quant/Core/Tests/AbstractListTest.php diff --git a/src/Quant/Core/AbstractList.php b/src/Quant/Core/AbstractList.php new file mode 100644 index 0000000..b5b0a6a --- /dev/null +++ b/src/Quant/Core/AbstractList.php @@ -0,0 +1,325 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core; + +use ArrayAccess; +use Quant\Core\Contract\Arrayable; +use Countable; +use Iterator; +use OutOfBoundsException; +use Quant\Core\Contract\Comparable; +use Quant\Core\Contract\Equatable; +use TypeError; + +/** + * List supporting Generic types. + * Each class deriving from AbstractList must provide information about the type maintained + * with instances of this list via `getType`. + * In addition to the interfaces implemented by this class, additional methods are provided + * that help with filtering or looking up entries: #findBy, #peek#, #map + * + * @template TValue + * @implements Iterator + * @implements ArrayAccess + */ +abstract class AbstractList implements Arrayable, ArrayAccess, Iterator, Countable, Equatable +{ + /** + * @var array + */ + protected array $data = []; + + /** + * \Iterator Interface + * @var int + */ + protected int $position = 0; + + + /** + * Constructor. + * Final to allow new static(); + * + * @see make + */ + final public function __construct() + { + } + + + /** + * Factory method for easily creating instances of the implementing class. + * + * @param mixed ...$items + * + * @return static + */ + public static function make(...$items): static + { + $self = new static(); + + foreach ($items as $item) { + $self[] = $item; + } + + return $self; + } + + + /** + * Returns the class name of the entity-type this list should maintain + * entries of. + * + * @return string + */ + abstract public function getType(): string; + + + /** + * Applies the map function to this data and returns **this** list. + * + * @param callable $mapFn The callable to pass to the callback submitted to + * array_map() + * + * @return static + */ + public function map(callable $mapFn): static + { + array_map($mapFn, $this->data); + + return $this; + } + + + /** + * Returns the entry in this list given the callback function. + * + * @param callable $findFn A callback. Return true in the function to indicate a match. First match will + * be returned. The callback is passed the current entry. + * + * @return ?TValue + */ + public function findBy(callable $findFn): mixed + { + foreach ($this->data as $resource) { + if ($findFn($resource) === true) { + return $resource; + } + } + + return null; + } + + + /** + * Returns the element at the head of the AbstractList, or null if the list is empty. + * + * @return ?TValue + */ + public function peek(): mixed + { + $count = count($this->data); + return !$count ? null : $this->data[$count - 1]; + } + + + public function equals(Equatable $target): bool + { + $thisClass = get_class($this); + + if (!($target instanceof $thisClass)) { + return false; + } + + /** + * @var AbstractList $td + */ + $td = $target->toArray(); + if (count($td) !== count($this)) { + return false; + } + + $type = $this->getType(); + $isEquatable = is_a($type, Equatable::class, true); + $isComparable = is_a($type, Comparable::class, true); + + foreach ($td as $i => $entity) { + if ($isEquatable) { + if ($entity->equals($this[$i]) === false) { + return false; + } + } elseif ($isComparable) { + if ($entity->compareTo($this[$i]) !== 0) { + return false; + } + } else { + if (!$this->compareItems($this[$i], $entity)) { + return false; + } + } + } + + return true; + } + + + /** + * Method called by the abstract list if containing items are neither Equatable nor Comparable. + * Override to implement comparator. + * + * @param mixed $a + * @param mixed $b + * @return bool + */ + protected function compareItems(mixed $a, mixed $b): bool + { + return $a === $b; + } + + /** + * @param mixed $offset + * @param mixed $value + * @return void + * + * @throws OutOfBoundsException + */ + protected function doInsert(mixed $offset, mixed $value) + { + if (!is_null($offset) && !is_int($offset)) { + throw new OutOfBoundsException( + "expected integer key for \"offset\", " . + "but got type: " . (gettype($offset)) + ); + } + + if (is_null($offset)) { + $this->data[] = $value; + } else { + $this->data[$offset] = $value; + } + } + + /** + * @param mixed $value + * @return bool + * + * @throws TypeError + */ + protected function assertTypeFor(mixed $value): bool + { + $entityType = $this->getType(); + + // instanceof has higher precedence, so + // (!$value instanceof $entityType) + // would also be a valid expression + if (!($value instanceof $entityType)) { + /** @var object $value */ + throw new TypeError( + "Expected type \"$entityType\" for value-argument, got " . gettype($value) + ); + } + + return true; + } + + +// ------------------------- +// ArrayAccess Interface +// ------------------------- + + /** + * @throws TypeError|OutOfBoundsException if $value is not of the type defined + * with this getType, or f $offset is not an int + */ + public function offsetSet(mixed $offset, mixed $value): void + { + $this->assertTypeFor($value); + $this->doInsert($offset, $value); + } + + + public function offsetExists($offset): bool + { + return isset($this->data[$offset]); + } + + public function offsetUnset($offset): void + { + unset($this->data[$offset]); + } + + + public function offsetGet($offset): mixed + { + return $this->data[$offset] ?? null; + } + + +// -------------------------- +// Iterator Interface +// -------------------------- + + public function rewind(): void + { + $this->position = 0; + } + + public function key(): int + { + return $this->position; + } + + public function current(): mixed + { + return $this->data[$this->position]; + } + + public function next(): void + { + $this->position++; + } + + /** + * @inheritdoc + */ + public function valid(): bool + { + return isset($this->data[$this->position]); + } + +// -------------------------- +// Iterator Interface +// -------------------------- + + /** + * @return int + */ + public function count(): int + { + return count($this->data); + } + + +// -------------------------- +// Arrayable interface +// -------------------------- + + /** + * @return array + */ + public function toArray(): array + { + return $this->data; + } +} diff --git a/src/Quant/Core/Tests/AbstractListTest.php b/src/Quant/Core/Tests/AbstractListTest.php new file mode 100644 index 0000000..4f0f8b3 --- /dev/null +++ b/src/Quant/Core/Tests/AbstractListTest.php @@ -0,0 +1,363 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Tests; + +use ArrayAccess; +use Quant\Core\AbstractList; +use Countable; +use Iterator; +use OutOfBoundsException; +use Quant\Core\Contract\Comparable; +use Quant\Core\Contract\Equatable; +use stdClass; +use PHPUnit\Framework\TestCase; +use TypeError; +use UnhandledMatchError; + +class AbstractListTest extends TestCase +{ +// --------------------- +// Tests +// --------------------- + + /** + * Tests constructor + * @return void + */ + public function testConstructor(): void + { + + $abstractList = $this->getAbstractListClass(); + $this->assertSame(stdClass::class, $abstractList->getType()); + $this->assertInstanceOf(Countable::class, $abstractList); + $this->assertInstanceOf(Equatable::class, $abstractList); + $this->assertInstanceOf(ArrayAccess::class, $abstractList); + $this->assertInstanceOf(Iterator::class, $abstractList); + } + + /** + * Tests OutOfBoundsException /w string as key + * @return void + */ + public function testOffsetSetWithStringAndOutOfBoundsException(): void + { + $this->expectException(OutOfBoundsException::class); + + $abstractList = $this->getAbstractListClass(); + + /* @phpstan-ignore-next-line */ + $abstractList["1"] = new stdClass(); + } + + + /** + * Tests ArrayAccess /w type exception + * @return void + */ + public function testArrayAccessException(): void + { + $this->expectException(TypeError::class); + + $abstractList = $this->getAbstractListClass(); + + /* @phpstan-ignore-next-line */ + $abstractList[] = "foo"; + } + + + /** + * Tests ArrayAccess + * @return void + */ + public function testArrayAccessAndCountable(): void + { + $abstractList = $this->getAbstractListClass(); + + $cmpList = [ + new stdClass(), + new stdClass() + ]; + + $abstractList[] = $cmpList[0]; + $abstractList[] = $cmpList[1]; + + $this->assertSame(2, count($abstractList)); + + foreach ($abstractList as $key => $item) { + $this->assertSame($cmpList[$key], $item); + } + } + + + /** + * Tests Arrayable + * @return void + */ + public function testToArray(): void + { + $abstractList = $this->getAbstractListClass(); + + $cmpList = [ + new stdClass(), + new stdClass() + ]; + + $abstractList[] = $cmpList[0]; + $abstractList[] = $cmpList[1]; + + $this->assertEquals([ + $abstractList[0], + $abstractList[1] + ], $abstractList->toArray()); + } + + + /** + * Tests map() + * @return void + */ + public function testMap(): void + { + $abstractList = $this->getAbstractListClass(); + + $cmpList = [ + new stdClass(), + new stdClass() + ]; + + $cmpList[0]->foo = 1; + $cmpList[0]->bar = 2; + $cmpList[1]->foo = 3; + $cmpList[1]->bar = 4; + + $abstractList[] = $cmpList[0]; + $abstractList[] = $cmpList[1]; + + $mock = $this->getMockBuilder(stdClass::class) + ->addMethods(["mapCallback"]) + ->getMock(); + + + $matcher = $this->exactly(2); + $mock->expects($matcher) + ->method("mapCallback") + ->willReturnCallback( + function (stdClass $param) use ($cmpList, $matcher): stdClass { + $int = $matcher->numberOfInvocations() - 1; + $cmpList[$int]->foo *= 2; + return $cmpList[$int]; + } + ); + + + /** @phpstan-ignore-next-line */ + $cb = $mock->mapCallback(...); + + $mappedList = $abstractList->map($cb); + + foreach ($mappedList as $index => $item) { + $this->assertSame($cmpList[$index], $item); + $this->assertSame([2, 6][$index], $item->foo); + } + } + + + /** + * Tests findBy() + * @return void + */ + public function testFindBy(): void + { + $abstractList = $this->getAbstractListClass(); + + $cmpList = [ + new stdClass(), + new stdClass() + ]; + + $cmpList[0]->foo = 1; + $cmpList[0]->bar = 2; + $cmpList[1]->foo = 3; + $cmpList[1]->bar = 4; + + $abstractList[] = $cmpList[0]; + $abstractList[] = $cmpList[1]; + + $mock = $this->getMockBuilder(stdClass::class) + ->addMethods(["findCallback"]) + ->getMock(); + + $matcher = $this->exactly(2); + $mock->expects($matcher) + ->method("findCallback") + ->willReturnCallback( + fn (stdClass $param): bool => match ($matcher->numberOfInvocations()) { + 1 => false, + 2 => true, + default => throw new UnhandledMatchError() + } + ); + + /** @phpstan-ignore-next-line */ + $cb = $mock->findCallback(...); + $this->assertSame( + $cmpList[1], + $abstractList->findBy($cb) + ); + } + + /** + * Tests peek() + * @return void + */ + public function testPeek(): void + { + $abstractList = $this->getAbstractListClass(); + + $this->assertNull($abstractList->peek()); + + $one = new stdClass(); + $two = new stdClass(); + + $abstractList[] = $one; + $abstractList[] = $two; + + $this->assertSame($two, $abstractList->peek()); + } + + + /** + * Tests make() + * @return void + */ + public function testMake(): void + { + $abstractList = new class extends AbstractList { + public function getType(): string + { + return stdClass::class; + } + public function equals(Equatable $target): bool + { + return true; + } + }; + + $one = new stdClass(); + $two = new stdClass(); + + $list = $abstractList::make($one, $two); + + $this->assertInstanceOf($abstractList::class, $list); + + $this->assertSame($list[0], $one); + $this->assertSame($list[1], $two); + } + + + public function testEquals(): void + { + $entityEquatable = new class implements Equatable { + public int $a = 1; + public function equals(Equatable $target): bool + { + /* @phpstan-ignore-next-line */ + return $this->a === $target->a; + } + }; + + $entityComparable = new class implements Comparable { + public int $a = 1; + public function compareTo(Comparable $target): int + { + /* @phpstan-ignore-next-line */ + return $this->a === $target->a ? 0 : -1; + } + }; + + $equatableList = new class () extends AbstractList { + public function getType(): string + { + return Equatable::class; + } + }; + $comparableList = new class () extends AbstractList { + public function getType(): string + { + return Comparable::class; + } + }; + + // eq + $eqA1 = new $entityEquatable(); + $eqA2 = new $entityEquatable(); + $eqB1 = new $entityEquatable(); + $eqB2 = new $entityEquatable(); + + $listEqA = new $equatableList(); + $listEqB = new $equatableList(); + $this->assertTrue($listEqA->equals($listEqB)); + + $listEqA[] = $eqA1; + $listEqA[] = $eqA2; + $listEqB[] = $eqB1; + $this->assertFalse($listEqA->equals($listEqB)); + $listEqB[] = $eqB2; + + $this->assertTrue($listEqA->equals($listEqB)); + + $eqB2->a = 0; + $this->assertFalse($listEqA->equals($listEqB)); + + + // cmp + $cmpA1 = new $entityComparable(); + $cmpA2 = new $entityComparable(); + $cmpB1 = new $entityComparable(); + $cmpB2 = new $entityComparable(); + + $listCmpA = new $comparableList(); + $listCmpB = new $comparableList(); + + $listCmpA[] = $cmpA1; + $listCmpA[] = $cmpA2; + $listCmpB[] = $cmpB1; + $this->assertFalse($listCmpA->equals($listCmpB)); + $listCmpB[] = $cmpB2; + + $this->assertTrue($listCmpA->equals($listCmpB)); + + $cmpB2->a = 0; + $this->assertFalse($listCmpA->equals($listCmpB)); + } + + + +// --------------------- +// Helper Functions +// --------------------- + + /** + * @return AbstractList + */ + protected function getAbstractListClass(): AbstractList + { + return new class () extends AbstractList { + public function getType(): string + { + return stdClass::class; + } + }; + } +} From 38e8f429dd80a49874e1348780eed621f2d3fd4c Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Mon, 29 May 2023 00:39:46 +0200 Subject: [PATCH 19/23] refactor(tests): add test for compareItems() for AbstractList --- src/Quant/Core/Tests/AbstractListTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Quant/Core/Tests/AbstractListTest.php b/src/Quant/Core/Tests/AbstractListTest.php index 4f0f8b3..9b6d847 100644 --- a/src/Quant/Core/Tests/AbstractListTest.php +++ b/src/Quant/Core/Tests/AbstractListTest.php @@ -340,6 +340,24 @@ public function getType(): string $cmpB2->a = 0; $this->assertFalse($listCmpA->equals($listCmpB)); + + // plain + $abstractListA = $this->getAbstractListClass(); + $abstractListB = $this->getAbstractListClass(); + + $this->assertTrue($abstractListA->equals($abstractListB)); + + $itemA = new stdClass(); + $itemB = new stdClass(); + + $abstractListA[] = $itemA; + $this->assertFalse($abstractListA->equals($abstractListB)); + + $abstractListB[] = $itemA; + $this->assertTrue($abstractListA->equals($abstractListB)); + + $abstractListB[] = $itemB; + $this->assertFalse($abstractListA->equals($abstractListB)); } From e9172a7338e443d3a521035984abe3902ceadb98 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Mon, 29 May 2023 19:50:38 +0200 Subject: [PATCH 20/23] refactor: findBy() of AbstractList returns null or AbstractList --- src/Quant/Core/AbstractList.php | 16 ++++---- src/Quant/Core/Tests/AbstractListTest.php | 36 +++++++++++++++- src/Quant/Core/Tests/Resources/Entity.php | 28 +++++++++++++ src/Quant/Core/Tests/Resources/EntityList.php | 41 +++++++++++++++++++ 4 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 src/Quant/Core/Tests/Resources/Entity.php create mode 100644 src/Quant/Core/Tests/Resources/EntityList.php diff --git a/src/Quant/Core/AbstractList.php b/src/Quant/Core/AbstractList.php index b5b0a6a..ede5109 100644 --- a/src/Quant/Core/AbstractList.php +++ b/src/Quant/Core/AbstractList.php @@ -103,22 +103,24 @@ public function map(callable $mapFn): static /** - * Returns the entry in this list given the callback function. + * Returns a new AbstractList containing all the entries for which the callable returned `true`. + * Returns null if no matches were found. * * @param callable $findFn A callback. Return true in the function to indicate a match. First match will * be returned. The callback is passed the current entry. * - * @return ?TValue + * @return null|static */ - public function findBy(callable $findFn): mixed + public function findBy(callable $findFn): null|static { + $matches = []; foreach ($this->data as $resource) { if ($findFn($resource) === true) { - return $resource; + $matches[] = $resource; } } - return null; + return count($matches) === 0 ? null : static::make(...$matches); } @@ -194,7 +196,7 @@ protected function compareItems(mixed $a, mixed $b): bool * * @throws OutOfBoundsException */ - protected function doInsert(mixed $offset, mixed $value) + private function doInsert(mixed $offset, mixed $value) { if (!is_null($offset) && !is_int($offset)) { throw new OutOfBoundsException( @@ -216,7 +218,7 @@ protected function doInsert(mixed $offset, mixed $value) * * @throws TypeError */ - protected function assertTypeFor(mixed $value): bool + private function assertTypeFor(mixed $value): bool { $entityType = $this->getType(); diff --git a/src/Quant/Core/Tests/AbstractListTest.php b/src/Quant/Core/Tests/AbstractListTest.php index 9b6d847..06ec5a4 100644 --- a/src/Quant/Core/Tests/AbstractListTest.php +++ b/src/Quant/Core/Tests/AbstractListTest.php @@ -20,6 +20,8 @@ use OutOfBoundsException; use Quant\Core\Contract\Comparable; use Quant\Core\Contract\Equatable; +use Quant\Core\Tests\Resources\Entity; +use Quant\Core\Tests\Resources\EntityList; use stdClass; use PHPUnit\Framework\TestCase; use TypeError; @@ -211,9 +213,11 @@ public function testFindBy(): void /** @phpstan-ignore-next-line */ $cb = $mock->findCallback(...); + $this->assertSame( $cmpList[1], - $abstractList->findBy($cb) + /** @phpstan-ignore-next-line */ + $abstractList->findBy($cb)[0] ); } @@ -361,6 +365,36 @@ public function getType(): string } + public function testDocs(): void + { + + $listA = new EntityList(); + $listA[] = new Entity("1"); + $listA[] = new Entity("1"); + + $listB = new EntityList(); + $listB[] = new Entity("1"); + $listB[] = new Entity("2"); + + $this->assertFalse($listA->equals($listB)); + + $listC = EntityList::make(new Entity("3"), new Entity("4")); + + $this->assertTrue($listC->map(fn(Entity $item): Entity => $item->setValue("1"))->equals($listA)); + + /** + * @var Entity $head + */ + $head = $listB->peek(); + $this->assertSame("2", $head->getValue()); + + $this->assertNull($listC->findBy(fn (Entity $item): bool => $item->getValue() === "a")); + $this->assertEquals( + $listC->findBy(fn (Entity $item): bool => $item->getValue() !== "a")?->toArray(), + [$listC[0], $listC[1]] + ); + } + // --------------------- // Helper Functions diff --git a/src/Quant/Core/Tests/Resources/Entity.php b/src/Quant/Core/Tests/Resources/Entity.php new file mode 100644 index 0000000..6686d16 --- /dev/null +++ b/src/Quant/Core/Tests/Resources/Entity.php @@ -0,0 +1,28 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Tests\Resources; + +use Quant\Core\Attribute\Getter; +use Quant\Core\Attribute\Setter; +use Quant\Core\Trait\AccessorTrait; + +#[Getter] #[Setter] +class Entity +{ + use AccessorTrait; + + public function __construct(private string $value) + { + } +} diff --git a/src/Quant/Core/Tests/Resources/EntityList.php b/src/Quant/Core/Tests/Resources/EntityList.php new file mode 100644 index 0000000..a6476eb --- /dev/null +++ b/src/Quant/Core/Tests/Resources/EntityList.php @@ -0,0 +1,41 @@ + + * + * For full copyright and license information, please consult the LICENSE-file distributed + * with this source code. + */ + +declare(strict_types=1); + +namespace Quant\Core\Tests\Resources; + +use Quant\Core\AbstractList; +use stdClass; + +/** + * @extends AbstractList + */ +class EntityList extends AbstractList +{ + public function getType(): string + { + return Entity::class; + } + + protected function compareItems(mixed $a, mixed $b): bool + { + if (!($a instanceof Entity) && !($b instanceof Entity)) { + return false; + } + + /** + * @var Entity $a + * @var Entity $b + */ + return $a->getValue() === $b->getValue(); + } +} From 6c6081af25f9605ef65daaa559e2073d40582c23 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Mon, 29 May 2023 22:08:08 +0200 Subject: [PATCH 21/23] refactor: update docblocks and minor variable naming changes --- src/Quant/Core/AbstractList.php | 48 +++------------------------------ 1 file changed, 4 insertions(+), 44 deletions(-) diff --git a/src/Quant/Core/AbstractList.php b/src/Quant/Core/AbstractList.php index ede5109..9a8b35e 100644 --- a/src/Quant/Core/AbstractList.php +++ b/src/Quant/Core/AbstractList.php @@ -23,12 +23,6 @@ use TypeError; /** - * List supporting Generic types. - * Each class deriving from AbstractList must provide information about the type maintained - * with instances of this list via `getType`. - * In addition to the interfaces implemented by this class, additional methods are provided - * that help with filtering or looking up entries: #findBy, #peek#, #map - * * @template TValue * @implements Iterator * @implements ArrayAccess @@ -47,20 +41,12 @@ abstract class AbstractList implements Arrayable, ArrayAccess, Iterator, Countab protected int $position = 0; - /** - * Constructor. - * Final to allow new static(); - * - * @see make - */ final public function __construct() { } /** - * Factory method for easily creating instances of the implementing class. - * * @param mixed ...$items * * @return static @@ -77,20 +63,11 @@ public static function make(...$items): static } - /** - * Returns the class name of the entity-type this list should maintain - * entries of. - * - * @return string - */ abstract public function getType(): string; /** - * Applies the map function to this data and returns **this** list. - * - * @param callable $mapFn The callable to pass to the callback submitted to - * array_map() + * @param callable $mapFn * * @return static */ @@ -103,11 +80,7 @@ public function map(callable $mapFn): static /** - * Returns a new AbstractList containing all the entries for which the callable returned `true`. - * Returns null if no matches were found. - * - * @param callable $findFn A callback. Return true in the function to indicate a match. First match will - * be returned. The callback is passed the current entry. + * @param callable $findFn * * @return null|static */ @@ -125,8 +98,6 @@ public function findBy(callable $findFn): null|static /** - * Returns the element at the head of the AbstractList, or null if the list is empty. - * * @return ?TValue */ public function peek(): mixed @@ -176,17 +147,9 @@ public function equals(Equatable $target): bool } - /** - * Method called by the abstract list if containing items are neither Equatable nor Comparable. - * Override to implement comparator. - * - * @param mixed $a - * @param mixed $b - * @return bool - */ - protected function compareItems(mixed $a, mixed $b): bool + protected function compareItems(mixed $lft, mixed $rgt): bool { - return $a === $b; + return $lft === $rgt; } /** @@ -213,9 +176,6 @@ private function doInsert(mixed $offset, mixed $value) } /** - * @param mixed $value - * @return bool - * * @throws TypeError */ private function assertTypeFor(mixed $value): bool From 13de2cf840d7c5b72f71231ecb755769f749107f Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Tue, 23 Jan 2024 19:42:49 +0100 Subject: [PATCH 22/23] build(deps): update dependencies for v1.0.0 release --- composer.json | 2 +- composer.lock | 285 ++++++------ src/Quant/Core/composer.json | 4 +- src/Quant/Core/composer.lock | 793 +++++++++++++++----------------- src/Quant/PHPStan/composer.json | 7 +- src/Quant/PHPStan/composer.lock | 464 +++++++++---------- 6 files changed, 767 insertions(+), 788 deletions(-) diff --git a/composer.json b/composer.json index 1afced3..2f042c7 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "phpstan/phpstan": "^1.10", "squizlabs/php_codesniffer": "^3.7", "phpstan/extension-installer": "^1.3", - "quant/phpstan": "dev-main" + "quant/phpstan": "^1.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index b3026eb..04de242 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": "5eee2c8019db463c0191146c23d5b1e5", + "content-hash": "e555e1750700aa5b3fb6e334d994b6e4", "packages": [], "packages-dev": [ { @@ -68,25 +68,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -94,7 +96,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -118,9 +120,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2024-01-07T17:17:35+00:00" }, { "name": "phar-io/manifest", @@ -235,22 +237,22 @@ }, { "name": "phpstan/extension-installer", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.9.0" }, "require-dev": { "composer/composer": "^2.0", @@ -259,12 +261,7 @@ }, "type": "composer-plugin", "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin", - "phpstan/extension-installer": { - "ignore": [ - "phpstan/phpstan-phpunit" - ] - } + "class": "PHPStan\\ExtensionInstaller\\Plugin" }, "autoload": { "psr-4": { @@ -278,22 +275,22 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" }, - "time": "2023-04-18T13:08:02+00:00" + "time": "2023-05-24T08:59:17+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.15", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -342,27 +339,27 @@ "type": "tidelift" } ], - "time": "2023-05-09T15:28:01+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.1", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/884a0da7f9f46f28b2cb69134217fd810b793974", - "reference": "884a0da7f9f46f28b2cb69134217fd810b793974", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -412,7 +409,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.1" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -420,20 +417,20 @@ "type": "github" } ], - "time": "2023-04-17T12:15:40+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -473,7 +470,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -481,7 +478,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -548,16 +545,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -595,7 +592,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -603,7 +601,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -666,16 +664,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.1.3", + "version": "10.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d" + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2379ebafc1737e71cdc84f402acb6b7f04198b9d", - "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", "shasum": "" }, "require": { @@ -689,7 +687,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -699,8 +697,8 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -715,7 +713,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -747,7 +745,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9" }, "funding": [ { @@ -763,20 +761,20 @@ "type": "tidelift" } ], - "time": "2023-05-11T05:16:22+00:00" + "time": "2024-01-22T14:35:40+00:00" }, { "name": "quant/phpstan", - "version": "dev-main", + "version": "1.0", "source": { "type": "git", "url": "https://github.com/quant-php/phpstan.git", - "reference": "c3f7f5546a1d2e4ebe6d95a4425190cb2fb05a20" + "reference": "762f565d861e184805c428da801ea79ad835abbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/quant-php/phpstan/zipball/c3f7f5546a1d2e4ebe6d95a4425190cb2fb05a20", - "reference": "c3f7f5546a1d2e4ebe6d95a4425190cb2fb05a20", + "url": "https://api.github.com/repos/quant-php/phpstan/zipball/762f565d861e184805c428da801ea79ad835abbb", + "reference": "762f565d861e184805c428da801ea79ad835abbb", "shasum": "" }, "require": { @@ -786,10 +784,9 @@ "require-dev": { "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^10.1", - "quant/core": "dev-main", + "quant/core": "^1.0", "squizlabs/php_codesniffer": "^3.7" }, - "default-branch": true, "type": "phpstan-extension", "extra": { "phpstan": { @@ -826,9 +823,9 @@ ], "support": { "issues": "https://github.com/quant-php/phpstan/issues", - "source": "https://github.com/quant-php/phpstan/tree/main" + "source": "https://github.com/quant-php/phpstan/tree/1.0" }, - "time": "2023-05-19T15:46:47+00:00" + "time": "2024-01-23T18:31:17+00:00" }, { "name": "sebastian/cli-parser", @@ -999,16 +996,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -1019,7 +1016,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -1063,7 +1060,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -1071,24 +1069,24 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -1097,7 +1095,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -1120,7 +1118,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -1128,20 +1127,20 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -1154,7 +1153,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1187,7 +1186,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -1195,7 +1194,7 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", @@ -1263,16 +1262,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -1286,7 +1285,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1328,7 +1327,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -1336,20 +1336,20 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -1389,7 +1389,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -1397,24 +1398,24 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -1446,7 +1447,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -1454,7 +1456,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -1742,16 +1744,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.2", + "version": "3.8.1", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -1761,11 +1763,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -1780,35 +1782,58 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, - "time": "2023-02-22T23:07:41+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-01-11T20:47:48+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -1837,7 +1862,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -1845,14 +1870,12 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "quant/phpstan": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -1860,5 +1883,5 @@ "composer-runtime-api": ">=2.1" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/src/Quant/Core/composer.json b/src/Quant/Core/composer.json index 6d90cac..d746fb7 100644 --- a/src/Quant/Core/composer.json +++ b/src/Quant/Core/composer.json @@ -23,7 +23,7 @@ "phpbench/phpbench": "^1.2@dev", "doctrine/annotations": "2.0.x-dev", "phpstan/extension-installer": "^1.3", - "quant/phpstan": "dev-main" + "quant/phpstan": "^1.0" }, "autoload": { "psr-4": { "Quant\\Core\\": "" }, @@ -31,7 +31,7 @@ "/Tests/" ] }, - "minimum-stability": "dev", + "minimum-stability": "stable", "config": { "allow-plugins": { "phpstan/extension-installer": true diff --git a/src/Quant/Core/composer.lock b/src/Quant/Core/composer.lock index 815de8e..53a1ec2 100644 --- a/src/Quant/Core/composer.lock +++ b/src/Quant/Core/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": "c4cbcbe3ba984283ff5d1414c86374d0", + "content-hash": "81acd96ecfe29aefe04414fb21e1ce31", "packages": [], "packages-dev": [ { @@ -13,12 +13,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "4b68cf86b766ec429f4f68af648817cdfb360582" + "reference": "94f40ad7ecbc6931958faa8a57c48dce5da2b468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/4b68cf86b766ec429f4f68af648817cdfb360582", - "reference": "4b68cf86b766ec429f4f68af648817cdfb360582", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/94f40ad7ecbc6931958faa8a57c48dce5da2b468", + "reference": "94f40ad7ecbc6931958faa8a57c48dce5da2b468", "shasum": "" }, "require": { @@ -82,11 +82,11 @@ "issues": "https://github.com/doctrine/annotations/issues", "source": "https://github.com/doctrine/annotations/tree/2.0.x" }, - "time": "2023-03-27T17:43:32+00:00" + "time": "2023-08-23T17:36:07+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.x-dev", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", @@ -143,7 +143,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.x" + "source": "https://github.com/doctrine/lexer/tree/3.0.0" }, "funding": [ { @@ -163,16 +163,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.x-dev", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "928a96f585b86224ebc78f8f09d0482cf15b04f5" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/928a96f585b86224ebc78f8f09d0482cf15b04f5", - "reference": "928a96f585b86224ebc78f8f09d0482cf15b04f5", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -180,15 +180,13 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, - "default-branch": true, "type": "library", "autoload": { "files": [ @@ -212,7 +210,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.x" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -220,38 +218,39 @@ "type": "tidelift" } ], - "time": "2023-03-08T17:24:01+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "4.x-dev", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ffddce52d816f72d0efc4d9b02e276d3309ef01" + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ffddce52d816f72d0efc4d9b02e276d3309ef01", - "reference": "0ffddce52d816f72d0efc4d9b02e276d3309ef01", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, - "default-branch": true, "bin": [ "bin/php-parse" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -275,33 +274,31 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/4.x" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" }, - "time": "2023-03-06T22:12:36+00:00" + "time": "2024-01-07T17:17:35+00:00" }, { "name": "phar-io/manifest", - "version": "dev-master", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "36d8a21e851a9512db2b086dc5ac2c61308f0138" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/36d8a21e851a9512db2b086dc5ac2c61308f0138", - "reference": "36d8a21e851a9512db2b086dc5ac2c61308f0138", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", - "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", "php": "^7.2 || ^8.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -337,15 +334,9 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2022-02-21T19:55:33+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", @@ -400,28 +391,27 @@ }, { "name": "phpbench/container", - "version": "dev-master", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/phpbench/container.git", - "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392" + "reference": "a59b929e00b87b532ca6d0edd8eca0967655af33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/container/zipball/6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", - "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", + "url": "https://api.github.com/repos/phpbench/container/zipball/a59b929e00b87b532ca6d0edd8eca0967655af33", + "reference": "a59b929e00b87b532ca6d0edd8eca0967655af33", "shasum": "" }, "require": { "psr/container": "^1.0|^2.0", - "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0" + "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.16", "phpstan/phpstan": "^0.12.52", "phpunit/phpunit": "^8" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -446,9 +436,9 @@ "description": "Simple, configurable, service container.", "support": { "issues": "https://github.com/phpbench/container/issues", - "source": "https://github.com/phpbench/container/tree/2.2.1" + "source": "https://github.com/phpbench/container/tree/2.2.2" }, - "time": "2022-01-25T10:17:35+00:00" + "time": "2023-10-30T13:38:26+00:00" }, { "name": "phpbench/dom", @@ -507,45 +497,51 @@ "source": { "type": "git", "url": "https://github.com/phpbench/phpbench.git", - "reference": "95206f92479674599a75e02b74b9933e2d9883aa" + "reference": "e71db2f3ef3a73da60a6c318e8d8c8bde69ede83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/95206f92479674599a75e02b74b9933e2d9883aa", - "reference": "95206f92479674599a75e02b74b9933e2d9883aa", + "url": "https://api.github.com/repos/phpbench/phpbench/zipball/e71db2f3ef3a73da60a6c318e8d8c8bde69ede83", + "reference": "e71db2f3ef3a73da60a6c318e8d8c8bde69ede83", "shasum": "" }, "require": { - "doctrine/annotations": "^1.13 || ^2.0", + "doctrine/annotations": "^2.0", "ext-dom": "*", "ext-json": "*", "ext-pcre": "*", "ext-reflection": "*", "ext-spl": "*", "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "phpbench/container": "^2.1", + "php": "^8.1", + "phpbench/container": "^2.2", "phpbench/dom": "~0.3.3", "psr/log": "^1.1 || ^2.0 || ^3.0", "seld/jsonlint": "^1.1", - "symfony/console": "^4.2 || ^5.0 || ^6.0", - "symfony/filesystem": "^4.2 || ^5.0 || ^6.0", - "symfony/finder": "^4.2 || ^5.0 || ^6.0", - "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0", - "symfony/process": "^4.2 || ^5.0 || ^6.0", + "symfony/console": "^6.1 || ^7.0", + "symfony/filesystem": "^6.1 || ^7.0", + "symfony/finder": "^6.1 || ^7.0", + "symfony/options-resolver": "^6.1 || ^7.0", + "symfony/process": "^6.1 || ^7.0", "webmozart/glob": "^4.6" }, + "replace": { + "symfony/polyfill-php80": "*", + "symfony/polyfill-php81": "*" + }, "require-dev": { "dantleech/invoke": "^2.0", + "ergebnis/composer-normalize": "^2.39", "friendsofphp/php-cs-fixer": "^3.0", "jangregor/phpstan-prophecy": "^1.0", - "phpspec/prophecy": "^1.12", + "phpspec/prophecy": "dev-master", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.0", - "symfony/error-handler": "^5.2 || ^6.0", - "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0" + "phpunit/phpunit": "^10.4", + "rector/rector": "^0.18.11", + "symfony/error-handler": "^6.1 || ^7.0", + "symfony/var-dumper": "^6.1 || ^7.0" }, "suggest": { "ext-xdebug": "For Xdebug profiling extension." @@ -580,9 +576,16 @@ } ], "description": "PHP Benchmarking Framework", + "keywords": [ + "benchmarking", + "optimization", + "performance", + "profiling", + "testing" + ], "support": { "issues": "https://github.com/phpbench/phpbench/issues", - "source": "https://github.com/phpbench/phpbench/tree/1.2.10" + "source": "https://github.com/phpbench/phpbench/tree/master" }, "funding": [ { @@ -590,26 +593,26 @@ "type": "github" } ], - "time": "2023-03-24T08:52:55+00:00" + "time": "2024-01-16T21:38:02+00:00" }, { "name": "phpstan/extension-installer", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.9.0" }, "require-dev": { "composer/composer": "^2.0", @@ -618,12 +621,7 @@ }, "type": "composer-plugin", "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin", - "phpstan/extension-installer": { - "ignore": [ - "phpstan/phpstan-phpunit" - ] - } + "class": "PHPStan\\ExtensionInstaller\\Plugin" }, "autoload": { "psr-4": { @@ -637,22 +635,22 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" }, - "time": "2023-04-18T13:08:02+00:00" + "time": "2023-05-24T08:59:17+00:00" }, { "name": "phpstan/phpstan", - "version": "1.11.x-dev", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2", - "reference": "ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -661,7 +659,6 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "default-branch": true, "bin": [ "phpstan", "phpstan.phar" @@ -702,27 +699,27 @@ "type": "tidelift" } ], - "time": "2023-05-17T14:16:06+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "dev-main", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b10b1fb20600a35b13fbc58d34d3958f8c3d81ef" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b10b1fb20600a35b13fbc58d34d3958f8c3d81ef", - "reference": "b10b1fb20600a35b13fbc58d34d3958f8c3d81ef", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -740,7 +737,6 @@ "ext-pcov": "PHP extension that provides line coverage", "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -773,7 +769,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/main" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -781,20 +777,20 @@ "type": "github" } ], - "time": "2023-05-07T06:59:16+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "dev-main", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -803,7 +799,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -835,7 +830,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -843,20 +838,20 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "dev-main", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "6a2d3b52dc6a9cd7cd829a104c0804f5f1fb41a9" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/6a2d3b52dc6a9cd7cd829a104c0804f5f1fb41a9", - "reference": "6a2d3b52dc6a9cd7cd829a104c0804f5f1fb41a9", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { @@ -869,7 +864,6 @@ "suggest": { "ext-pcntl": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -899,8 +893,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/main" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -908,20 +901,20 @@ "type": "github" } ], - "time": "2023-05-07T07:01:23+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "dev-main", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "af607de0978b4de9c486b88fa7f8eecd99f9389a" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/af607de0978b4de9c486b88fa7f8eecd99f9389a", - "reference": "af607de0978b4de9c486b88fa7f8eecd99f9389a", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -930,7 +923,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -961,7 +953,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/main" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -969,20 +961,20 @@ "type": "github" } ], - "time": "2023-05-07T07:02:07+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "dev-main", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "9f12525ceb70f8c6d2c0e7a56f34d8789203932a" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/9f12525ceb70f8c6d2c0e7a56f34d8789203932a", - "reference": "9f12525ceb70f8c6d2c0e7a56f34d8789203932a", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { @@ -991,7 +983,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1021,8 +1012,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/main" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -1030,20 +1020,20 @@ "type": "github" } ], - "time": "2023-05-07T07:02:43+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "dev-main", + "version": "10.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f100f0c168df5c34ea3d71de47eb6f812efa521b" + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f100f0c168df5c34ea3d71de47eb6f812efa521b", - "reference": "f100f0c168df5c34ea3d71de47eb6f812efa521b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", "shasum": "" }, "require": { @@ -1057,7 +1047,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -1067,8 +1057,8 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -1077,14 +1067,13 @@ "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" }, - "default-branch": true, "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-main": "10.2-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -1116,7 +1105,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/main" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9" }, "funding": [ { @@ -1132,33 +1121,29 @@ "type": "tidelift" } ], - "time": "2023-05-16T14:07:34+00:00" + "time": "2024-01-22T14:35:40+00:00" }, { "name": "psr/cache", - "version": "dev-master", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "0a7c67d0d1c8167b342eb74339d6f961663826ce" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/0a7c67d0d1c8167b342eb74339d6f961663826ce", - "reference": "0a7c67d0d1c8167b342eb74339d6f961663826ce", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { "php": ">=8.0.0" }, - "suggest": { - "fig/cache-util": "Provides some useful PSR-6 utilities" - }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -1183,28 +1168,27 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2021-02-24T03:25:37+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/container", - "version": "dev-master", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "90db7b9ac2a2c5b849fcb69dde58f3ae182c68f5" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/90db7b9ac2a2c5b849fcb69dde58f3ae182c68f5", - "reference": "90db7b9ac2a2c5b849fcb69dde58f3ae182c68f5", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1237,13 +1221,13 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2022-07-19T17:36:59+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/log", - "version": "dev-master", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", @@ -1258,7 +1242,6 @@ "require": { "php": ">=8.0.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1294,16 +1277,16 @@ }, { "name": "quant/phpstan", - "version": "dev-main", + "version": "1.0", "source": { "type": "git", "url": "https://github.com/quant-php/phpstan.git", - "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652" + "reference": "762f565d861e184805c428da801ea79ad835abbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/quant-php/phpstan/zipball/aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", - "reference": "aac02c61990f8a6b6d4d252bbf3f7291c2cfe652", + "url": "https://api.github.com/repos/quant-php/phpstan/zipball/762f565d861e184805c428da801ea79ad835abbb", + "reference": "762f565d861e184805c428da801ea79ad835abbb", "shasum": "" }, "require": { @@ -1313,10 +1296,9 @@ "require-dev": { "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^10.1", - "quant/core": "dev-main", + "quant/core": "^1.0", "squizlabs/php_codesniffer": "^3.7" }, - "default-branch": true, "type": "phpstan-extension", "extra": { "phpstan": { @@ -1353,22 +1335,22 @@ ], "support": { "issues": "https://github.com/quant-php/phpstan/issues", - "source": "https://github.com/quant-php/phpstan/tree/main" + "source": "https://github.com/quant-php/phpstan/tree/1.0" }, - "time": "2023-05-18T21:47:22+00:00" + "time": "2024-01-23T18:31:17+00:00" }, { "name": "sebastian/cli-parser", - "version": "dev-main", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "e9999c67563316cadc9af8a5db52cd791a209018" + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/e9999c67563316cadc9af8a5db52cd791a209018", - "reference": "e9999c67563316cadc9af8a5db52cd791a209018", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { @@ -1377,7 +1359,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1404,8 +1385,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/main" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" }, "funding": [ { @@ -1413,20 +1393,20 @@ "type": "github" } ], - "time": "2023-05-07T06:41:32+00:00" + "time": "2023-02-03T06:58:15+00:00" }, { "name": "sebastian/code-unit", - "version": "dev-main", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "bb5b0058753edc43e377569719429e2e088379b6" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/bb5b0058753edc43e377569719429e2e088379b6", - "reference": "bb5b0058753edc43e377569719429e2e088379b6", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { @@ -1435,7 +1415,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1462,8 +1441,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/main" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -1471,20 +1449,20 @@ "type": "github" } ], - "time": "2023-05-07T06:39:38+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "dev-main", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "665ad4759110f129402b8a7554abe2f3ecf177c8" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/665ad4759110f129402b8a7554abe2f3ecf177c8", - "reference": "665ad4759110f129402b8a7554abe2f3ecf177c8", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { @@ -1493,7 +1471,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1519,8 +1496,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/main" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -1528,20 +1504,20 @@ "type": "github" } ], - "time": "2023-05-07T06:46:33+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "dev-main", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1b731c0bee2f3cd15fb1f621a616919624ad24bf" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1b731c0bee2f3cd15fb1f621a616919624ad24bf", - "reference": "1b731c0bee2f3cd15fb1f621a616919624ad24bf", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -1552,9 +1528,8 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1598,7 +1573,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/main" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -1606,34 +1581,33 @@ "type": "github" } ], - "time": "2023-05-07T06:39:57+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "dev-main", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "065e4d3b8ee6f999f25d7b4b03aa3e25330882e1" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/065e4d3b8ee6f999f25d7b4b03aa3e25330882e1", - "reference": "065e4d3b8ee6f999f25d7b4b03aa3e25330882e1", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -1657,7 +1631,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/main" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -1665,20 +1639,20 @@ "type": "github" } ], - "time": "2023-05-07T06:47:56+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "dev-main", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "da30e5818167af846668bfebc135a178a111941f" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/da30e5818167af846668bfebc135a178a111941f", - "reference": "da30e5818167af846668bfebc135a178a111941f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -1688,11 +1662,10 @@ "phpunit/phpunit": "^10.0", "symfony/process": "^4.2 || ^5" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1725,7 +1698,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/main" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -1733,20 +1706,20 @@ "type": "github" } ], - "time": "2023-05-07T06:51:55+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", - "version": "dev-main", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "ad18266a91d50fc453d820bada800bb3a710e061" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/ad18266a91d50fc453d820bada800bb3a710e061", - "reference": "ad18266a91d50fc453d820bada800bb3a710e061", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { @@ -1758,7 +1731,6 @@ "suggest": { "ext-posix": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1790,7 +1762,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/main" + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -1798,20 +1770,20 @@ "type": "github" } ], - "time": "2023-05-07T06:52:37+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "dev-main", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "658d41b99a288c0112583d8603f48807e33688b7" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/658d41b99a288c0112583d8603f48807e33688b7", - "reference": "658d41b99a288c0112583d8603f48807e33688b7", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -1822,11 +1794,10 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1869,7 +1840,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/main" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -1877,20 +1848,20 @@ "type": "github" } ], - "time": "2023-05-07T06:53:37+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "dev-main", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "72c43bc6f343ece1731fefe0534046f09e29eb30" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/72c43bc6f343ece1731fefe0534046f09e29eb30", - "reference": "72c43bc6f343ece1731fefe0534046f09e29eb30", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -1902,7 +1873,6 @@ "ext-dom": "*", "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1932,7 +1902,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/main" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -1940,30 +1910,29 @@ "type": "github" } ], - "time": "2023-05-08T12:35:16+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "dev-main", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "4bcf8375513689da164242ae30e2e984ddfbd96f" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/4bcf8375513689da164242ae30e2e984ddfbd96f", - "reference": "4bcf8375513689da164242ae30e2e984ddfbd96f", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1991,7 +1960,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/main" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -1999,20 +1968,20 @@ "type": "github" } ], - "time": "2023-05-07T06:55:25+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "dev-main", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "dc4efd929baf3fe05ec47368259cf7383b7a4523" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/dc4efd929baf3fe05ec47368259cf7383b7a4523", - "reference": "dc4efd929baf3fe05ec47368259cf7383b7a4523", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { @@ -2023,7 +1992,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2049,8 +2017,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/main" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -2058,20 +2025,20 @@ "type": "github" } ], - "time": "2023-05-07T06:56:01+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "dev-main", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "e7609bd0b99a9bb73c4de98f2b9eb2368023c02c" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/e7609bd0b99a9bb73c4de98f2b9eb2368023c02c", - "reference": "e7609bd0b99a9bb73c4de98f2b9eb2368023c02c", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { @@ -2080,7 +2047,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2106,8 +2072,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/main" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -2115,20 +2080,20 @@ "type": "github" } ], - "time": "2023-05-07T06:56:37+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "dev-main", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "d0d22a459a1b6223ea62a7ee790922e57dc33ef4" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/d0d22a459a1b6223ea62a7ee790922e57dc33ef4", - "reference": "d0d22a459a1b6223ea62a7ee790922e57dc33ef4", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { @@ -2137,7 +2102,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2171,8 +2135,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/main" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -2180,20 +2143,20 @@ "type": "github" } ], - "time": "2023-05-07T07:06:04+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "dev-main", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "ce2e7d895a4d931833b5bc362edd1b2e22912527" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/ce2e7d895a4d931833b5bc362edd1b2e22912527", - "reference": "ce2e7d895a4d931833b5bc362edd1b2e22912527", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { @@ -2202,7 +2165,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2229,8 +2191,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/main" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -2238,26 +2199,25 @@ "type": "github" } ], - "time": "2023-05-07T07:06:55+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "dev-main", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "28cf9269a3ab01a67bef47455750356210af2578" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/28cf9269a3ab01a67bef47455750356210af2578", - "reference": "28cf9269a3ab01a67bef47455750356210af2578", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { "php": ">=8.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2284,8 +2244,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/main" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -2293,20 +2252,20 @@ "type": "github" } ], - "time": "2023-05-07T06:26:24+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "seld/jsonlint", - "version": "1.10.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + "reference": "76d449a358ece77d6f1d6331c68453e657172202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/76d449a358ece77d6f1d6331c68453e657172202", + "reference": "76d449a358ece77d6f1d6331c68453e657172202", "shasum": "" }, "require": { @@ -2333,7 +2292,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "JSON Linter", @@ -2345,7 +2304,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.1" }, "funding": [ { @@ -2357,20 +2316,20 @@ "type": "tidelift" } ], - "time": "2023-05-11T13:16:46+00:00" + "time": "2023-12-18T13:03:25+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "dev-master", + "version": "3.8.1", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "2dc7b5981488502fed92df99c1460530d741e666" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2dc7b5981488502fed92df99c1460530d741e666", - "reference": "2dc7b5981488502fed92df99c1460530d741e666", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -2380,12 +2339,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, - "default-branch": true, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -2400,62 +2358,88 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, - "time": "2023-05-18T08:37:09+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-01-11T20:47:48+00:00" }, { "name": "symfony/console", - "version": "6.3.x-dev", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ce1cfc744b890cb2e658702770565c9c2a8abc4c" + "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ce1cfc744b890cb2e658702770565c9c2a8abc4c", - "reference": "ce1cfc744b890cb2e658702770565c9c2a8abc4c", + "url": "https://api.github.com/repos/symfony/console/zipball/f8587c4cdc5acad67af71c37db34ef03af91e59c", + "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2489,7 +2473,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/6.3" + "source": "https://github.com/symfony/console/tree/v7.0.2" }, "funding": [ { @@ -2505,30 +2489,29 @@ "type": "tidelift" } ], - "time": "2023-05-15T08:49:32+00:00" + "time": "2023-12-10T16:54:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "dev-main", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { "php": ">=8.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2557,7 +2540,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -2573,24 +2556,24 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", - "version": "6.3.x-dev", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "c2196aa8b563ed0bc645ee316c40ead823adfead" + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/c2196aa8b563ed0bc645ee316c40ead823adfead", - "reference": "c2196aa8b563ed0bc645ee316c40ead823adfead", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -2620,7 +2603,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/6.3" + "source": "https://github.com/symfony/filesystem/tree/v7.0.0" }, "funding": [ { @@ -2636,27 +2619,27 @@ "type": "tidelift" } ], - "time": "2023-04-28T16:05:33+00:00" + "time": "2023-07-27T06:33:22+00:00" }, { "name": "symfony/finder", - "version": "6.3.x-dev", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2684,7 +2667,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/6.3" + "source": "https://github.com/symfony/finder/tree/v7.0.0" }, "funding": [ { @@ -2700,24 +2683,24 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { "name": "symfony/options-resolver", - "version": "6.3.x-dev", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -2751,7 +2734,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/6.3" + "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" }, "funding": [ { @@ -2767,11 +2750,11 @@ "type": "tidelift" } ], - "time": "2023-05-12T14:21:09+00:00" + "time": "2023-08-08T10:20:21+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "dev-main", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -2792,7 +2775,6 @@ "suggest": { "ext-ctype": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2834,7 +2816,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/main" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -2854,7 +2836,7 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "dev-main", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", @@ -2872,7 +2854,6 @@ "suggest": { "ext-intl": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2916,7 +2897,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/main" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -2936,7 +2917,7 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "dev-main", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -2954,7 +2935,6 @@ "suggest": { "ext-intl": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3001,7 +2981,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/main" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -3021,16 +3001,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "dev-main", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f9c7affe77a00ae32ca127ca6833d034e6d33f25" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f9c7affe77a00ae32ca127ca6833d034e6d33f25", - "reference": "f9c7affe77a00ae32ca127ca6833d034e6d33f25", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -3042,7 +3022,6 @@ "suggest": { "ext-mbstring": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3085,7 +3064,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/main" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -3101,24 +3080,24 @@ "type": "tidelift" } ], - "time": "2023-01-30T17:25:47+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/process", - "version": "6.3.x-dev", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "89ac295dc344cc0cd802dd303cb2598e184e7014" + "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/89ac295dc344cc0cd802dd303cb2598e184e7014", - "reference": "89ac295dc344cc0cd802dd303cb2598e184e7014", + "url": "https://api.github.com/repos/symfony/process/zipball/acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", + "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -3146,7 +3125,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/6.3" + "source": "https://github.com/symfony/process/tree/v7.0.2" }, "funding": [ { @@ -3162,37 +3141,33 @@ "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2023-12-24T09:15:37+00:00" }, { "name": "symfony/service-contracts", - "version": "dev-main", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3232,7 +3207,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -3248,24 +3223,24 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "6.3.x-dev", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -3275,11 +3250,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3318,7 +3293,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/6.3" + "source": "https://github.com/symfony/string/tree/v7.0.2" }, "funding": [ { @@ -3334,20 +3309,20 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2023-12-10T16:54:46+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -3376,7 +3351,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -3384,11 +3359,11 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" }, { "name": "webmozart/glob", - "version": "4.7.x-dev", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/webmozarts/glob.git", @@ -3407,7 +3382,6 @@ "phpunit/phpunit": "^9.5", "symfony/filesystem": "^5.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3438,11 +3412,10 @@ } ], "aliases": [], - "minimum-stability": "dev", + "minimum-stability": "stable", "stability-flags": { "phpbench/phpbench": 20, - "doctrine/annotations": 20, - "quant/phpstan": 20 + "doctrine/annotations": 20 }, "prefer-stable": false, "prefer-lowest": false, @@ -3451,5 +3424,5 @@ "composer-runtime-api": ">=2.1" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/src/Quant/PHPStan/composer.json b/src/Quant/PHPStan/composer.json index 1411a01..b534785 100644 --- a/src/Quant/PHPStan/composer.json +++ b/src/Quant/PHPStan/composer.json @@ -20,7 +20,7 @@ "phpunit/phpunit": "^10.1", "phpstan/phpstan": "^1.10", "squizlabs/php_codesniffer": "^3.7", - "quant/core": "dev-main" + "quant/core": "^1.0" }, "autoload": { "psr-4": { "Quant\\PHPStan\\": "" }, @@ -29,11 +29,14 @@ ] }, "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + }, "phpstan": { "includes": [ "extension.neon" ] } }, - "minimum-stability": "dev" + "minimum-stability": "stable" } diff --git a/src/Quant/PHPStan/composer.lock b/src/Quant/PHPStan/composer.lock index 04f5525..1f56e53 100644 --- a/src/Quant/PHPStan/composer.lock +++ b/src/Quant/PHPStan/composer.lock @@ -4,21 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5c74112dec7929757c8df38f851c3c66", + "content-hash": "2da8be32bf5865c3705583dd9a68e68d", "packages": [], "packages-dev": [ { "name": "myclabs/deep-copy", - "version": "1.x-dev", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "928a96f585b86224ebc78f8f09d0482cf15b04f5" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/928a96f585b86224ebc78f8f09d0482cf15b04f5", - "reference": "928a96f585b86224ebc78f8f09d0482cf15b04f5", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -26,15 +26,13 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, - "default-branch": true, "type": "library", "autoload": { "files": [ @@ -58,7 +56,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.x" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -66,38 +64,39 @@ "type": "tidelift" } ], - "time": "2023-03-08T17:24:01+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "4.x-dev", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ffddce52d816f72d0efc4d9b02e276d3309ef01" + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ffddce52d816f72d0efc4d9b02e276d3309ef01", - "reference": "0ffddce52d816f72d0efc4d9b02e276d3309ef01", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, - "default-branch": true, "bin": [ "bin/php-parse" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -121,33 +120,31 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/4.x" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" }, - "time": "2023-03-06T22:12:36+00:00" + "time": "2024-01-07T17:17:35+00:00" }, { "name": "phar-io/manifest", - "version": "dev-master", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "36d8a21e851a9512db2b086dc5ac2c61308f0138" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/36d8a21e851a9512db2b086dc5ac2c61308f0138", - "reference": "36d8a21e851a9512db2b086dc5ac2c61308f0138", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", - "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", "php": "^7.2 || ^8.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -183,15 +180,9 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2022-02-21T19:55:33+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", @@ -246,16 +237,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.11.x-dev", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2", - "reference": "ec9bf5a7318a5d9023f44b61bfc0271fe0467ca2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -264,7 +255,6 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "default-branch": true, "bin": [ "phpstan", "phpstan.phar" @@ -305,27 +295,27 @@ "type": "tidelift" } ], - "time": "2023-05-17T14:16:06+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "dev-main", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b10b1fb20600a35b13fbc58d34d3958f8c3d81ef" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b10b1fb20600a35b13fbc58d34d3958f8c3d81ef", - "reference": "b10b1fb20600a35b13fbc58d34d3958f8c3d81ef", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -343,7 +333,6 @@ "ext-pcov": "PHP extension that provides line coverage", "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -376,7 +365,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/main" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -384,20 +373,20 @@ "type": "github" } ], - "time": "2023-05-07T06:59:16+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "dev-main", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -406,7 +395,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -438,7 +426,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -446,20 +434,20 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "dev-main", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "6a2d3b52dc6a9cd7cd829a104c0804f5f1fb41a9" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/6a2d3b52dc6a9cd7cd829a104c0804f5f1fb41a9", - "reference": "6a2d3b52dc6a9cd7cd829a104c0804f5f1fb41a9", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { @@ -472,7 +460,6 @@ "suggest": { "ext-pcntl": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -502,8 +489,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/main" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -511,20 +497,20 @@ "type": "github" } ], - "time": "2023-05-07T07:01:23+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "dev-main", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "af607de0978b4de9c486b88fa7f8eecd99f9389a" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/af607de0978b4de9c486b88fa7f8eecd99f9389a", - "reference": "af607de0978b4de9c486b88fa7f8eecd99f9389a", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -533,7 +519,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -564,7 +549,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/main" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -572,20 +557,20 @@ "type": "github" } ], - "time": "2023-05-07T07:02:07+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "dev-main", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "9f12525ceb70f8c6d2c0e7a56f34d8789203932a" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/9f12525ceb70f8c6d2c0e7a56f34d8789203932a", - "reference": "9f12525ceb70f8c6d2c0e7a56f34d8789203932a", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { @@ -594,7 +579,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -624,8 +608,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/main" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -633,20 +616,20 @@ "type": "github" } ], - "time": "2023-05-07T07:02:43+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "dev-main", + "version": "10.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f100f0c168df5c34ea3d71de47eb6f812efa521b" + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f100f0c168df5c34ea3d71de47eb6f812efa521b", - "reference": "f100f0c168df5c34ea3d71de47eb6f812efa521b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", + "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", "shasum": "" }, "require": { @@ -660,7 +643,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -670,8 +653,8 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -680,14 +663,13 @@ "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" }, - "default-branch": true, "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-main": "10.2-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -719,7 +701,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/main" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9" }, "funding": [ { @@ -735,20 +717,20 @@ "type": "tidelift" } ], - "time": "2023-05-16T14:07:34+00:00" + "time": "2024-01-22T14:35:40+00:00" }, { "name": "quant/core", - "version": "dev-main", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/quant-php/core.git", - "reference": "a35eed63b8d723b7406309ea89583ac0101c7350" + "reference": "8a5c2cda02b1773fb0b2b9b62bef2859a546e181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/quant-php/core/zipball/a35eed63b8d723b7406309ea89583ac0101c7350", - "reference": "a35eed63b8d723b7406309ea89583ac0101c7350", + "url": "https://api.github.com/repos/quant-php/core/zipball/8a5c2cda02b1773fb0b2b9b62bef2859a546e181", + "reference": "8a5c2cda02b1773fb0b2b9b62bef2859a546e181", "shasum": "" }, "require": { @@ -758,11 +740,12 @@ "require-dev": { "doctrine/annotations": "2.0.x-dev", "phpbench/phpbench": "^1.2@dev", - "phpstan/phpstan": "^1.10", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "1.10", "phpunit/phpunit": "^10.1", + "quant/phpstan": "^1.0", "squizlabs/php_codesniffer": "^3.7" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -790,22 +773,22 @@ ], "support": { "issues": "https://github.com/quant-php/core/issues", - "source": "https://github.com/quant-php/core/tree/main" + "source": "https://github.com/quant-php/core/tree/v1.0.0" }, - "time": "2023-05-17T13:20:26+00:00" + "time": "2024-01-23T18:36:16+00:00" }, { "name": "sebastian/cli-parser", - "version": "dev-main", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "e9999c67563316cadc9af8a5db52cd791a209018" + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/e9999c67563316cadc9af8a5db52cd791a209018", - "reference": "e9999c67563316cadc9af8a5db52cd791a209018", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { @@ -814,7 +797,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -841,8 +823,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/main" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" }, "funding": [ { @@ -850,20 +831,20 @@ "type": "github" } ], - "time": "2023-05-07T06:41:32+00:00" + "time": "2023-02-03T06:58:15+00:00" }, { "name": "sebastian/code-unit", - "version": "dev-main", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "bb5b0058753edc43e377569719429e2e088379b6" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/bb5b0058753edc43e377569719429e2e088379b6", - "reference": "bb5b0058753edc43e377569719429e2e088379b6", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { @@ -872,7 +853,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -899,8 +879,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/main" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -908,20 +887,20 @@ "type": "github" } ], - "time": "2023-05-07T06:39:38+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "dev-main", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "665ad4759110f129402b8a7554abe2f3ecf177c8" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/665ad4759110f129402b8a7554abe2f3ecf177c8", - "reference": "665ad4759110f129402b8a7554abe2f3ecf177c8", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { @@ -930,7 +909,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -956,8 +934,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/main" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -965,20 +942,20 @@ "type": "github" } ], - "time": "2023-05-07T06:46:33+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "dev-main", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1b731c0bee2f3cd15fb1f621a616919624ad24bf" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1b731c0bee2f3cd15fb1f621a616919624ad24bf", - "reference": "1b731c0bee2f3cd15fb1f621a616919624ad24bf", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -989,9 +966,8 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1035,7 +1011,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/main" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -1043,34 +1019,33 @@ "type": "github" } ], - "time": "2023-05-07T06:39:57+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "dev-main", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "065e4d3b8ee6f999f25d7b4b03aa3e25330882e1" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/065e4d3b8ee6f999f25d7b4b03aa3e25330882e1", - "reference": "065e4d3b8ee6f999f25d7b4b03aa3e25330882e1", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -1094,7 +1069,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/main" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -1102,20 +1077,20 @@ "type": "github" } ], - "time": "2023-05-07T06:47:56+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "dev-main", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "da30e5818167af846668bfebc135a178a111941f" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/da30e5818167af846668bfebc135a178a111941f", - "reference": "da30e5818167af846668bfebc135a178a111941f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { @@ -1125,11 +1100,10 @@ "phpunit/phpunit": "^10.0", "symfony/process": "^4.2 || ^5" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1162,7 +1136,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/main" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -1170,20 +1144,20 @@ "type": "github" } ], - "time": "2023-05-07T06:51:55+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", - "version": "dev-main", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "ad18266a91d50fc453d820bada800bb3a710e061" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/ad18266a91d50fc453d820bada800bb3a710e061", - "reference": "ad18266a91d50fc453d820bada800bb3a710e061", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { @@ -1195,7 +1169,6 @@ "suggest": { "ext-posix": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1227,7 +1200,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/main" + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -1235,20 +1208,20 @@ "type": "github" } ], - "time": "2023-05-07T06:52:37+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "dev-main", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "658d41b99a288c0112583d8603f48807e33688b7" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/658d41b99a288c0112583d8603f48807e33688b7", - "reference": "658d41b99a288c0112583d8603f48807e33688b7", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -1259,11 +1232,10 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -1306,7 +1278,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/main" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -1314,20 +1286,20 @@ "type": "github" } ], - "time": "2023-05-07T06:53:37+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "dev-main", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "72c43bc6f343ece1731fefe0534046f09e29eb30" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/72c43bc6f343ece1731fefe0534046f09e29eb30", - "reference": "72c43bc6f343ece1731fefe0534046f09e29eb30", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -1339,7 +1311,6 @@ "ext-dom": "*", "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1369,7 +1340,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/main" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -1377,30 +1348,29 @@ "type": "github" } ], - "time": "2023-05-08T12:35:16+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "dev-main", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "4bcf8375513689da164242ae30e2e984ddfbd96f" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/4bcf8375513689da164242ae30e2e984ddfbd96f", - "reference": "4bcf8375513689da164242ae30e2e984ddfbd96f", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1428,7 +1398,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/main" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -1436,20 +1406,20 @@ "type": "github" } ], - "time": "2023-05-07T06:55:25+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "dev-main", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "dc4efd929baf3fe05ec47368259cf7383b7a4523" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/dc4efd929baf3fe05ec47368259cf7383b7a4523", - "reference": "dc4efd929baf3fe05ec47368259cf7383b7a4523", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { @@ -1460,7 +1430,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1486,8 +1455,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/main" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -1495,20 +1463,20 @@ "type": "github" } ], - "time": "2023-05-07T06:56:01+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "dev-main", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "e7609bd0b99a9bb73c4de98f2b9eb2368023c02c" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/e7609bd0b99a9bb73c4de98f2b9eb2368023c02c", - "reference": "e7609bd0b99a9bb73c4de98f2b9eb2368023c02c", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { @@ -1517,7 +1485,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1543,8 +1510,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/main" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -1552,20 +1518,20 @@ "type": "github" } ], - "time": "2023-05-07T06:56:37+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "dev-main", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "d0d22a459a1b6223ea62a7ee790922e57dc33ef4" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/d0d22a459a1b6223ea62a7ee790922e57dc33ef4", - "reference": "d0d22a459a1b6223ea62a7ee790922e57dc33ef4", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { @@ -1574,7 +1540,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1608,8 +1573,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/main" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -1617,20 +1581,20 @@ "type": "github" } ], - "time": "2023-05-07T07:06:04+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "dev-main", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "ce2e7d895a4d931833b5bc362edd1b2e22912527" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/ce2e7d895a4d931833b5bc362edd1b2e22912527", - "reference": "ce2e7d895a4d931833b5bc362edd1b2e22912527", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { @@ -1639,7 +1603,6 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1666,8 +1629,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/main" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -1675,26 +1637,25 @@ "type": "github" } ], - "time": "2023-05-07T07:06:55+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "dev-main", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "28cf9269a3ab01a67bef47455750356210af2578" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/28cf9269a3ab01a67bef47455750356210af2578", - "reference": "28cf9269a3ab01a67bef47455750356210af2578", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { "php": ">=8.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1721,8 +1682,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/main" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -1730,20 +1690,20 @@ "type": "github" } ], - "time": "2023-05-07T06:26:24+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "dev-master", + "version": "3.8.1", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "2dc7b5981488502fed92df99c1460530d741e666" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2dc7b5981488502fed92df99c1460530d741e666", - "reference": "2dc7b5981488502fed92df99c1460530d741e666", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -1753,12 +1713,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, - "default-branch": true, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -1773,35 +1732,58 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, - "time": "2023-05-18T08:37:09+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-01-11T20:47:48+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -1830,7 +1812,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -1838,14 +1820,12 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], "aliases": [], - "minimum-stability": "dev", - "stability-flags": { - "quant/core": 20 - }, + "minimum-stability": "stable", + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -1853,5 +1833,5 @@ "composer-runtime-api": ">=2.1" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 2f3fbb70628bea739412261da31efd93df909e64 Mon Sep 17 00:00:00 2001 From: Thorsten Suckow-Homberg Date: Tue, 23 Jan 2024 19:43:58 +0100 Subject: [PATCH 23/23] fix(docs): cannot install quant fixed wrong package name in docs refs quant#33 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad99871..c9671ae 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ source projects, where functionality has proven useful to justify a refactoring ## Installation ```bash -$ composer require quant-php/quant +$ composer require quant/quant ``` ## Documentation