From e98a6dca916bcb4769414ca4d75776c9cca4fe1d Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Thu, 17 Jan 2019 16:10:59 +0100 Subject: [PATCH 01/11] add support for abstract requirements --- src/ContainerFactory.php | 59 +++++++++++++++++++++++++++++++++++++++ src/ProviderInterface.php | 4 +-- test/test.php | 31 ++++++++++++++++++++ 3 files changed, 92 insertions(+), 2 deletions(-) diff --git a/src/ContainerFactory.php b/src/ContainerFactory.php index 51620ac..859d3ee 100644 --- a/src/ContainerFactory.php +++ b/src/ContainerFactory.php @@ -10,6 +10,16 @@ */ class ContainerFactory extends Configuration { + /** + * @var string[] map where Requirement ID => description of requirements + */ + protected $required = []; + + /** + * @var string[] map where Requirement ID => description of satisfied requirements + */ + protected $provided = []; + public function __construct() {} @@ -251,6 +261,42 @@ public function add(ProviderInterface $provider) $provider->register($this); } + /** + * TODO docs + * + * @param string $requirement + * @param string $description + */ + public function requires($requirement, $description) + { + $this->required[$requirement] = $description; + } + + /** + * TODO docs + * + * @param string $requirement + * @param string $description + * + * @throws ContainerException if the given Requirement has already been satisfied + */ + public function provides($requirement, $description) + { + if (array_key_exists($requirement, $this->provided)) { + $message = "The following Requirement has already been satisfied: {$requirement}"; + + $description = $this->provided[$requirement]; + + if ($description) { + $message .= " ($description)"; + } + + throw new ContainerException($message); + } + + $this->provided[$requirement] = $description; + } + /** * Create and bootstrap a new `Container` instance * @@ -258,6 +304,19 @@ public function add(ProviderInterface $provider) */ public function createContainer() { + $messages = []; + + foreach ($this->required as $requirement => $description) { + if (! array_key_exists($requirement, $this->provided)) { + $messages[] = "The following Requirement has not been satisfied: {$requirement}" + . ($description ? " ({$description})" : ""); + } + } + + if ($messages) { + throw new ContainerException(implode("\n", $messages)); + } + return new Container($this); } } diff --git a/src/ProviderInterface.php b/src/ProviderInterface.php index 5b92313..526d138 100644 --- a/src/ProviderInterface.php +++ b/src/ProviderInterface.php @@ -12,9 +12,9 @@ interface ProviderInterface /** * Registers services and components with a given `ContainerFactory` * - * @param ContainerFactory $container + * @param ContainerFactory $factory * * @return void */ - public function register(ContainerFactory $container); + public function register(ContainerFactory $factory); } diff --git a/test/test.php b/test/test.php index 388dc70..c46ae4d 100644 --- a/test/test.php +++ b/test/test.php @@ -582,6 +582,37 @@ function (CacheProvider $provider) { } ); +test( + 'can check abstract requirements', + function () { + $factory = new ContainerFactory(); + + $factory->requires("duck", "it really needs a duck"); + + expect( + ContainerException::class, + "should throw for missing requirement", + function () use ($factory) { + $factory->createContainer(); + }, + ["/requirement has not been satisfied/i", "/duck \(it really needs a duck\)/i"] + ); + + $factory->provides("duck", "add that missing duck"); + + ok($factory->createContainer() instanceof Container); + + expect( + ContainerException::class, + "should throw on attempt to provide a requirement twice", + function () use ($factory) { + $factory->provides("duck", "add another duck"); + }, + ["/requirement has already been satisfied/i", "/duck \(add that missing duck\)/i"] + ); + } +); + test( 'internal reflection guard clauses', function () { From 7008aebaa4457959d811d39033f90817335427c0 Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Thu, 17 Jan 2019 16:12:06 +0100 Subject: [PATCH 02/11] corrected var-name --- test/fixtures.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/fixtures.php b/test/fixtures.php index 54190a4..4486b26 100644 --- a/test/fixtures.php +++ b/test/fixtures.php @@ -66,15 +66,15 @@ public function __construct(CacheProvider $cache) class TestProvider implements ProviderInterface { - public function register(ContainerFactory $container) + public function register(ContainerFactory $factory) { - $container->set('cache_path', '/tmp/cache'); + $factory->set('cache_path', '/tmp/cache'); - $container->register(CacheProvider::class, function ($cache_path) { + $factory->register(CacheProvider::class, function ($cache_path) { return new FileCache($cache_path); }); - $container->register(UserRepository::class, function (CacheProvider $cache) { + $factory->register(UserRepository::class, function (CacheProvider $cache) { return new UserRepository($cache); }); } From 8ff049fac6c2cff54b88eb904143166697624870 Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Fri, 18 Jan 2019 12:55:54 +0100 Subject: [PATCH 03/11] fully implement Requirements as described in #12; add documentation --- README.md | 117 +++++++++++++++++++++++++++++++++++++++ src/Configuration.php | 12 ++++ src/Container.php | 12 ---- src/ContainerFactory.php | 48 ++++++++++------ test/test.php | 68 ++++++++++++++++++++++- 5 files changed, 226 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 57ae481..f9fbf10 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,9 @@ configure(string $name, callable $func, array $map) # ... with custom argumen ref(string $name) : BoxedValueInterface # create a boxed reference to a component +requires(string $requirement, string $description) # defines a Requirement +provides(string $requirement, string $description) # fulfills an abstract Requirement + createContainer() : Container # create a bootstrapped Container instance ``` @@ -523,6 +526,120 @@ for a quick development setup. Even if somebody wanted to override some of the r in e.g. your default development setup, they can of course still do that, e.g. by calling `register()` again to override components as needed. +##### Provider Requirements + +In large, modular architectures, you may have many Providers with inter-dependencies, which +can become difficult to manage at scale. + +Since Providers exist *outside* the realm of the a Container, the concept of Requirements can +be used to define verifiable dependencies, which will be checked when `createContainer()` is called. + +Requirements may be defined by calling `requires()`, and more than one Provider may specify the +same Requirement - possibly for different reasons, which may be described using the optional +`$description` argument. + +Requirements may be fulfilled by calling either `register()` or `provides()`. + +###### Component Requirements + +Providers may depend on the consumer to manually register a component. + +For example, the following Provider requires you to register a `PDO` connection instance: + +```php +class MyProvider implements ProviderInterface +{ + public function register(ContainerFactory $factory) + { + $factory->requires(PDO::class, "a PDO instance connected to a MySQL database"); + + // ... + } +} +``` + +Attempting to bootstrap this Provider, without manually registering the `PDO` instance, will +generate an Exception, as soon as `createContainer()` is called - which is much easier to debug +than, say, a `NotFoundException`, which might not occur before you hit a controller that +actually depends on the database connection. + +###### Provider Requirements + +Providers may depend on other Providers being bootstrapped. + +For example, the following Provider requires you to also bootstrap a `CacheProvider`: + +```php +class MyProvider implements ProviderInterface +{ + public function register(ContainerFactory $factory) + { + $factory->requires(CacheProvider::class, "the CacheProvider should be bootstrapped"); + + // ... + } +} +``` + +Provider Requirements are implicitly fulfilled by simply adding the Provider in question: + +```php +$factory->add(new CacheProvider()); +``` + +In rare cases, however, maybe the `CacheProvider` that shipped with the package doesn't work +for your application, and you may choose to manually create bootstrapping that is *equivalent* +to that of `CacheProvider`: + +```php +$factory->provides(CacheProvider::class); + +// instead of CacheProvider: + +$factory->register(CacheInterface::class, FileCache::class, ["path" => "..."]); +``` + +Note that it's *usually* preferable to define the component Requirements - or in some cases +even both. Use your best judgment as to what is helpful, safe, or simply annoying for a +developer trying to bootstrap to fulfill your Provider's Requirements. + +###### Abstract Requirements + +Providers may have abstract Requirements - something that can't be expressed by a simple +component or Provider dependency. + +For example, the following Provider requires you to simply indicate that you've bootstrapped +a "payment gateway" - whatever that means to the Provider in question: + +```php +class MyProvider implements ProviderInterface +{ + public function register(ContainerFactory $factory) + { + $factory->requires("acme.payment-gateway", "please refer to acme's documentation"); + + // ... + } +} +``` + +Another provider needs to explicitly indicate fulfillment of these abstract Requirements: + +```php +class MyPaymentProvider implements ProviderInterface +{ + public function register(ContainerFactory $factory) + { + $factory->provides("acme.payment-gateway"); + + // ... + } +} +``` + +Note that abstract Requirements should be a last resort - a simple component or Provider +dependency is *usually* better, safer, and may be easier to understand. + ### Consumption Consuming the contents of a container by simply pulling components out of it can *seem* very convenient, and is therefore diff --git a/src/Configuration.php b/src/Configuration.php index 9a3c591..cc258b5 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -32,6 +32,18 @@ abstract class Configuration */ protected $config_map = []; + /** + * Check for the existence of a component with a given name. + * + * @param string $name component name + * + * @return bool true, if a component with the given name has been defined + */ + public function has($name) + { + return array_key_exists($name, $this->values) || isset($this->factory[$name]); + } + /** * Internally copy configuration state, e.g. from `ContainerFactory` to `Container` * diff --git a/src/Container.php b/src/Container.php index ae103e7..39f0125 100644 --- a/src/Container.php +++ b/src/Container.php @@ -67,18 +67,6 @@ public function get($name) return $this->values[$name]; } - /** - * Check for the existence of a component with a given name. - * - * @param string $name component name - * - * @return bool true, if a component with the given name has been defined - */ - public function has($name) - { - return array_key_exists($name, $this->values) || isset($this->factory[$name]); - } - /** * Check if a component has been unboxed and is currently active. * diff --git a/src/ContainerFactory.php b/src/ContainerFactory.php index 859d3ee..220599c 100644 --- a/src/ContainerFactory.php +++ b/src/ContainerFactory.php @@ -11,12 +11,12 @@ class ContainerFactory extends Configuration { /** - * @var string[] map where Requirement ID => description of requirements + * @var string[] map where Requirement ID => description of abstract requirements */ protected $required = []; /** - * @var string[] map where Requirement ID => description of satisfied requirements + * @var string[] map where Requirement ID => description of provided abstract requirements */ protected $provided = []; @@ -248,42 +248,54 @@ public function ref($name) } /** - * Add a packaged configuration (a "provider") to this container. - * - * @see ProviderInterface + * Add a Provider (a packaged unit of bootstrapping) to this Container. * * @param ProviderInterface $provider * * @return void + * + * @throws ContainerException if the given Requirement has already been fulfilled + * + * @see ProviderInterface */ public function add(ProviderInterface $provider) { $provider->register($this); + + $this->provides(get_class($provider)); } /** - * TODO docs + * Defines a Requirement, which will be checked when you call {@see createContainer()}. + * + * Requirements must be fulfilled by either {@see register()} or {@see provides()}. + * + * @param string $requirement Requirement name. + * @param string $description Optional description. + * Displayed in an Exception message on failure. * - * @param string $requirement - * @param string $description + * @see provides() */ - public function requires($requirement, $description) + public function requires($requirement, $description = "") { $this->required[$requirement] = $description; } /** - * TODO docs + * Fulfills an abstract Requirement defined by {@see requires()}. * - * @param string $requirement - * @param string $description + * @param string $requirement Requirement name. + * @param string $description Optional description. + * Displayed in an Exception message on failure. * - * @throws ContainerException if the given Requirement has already been satisfied + * @throws ContainerException if the given Requirement has already been fulfilled + * + * @see requires() */ - public function provides($requirement, $description) + public function provides($requirement, $description = "") { if (array_key_exists($requirement, $this->provided)) { - $message = "The following Requirement has already been satisfied: {$requirement}"; + $message = "The following Requirement has already been fulfilled: {$requirement}"; $description = $this->provided[$requirement]; @@ -301,14 +313,16 @@ public function provides($requirement, $description) * Create and bootstrap a new `Container` instance * * @return Container + * + * @throws ContainerException if any Requirements have not been fulfilled */ public function createContainer() { $messages = []; foreach ($this->required as $requirement => $description) { - if (! array_key_exists($requirement, $this->provided)) { - $messages[] = "The following Requirement has not been satisfied: {$requirement}" + if (! array_key_exists($requirement, $this->provided) && !$this->has($requirement)) { + $messages[] = "The following Requirement has not been fulfilled: {$requirement}" . ($description ? " ({$description})" : ""); } } diff --git a/test/test.php b/test/test.php index c46ae4d..a30a268 100644 --- a/test/test.php +++ b/test/test.php @@ -595,7 +595,7 @@ function () { function () use ($factory) { $factory->createContainer(); }, - ["/requirement has not been satisfied/i", "/duck \(it really needs a duck\)/i"] + ["/requirement has not been fulfilled/i", "/duck \(it really needs a duck\)/i"] ); $factory->provides("duck", "add that missing duck"); @@ -608,11 +608,75 @@ function () use ($factory) { function () use ($factory) { $factory->provides("duck", "add another duck"); }, - ["/requirement has already been satisfied/i", "/duck \(add that missing duck\)/i"] + ["/requirement has already been fulfilled/i", "/duck \(add that missing duck\)/i"] ); } ); +test( + 'can check component requirements', + function () { + $factory = new ContainerFactory(); + + // component defined using register() in TestProvider + $factory->requires(CacheProvider::class, "requires a cache"); + + // component defined using set() in TestProvider + $factory->requires("cache_path", "requires a cache path"); + + expect( + ContainerException::class, + "should throw for missing requirement", + function () use ($factory) { + $factory->createContainer(); + }, + [ + "/requirement has not been fulfilled/i", + "/CacheProvider \(requires a cache\)/i", + "/cache_path \(requires a cache path\)/i" + ] + ); + + $factory->add(new TestProvider()); + + ok($factory->createContainer() instanceof Container); + } +); + +test( + 'abstract requirements cannot fulfill component dependencies', + function () { + $factory = new ContainerFactory(); + + $factory->requires("cake", "I want cake!"); + + expect( + ContainerException::class, + "should throw for missing requirement", + function () use ($factory) { + $factory->createContainer(); + }, + "/requirement has not been fulfilled/i" + ); + + $factory->provides("cake", "I can haz cake."); + + $container = $factory->createContainer(); + + expect( + NotFoundException::class, + "should throw for missing dependency", + function () use ($container) { + $container->get("cake"); + } + ); + + $factory->set("cake", "yum"); + + eq($factory->createContainer()->get("cake"), "yum", "does not conflict with component dependencies"); + } +); + test( 'internal reflection guard clauses', function () { From 587acc9d0053ec9c6d6afe00b222385e0df507eb Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Fri, 18 Jan 2019 13:02:54 +0100 Subject: [PATCH 04/11] capture multiple descriptions of the same Requirement --- src/ContainerFactory.php | 8 ++++---- test/test.php | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/ContainerFactory.php b/src/ContainerFactory.php index 220599c..ca3ceec 100644 --- a/src/ContainerFactory.php +++ b/src/ContainerFactory.php @@ -11,7 +11,7 @@ class ContainerFactory extends Configuration { /** - * @var string[] map where Requirement ID => description of abstract requirements + * @var string[][] map where Requirement ID => list of requirement descriptions */ protected $required = []; @@ -278,7 +278,7 @@ public function add(ProviderInterface $provider) */ public function requires($requirement, $description = "") { - $this->required[$requirement] = $description; + $this->required[$requirement][] = $description; } /** @@ -320,10 +320,10 @@ public function createContainer() { $messages = []; - foreach ($this->required as $requirement => $description) { + foreach ($this->required as $requirement => $descriptions) { if (! array_key_exists($requirement, $this->provided) && !$this->has($requirement)) { $messages[] = "The following Requirement has not been fulfilled: {$requirement}" - . ($description ? " ({$description})" : ""); + . (array_filter($descriptions) ? " (" . implode("; ", $descriptions) . ")" : ""); } } diff --git a/test/test.php b/test/test.php index a30a268..d82108e 100644 --- a/test/test.php +++ b/test/test.php @@ -589,13 +589,19 @@ function () { $factory->requires("duck", "it really needs a duck"); + // The same Requirement may be defined more than once: + $factory->requires("duck", "it really, really needs a duck"); + expect( ContainerException::class, "should throw for missing requirement", function () use ($factory) { $factory->createContainer(); }, - ["/requirement has not been fulfilled/i", "/duck \(it really needs a duck\)/i"] + [ + "/requirement has not been fulfilled/i", + "/duck \(it really needs a duck; it really, really needs a duck\)/i", + ] ); $factory->provides("duck", "add that missing duck"); From 000406227139b68e28d25dabd6dc7b5948e0f7cd Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Wed, 27 Sep 2023 15:47:45 +0200 Subject: [PATCH 05/11] remove provider auto-registration: providers are an implementation detail, and should never become a dependency by themselves. removed corresponding docs and added upgrade notes. --- README.md | 58 +++++++--------------------------------- UPGRADING.md | 4 +++ src/ContainerFactory.php | 2 -- 3 files changed, 14 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 67c16ba..1e8d484 100644 --- a/README.md +++ b/README.md @@ -532,8 +532,9 @@ in e.g. your default development setup, they can of course still do that, e.g. b In large, modular architectures, you may have many Providers with inter-dependencies, which can become difficult to manage at scale. -Since Providers exist *outside* the realm of the a Container, the concept of Requirements can -be used to define verifiable dependencies, which will be checked when `createContainer()` is called. +Since Providers exist *outside* the realm of the Container, the concept of Requirements can +be used to define verifiable provider interdependencies, which will be checked at the time +when `createContainer()` is called. Requirements may be defined by calling `requires()`, and more than one Provider may specify the same Requirement - possibly for different reasons, which may be described using the optional @@ -561,53 +562,13 @@ class MyProvider implements ProviderInterface Attempting to bootstrap this Provider, without manually registering the `PDO` instance, will generate an Exception, as soon as `createContainer()` is called - which is much easier to debug -than, say, a `NotFoundException`, which might not occur before you hit a controller that -actually depends on the database connection. - -###### Provider Requirements - -Providers may depend on other Providers being bootstrapped. - -For example, the following Provider requires you to also bootstrap a `CacheProvider`: - -```php -class MyProvider implements ProviderInterface -{ - public function register(ContainerFactory $factory) - { - $factory->requires(CacheProvider::class, "the CacheProvider should be bootstrapped"); - - // ... - } -} -``` - -Provider Requirements are implicitly fulfilled by simply adding the Provider in question: - -```php -$factory->add(new CacheProvider()); -``` - -In rare cases, however, maybe the `CacheProvider` that shipped with the package doesn't work -for your application, and you may choose to manually create bootstrapping that is *equivalent* -to that of `CacheProvider`: - -```php -$factory->provides(CacheProvider::class); - -// instead of CacheProvider: - -$factory->register(CacheInterface::class, FileCache::class, ["path" => "..."]); -``` - -Note that it's *usually* preferable to define the component Requirements - or in some cases -even both. Use your best judgment as to what is helpful, safe, or simply annoying for a -developer trying to bootstrap to fulfill your Provider's Requirements. +than the `NotFoundException` you would otherwise get, and which might not occur until you try +to resolve a component that actually depends on the database connection. ###### Abstract Requirements Providers may have abstract Requirements - something that can't be expressed by a simple -component or Provider dependency. +component dependency. For example, the following Provider requires you to simply indicate that you've bootstrapped a "payment gateway" - whatever that means to the Provider in question: @@ -624,7 +585,7 @@ class MyProvider implements ProviderInterface } ``` -Another provider needs to explicitly indicate fulfillment of these abstract Requirements: +Another provider needs to explicitly indicate fulfillment of this abstract Requirement: ```php class MyPaymentProvider implements ProviderInterface @@ -638,8 +599,9 @@ class MyPaymentProvider implements ProviderInterface } ``` -Note that abstract Requirements should be a last resort - a simple component or Provider -dependency is *usually* better, safer, and may be easier to understand. +Note that abstract Requirements should be a last resort - component dependencies are +*generally* simpler and easier to understand. This feature exists primarily to support +complex, large-scale modular frameworks. ### Fallback Containers diff --git a/UPGRADING.md b/UPGRADING.md index cb4ce90..371d194 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -1,6 +1,10 @@ Upgrading ========= +#### 3.1.0 + +This feature-release introduces requirements (via `requires` and `provides`) and requires PHP 8.0 or later. + #### 3.0.0 This release removes backwards compatibility with the legacy package `container-interop/container-interop` diff --git a/src/ContainerFactory.php b/src/ContainerFactory.php index 759a329..324f8fd 100644 --- a/src/ContainerFactory.php +++ b/src/ContainerFactory.php @@ -264,8 +264,6 @@ public function ref(string $name): BoxedReference public function add(ProviderInterface $provider): void { $provider->register($this); - - $this->provides(get_class($provider)); } /** From 1fc16b2997763e0adaa73a7a4b1b11d684bc7b50 Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Wed, 27 Sep 2023 15:52:05 +0200 Subject: [PATCH 06/11] tweaks --- src/ContainerFactory.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/ContainerFactory.php b/src/ContainerFactory.php index 324f8fd..01820e6 100644 --- a/src/ContainerFactory.php +++ b/src/ContainerFactory.php @@ -72,7 +72,7 @@ public function __construct() * * @throws InvalidArgumentException */ - public function register($name, $func_or_map_or_type = null, $map = []): void + public function register(string $name, $func_or_map_or_type = null, $map = []): void { if (is_callable($func_or_map_or_type)) { // second argument is a creation function @@ -257,8 +257,6 @@ public function ref(string $name): BoxedReference * * @return void * - * @throws ContainerException if the given Requirement has already been fulfilled - * * @see ProviderInterface */ public function add(ProviderInterface $provider): void @@ -277,7 +275,7 @@ public function add(ProviderInterface $provider): void * * @see provides() */ - public function requires($requirement, $description = "") + public function requires(string $requirement, string $description = "") { $this->required[$requirement][] = $description; } @@ -293,7 +291,7 @@ public function requires($requirement, $description = "") * * @see requires() */ - public function provides($requirement, $description = "") + public function provides(string $requirement, string $description = "") { if (array_key_exists($requirement, $this->provided)) { $message = "The following Requirement has already been fulfilled: {$requirement}"; From 815225a4b13714446b4717259eabf1934f7430e6 Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Tue, 5 Dec 2023 10:03:56 +0100 Subject: [PATCH 07/11] test with PHP 8.3 --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4489304..b77eca8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,10 +13,11 @@ jobs: php: - '8.0' - '8.1' + - '8.2' coverage: - none include: - - php: '8.2' + - php: '8.3' coverage: xdebug steps: - uses: shivammathur/setup-php@2.26.0 @@ -28,7 +29,7 @@ jobs: fetch-depth: 2 # required by Scrutinizer - run: composer install --no-progress --no-ansi --no-interaction --dev --prefer-dist - run: php test/test.php - - if: github.repository == 'mindplay-dk/unbox' && matrix.coverage == 'xdebug' + - if: matrix.coverage == 'xdebug' uses: sudo-bot/action-scrutinizer@latest with: cli-args: '--format=php-clover test/build/clover.xml' From 56009c522888ec97e660f330fc69c941a4001e8d Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Tue, 5 Dec 2023 10:04:01 +0100 Subject: [PATCH 08/11] tweak --- .gitignore | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ecdf2d7..6830db6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -vendor -.idea +.* +!.git& +/vendor/ From 6cac81352198169a1484dd4f9c1f737d84e376ed Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Sun, 10 Mar 2024 15:28:11 +0100 Subject: [PATCH 09/11] upgrade test deps --- composer.json | 7 +- composer.lock | 247 ++++++++++++++++++++++++++------------------------ 2 files changed, 133 insertions(+), 121 deletions(-) diff --git a/composer.json b/composer.json index ef405b0..1eff810 100644 --- a/composer.json +++ b/composer.json @@ -15,10 +15,13 @@ }, "require-dev": { "mindplay/benchpress": "^0.1", - "mindplay/testies": "^1.0", + "mindplay/testies": "^1.1.1", "php-di/php-di": "^7.0.5", "pimple/pimple": "^3.5", - "phpunit/php-code-coverage": "^9.2.5" + "phpunit/php-code-coverage": "^10" + }, + "scripts": { + "test": "XDEBUG_MODE=coverage php test/test.php" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 29d0a04..b5b8c5d 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": "c8c86b3335bd2bb7d08db2bfe29f8175", + "content-hash": "8cb22647b0beddc25bd9eebed6f03d87", "packages": [ { "name": "psr/container", @@ -63,16 +63,16 @@ "packages-dev": [ { "name": "laravel/serializable-closure", - "version": "v1.3.1", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -119,7 +119,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-07-14T13:56:28+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "mindplay/benchpress", @@ -163,27 +163,29 @@ }, { "name": "mindplay/testies", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/mindplay-dk/testies.git", - "reference": "6501bc0ec4599948ee83284aa926538af839de50" + "reference": "51b1bb35f326c0a095afbb2f221b4bb39e6e973c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mindplay-dk/testies/zipball/6501bc0ec4599948ee83284aa926538af839de50", - "reference": "6501bc0ec4599948ee83284aa926538af839de50", + "url": "https://api.github.com/repos/mindplay-dk/testies/zipball/51b1bb35f326c0a095afbb2f221b4bb39e6e973c", + "reference": "51b1bb35f326c0a095afbb2f221b4bb39e6e973c", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0" + "php": "^8.1" }, "require-dev": { - "guzzlehttp/guzzle": "^6.3.3", - "phpunit/php-code-coverage": "^9.2.5" + "mindplay/readable": "^1.2", + "nyholm/psr7": "^1.8", + "phpunit/php-code-coverage": "^10.1.7", + "zaphyr-org/http-client": "^1.0" }, "suggest": { - "phpunit/php-code-coverage": "^9.2.5" + "phpunit/php-code-coverage": "^10 || ^11" }, "type": "library", "autoload": { @@ -207,31 +209,33 @@ "description": "Yeah, testies: a lightweight library for quick, simple unit-testing", "support": { "issues": "https://github.com/mindplay-dk/testies/issues", - "source": "https://github.com/mindplay-dk/testies/tree/1.0.0" + "source": "https://github.com/mindplay-dk/testies/tree/1.1.1" }, - "time": "2021-02-25T09:50:25+00:00" + "time": "2024-03-10T14:15:44+00:00" }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "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" @@ -239,7 +243,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -263,9 +267,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "php-di/invoker", @@ -324,16 +328,16 @@ }, { "name": "php-di/php-di", - "version": "7.0.5", + "version": "7.0.6", "source": { "type": "git", "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "9ea40a5a6970bf1ca5cbe148bc16cbad6ca3db6c" + "reference": "8097948a89f6ec782839b3e958432f427cac37fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/9ea40a5a6970bf1ca5cbe148bc16cbad6ca3db6c", - "reference": "9ea40a5a6970bf1ca5cbe148bc16cbad6ca3db6c", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/8097948a89f6ec782839b3e958432f427cac37fd", + "reference": "8097948a89f6ec782839b3e958432f427cac37fd", "shasum": "" }, "require": { @@ -381,7 +385,7 @@ ], "support": { "issues": "https://github.com/PHP-DI/PHP-DI/issues", - "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.5" + "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.6" }, "funding": [ { @@ -393,39 +397,39 @@ "type": "tidelift" } ], - "time": "2023-08-10T14:57:56+00:00" + "time": "2023-11-02T10:04:50+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "10.1.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "d51c3aec14896d5e80b354fad58e998d1980f8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d51c3aec14896d5e80b354fad58e998d1980f8f8", + "reference": "d51c3aec14896d5e80b354fad58e998d1980f8f8", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -434,7 +438,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -463,7 +467,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/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.13" }, "funding": [ { @@ -471,32 +475,32 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2024-03-09T16:54:15+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -523,7 +527,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -531,32 +536,32 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -582,7 +587,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -590,7 +596,7 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "pimple/pimple", @@ -647,28 +653,28 @@ }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -690,7 +696,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -698,33 +704,33 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -747,7 +753,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -755,27 +762,27 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -783,7 +790,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -802,7 +809,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -810,7 +817,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -818,33 +826,33 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -867,7 +875,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/1.0.3" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -875,29 +884,29 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -920,7 +929,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -928,20 +937,20 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -970,7 +979,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.3" }, "funding": [ { @@ -978,7 +987,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], From f3556989c746680e0e8e3600e0fb16cce9984a07 Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Sun, 10 Mar 2024 16:23:35 +0100 Subject: [PATCH 10/11] php8 compatible deps --- composer.json | 4 +- composer.lock | 184 +++++++++++++++++++++++++------------------------- 2 files changed, 95 insertions(+), 93 deletions(-) diff --git a/composer.json b/composer.json index 1eff810..9d9ec8d 100644 --- a/composer.json +++ b/composer.json @@ -15,10 +15,10 @@ }, "require-dev": { "mindplay/benchpress": "^0.1", - "mindplay/testies": "^1.1.1", + "mindplay/testies": "^1.1.2", "php-di/php-di": "^7.0.5", "pimple/pimple": "^3.5", - "phpunit/php-code-coverage": "^10" + "phpunit/php-code-coverage": "^9 || ^10 || ^11" }, "scripts": { "test": "XDEBUG_MODE=coverage php test/test.php" diff --git a/composer.lock b/composer.lock index b5b8c5d..e46add2 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": "8cb22647b0beddc25bd9eebed6f03d87", + "content-hash": "8e459576c73755c8423566f63d8135ee", "packages": [ { "name": "psr/container", @@ -163,29 +163,29 @@ }, { "name": "mindplay/testies", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/mindplay-dk/testies.git", - "reference": "51b1bb35f326c0a095afbb2f221b4bb39e6e973c" + "reference": "c06cf38d3cf3d363e52419b48bd6cd218ebfb822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mindplay-dk/testies/zipball/51b1bb35f326c0a095afbb2f221b4bb39e6e973c", - "reference": "51b1bb35f326c0a095afbb2f221b4bb39e6e973c", + "url": "https://api.github.com/repos/mindplay-dk/testies/zipball/c06cf38d3cf3d363e52419b48bd6cd218ebfb822", + "reference": "c06cf38d3cf3d363e52419b48bd6cd218ebfb822", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.0" }, "require-dev": { "mindplay/readable": "^1.2", "nyholm/psr7": "^1.8", - "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-code-coverage": "^9 || ^10 || ^11", "zaphyr-org/http-client": "^1.0" }, "suggest": { - "phpunit/php-code-coverage": "^10 || ^11" + "phpunit/php-code-coverage": "^9 || ^10 || ^11" }, "type": "library", "autoload": { @@ -209,9 +209,9 @@ "description": "Yeah, testies: a lightweight library for quick, simple unit-testing", "support": { "issues": "https://github.com/mindplay-dk/testies/issues", - "source": "https://github.com/mindplay-dk/testies/tree/1.1.1" + "source": "https://github.com/mindplay-dk/testies/tree/1.1.2" }, - "time": "2024-03-10T14:15:44+00:00" + "time": "2024-03-10T15:15:26+00:00" }, { "name": "nikic/php-parser", @@ -401,35 +401,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.13", + "version": "11.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d51c3aec14896d5e80b354fad58e998d1980f8f8" + "reference": "9e0a298b4dc6438a1e70ac8e1b3ea4980ae5a09b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d51c3aec14896d5e80b354fad58e998d1980f8f8", - "reference": "d51c3aec14896d5e80b354fad58e998d1980f8f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9e0a298b4dc6438a1e70ac8e1b3ea4980ae5a09b", + "reference": "9e0a298b4dc6438a1e70ac8e1b3ea4980ae5a09b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", + "nikic/php-parser": "^5.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-text-template": "^4.0", + "sebastian/code-unit-reverse-lookup": "^4.0", + "sebastian/complexity": "^4.0", + "sebastian/environment": "^7.0", + "sebastian/lines-of-code": "^3.0", + "sebastian/version": "^5.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -438,7 +438,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "11.0-dev" } }, "autoload": { @@ -467,7 +467,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.13" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.2" }, "funding": [ { @@ -475,32 +475,32 @@ "type": "github" } ], - "time": "2024-03-09T16:54:15+00:00" + "time": "2024-03-09T16:56:49+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/99e95c94ad9500daca992354fa09d7b99abe2210", + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -528,7 +528,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.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.0" }, "funding": [ { @@ -536,32 +536,32 @@ "type": "github" } ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2024-02-02T06:05:04+00:00" }, { "name": "phpunit/php-text-template", - "version": "3.0.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d38f6cbff1cdb6f40b03c9811421561668cc133e", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -588,7 +588,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/3.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.0" }, "funding": [ { @@ -596,7 +596,7 @@ "type": "github" } ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2024-02-02T06:06:56+00:00" }, { "name": "pimple/pimple", @@ -653,28 +653,28 @@ }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/df80c875d3e459b45c6039e4d9b71d4fbccae25d", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -696,7 +696,8 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.0" }, "funding": [ { @@ -704,33 +705,33 @@ "type": "github" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2024-02-02T05:52:17+00:00" }, { "name": "sebastian/complexity", - "version": "3.2.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" + "reference": "88a434ad86150e11a606ac4866b09130712671f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", + "reference": "88a434ad86150e11a606ac4866b09130712671f0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -754,7 +755,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.0" }, "funding": [ { @@ -762,27 +763,27 @@ "type": "github" } ], - "time": "2023-12-21T08:37:17+00:00" + "time": "2024-02-02T05:55:19+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/100d8b855d7180f79f9a9a5c483f2d960581c3ea", + "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-posix": "*" @@ -790,7 +791,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -818,7 +819,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/7.0.0" }, "funding": [ { @@ -826,33 +827,33 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-02-02T05:57:54+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/376c5b3f6b43c78fdc049740bca76a7c846706c0", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -876,7 +877,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/2.0.2" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.0" }, "funding": [ { @@ -884,29 +885,29 @@ "type": "github" } ], - "time": "2023-12-21T08:38:20+00:00" + "time": "2024-02-02T06:00:36+00:00" }, { "name": "sebastian/version", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -929,7 +930,8 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.0" }, "funding": [ { @@ -937,7 +939,7 @@ "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2024-02-02T06:10:47+00:00" }, { "name": "theseer/tokenizer", From 4905706508ca0ebd95c3fab5c937527796afc1c4 Mon Sep 17 00:00:00 2001 From: Rasmus Schultz Date: Sun, 10 Mar 2024 16:28:56 +0100 Subject: [PATCH 11/11] kill the lock --- .gitignore | 1 + composer.lock | 1005 ------------------------------------------------- 2 files changed, 1 insertion(+), 1005 deletions(-) delete mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 9bab9ec..613b203 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ vendor .* !.git* +/composer.lock diff --git a/composer.lock b/composer.lock deleted file mode 100644 index e46add2..0000000 --- a/composer.lock +++ /dev/null @@ -1,1005 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "8e459576c73755c8423566f63d8135ee", - "packages": [ - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - } - ], - "packages-dev": [ - { - "name": "laravel/serializable-closure", - "version": "v1.3.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "nesbot/carbon": "^2.61", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "time": "2023-11-08T14:08:06+00:00" - }, - { - "name": "mindplay/benchpress", - "version": "0.1.0", - "source": { - "type": "git", - "url": "https://github.com/mindplay-dk/benchpress.git", - "reference": "e46935bb0c220ba2ecd6d32314f875f3d8511f16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mindplay-dk/benchpress/zipball/e46935bb0c220ba2ecd6d32314f875f3d8511f16", - "reference": "e46935bb0c220ba2ecd6d32314f875f3d8511f16", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "mindplay\\benchpress\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0+" - ], - "authors": [ - { - "name": "Rasmus Schultz", - "email": "rasmus@mindplay.dk" - } - ], - "description": "A simple benchmark suite for PHP 5.3 and up", - "support": { - "issues": "https://github.com/mindplay-dk/benchpress/issues", - "source": "https://github.com/mindplay-dk/benchpress/tree/master" - }, - "time": "2016-08-07T13:44:25+00:00" - }, - { - "name": "mindplay/testies", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/mindplay-dk/testies.git", - "reference": "c06cf38d3cf3d363e52419b48bd6cd218ebfb822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mindplay-dk/testies/zipball/c06cf38d3cf3d363e52419b48bd6cd218ebfb822", - "reference": "c06cf38d3cf3d363e52419b48bd6cd218ebfb822", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "mindplay/readable": "^1.2", - "nyholm/psr7": "^1.8", - "phpunit/php-code-coverage": "^9 || ^10 || ^11", - "zaphyr-org/http-client": "^1.0" - }, - "suggest": { - "phpunit/php-code-coverage": "^9 || ^10 || ^11" - }, - "type": "library", - "autoload": { - "files": [ - "src/test.func.php" - ], - "psr-4": { - "mindplay\\testies\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rasmus Schultz", - "email": "rasmus@mindplay.dk" - } - ], - "description": "Yeah, testies: a lightweight library for quick, simple unit-testing", - "support": { - "issues": "https://github.com/mindplay-dk/testies/issues", - "source": "https://github.com/mindplay-dk/testies/tree/1.1.2" - }, - "time": "2024-03-10T15:15:26+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" - }, - "time": "2024-03-05T20:51:40+00:00" - }, - { - "name": "php-di/invoker", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86", - "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "psr/container": "^1.0|^2.0" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "mnapoli/hard-mode": "~0.3.0", - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Invoker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Generic and extensible callable invoker", - "homepage": "https://github.com/PHP-DI/Invoker", - "keywords": [ - "callable", - "dependency", - "dependency-injection", - "injection", - "invoke", - "invoker" - ], - "support": { - "issues": "https://github.com/PHP-DI/Invoker/issues", - "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - } - ], - "time": "2023-09-08T09:24:21+00:00" - }, - { - "name": "php-di/php-di", - "version": "7.0.6", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "8097948a89f6ec782839b3e958432f427cac37fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/8097948a89f6ec782839b3e958432f427cac37fd", - "reference": "8097948a89f6ec782839b3e958432f427cac37fd", - "shasum": "" - }, - "require": { - "laravel/serializable-closure": "^1.0", - "php": ">=8.0", - "php-di/invoker": "^2.0", - "psr/container": "^1.1 || ^2.0" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3", - "friendsofphp/proxy-manager-lts": "^1", - "mnapoli/phpunit-easymock": "^1.3", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.6" - }, - "suggest": { - "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "DI\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The dependency injection container for humans", - "homepage": "https://php-di.org/", - "keywords": [ - "PSR-11", - "container", - "container-interop", - "dependency injection", - "di", - "ioc", - "psr11" - ], - "support": { - "issues": "https://github.com/PHP-DI/PHP-DI/issues", - "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.6" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", - "type": "tidelift" - } - ], - "time": "2023-11-02T10:04:50+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "11.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "9e0a298b4dc6438a1e70ac8e1b3ea4980ae5a09b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9e0a298b4dc6438a1e70ac8e1b3ea4980ae5a09b", - "reference": "9e0a298b4dc6438a1e70ac8e1b3ea4980ae5a09b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^5.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.0", - "phpunit/php-text-template": "^4.0", - "sebastian/code-unit-reverse-lookup": "^4.0", - "sebastian/complexity": "^4.0", - "sebastian/environment": "^7.0", - "sebastian/lines-of-code": "^3.0", - "sebastian/version": "^5.0", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "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/11.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-09T16:56:49+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/99e95c94ad9500daca992354fa09d7b99abe2210", - "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "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/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:05:04+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d38f6cbff1cdb6f40b03c9811421561668cc133e", - "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "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/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:06:56+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" - }, - "time": "2021-10-28T11:13:42+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/df80c875d3e459b45c6039e4d9b71d4fbccae25d", - "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "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/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:52:17+00:00" - }, - { - "name": "sebastian/complexity", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "88a434ad86150e11a606ac4866b09130712671f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", - "reference": "88a434ad86150e11a606ac4866b09130712671f0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:55:19+00:00" - }, - { - "name": "sebastian/environment", - "version": "7.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/100d8b855d7180f79f9a9a5c483f2d960581c3ea", - "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:57:54+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/376c5b3f6b43c78fdc049740bca76a7c846706c0", - "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "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/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:00:36+00:00" - }, - { - "name": "sebastian/version", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", - "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "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/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:10:47+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "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.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:36:25+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.0" - }, - "platform-dev": [], - "plugin-api-version": "2.6.0" -}